dao-ai 0.0.12__tar.gz → 0.0.14__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dao_ai-0.0.12 → dao_ai-0.0.14}/PKG-INFO +2 -2
- {dao_ai-0.0.12 → dao_ai-0.0.14}/config/examples/genie.yaml +40 -8
- {dao_ai-0.0.12 → dao_ai-0.0.14}/notebooks/01_ingest_and_transform.py +1 -1
- {dao_ai-0.0.12 → dao_ai-0.0.14}/notebooks/02_provision_vector_search.py +3 -3
- {dao_ai-0.0.12 → dao_ai-0.0.14}/notebooks/03_generate_evaluation_data.py +35 -18
- {dao_ai-0.0.12 → dao_ai-0.0.14}/notebooks/04_unity_catalog_tools.py +3 -3
- {dao_ai-0.0.12 → dao_ai-0.0.14}/notebooks/05_agent_as_code_driver.py +3 -3
- {dao_ai-0.0.12 → dao_ai-0.0.14}/notebooks/06_run_evaluation.py +4 -9
- {dao_ai-0.0.12 → dao_ai-0.0.14}/notebooks/08_run_examples.py +4 -12
- {dao_ai-0.0.12 → dao_ai-0.0.14}/pyproject.toml +2 -2
- {dao_ai-0.0.12 → dao_ai-0.0.14}/requirements.txt +6 -2
- {dao_ai-0.0.12 → dao_ai-0.0.14}/schemas/model_config_schema.json +65 -7
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/agent_as_code.py +1 -6
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/config.py +79 -52
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/providers/databricks.py +7 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/tools/vector_search.py +2 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/.gitignore +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/.python-version +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/CHANGELOG.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/CONTRIBUTING.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/LICENSE +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/Makefile +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/README.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/Makefile +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/REFACTORING_SUMMARY.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/base-environment-serverless.yaml +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/demo_docs/BRAND_REP_DEMO_SUMMARY.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/demo_docs/demo_scripts/brand_rep_product_education_demo.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/demo_docs/demo_scripts/store_associate_ai_assistant_demo.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/demo_docs/demo_scripts/store_manager_alert_response_demo.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/development_workflows.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/.gitkeep +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/Makefile +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/agent_implementation.mmd +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/agent_tools_architecture.mmd +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/agents-and-tools/agent-troubleshooting.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/agents-and-tools/agents/agent-best-practices.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/agents-and-tools/agents/agent-development-patterns.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/agents-and-tools/agents/agent-performance.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/agents-and-tools/agents/agent-quickstart.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/agents-and-tools/ai-agents.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/agents-and-tools/overview.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/agents-and-tools/references/agent-reference.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/agents-and-tools/references/tools-reference.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/applications/streamlit-app.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/architecture/overview.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/architecture.mmd +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/architecture.png +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/customer_preparation_guide.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/databricks_integration.mmd +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/deployment/production.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/development/contributing.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/employee_tools_guide.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/getting-started/installation.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/getting-started/mkdocs-quickstart.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/getting-started/quick-start.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/index.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/mkdocs.yml +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/scenario_1_architecture.mmd +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/scenario_1_flow.mmd +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/setup-docs.sh +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/task_assignment_workflow_guide.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/docs/tools/overview.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/examples/customer_preparation_workflow.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/examples/task_assignment_workflow.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/load-env.sh +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/CSS_REFACTORING_SUMMARY.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/DEMO_CONTROLS_RESTORED.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/DEMO_IMPLEMENTATION_SUMMARY.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/DEMO_QUICK_START.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/Dockerfile +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/HOMEPAGE_README.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/Makefile +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/README.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/app.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/app.yaml +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/__init__.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/backup_homepage.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/chat.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/enhanced_charts.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/enhanced_navigation.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/__init__.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/__init__.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/associate_homepage.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/dashboard_tab.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/my_tasks_tab.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/performance_tab.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/products_tab.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/schedule_tab.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/common/__init__.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/common/chat_integration.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/common/kpi_summary.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/common/notifications.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/homepage.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/__init__.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/alerts_tab.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/analytics_tab.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/dashboard_tab.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/demo_alerts.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/inventory_tab.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/manager_homepage.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/operations_tab.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/team_tab.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/__init__.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/ai_insights_tab.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/executive_dashboard_tab.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/geographical_analysis_tab.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/performance_metrics_tab.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/strategic_insights_tab.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/vp_homepage.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/metrics.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/navigation.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/oldhomepage.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/components/styles.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/config.yaml +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/demo_docs/BRAND_REP_DEMO_SUMMARY.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/demo_docs/comprehensive_demo_script.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/demo_docs/demo_scripts/brand_rep_product_education_demo.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/demo_docs/demo_scripts/store_associate_ai_assistant_demo.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/demo_docs/demo_scripts/store_manager_alert_response_demo.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/dev/README.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/dev/__init__.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/dev/components/__init__.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/dev/components/dashboard_card.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/dev/demo_alerts.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/dev/examples/sample_dashboard.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/pages/__init__.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/pages/component_showcase.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/pages/dev_playground.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/pages/playground.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/pages_wip/daily_operations.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/pages_wip/inventory.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/pages_wip/my_schedule.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/pages_wip/my_tasks.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/pages_wip/orders.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/pages_wip/products_promotions.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/pages_wip/staff.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/pages_wip/team_insights.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/pyproject.toml +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/requirements.txt +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/static/css/style.css +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/styles/README.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/styles/__init__.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/styles/base.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/styles/components.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/styles/dashboard.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/styles/homepage.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/styles/theme.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/test_vip_notification.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/tests/test_calculations.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/utils/config.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/utils/database.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/utils/model_serving.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app/utils/store_context.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app_tailadmin/Makefile +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app_tailadmin/README.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app_tailadmin/app.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/__init__.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin/__init__.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin/tailadmin_components.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin/tailadmin_components_enhanced.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin/tailadmin_styles.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin_styles.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/TAILADMIN_README.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/homepage_tailadmin.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/tailadmin_demo.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/tailadmin_implementation_guide.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/test_vp_dashboard.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/vp_dashboard_enhanced.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/vp_dashboard_tailadmin.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/components_demo.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/homepage.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/implementation_guide.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/vp_dashboard_clean.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/vp_dashboard_enhanced.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pyproject.toml +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app_tailadmin/tests/__init__.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/streamlit_store_app_tailadmin/tests/test_imports.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/tests/.gitkeep +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/tests/README.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/tests/images/doritos_upc.png +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/tests/images/lays_upc.png +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/tests/manager_demo_script.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/tests/notebook_vector_search_test.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/apps/dais2025/store-app/tests/test_vector_search_integration.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/config/dais2025/model_config_dais.yaml +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/config/examples/genie_and_vector_search.yaml +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/config/examples/human_in_the_loop.yaml +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/config/examples/jira.yaml +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/config/examples/mcp.yaml +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/config/examples/minimal.yaml +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/config/examples/reservations.yaml +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/config/hardware_store/supervisor.yaml +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/config/hardware_store/supervisor_postgres.yaml +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/config/hardware_store/swarm.yaml +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/config/quick_serve_restaurant/.gitkeep +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/config/quick_serve_restaurant/quick-serve-restaurant.yaml +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/dais2025/appointments.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/dais2025/appointments_data.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/dais2025/brand_rep_demo_data.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/dais2025/brand_rep_demo_queries.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/dais2025/brand_rep_demo_tables.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/dais2025/brand_rep_demo_validation.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/dais2025/customers.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/dais2025/customers_data.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/dais2025/dim_stores.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/dais2025/dim_stores_data.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/dais2025/employee_performance.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/dais2025/employee_performance_data.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/dais2025/employee_tasks.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/dais2025/employee_tasks_data.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/dais2025/inventory.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/dais2025/inventory_data.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/dais2025/managers.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/dais2025/managers_data.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/dais2025/product_data.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/dais2025/products.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/dais2025/task_assignments.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/hardware_store/inventory.snappy.parquet +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/hardware_store/inventory.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/hardware_store/products.snappy.parquet +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/hardware_store/products.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/quick_serve_restaurant/.gitkeep +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/quick_serve_restaurant/fulfil_item_orders.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/quick_serve_restaurant/items_description.csv +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/quick_serve_restaurant/items_description.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/quick_serve_restaurant/items_raw.csv +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/quick_serve_restaurant/items_raw.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/quick_serve_restaurant/orders_raw.csv +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/data/quick_serve_restaurant/orders_raw.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/databricks.yaml +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/docs/genie.png +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/docs/hardware_store/README.md +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/docs/hardware_store/retail_supervisor.png +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/docs/hardware_store/retail_swarm.png +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/docs/quick_serve_restaurant/.gitkeep +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/docs/quick_serve_restaurant/quick-serve-restaurant.png +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/environment.yaml +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/examples/dais2025/examples.yaml +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/examples/hardware_store/examples.yaml +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/examples/quick_serve_restaurant/.gitkeep +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/examples/quick_serve_restaurant/examples.yaml +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/functions/dais2025/extract_store_numbers.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/functions/dais2025/find_inventory_by_sku.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/functions/dais2025/find_inventory_by_upc.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/functions/dais2025/find_product_by_sku.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/functions/dais2025/find_product_by_upc.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/functions/dais2025/find_store_by_number.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/functions/dais2025/find_store_inventory_by_sku.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/functions/dais2025/find_store_inventory_by_upc.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/functions/hardware_store/find_inventory_by_sku.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/functions/hardware_store/find_inventory_by_upc.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/functions/hardware_store/find_product_by_sku.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/functions/hardware_store/find_product_by_upc.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/functions/hardware_store/find_store_inventory_by_sku.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/functions/hardware_store/find_store_inventory_by_upc.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/functions/quick_serve_restaurant/.gitkeep +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/functions/quick_serve_restaurant/insert_coffee_order.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/functions/quick_serve_restaurant/lookup_items_by_descriptions.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/functions/quick_serve_restaurant/match_historical_item_order_by_date.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/functions/quick_serve_restaurant/match_item_by_description_and_price.sql +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/notebooks/09_evaluate_inferences.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/notebooks/99_scratchpad.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/schemas/bundle_config_schema.json +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dais2025/__init__.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dais2025/models.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dais2025/tools/__init__.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dais2025/tools/customer.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dais2025/tools/employee.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dais2025/tools/executive.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dais2025/tools/genie.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dais2025/tools/inventory.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dais2025/tools/models.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dais2025/tools/store.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/__init__.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/catalog.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/chat_models.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/cli.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/graph.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/guardrails.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/hooks/__init__.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/hooks/core.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/memory/__init__.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/memory/base.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/memory/core.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/memory/postgres.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/messages.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/models.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/nodes.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/prompts.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/providers/__init__.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/providers/base.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/state.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/tools/__init__.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/tools/agent.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/tools/core.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/tools/genie.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/tools/human_in_the_loop.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/tools/mcp.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/tools/python.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/tools/time.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/tools/unity_catalog.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/types.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/utils.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/dao_ai/vector_search.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/hardware_store/__init__.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/hardware_store/hooks.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/hardware_store/tools.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/quick_serve_restaurant/.gitkeep +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/quick_serve_restaurant/__init__.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/src/quick_serve_restaurant/tools.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/tests/config/test_model_config.yaml +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/tests/conftest.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/tests/dao_ai/test_catalog.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/tests/dao_ai/test_chat_history.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/tests/dao_ai/test_config.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/tests/dao_ai/test_databricks.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/tests/dao_ai/test_function_parsing.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/tests/dao_ai/test_hooks.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/tests/dao_ai/test_inference.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/tests/dao_ai/test_mcp.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/tests/dao_ai/test_messages.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/tests/dao_ai/test_models.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/tests/dao_ai/test_state.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/tests/dao_ai/test_summarization_inference.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/tests/dao_ai/test_tools.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/tests/dao_ai/test_types.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/tests/dao_ai/test_utils.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/tests/dao_ai/test_vector_search.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/tests/dao_ai/weather_server_mcp.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/tests/hardware_store/.gitkeep +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/tests/hardware_store/test_graph.py +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/tests/images/doritos_upc.png +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/tests/images/lays_upc.png +0 -0
- {dao_ai-0.0.12 → dao_ai-0.0.14}/tests/quick_serve_restaurant/.gitkeep +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dao-ai
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.14
|
|
4
4
|
Summary: DAO AI: A modular, multi-agent orchestration framework for complex AI workflows. Supports agent handoff, tool integration, and dynamic configuration via YAML.
|
|
5
5
|
Project-URL: Homepage, https://github.com/natefleming/dao-ai
|
|
6
6
|
Project-URL: Documentation, https://natefleming.github.io/dao-ai
|
|
@@ -38,7 +38,7 @@ Requires-Dist: langgraph>=0.6.5
|
|
|
38
38
|
Requires-Dist: langmem>=0.0.29
|
|
39
39
|
Requires-Dist: loguru>=0.7.3
|
|
40
40
|
Requires-Dist: mcp>=1.9.1
|
|
41
|
-
Requires-Dist: mlflow>=3.
|
|
41
|
+
Requires-Dist: mlflow>=3.3.2
|
|
42
42
|
Requires-Dist: nest-asyncio>=1.6.0
|
|
43
43
|
Requires-Dist: openevals>=0.0.19
|
|
44
44
|
Requires-Dist: openpyxl>=3.1.5
|
|
@@ -5,11 +5,10 @@ schemas:
|
|
|
5
5
|
retail_schema: &retail_schema
|
|
6
6
|
catalog_name: nfleming # Unity Catalog name
|
|
7
7
|
schema_name: retail_ai # Schema within the catalog
|
|
8
|
-
# permissions: # Access permissions for the schema
|
|
9
|
-
# - principals: [users] # Grant access to all users
|
|
10
|
-
# privileges:
|
|
11
|
-
# - ALL_PRIVILEGES # Full permissions for demo purposes
|
|
12
8
|
|
|
9
|
+
quick_serve_retaurant_schema: &quick_serve_retaurant_schema
|
|
10
|
+
catalog_name: retail_consumer_goods # Unity Catalog name
|
|
11
|
+
schema_name: quick_serve_restaurant # Schema within the catalog
|
|
13
12
|
|
|
14
13
|
resources:
|
|
15
14
|
llms:
|
|
@@ -20,6 +19,40 @@ resources:
|
|
|
20
19
|
max_tokens: 8192 # Maximum tokens per response
|
|
21
20
|
on_behalf_of_user: False
|
|
22
21
|
|
|
22
|
+
tables:
|
|
23
|
+
product_table: &product_table
|
|
24
|
+
schema: *quick_serve_retaurant_schema # Reference to schema defined above
|
|
25
|
+
name: products # Table name
|
|
26
|
+
|
|
27
|
+
inventory_table: &inventory_table
|
|
28
|
+
schema: *quick_serve_retaurant_schema
|
|
29
|
+
name: inventory
|
|
30
|
+
|
|
31
|
+
items_description: &items_description
|
|
32
|
+
schema: *quick_serve_retaurant_schema
|
|
33
|
+
name: items_description
|
|
34
|
+
|
|
35
|
+
fulfil_item_orders: &fulfil_item_orders
|
|
36
|
+
schema: *quick_serve_retaurant_schema
|
|
37
|
+
name: fulfil_item_orders
|
|
38
|
+
|
|
39
|
+
orders: &orders
|
|
40
|
+
schema: *quick_serve_retaurant_schema
|
|
41
|
+
name: orders
|
|
42
|
+
|
|
43
|
+
functions:
|
|
44
|
+
|
|
45
|
+
lookup_items_by_descriptions: &lookup_items_by_descriptions
|
|
46
|
+
schema: *quick_serve_retaurant_schema
|
|
47
|
+
name: lookup_items_by_descriptions
|
|
48
|
+
|
|
49
|
+
match_item_by_description_and_price: &match_item_by_description_and_price
|
|
50
|
+
schema: *quick_serve_retaurant_schema
|
|
51
|
+
name: match_item_by_description_and_price
|
|
52
|
+
|
|
53
|
+
match_historical_item_order_by_date: &match_historical_item_order_by_date
|
|
54
|
+
schema: *quick_serve_retaurant_schema
|
|
55
|
+
name: match_historical_item_order_by_date
|
|
23
56
|
|
|
24
57
|
genie_rooms:
|
|
25
58
|
# Genie space for retail data queries
|
|
@@ -37,7 +70,7 @@ tools:
|
|
|
37
70
|
name: dao_ai.tools.create_genie_tool # Factory function path
|
|
38
71
|
args: # Arguments passed to factory
|
|
39
72
|
name: my_genie_tool
|
|
40
|
-
description:
|
|
73
|
+
description: Answers questions about retail products and inventory
|
|
41
74
|
genie_room: *retail_genie_room # Reference to Genie room config
|
|
42
75
|
|
|
43
76
|
|
|
@@ -49,9 +82,8 @@ agents:
|
|
|
49
82
|
tools: # Tools available to this agent
|
|
50
83
|
- *genie_tool
|
|
51
84
|
prompt: | # System prompt defining agent behavior
|
|
52
|
-
Answers
|
|
53
|
-
|
|
54
|
-
Answers all foobar questions
|
|
85
|
+
Answers questions about retail products and inventory
|
|
86
|
+
|
|
55
87
|
|
|
56
88
|
app:
|
|
57
89
|
name: genie_example # Application name
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Databricks notebook source
|
|
2
|
-
# MAGIC %pip install --quiet -r ../requirements.txt
|
|
3
|
-
# MAGIC %pip uninstall -y databricks-connect pyspark pyspark-connect
|
|
4
|
-
# MAGIC %pip install databricks-connect
|
|
2
|
+
# MAGIC %pip install --quiet --upgrade -r ../requirements.txt
|
|
3
|
+
# MAGIC %pip uninstall --quiet -y databricks-connect pyspark pyspark-connect
|
|
4
|
+
# MAGIC %pip install --quiet databricks-connect
|
|
5
5
|
# MAGIC %restart_python
|
|
6
6
|
|
|
7
7
|
# COMMAND ----------
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Databricks notebook source
|
|
2
|
-
# MAGIC %pip install --quiet -r ../requirements.txt
|
|
3
|
-
# MAGIC %pip uninstall -y databricks-connect pyspark pyspark-connect
|
|
4
|
-
# MAGIC %pip install databricks-connect
|
|
2
|
+
# MAGIC %pip install --quiet --upgrade -r ../requirements.txt
|
|
3
|
+
# MAGIC %pip uninstall --quiet -y databricks-connect pyspark pyspark-connect
|
|
4
|
+
# MAGIC %pip install --quiet databricks-connect
|
|
5
5
|
# MAGIC %restart_python
|
|
6
6
|
|
|
7
7
|
# COMMAND ----------
|
|
@@ -65,26 +65,43 @@ for _, vector_store in config.resources.vector_stores.items():
|
|
|
65
65
|
spark.table(vector_store.source_table.full_name)
|
|
66
66
|
.withColumn("id", F.col(vector_store.primary_key))
|
|
67
67
|
.withColumn("content", F.col(vector_store.embedding_source_column))
|
|
68
|
-
.withColumn("doc_uri",
|
|
68
|
+
.withColumn("doc_uri", doc_uri)
|
|
69
69
|
)
|
|
70
70
|
parsed_docs_pdf: pd.DataFrame = parsed_docs_df.toPandas()
|
|
71
71
|
|
|
72
72
|
display(parsed_docs_pdf)
|
|
73
73
|
|
|
74
|
-
agent_description =
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
74
|
+
agent_description: str = evaluation.agent_description
|
|
75
|
+
if not agent_description:
|
|
76
|
+
agent_description = """
|
|
77
|
+
A general-purpose chatbot AI agent is designed to engage in natural conversations
|
|
78
|
+
across diverse topics and tasks, drawing from broad knowledge to answer questions,
|
|
79
|
+
assist with writing, solve problems, and provide explanations while maintaining
|
|
80
|
+
context throughout interactions. It aims to be a versatile, adaptable assistant
|
|
81
|
+
that can help with the wide spectrum of things people encounter in daily life,
|
|
82
|
+
adjusting its communication style and level of detail based on user needs.
|
|
83
|
+
"""
|
|
84
|
+
|
|
85
|
+
question_guidelines: str = evaluation.question_guidelines
|
|
86
|
+
if not question_guidelines:
|
|
87
|
+
question_guidelines = f"""
|
|
88
|
+
# User personas
|
|
89
|
+
- A curious individual seeking information or explanations
|
|
90
|
+
- A student looking for homework help or learning assistance
|
|
91
|
+
- A professional needing quick research or writing support
|
|
92
|
+
- A creative person brainstorming ideas or seeking inspiration
|
|
93
|
+
|
|
94
|
+
# Example questions
|
|
95
|
+
- Can you explain how photosynthesis works?
|
|
96
|
+
- Help me write a professional email to my boss
|
|
97
|
+
- What are some good books similar to Harry Potter?
|
|
98
|
+
- How do I fix a leaky faucet?
|
|
99
|
+
|
|
100
|
+
# Additional Guidelines
|
|
101
|
+
- Questions should be conversational and natural
|
|
102
|
+
- Users may ask follow-up questions to dig deeper into topics
|
|
103
|
+
- Requests can range from simple facts to complex multi-step tasks
|
|
104
|
+
- Tone can vary from casual chat to formal assistance
|
|
88
105
|
"""
|
|
89
106
|
|
|
90
107
|
evals_pdf: pd.DataFrame = generate_evals_df(
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Databricks notebook source
|
|
2
|
-
# MAGIC %pip install --quiet -r ../requirements.txt
|
|
3
|
-
# MAGIC %pip uninstall -y databricks-connect pyspark pyspark-connect
|
|
4
|
-
# MAGIC %pip install databricks-connect
|
|
2
|
+
# MAGIC %pip install --quiet --upgrade -r ../requirements.txt
|
|
3
|
+
# MAGIC %pip uninstall --quiet -y databricks-connect pyspark pyspark-connect
|
|
4
|
+
# MAGIC %pip install --quiet databricks-connect
|
|
5
5
|
# MAGIC %restart_python
|
|
6
6
|
|
|
7
7
|
# COMMAND ----------
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Databricks notebook source
|
|
2
|
-
# MAGIC %pip install --quiet -r ../requirements.txt
|
|
3
|
-
# MAGIC %pip uninstall -y databricks-connect pyspark pyspark-connect
|
|
4
|
-
# MAGIC %pip install databricks-connect
|
|
2
|
+
# MAGIC %pip install --quiet --upgrade -r ../requirements.txt
|
|
3
|
+
# MAGIC %pip uninstall --quiet -y databricks-connect pyspark pyspark-connect
|
|
4
|
+
# MAGIC %pip install --quiet databricks-connect
|
|
5
5
|
# MAGIC %restart_python
|
|
6
6
|
|
|
7
7
|
# COMMAND ----------
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Databricks notebook source
|
|
2
2
|
# DBTITLE 1,Install Required Python Packages and Restart Kernel
|
|
3
|
-
# MAGIC %pip install --quiet -r ../requirements.txt
|
|
4
|
-
# MAGIC %pip uninstall -y databricks-connect pyspark pyspark-connect
|
|
5
|
-
# MAGIC %pip install databricks-connect
|
|
3
|
+
# MAGIC %pip install --quiet --upgrade -r ../requirements.txt
|
|
4
|
+
# MAGIC %pip uninstall --quiet -y databricks-connect pyspark pyspark-connect
|
|
5
|
+
# MAGIC %pip install --quiet databricks-connect
|
|
6
6
|
# MAGIC %restart_python
|
|
7
7
|
|
|
8
8
|
# COMMAND ----------
|
|
@@ -127,11 +127,6 @@ from mlflow.genai.scorers import scorer, Safety, Guidelines
|
|
|
127
127
|
from mlflow.entities import Feedback, Trace
|
|
128
128
|
|
|
129
129
|
|
|
130
|
-
clarity = Guidelines(
|
|
131
|
-
name="clarity",
|
|
132
|
-
guidelines=["The response must be clear, coherent, and concise"],
|
|
133
|
-
)
|
|
134
|
-
|
|
135
130
|
@scorer
|
|
136
131
|
def response_completeness(outputs: dict[str, Any]) -> Feedback:
|
|
137
132
|
|
|
@@ -225,7 +220,7 @@ eval_df: pd.DataFrame = spark.read.table(payload_table).toPandas()
|
|
|
225
220
|
|
|
226
221
|
evaluation_table_name: str = config.evaluation.table.full_name
|
|
227
222
|
|
|
228
|
-
scorers = [Safety(),
|
|
223
|
+
scorers = [Safety(), response_completeness, tool_call_efficiency]
|
|
229
224
|
custom_scorers = []
|
|
230
225
|
|
|
231
226
|
if config.evaluation.guidelines:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Databricks notebook source
|
|
2
|
-
# MAGIC %pip install --quiet -r ../requirements.txt
|
|
3
|
-
# MAGIC %pip uninstall -y databricks-connect pyspark pyspark-connect
|
|
4
|
-
# MAGIC %pip install databricks-connect
|
|
2
|
+
# MAGIC %pip install --quiet --upgrade -r ../requirements.txt
|
|
3
|
+
# MAGIC %pip uninstall --quiet -y databricks-connect pyspark pyspark-connect
|
|
4
|
+
# MAGIC %pip install --quiet databricks-connect
|
|
5
5
|
# MAGIC %restart_python
|
|
6
6
|
|
|
7
7
|
# COMMAND ----------
|
|
@@ -50,15 +50,7 @@ mlflow.langchain.autolog()
|
|
|
50
50
|
|
|
51
51
|
config: AppConfig = AppConfig.from_file(path=config_path)
|
|
52
52
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
logger.remove()
|
|
56
|
-
logger.add(sys.stderr, level=log_level)
|
|
57
|
-
|
|
58
|
-
graph: CompiledStateGraph = create_dao_ai_graph(config=config)
|
|
59
|
-
|
|
60
|
-
app: ChatModel = create_agent(graph)
|
|
61
|
-
|
|
53
|
+
app: ChatModel = config.as_chat_model()
|
|
62
54
|
|
|
63
55
|
# COMMAND ----------
|
|
64
56
|
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "dao-ai"
|
|
7
|
-
version = "0.0.
|
|
7
|
+
version = "0.0.14"
|
|
8
8
|
description = "DAO AI: A modular, multi-agent orchestration framework for complex AI workflows. Supports agent handoff, tool integration, and dynamic configuration via YAML."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { text = "MIT" }
|
|
@@ -56,7 +56,7 @@ dependencies = [
|
|
|
56
56
|
"langmem>=0.0.29",
|
|
57
57
|
"loguru>=0.7.3",
|
|
58
58
|
"mcp>=1.9.1",
|
|
59
|
-
"mlflow>=3.
|
|
59
|
+
"mlflow>=3.3.2",
|
|
60
60
|
"nest-asyncio>=1.6.0",
|
|
61
61
|
"openevals>=0.0.19",
|
|
62
62
|
"openpyxl>=3.1.5",
|
|
@@ -12,11 +12,13 @@ boto3==1.40.1
|
|
|
12
12
|
botocore==1.40.1
|
|
13
13
|
cachetools==5.5.2
|
|
14
14
|
certifi==2025.6.15
|
|
15
|
+
cffi==1.17.1
|
|
15
16
|
cfgv==3.4.0
|
|
16
17
|
charset-normalizer==3.4.2
|
|
17
18
|
click==8.2.1
|
|
18
19
|
cloudpickle==3.1.1
|
|
19
20
|
contourpy==1.3.2
|
|
21
|
+
cryptography==45.0.7
|
|
20
22
|
cycler==0.12.1
|
|
21
23
|
databricks-agents==1.2.0
|
|
22
24
|
databricks-ai-bridge==0.5.1
|
|
@@ -88,8 +90,9 @@ marshmallow==3.26.1
|
|
|
88
90
|
matplotlib==3.10.3
|
|
89
91
|
mcp==1.9.4
|
|
90
92
|
mdurl==0.1.2
|
|
91
|
-
mlflow==3.
|
|
92
|
-
mlflow-skinny==3.
|
|
93
|
+
mlflow==3.3.2
|
|
94
|
+
mlflow-skinny==3.3.2
|
|
95
|
+
mlflow-tracing==3.3.2
|
|
93
96
|
multidict==6.5.0
|
|
94
97
|
mypy==1.16.1
|
|
95
98
|
mypy-extensions==1.1.0
|
|
@@ -121,6 +124,7 @@ py4j==0.10.9.7
|
|
|
121
124
|
pyarrow==20.0.0
|
|
122
125
|
pyasn1==0.6.1
|
|
123
126
|
pyasn1-modules==0.4.2
|
|
127
|
+
pycparser==2.22
|
|
124
128
|
pydantic==2.11.7
|
|
125
129
|
pydantic-core==2.33.2
|
|
126
130
|
pydantic-settings==2.10.0
|
|
@@ -1086,6 +1086,30 @@
|
|
|
1086
1086
|
"title": "Num Evals",
|
|
1087
1087
|
"type": "integer"
|
|
1088
1088
|
},
|
|
1089
|
+
"agent_description": {
|
|
1090
|
+
"anyOf": [
|
|
1091
|
+
{
|
|
1092
|
+
"type": "string"
|
|
1093
|
+
},
|
|
1094
|
+
{
|
|
1095
|
+
"type": "null"
|
|
1096
|
+
}
|
|
1097
|
+
],
|
|
1098
|
+
"default": null,
|
|
1099
|
+
"title": "Agent Description"
|
|
1100
|
+
},
|
|
1101
|
+
"question_guidelines": {
|
|
1102
|
+
"anyOf": [
|
|
1103
|
+
{
|
|
1104
|
+
"type": "string"
|
|
1105
|
+
},
|
|
1106
|
+
{
|
|
1107
|
+
"type": "null"
|
|
1108
|
+
}
|
|
1109
|
+
],
|
|
1110
|
+
"default": null,
|
|
1111
|
+
"title": "Question Guidelines"
|
|
1112
|
+
},
|
|
1089
1113
|
"custom_inputs": {
|
|
1090
1114
|
"additionalProperties": true,
|
|
1091
1115
|
"title": "Custom Inputs",
|
|
@@ -2547,6 +2571,28 @@
|
|
|
2547
2571
|
"source_table": {
|
|
2548
2572
|
"$ref": "#/$defs/TableModel"
|
|
2549
2573
|
},
|
|
2574
|
+
"source_path": {
|
|
2575
|
+
"anyOf": [
|
|
2576
|
+
{
|
|
2577
|
+
"$ref": "#/$defs/VolumePathModel"
|
|
2578
|
+
},
|
|
2579
|
+
{
|
|
2580
|
+
"type": "null"
|
|
2581
|
+
}
|
|
2582
|
+
],
|
|
2583
|
+
"default": null
|
|
2584
|
+
},
|
|
2585
|
+
"checkpoint_path": {
|
|
2586
|
+
"anyOf": [
|
|
2587
|
+
{
|
|
2588
|
+
"$ref": "#/$defs/VolumePathModel"
|
|
2589
|
+
},
|
|
2590
|
+
{
|
|
2591
|
+
"type": "null"
|
|
2592
|
+
}
|
|
2593
|
+
],
|
|
2594
|
+
"default": null
|
|
2595
|
+
},
|
|
2550
2596
|
"primary_key": {
|
|
2551
2597
|
"anyOf": [
|
|
2552
2598
|
{
|
|
@@ -2626,17 +2672,29 @@
|
|
|
2626
2672
|
"additionalProperties": false,
|
|
2627
2673
|
"properties": {
|
|
2628
2674
|
"volume": {
|
|
2629
|
-
"
|
|
2675
|
+
"anyOf": [
|
|
2676
|
+
{
|
|
2677
|
+
"$ref": "#/$defs/VolumeModel"
|
|
2678
|
+
},
|
|
2679
|
+
{
|
|
2680
|
+
"type": "null"
|
|
2681
|
+
}
|
|
2682
|
+
],
|
|
2683
|
+
"default": null
|
|
2630
2684
|
},
|
|
2631
2685
|
"path": {
|
|
2632
|
-
"
|
|
2633
|
-
|
|
2686
|
+
"anyOf": [
|
|
2687
|
+
{
|
|
2688
|
+
"type": "string"
|
|
2689
|
+
},
|
|
2690
|
+
{
|
|
2691
|
+
"type": "null"
|
|
2692
|
+
}
|
|
2693
|
+
],
|
|
2694
|
+
"default": null,
|
|
2695
|
+
"title": "Path"
|
|
2634
2696
|
}
|
|
2635
2697
|
},
|
|
2636
|
-
"required": [
|
|
2637
|
-
"volume",
|
|
2638
|
-
"path"
|
|
2639
|
-
],
|
|
2640
2698
|
"title": "VolumePathModel",
|
|
2641
2699
|
"type": "object"
|
|
2642
2700
|
},
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
import sys
|
|
2
2
|
|
|
3
3
|
import mlflow
|
|
4
|
-
from langgraph.graph.state import CompiledStateGraph
|
|
5
4
|
from loguru import logger
|
|
6
5
|
from mlflow.models import ModelConfig
|
|
7
6
|
from mlflow.pyfunc import ChatModel
|
|
8
7
|
|
|
9
8
|
from dao_ai.config import AppConfig
|
|
10
|
-
from dao_ai.graph import create_dao_ai_graph
|
|
11
|
-
from dao_ai.models import create_agent
|
|
12
9
|
|
|
13
10
|
mlflow.langchain.autolog()
|
|
14
11
|
|
|
@@ -20,8 +17,6 @@ log_level: str = config.app.log_level
|
|
|
20
17
|
logger.remove()
|
|
21
18
|
logger.add(sys.stderr, level=log_level)
|
|
22
19
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
app: ChatModel = create_agent(graph)
|
|
20
|
+
app: ChatModel = config.as_chat_model()
|
|
26
21
|
|
|
27
22
|
mlflow.models.set_model(app)
|
|
@@ -351,12 +351,85 @@ class IndexModel(BaseModel, HasFullName, IsDatabricksResource):
|
|
|
351
351
|
)
|
|
352
352
|
|
|
353
353
|
|
|
354
|
+
class GenieRoomModel(BaseModel, IsDatabricksResource):
|
|
355
|
+
model_config = ConfigDict(use_enum_values=True, extra="forbid")
|
|
356
|
+
name: str
|
|
357
|
+
description: Optional[str] = None
|
|
358
|
+
space_id: str
|
|
359
|
+
|
|
360
|
+
@property
|
|
361
|
+
def api_scopes(self) -> Sequence[str]:
|
|
362
|
+
return [
|
|
363
|
+
"dashboards.genie",
|
|
364
|
+
]
|
|
365
|
+
|
|
366
|
+
def as_resource(self) -> DatabricksResource:
|
|
367
|
+
return DatabricksGenieSpace(
|
|
368
|
+
genie_space_id=self.space_id, on_behalf_of_user=self.on_behalf_of_user
|
|
369
|
+
)
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
class VolumeModel(BaseModel, HasFullName):
|
|
373
|
+
model_config = ConfigDict(use_enum_values=True, extra="forbid")
|
|
374
|
+
schema_model: Optional[SchemaModel] = Field(default=None, alias="schema")
|
|
375
|
+
name: str
|
|
376
|
+
|
|
377
|
+
@property
|
|
378
|
+
def full_name(self) -> str:
|
|
379
|
+
if self.schema_model:
|
|
380
|
+
return f"{self.schema_model.catalog_name}.{self.schema_model.schema_name}.{self.name}"
|
|
381
|
+
return self.name
|
|
382
|
+
|
|
383
|
+
def create(self, w: WorkspaceClient | None = None) -> None:
|
|
384
|
+
from dao_ai.providers.base import ServiceProvider
|
|
385
|
+
from dao_ai.providers.databricks import DatabricksProvider
|
|
386
|
+
|
|
387
|
+
provider: ServiceProvider = DatabricksProvider(w=w)
|
|
388
|
+
provider.create_volume(self)
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
class VolumePathModel(BaseModel, HasFullName):
|
|
392
|
+
model_config = ConfigDict(use_enum_values=True, extra="forbid")
|
|
393
|
+
volume: Optional[VolumeModel] = None
|
|
394
|
+
path: Optional[str] = None
|
|
395
|
+
|
|
396
|
+
@model_validator(mode="after")
|
|
397
|
+
def validate_path_or_volume(self):
|
|
398
|
+
if not self.volume and not self.path:
|
|
399
|
+
raise ValueError("Either 'volume' or 'path' must be provided")
|
|
400
|
+
return self
|
|
401
|
+
|
|
402
|
+
@property
|
|
403
|
+
def full_name(self) -> str:
|
|
404
|
+
if self.volume and self.volume.schema_model:
|
|
405
|
+
catalog_name: str = self.volume.schema_model.catalog_name
|
|
406
|
+
schema_name: str = self.volume.schema_model.schema_name
|
|
407
|
+
volume_name: str = self.volume.name
|
|
408
|
+
path = f"/{self.path}" if self.path else ""
|
|
409
|
+
return f"/Volumes/{catalog_name}/{schema_name}/{volume_name}{path}"
|
|
410
|
+
return self.path
|
|
411
|
+
|
|
412
|
+
def as_path(self) -> Path:
|
|
413
|
+
return Path(self.full_name)
|
|
414
|
+
|
|
415
|
+
def create(self, w: WorkspaceClient | None = None) -> None:
|
|
416
|
+
from dao_ai.providers.databricks import DatabricksProvider
|
|
417
|
+
|
|
418
|
+
if self.volume:
|
|
419
|
+
self.volume.create(w=w)
|
|
420
|
+
|
|
421
|
+
provider: DatabricksProvider = DatabricksProvider(w=w)
|
|
422
|
+
provider.create_path(self)
|
|
423
|
+
|
|
424
|
+
|
|
354
425
|
class VectorStoreModel(BaseModel, IsDatabricksResource):
|
|
355
426
|
model_config = ConfigDict(use_enum_values=True, extra="forbid")
|
|
356
427
|
embedding_model: Optional[LLMModel] = None
|
|
357
428
|
index: Optional[IndexModel] = None
|
|
358
429
|
endpoint: Optional[VectorSearchEndpoint] = None
|
|
359
430
|
source_table: TableModel
|
|
431
|
+
source_path: Optional[VolumePathModel] = None
|
|
432
|
+
checkpoint_path: Optional[VolumePathModel] = None
|
|
360
433
|
primary_key: Optional[str] = None
|
|
361
434
|
columns: Optional[list[str]] = Field(default_factory=list)
|
|
362
435
|
doc_uri: Optional[str] = None
|
|
@@ -448,43 +521,6 @@ class VectorStoreModel(BaseModel, IsDatabricksResource):
|
|
|
448
521
|
provider.create_vector_store(self)
|
|
449
522
|
|
|
450
523
|
|
|
451
|
-
class GenieRoomModel(BaseModel, IsDatabricksResource):
|
|
452
|
-
model_config = ConfigDict(use_enum_values=True, extra="forbid")
|
|
453
|
-
name: str
|
|
454
|
-
description: Optional[str] = None
|
|
455
|
-
space_id: str
|
|
456
|
-
|
|
457
|
-
@property
|
|
458
|
-
def api_scopes(self) -> Sequence[str]:
|
|
459
|
-
return [
|
|
460
|
-
"dashboards.genie",
|
|
461
|
-
]
|
|
462
|
-
|
|
463
|
-
def as_resource(self) -> DatabricksResource:
|
|
464
|
-
return DatabricksGenieSpace(
|
|
465
|
-
genie_space_id=self.space_id, on_behalf_of_user=self.on_behalf_of_user
|
|
466
|
-
)
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
class VolumeModel(BaseModel, HasFullName):
|
|
470
|
-
model_config = ConfigDict(use_enum_values=True, extra="forbid")
|
|
471
|
-
schema_model: Optional[SchemaModel] = Field(default=None, alias="schema")
|
|
472
|
-
name: str
|
|
473
|
-
|
|
474
|
-
@property
|
|
475
|
-
def full_name(self) -> str:
|
|
476
|
-
if self.schema_model:
|
|
477
|
-
return f"{self.schema_model.catalog_name}.{self.schema_model.schema_name}.{self.name}"
|
|
478
|
-
return self.name
|
|
479
|
-
|
|
480
|
-
def create(self, w: WorkspaceClient | None = None) -> None:
|
|
481
|
-
from dao_ai.providers.base import ServiceProvider
|
|
482
|
-
from dao_ai.providers.databricks import DatabricksProvider
|
|
483
|
-
|
|
484
|
-
provider: ServiceProvider = DatabricksProvider(w=w)
|
|
485
|
-
provider.create_volume(self)
|
|
486
|
-
|
|
487
|
-
|
|
488
524
|
class FunctionModel(BaseModel, HasFullName, IsDatabricksResource):
|
|
489
525
|
model_config = ConfigDict()
|
|
490
526
|
schema_model: Optional[SchemaModel] = Field(default=None, alias="schema")
|
|
@@ -1093,6 +1129,8 @@ class EvaluationModel(BaseModel):
|
|
|
1093
1129
|
model: LLMModel
|
|
1094
1130
|
table: TableModel
|
|
1095
1131
|
num_evals: int
|
|
1132
|
+
agent_description: Optional[str] = None
|
|
1133
|
+
question_guidelines: Optional[str] = None
|
|
1096
1134
|
custom_inputs: dict[str, Any] = Field(default_factory=dict)
|
|
1097
1135
|
guidelines: list[GuidelineModel] = Field(default_factory=list)
|
|
1098
1136
|
|
|
@@ -1107,21 +1145,6 @@ class DatasetFormat(str, Enum):
|
|
|
1107
1145
|
EXCEL = "excel"
|
|
1108
1146
|
|
|
1109
1147
|
|
|
1110
|
-
class VolumePathModel(BaseModel, HasFullName):
|
|
1111
|
-
model_config = ConfigDict(use_enum_values=True, extra="forbid")
|
|
1112
|
-
volume: VolumeModel
|
|
1113
|
-
path: str
|
|
1114
|
-
|
|
1115
|
-
@property
|
|
1116
|
-
def full_name(self) -> str:
|
|
1117
|
-
if self.volume.schema_model:
|
|
1118
|
-
catalog_name: str = self.volume.schema_model.catalog_name
|
|
1119
|
-
schema_name: str = self.volume.schema_model.schema_name
|
|
1120
|
-
volume_name: str = self.volume.name
|
|
1121
|
-
return f"/Volumes/{catalog_name}/{schema_name}/{volume_name}/{self.path}"
|
|
1122
|
-
return f"/Volumes/{volume_name}/{self.path}"
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
1148
|
class DatasetModel(BaseModel):
|
|
1126
1149
|
model_config = ConfigDict(use_enum_values=True, extra="forbid")
|
|
1127
1150
|
table: Optional[TableModel] = None
|
|
@@ -1211,6 +1234,10 @@ class AppConfig(BaseModel):
|
|
|
1211
1234
|
def initialize(self) -> None:
|
|
1212
1235
|
from dao_ai.hooks.core import create_hooks
|
|
1213
1236
|
|
|
1237
|
+
if self.app and self.app.log_level:
|
|
1238
|
+
logger.remove()
|
|
1239
|
+
logger.add(sys.stderr, level=self.app.log_level)
|
|
1240
|
+
|
|
1214
1241
|
logger.debug("Calling initialization hooks...")
|
|
1215
1242
|
initialization_functions: Sequence[Callable[..., Any]] = create_hooks(
|
|
1216
1243
|
self.app.initialization_hooks
|
|
@@ -54,6 +54,7 @@ from dao_ai.config import (
|
|
|
54
54
|
UnityCatalogFunctionSqlModel,
|
|
55
55
|
VectorStoreModel,
|
|
56
56
|
VolumeModel,
|
|
57
|
+
VolumePathModel,
|
|
57
58
|
WarehouseModel,
|
|
58
59
|
)
|
|
59
60
|
from dao_ai.models import get_latest_model_version
|
|
@@ -441,6 +442,12 @@ class DatabricksProvider(ServiceProvider):
|
|
|
441
442
|
)
|
|
442
443
|
return volume_info
|
|
443
444
|
|
|
445
|
+
def create_path(self, volume_path: VolumePathModel) -> Path:
|
|
446
|
+
path: Path = volume_path.full_name
|
|
447
|
+
logger.info(f"Creating volume path: {path}")
|
|
448
|
+
self.w.files.create_directory(path)
|
|
449
|
+
return path
|
|
450
|
+
|
|
444
451
|
def create_dataset(self, dataset: DatasetModel) -> None:
|
|
445
452
|
current_dir: Path = "file:///" / Path.cwd().relative_to("/")
|
|
446
453
|
|
|
@@ -51,7 +51,9 @@ def create_vector_search_tool(
|
|
|
51
51
|
|
|
52
52
|
vector_search_tool: BaseTool = VectorSearchRetrieverTool(
|
|
53
53
|
name=name,
|
|
54
|
+
tool_name=name,
|
|
54
55
|
description=description,
|
|
56
|
+
tool_description=description,
|
|
55
57
|
index_name=index_name,
|
|
56
58
|
columns=columns,
|
|
57
59
|
**search_parameters,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|