dao-ai 0.0.27__tar.gz → 0.0.29__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.29/.python-version +1 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/PKG-INFO +5 -3
- dao_ai-0.0.29/config/examples/vector_search_with_reranking.yaml +293 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/config/hardware_store/supervisor.yaml +22 -153
- {dao_ai-0.0.27 → dao_ai-0.0.29}/environment.yaml +1 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/pyproject.toml +6 -4
- {dao_ai-0.0.27 → dao_ai-0.0.29}/requirements.txt +8 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/schemas/model_config_schema.json +71 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/agent_as_code.py +3 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/config.py +60 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/providers/databricks.py +7 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/tools/genie.py +2 -6
- dao_ai-0.0.29/src/dao_ai/tools/vector_search.py +282 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/utils.py +1 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/dao_ai/test_databricks.py +69 -0
- dao_ai-0.0.29/tests/dao_ai/test_reranking.py +294 -0
- dao_ai-0.0.29/tests/dao_ai/test_reranking_integration.py +468 -0
- dao_ai-0.0.27/.python-version +0 -1
- dao_ai-0.0.27/docs/prompt_optimization_updates.md +0 -170
- dao_ai-0.0.27/src/dao_ai/tools/vector_search.py +0 -72
- {dao_ai-0.0.27 → dao_ai-0.0.29}/.gitignore +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/CHANGELOG.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/CONTRIBUTING.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/LICENSE +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/Makefile +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/README.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/Makefile +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/REFACTORING_SUMMARY.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/base-environment-serverless.yaml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/demo_docs/BRAND_REP_DEMO_SUMMARY.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/demo_docs/demo_scripts/brand_rep_product_education_demo.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/demo_docs/demo_scripts/store_associate_ai_assistant_demo.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/demo_docs/demo_scripts/store_manager_alert_response_demo.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/development_workflows.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/.gitkeep +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/Makefile +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/agent_implementation.mmd +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/agent_tools_architecture.mmd +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/agents-and-tools/agent-troubleshooting.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/agents-and-tools/agents/agent-best-practices.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/agents-and-tools/agents/agent-development-patterns.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/agents-and-tools/agents/agent-performance.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/agents-and-tools/agents/agent-quickstart.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/agents-and-tools/ai-agents.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/agents-and-tools/overview.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/agents-and-tools/references/agent-reference.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/agents-and-tools/references/tools-reference.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/applications/streamlit-app.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/architecture/overview.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/architecture.mmd +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/architecture.png +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/customer_preparation_guide.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/databricks_integration.mmd +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/deployment/production.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/development/contributing.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/employee_tools_guide.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/getting-started/installation.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/getting-started/mkdocs-quickstart.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/getting-started/quick-start.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/index.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/mkdocs.yml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/scenario_1_architecture.mmd +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/scenario_1_flow.mmd +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/setup-docs.sh +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/task_assignment_workflow_guide.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/docs/tools/overview.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/examples/customer_preparation_workflow.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/examples/task_assignment_workflow.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/load-env.sh +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/CSS_REFACTORING_SUMMARY.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/DEMO_CONTROLS_RESTORED.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/DEMO_IMPLEMENTATION_SUMMARY.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/DEMO_QUICK_START.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/Dockerfile +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/HOMEPAGE_README.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/Makefile +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/README.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/app.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/app.yaml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/__init__.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/backup_homepage.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/chat.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/enhanced_charts.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/enhanced_navigation.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/__init__.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/__init__.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/associate_homepage.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/dashboard_tab.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/my_tasks_tab.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/performance_tab.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/products_tab.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/associate/schedule_tab.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/common/__init__.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/common/chat_integration.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/common/kpi_summary.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/common/notifications.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/homepage.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/__init__.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/alerts_tab.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/analytics_tab.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/dashboard_tab.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/demo_alerts.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/inventory_tab.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/manager_homepage.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/operations_tab.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/store_manager/team_tab.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/__init__.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/ai_insights_tab.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/executive_dashboard_tab.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/geographical_analysis_tab.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/performance_metrics_tab.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/strategic_insights_tab.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/homepage/vp_retail_operations/vp_homepage.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/metrics.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/navigation.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/oldhomepage.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/components/styles.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/config.yaml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/demo_docs/BRAND_REP_DEMO_SUMMARY.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/demo_docs/comprehensive_demo_script.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/demo_docs/demo_scripts/brand_rep_product_education_demo.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/demo_docs/demo_scripts/store_associate_ai_assistant_demo.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/demo_docs/demo_scripts/store_manager_alert_response_demo.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/dev/README.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/dev/__init__.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/dev/components/__init__.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/dev/components/dashboard_card.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/dev/demo_alerts.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/dev/examples/sample_dashboard.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/pages/__init__.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/pages/component_showcase.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/pages/dev_playground.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/pages/playground.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/pages_wip/daily_operations.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/pages_wip/inventory.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/pages_wip/my_schedule.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/pages_wip/my_tasks.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/pages_wip/orders.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/pages_wip/products_promotions.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/pages_wip/staff.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/pages_wip/team_insights.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/pyproject.toml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/requirements.txt +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/static/css/style.css +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/styles/README.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/styles/__init__.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/styles/base.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/styles/components.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/styles/dashboard.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/styles/homepage.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/styles/theme.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/test_vip_notification.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/tests/test_calculations.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/utils/config.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/utils/database.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/utils/model_serving.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app/utils/store_context.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app_tailadmin/Makefile +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app_tailadmin/README.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app_tailadmin/app.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/__init__.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin/__init__.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin/tailadmin_components.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin/tailadmin_components_enhanced.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin/tailadmin_styles.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app_tailadmin/components/tailadmin/tailadmin_styles.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/TAILADMIN_README.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/homepage_tailadmin.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/tailadmin_demo.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/tailadmin_implementation_guide.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/test_vp_dashboard.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/vp_dashboard_enhanced.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app_tailadmin/old/vp_dashboard_tailadmin.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/components_demo.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/homepage.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/implementation_guide.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/vp_dashboard_clean.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pages/vp_dashboard_enhanced.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app_tailadmin/pyproject.toml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app_tailadmin/tests/__init__.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/streamlit_store_app_tailadmin/tests/test_imports.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/tests/.gitkeep +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/tests/README.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/tests/images/doritos_upc.png +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/tests/images/lays_upc.png +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/tests/manager_demo_script.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/tests/notebook_vector_search_test.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/apps/dais2025/store-app/tests/test_vector_search_integration.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/config/dais2025/model_config_dais.yaml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/config/examples/deep_research.yaml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/config/examples/executive_assistant.yaml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/config/examples/genie.yaml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/config/examples/genie_and_genie_mcp.yaml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/config/examples/genie_and_vector_search.yaml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/config/examples/genie_with_conversion_id.yaml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/config/examples/human_in_the_loop.yaml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/config/examples/jira.yaml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/config/examples/mcp.yaml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/config/examples/mcp_with_uc_connection.yaml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/config/examples/minimal.yaml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/config/examples/prompt_optimization.yaml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/config/examples/prompt_registry.yaml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/config/examples/reservations.yaml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/config/examples/slack.yaml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/config/hardware_store/supervisor_postgres.yaml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/config/hardware_store/swarm.yaml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/config/quick_serve_restaurant/.gitkeep +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/config/quick_serve_restaurant/quick-serve-restaurant.yaml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/dais2025/appointments.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/dais2025/appointments_data.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/dais2025/brand_rep_demo_data.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/dais2025/brand_rep_demo_queries.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/dais2025/brand_rep_demo_tables.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/dais2025/brand_rep_demo_validation.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/dais2025/customers.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/dais2025/customers_data.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/dais2025/dim_stores.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/dais2025/dim_stores_data.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/dais2025/employee_performance.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/dais2025/employee_performance_data.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/dais2025/employee_tasks.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/dais2025/employee_tasks_data.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/dais2025/inventory.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/dais2025/inventory_data.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/dais2025/managers.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/dais2025/managers_data.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/dais2025/product_data.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/dais2025/products.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/dais2025/task_assignments.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/hardware_store/inventory.snappy.parquet +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/hardware_store/inventory.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/hardware_store/products.snappy.parquet +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/hardware_store/products.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/quick_serve_restaurant/.gitkeep +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/quick_serve_restaurant/fulfil_item_orders.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/quick_serve_restaurant/items_description.csv +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/quick_serve_restaurant/items_description.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/quick_serve_restaurant/items_raw.csv +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/quick_serve_restaurant/items_raw.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/quick_serve_restaurant/orders_raw.csv +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/data/quick_serve_restaurant/orders_raw.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/databricks.yaml.template +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/docs/genie.png +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/docs/hardware_store/README.md +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/docs/hardware_store/retail_supervisor.png +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/docs/hardware_store/retail_swarm.png +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/docs/quick_serve_restaurant/.gitkeep +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/docs/quick_serve_restaurant/quick-serve-restaurant.png +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/examples/dais2025/examples.yaml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/examples/deep_research/examples.yaml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/examples/executive_assistant/examples.yaml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/examples/hardware_store/examples.yaml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/examples/quick_serve_restaurant/.gitkeep +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/examples/quick_serve_restaurant/examples.yaml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/functions/dais2025/extract_store_numbers.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/functions/dais2025/find_inventory_by_sku.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/functions/dais2025/find_inventory_by_upc.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/functions/dais2025/find_product_by_sku.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/functions/dais2025/find_product_by_upc.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/functions/dais2025/find_store_by_number.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/functions/dais2025/find_store_inventory_by_sku.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/functions/dais2025/find_store_inventory_by_upc.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/functions/hardware_store/find_inventory_by_sku.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/functions/hardware_store/find_inventory_by_upc.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/functions/hardware_store/find_product_by_sku.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/functions/hardware_store/find_product_by_upc.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/functions/hardware_store/find_store_inventory_by_sku.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/functions/hardware_store/find_store_inventory_by_upc.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/functions/quick_serve_restaurant/.gitkeep +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/functions/quick_serve_restaurant/insert_coffee_order.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/functions/quick_serve_restaurant/lookup_items_by_descriptions.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/functions/quick_serve_restaurant/match_historical_item_order_by_date.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/functions/quick_serve_restaurant/match_item_by_description_and_price.sql +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/notebooks/01_ingest_and_transform.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/notebooks/02_provision_vector_search.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/notebooks/03_provision_lakebase.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/notebooks/04_unity_catalog_tools.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/notebooks/05_deploy_agent.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/notebooks/06_generate_evaluation_data.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/notebooks/07_run_evaluation.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/notebooks/08_run_examples.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/notebooks/09_evaluate_inferences.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/notebooks/10_optimize_prompts.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/notebooks/99_scratchpad.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/notebooks/INVESTech.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/schemas/bundle_config_schema.json +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dais2025/__init__.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dais2025/models.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dais2025/tools/__init__.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dais2025/tools/customer.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dais2025/tools/employee.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dais2025/tools/executive.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dais2025/tools/genie.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dais2025/tools/inventory.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dais2025/tools/models.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dais2025/tools/store.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/__init__.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/catalog.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/chat_models.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/cli.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/graph.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/guardrails.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/hooks/__init__.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/hooks/core.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/memory/__init__.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/memory/base.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/memory/core.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/memory/postgres.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/messages.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/models.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/nodes.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/prompts.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/providers/__init__.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/providers/base.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/state.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/tools/__init__.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/tools/agent.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/tools/core.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/tools/human_in_the_loop.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/tools/mcp.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/tools/python.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/tools/slack.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/tools/time.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/tools/unity_catalog.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/types.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/dao_ai/vector_search.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/hardware_store/__init__.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/hardware_store/hooks.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/hardware_store/tools.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/quick_serve_restaurant/.gitkeep +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/quick_serve_restaurant/__init__.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/src/quick_serve_restaurant/tools.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/config/test_model_config.yaml +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/conftest.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/dao_ai/test_catalog.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/dao_ai/test_chat_history.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/dao_ai/test_config.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/dao_ai/test_function_parsing.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/dao_ai/test_genie.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/dao_ai/test_genie_conversation_ids_in_outputs.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/dao_ai/test_genie_databricks_integration.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/dao_ai/test_hooks.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/dao_ai/test_inference.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/dao_ai/test_inference_integration.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/dao_ai/test_mcp.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/dao_ai/test_mcp_function_model.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/dao_ai/test_messages.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/dao_ai/test_models.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/dao_ai/test_postgres_integration.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/dao_ai/test_prompt_optimizations.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/dao_ai/test_prompts.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/dao_ai/test_state.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/dao_ai/test_summarization_inference.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/dao_ai/test_tools.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/dao_ai/test_types.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/dao_ai/test_unity_catalog.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/dao_ai/test_utils.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/dao_ai/test_vector_search.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/dao_ai/weather_server_mcp.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/hardware_store/.gitkeep +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/hardware_store/test_graph.py +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/images/doritos_upc.png +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/images/lays_upc.png +0 -0
- {dao_ai-0.0.27 → dao_ai-0.0.29}/tests/quick_serve_restaurant/.gitkeep +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.11
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dao-ai
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.29
|
|
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
|
|
@@ -18,17 +18,19 @@ Classifier: Intended Audience :: Science/Research
|
|
|
18
18
|
Classifier: License :: OSI Approved :: MIT License
|
|
19
19
|
Classifier: Operating System :: OS Independent
|
|
20
20
|
Classifier: Programming Language :: Python :: 3
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
22
|
Classifier: Programming Language :: Python :: 3.12
|
|
22
23
|
Classifier: Programming Language :: Python :: 3.13
|
|
23
24
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
24
25
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
25
26
|
Classifier: Topic :: System :: Distributed Computing
|
|
26
|
-
Requires-Python: >=3.
|
|
27
|
+
Requires-Python: >=3.11
|
|
27
28
|
Requires-Dist: databricks-agents>=1.7.0
|
|
28
29
|
Requires-Dist: databricks-langchain>=0.8.1
|
|
29
30
|
Requires-Dist: databricks-mcp>=0.3.0
|
|
30
31
|
Requires-Dist: databricks-sdk[openai]>=0.67.0
|
|
31
32
|
Requires-Dist: duckduckgo-search>=8.0.2
|
|
33
|
+
Requires-Dist: flashrank>=0.2.8
|
|
32
34
|
Requires-Dist: gepa>=0.0.17
|
|
33
35
|
Requires-Dist: grandalf>=0.8
|
|
34
36
|
Requires-Dist: langchain-mcp-adapters>=0.1.10
|
|
@@ -56,7 +58,7 @@ Requires-Dist: tomli>=2.3.0
|
|
|
56
58
|
Requires-Dist: unitycatalog-ai[databricks]>=0.3.0
|
|
57
59
|
Provides-Extra: databricks
|
|
58
60
|
Requires-Dist: databricks-connect>=15.0.0; extra == 'databricks'
|
|
59
|
-
Requires-Dist: databricks-vectorsearch>=0.
|
|
61
|
+
Requires-Dist: databricks-vectorsearch>=0.63; extra == 'databricks'
|
|
60
62
|
Requires-Dist: pyspark>=3.5.0; extra == 'databricks'
|
|
61
63
|
Provides-Extra: dev
|
|
62
64
|
Requires-Dist: mypy>=1.0.0; extra == 'dev'
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
# yaml-language-server: $schema=../../schemas/model_config_schema.json
|
|
2
|
+
|
|
3
|
+
schemas:
|
|
4
|
+
retail_schema: &retail_schema
|
|
5
|
+
catalog_name: retail_consumer_goods # Unity Catalog name
|
|
6
|
+
schema_name: store_ops # Schema within the catalog
|
|
7
|
+
|
|
8
|
+
resources:
|
|
9
|
+
llms:
|
|
10
|
+
# Primary LLM for general tasks
|
|
11
|
+
default_llm: &default_llm
|
|
12
|
+
name: databricks-meta-llama-3-3-70b-instruct # Databricks serving endpoint name
|
|
13
|
+
temperature: 0.1 # Low temperature for consistent responses
|
|
14
|
+
max_tokens: 8192 # Maximum tokens per response
|
|
15
|
+
|
|
16
|
+
embedding_model: &embedding_model
|
|
17
|
+
name: databricks-gte-large-en # Text embedding model
|
|
18
|
+
|
|
19
|
+
vector_stores:
|
|
20
|
+
# Product information vector store for similarity search
|
|
21
|
+
products_vector_store: &products_vector_store
|
|
22
|
+
embedding_model: *embedding_model # Reference to embedding model above
|
|
23
|
+
endpoint: # Vector search endpoint configuration
|
|
24
|
+
name: one-env-shared-endpoint-0 # Databricks vector search endpoint
|
|
25
|
+
type: STANDARD # Endpoint type (STANDARD or OPTIMIZED_STORAGE)
|
|
26
|
+
index: # Vector search index configuration
|
|
27
|
+
schema: *retail_schema # Unity Catalog schema for the index
|
|
28
|
+
name: retail_vectorstore # Index name
|
|
29
|
+
source_table: # Table containing source data
|
|
30
|
+
schema: *retail_schema
|
|
31
|
+
name: products
|
|
32
|
+
primary_key: item_id # Primary key column
|
|
33
|
+
doc_uri: ~ # Optional document URI column (null in this case)
|
|
34
|
+
embedding_source_column: item_description # Column to create embeddings from
|
|
35
|
+
columns: # Columns to include in vector store
|
|
36
|
+
- item_id
|
|
37
|
+
- item_name
|
|
38
|
+
- item_description
|
|
39
|
+
- category
|
|
40
|
+
- price
|
|
41
|
+
|
|
42
|
+
retrievers:
|
|
43
|
+
# Standard retriever WITHOUT reranking
|
|
44
|
+
standard_retriever: &standard_retriever
|
|
45
|
+
vector_store: *products_vector_store # Reference to vector store defined above
|
|
46
|
+
columns: # Columns to return in search results
|
|
47
|
+
- item_id
|
|
48
|
+
- item_name
|
|
49
|
+
- item_description
|
|
50
|
+
- category
|
|
51
|
+
- price
|
|
52
|
+
search_parameters: # Search configuration
|
|
53
|
+
num_results: 10 # Number of results to return
|
|
54
|
+
filters: {} # Additional filters (empty in this case)
|
|
55
|
+
query_type: ANN # Approximate Nearest Neighbor search
|
|
56
|
+
|
|
57
|
+
# Retriever WITH default reranking
|
|
58
|
+
default_reranked_retriever: &default_reranked_retriever
|
|
59
|
+
vector_store: *products_vector_store
|
|
60
|
+
columns:
|
|
61
|
+
- item_id
|
|
62
|
+
- item_name
|
|
63
|
+
- item_description
|
|
64
|
+
- category
|
|
65
|
+
- price
|
|
66
|
+
search_parameters:
|
|
67
|
+
num_results: 50 # Retrieve more candidates for reranking
|
|
68
|
+
filters: {}
|
|
69
|
+
query_type: ANN
|
|
70
|
+
rerank: true # Enable reranking with default settings
|
|
71
|
+
|
|
72
|
+
# Retriever WITH custom reranking (fast model)
|
|
73
|
+
fast_reranked_retriever: &fast_reranked_retriever
|
|
74
|
+
vector_store: *products_vector_store
|
|
75
|
+
columns:
|
|
76
|
+
- item_id
|
|
77
|
+
- item_name
|
|
78
|
+
- item_description
|
|
79
|
+
- category
|
|
80
|
+
- price
|
|
81
|
+
search_parameters:
|
|
82
|
+
num_results: 100 # Cast wide net for reranking
|
|
83
|
+
filters: {}
|
|
84
|
+
query_type: ANN
|
|
85
|
+
rerank: # Custom reranking configuration
|
|
86
|
+
model: ms-marco-MiniLM-L-6-v2 # Faster, lighter model
|
|
87
|
+
top_n: 5 # Return top 5 after reranking
|
|
88
|
+
cache_dir: /tmp/flashrank_cache # Cache directory for model weights
|
|
89
|
+
|
|
90
|
+
# Retriever WITH accurate reranking (hybrid + reranking)
|
|
91
|
+
accurate_reranked_retriever: &accurate_reranked_retriever
|
|
92
|
+
vector_store: *products_vector_store
|
|
93
|
+
columns:
|
|
94
|
+
- item_id
|
|
95
|
+
- item_name
|
|
96
|
+
- item_description
|
|
97
|
+
- category
|
|
98
|
+
- price
|
|
99
|
+
search_parameters:
|
|
100
|
+
num_results: 50
|
|
101
|
+
filters: {}
|
|
102
|
+
query_type: HYBRID # Use hybrid search for better recall
|
|
103
|
+
rerank:
|
|
104
|
+
model: ms-marco-MiniLM-L-12-v2 # Balanced model (default)
|
|
105
|
+
top_n: 10 # Return top 10 after reranking
|
|
106
|
+
cache_dir: /tmp/flashrank_cache
|
|
107
|
+
|
|
108
|
+
tools:
|
|
109
|
+
# Tool 1: Standard vector search (no reranking)
|
|
110
|
+
standard_search_tool: &standard_search_tool
|
|
111
|
+
name: standard_product_search
|
|
112
|
+
function:
|
|
113
|
+
type: factory
|
|
114
|
+
name: dao_ai.tools.create_vector_search_tool
|
|
115
|
+
args:
|
|
116
|
+
retriever: *standard_retriever
|
|
117
|
+
name: standard_product_search
|
|
118
|
+
description: |
|
|
119
|
+
Search for products using standard vector similarity search.
|
|
120
|
+
Returns the 10 most similar products based on embeddings.
|
|
121
|
+
|
|
122
|
+
# Tool 2: Vector search with default reranking
|
|
123
|
+
default_reranked_tool: &default_reranked_tool
|
|
124
|
+
name: reranked_product_search
|
|
125
|
+
function:
|
|
126
|
+
type: factory
|
|
127
|
+
name: dao_ai.tools.create_vector_search_tool
|
|
128
|
+
args:
|
|
129
|
+
retriever: *default_reranked_retriever
|
|
130
|
+
name: reranked_product_search
|
|
131
|
+
description: |
|
|
132
|
+
Search for products with reranking enabled.
|
|
133
|
+
Retrieves 50 candidates and reranks them using FlashRank
|
|
134
|
+
with the default model (ms-marco-MiniLM-L-12-v2).
|
|
135
|
+
|
|
136
|
+
# Tool 3: Vector search with fast reranking
|
|
137
|
+
fast_reranked_tool: &fast_reranked_tool
|
|
138
|
+
name: fast_reranked_search
|
|
139
|
+
function:
|
|
140
|
+
type: factory
|
|
141
|
+
name: dao_ai.tools.create_vector_search_tool
|
|
142
|
+
args:
|
|
143
|
+
retriever: *fast_reranked_retriever
|
|
144
|
+
name: fast_reranked_search
|
|
145
|
+
description: |
|
|
146
|
+
Fast product search with lightweight reranking.
|
|
147
|
+
Retrieves 100 candidates, reranks with a fast model,
|
|
148
|
+
and returns the top 5 most relevant results.
|
|
149
|
+
|
|
150
|
+
# Tool 4: Vector search with accurate reranking
|
|
151
|
+
accurate_reranked_tool: &accurate_reranked_tool
|
|
152
|
+
name: accurate_product_search
|
|
153
|
+
function:
|
|
154
|
+
type: factory
|
|
155
|
+
name: dao_ai.tools.create_vector_search_tool
|
|
156
|
+
args:
|
|
157
|
+
retriever: *accurate_reranked_retriever
|
|
158
|
+
name: accurate_product_search
|
|
159
|
+
description: |
|
|
160
|
+
High-accuracy product search combining hybrid search and reranking.
|
|
161
|
+
Uses HYBRID query type for better initial recall, then reranks
|
|
162
|
+
using a more accurate model to return the best 10 results.
|
|
163
|
+
|
|
164
|
+
agents:
|
|
165
|
+
# Agent 1: Uses standard search (no reranking)
|
|
166
|
+
standard_search_agent: &standard_search_agent
|
|
167
|
+
name: standard_search
|
|
168
|
+
description: "Product search agent using standard vector similarity"
|
|
169
|
+
model: *default_llm
|
|
170
|
+
tools:
|
|
171
|
+
- *standard_search_tool
|
|
172
|
+
prompt: |
|
|
173
|
+
You are a product search assistant. Use the standard_product_search tool
|
|
174
|
+
to find products based on customer queries. Provide clear, helpful responses.
|
|
175
|
+
handoff_prompt: |
|
|
176
|
+
Handles basic product searches using standard vector similarity.
|
|
177
|
+
|
|
178
|
+
# Agent 2: Uses reranking with defaults
|
|
179
|
+
reranked_search_agent: &reranked_search_agent
|
|
180
|
+
name: reranked_search
|
|
181
|
+
description: "Product search agent with reranking for improved accuracy"
|
|
182
|
+
model: *default_llm
|
|
183
|
+
tools:
|
|
184
|
+
- *default_reranked_tool
|
|
185
|
+
prompt: |
|
|
186
|
+
You are an enhanced product search assistant with reranking capabilities.
|
|
187
|
+
Use the reranked_product_search tool to find the most relevant products.
|
|
188
|
+
The results are reranked for better accuracy.
|
|
189
|
+
handoff_prompt: |
|
|
190
|
+
Handles product searches with reranking for improved result quality.
|
|
191
|
+
|
|
192
|
+
# Agent 3: Uses fast reranking
|
|
193
|
+
fast_search_agent: &fast_search_agent
|
|
194
|
+
name: fast_search
|
|
195
|
+
description: "Product search agent with fast reranking"
|
|
196
|
+
model: *default_llm
|
|
197
|
+
tools:
|
|
198
|
+
- *fast_reranked_tool
|
|
199
|
+
prompt: |
|
|
200
|
+
You are a fast product search assistant. Use the fast_reranked_search tool
|
|
201
|
+
to quickly find the most relevant products from a large candidate set.
|
|
202
|
+
handoff_prompt: |
|
|
203
|
+
Handles product searches with fast reranking for high-volume scenarios.
|
|
204
|
+
|
|
205
|
+
# Agent 4: Uses accurate reranking with hybrid search
|
|
206
|
+
accurate_search_agent: &accurate_search_agent
|
|
207
|
+
name: accurate_search
|
|
208
|
+
description: "Product search agent with hybrid search and accurate reranking"
|
|
209
|
+
model: *default_llm
|
|
210
|
+
tools:
|
|
211
|
+
- *accurate_reranked_tool
|
|
212
|
+
prompt: |
|
|
213
|
+
You are a high-accuracy product search assistant. Use the accurate_product_search
|
|
214
|
+
tool which combines hybrid search with reranking for the best possible results.
|
|
215
|
+
handoff_prompt: |
|
|
216
|
+
Handles product searches requiring highest accuracy using hybrid search and reranking.
|
|
217
|
+
|
|
218
|
+
app:
|
|
219
|
+
name: vector_search_with_reranking_example
|
|
220
|
+
description: "Demonstrates vector search with and without reranking"
|
|
221
|
+
log_level: INFO
|
|
222
|
+
registered_model:
|
|
223
|
+
schema: *retail_schema
|
|
224
|
+
name: vector_search_reranking_agent
|
|
225
|
+
endpoint_name: vector_search_reranking_agent
|
|
226
|
+
tags:
|
|
227
|
+
demo: reranking
|
|
228
|
+
feature: vector_search
|
|
229
|
+
permissions:
|
|
230
|
+
- principals: [users]
|
|
231
|
+
entitlements:
|
|
232
|
+
- CAN_QUERY
|
|
233
|
+
agents:
|
|
234
|
+
# Include all agents to demonstrate different reranking configurations
|
|
235
|
+
- *standard_search_agent # No reranking (baseline)
|
|
236
|
+
- *reranked_search_agent # Default reranking
|
|
237
|
+
- *fast_search_agent # Fast reranking
|
|
238
|
+
- *accurate_search_agent # Accurate reranking with hybrid
|
|
239
|
+
orchestration:
|
|
240
|
+
supervisor:
|
|
241
|
+
model: *default_llm
|
|
242
|
+
|
|
243
|
+
# ==============================================================================
|
|
244
|
+
# RERANKING BEST PRACTICES AND CONFIGURATION GUIDE
|
|
245
|
+
# ==============================================================================
|
|
246
|
+
#
|
|
247
|
+
# This example demonstrates 4 different search configurations:
|
|
248
|
+
#
|
|
249
|
+
# 1. Standard Search (no reranking) - standard_search_agent
|
|
250
|
+
# - Baseline vector similarity search
|
|
251
|
+
# - Fast but may return less relevant results
|
|
252
|
+
# - Use when: Speed is critical, simple queries
|
|
253
|
+
#
|
|
254
|
+
# 2. Default Reranking - reranked_search_agent
|
|
255
|
+
# - Uses rerank: true for automatic configuration
|
|
256
|
+
# - Retrieves 50 candidates, reranks with ms-marco-MiniLM-L-12-v2
|
|
257
|
+
# - Good balance of speed and accuracy
|
|
258
|
+
# - Use when: Need better results than standard search
|
|
259
|
+
#
|
|
260
|
+
# 3. Fast Reranking - fast_search_agent
|
|
261
|
+
# - Uses lighter model (ms-marco-MiniLM-L-6-v2)
|
|
262
|
+
# - Retrieves 100 candidates, returns top 5
|
|
263
|
+
# - Faster than default but still improves results
|
|
264
|
+
# - Use when: High volume, need speed with some accuracy boost
|
|
265
|
+
#
|
|
266
|
+
# 4. Accurate Reranking - accurate_search_agent
|
|
267
|
+
# - Combines HYBRID search with reranking
|
|
268
|
+
# - Best possible result quality
|
|
269
|
+
# - Higher latency (~200-500ms)
|
|
270
|
+
# - Use when: Quality is paramount (customer-facing, critical queries)
|
|
271
|
+
#
|
|
272
|
+
# Configuration Pattern:
|
|
273
|
+
# retriever:
|
|
274
|
+
# vector_store: *your_vector_store
|
|
275
|
+
# search_parameters:
|
|
276
|
+
# num_results: 50 # Retrieve 2-10x more than needed
|
|
277
|
+
# query_type: ANN # or HYBRID for better recall
|
|
278
|
+
# rerank: # Optional reranking
|
|
279
|
+
# model: ms-marco-MiniLM-L-12-v2 # Choose model
|
|
280
|
+
# top_n: 10 # Final count after reranking
|
|
281
|
+
# cache_dir: /tmp/flashrank_cache
|
|
282
|
+
#
|
|
283
|
+
# Performance Tips:
|
|
284
|
+
# - First request downloads model (~50MB) - allow extra time
|
|
285
|
+
# - Subsequent requests are fast (100-500ms)
|
|
286
|
+
# - More candidates = better reranking but slower
|
|
287
|
+
# - Cache directory should be on fast storage
|
|
288
|
+
#
|
|
289
|
+
# Model Selection:
|
|
290
|
+
# - ms-marco-TinyBERT-L-2-v2: Fastest, basic accuracy
|
|
291
|
+
# - ms-marco-MiniLM-L-6-v2: Fast, good accuracy
|
|
292
|
+
# - ms-marco-MiniLM-L-12-v2: Balanced (default)
|
|
293
|
+
# - rank-T5-flan: Most accurate, slowest
|
|
@@ -108,12 +108,12 @@ resources:
|
|
|
108
108
|
# Define Unity Catalog tables used by the system
|
|
109
109
|
tables:
|
|
110
110
|
# Product catalog table
|
|
111
|
-
product_table:
|
|
111
|
+
product_table:
|
|
112
112
|
schema: *retail_schema # Reference to schema defined above
|
|
113
113
|
name: products # Table name
|
|
114
114
|
|
|
115
115
|
# Inventory tracking table
|
|
116
|
-
inventory_table:
|
|
116
|
+
inventory_table:
|
|
117
117
|
schema: *retail_schema
|
|
118
118
|
name: inventory
|
|
119
119
|
|
|
@@ -123,7 +123,7 @@ resources:
|
|
|
123
123
|
# Define Unity Catalog volumes for file storage
|
|
124
124
|
volumes:
|
|
125
125
|
# Volume for retail AI assets and files
|
|
126
|
-
retail_volume:
|
|
126
|
+
retail_volume:
|
|
127
127
|
schema: *retail_schema
|
|
128
128
|
name: retail_ai
|
|
129
129
|
|
|
@@ -162,88 +162,11 @@ resources:
|
|
|
162
162
|
# Define SQL warehouses for query execution
|
|
163
163
|
warehouses:
|
|
164
164
|
# Shared warehouse for general query execution
|
|
165
|
-
shared_endpoint_warehouse:
|
|
165
|
+
shared_endpoint_warehouse:
|
|
166
166
|
name: "Shared Endpoint Warehouse" # Human-readable name
|
|
167
167
|
description: "A warehouse for shared endpoints" # Description
|
|
168
168
|
warehouse_id: 148ccb90800933a1 # Databricks warehouse ID
|
|
169
169
|
|
|
170
|
-
# ---------------------------------------------------------------------------
|
|
171
|
-
# DATABASES
|
|
172
|
-
# ---------------------------------------------------------------------------
|
|
173
|
-
# Configure external databases (e.g., PostgreSQL for checkpoints and memory)
|
|
174
|
-
databases:
|
|
175
|
-
# PostgreSQL database for agent memory and checkpoints
|
|
176
|
-
retail_database: &retail_database
|
|
177
|
-
name: "retail-consumer-goods"
|
|
178
|
-
description: "Database for agent memory and checkpoints"
|
|
179
|
-
|
|
180
|
-
# Database connection parameters
|
|
181
|
-
# These can be set via environment variables or Databricks secrets
|
|
182
|
-
host:
|
|
183
|
-
default_value: localhost
|
|
184
|
-
options:
|
|
185
|
-
- env: PGHOST # Environment variable
|
|
186
|
-
- scope: retail_ai # Databricks secret scope
|
|
187
|
-
secret: PGHOST # Secret name
|
|
188
|
-
port:
|
|
189
|
-
default_value: 5432
|
|
190
|
-
options:
|
|
191
|
-
- env: PGPORT
|
|
192
|
-
- scope: retail_ai
|
|
193
|
-
secret: PGPORT
|
|
194
|
-
database:
|
|
195
|
-
default_value: databricks_postgres # Default database name
|
|
196
|
-
options:
|
|
197
|
-
- env: PGDATABASE
|
|
198
|
-
- scope: retail_ai
|
|
199
|
-
secret: PGDATABASE
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
# Traditional PostgreSQL authentication (commented out)
|
|
203
|
-
# Uncomment and configure if using direct database auth instead of OAuth2
|
|
204
|
-
# user:
|
|
205
|
-
# default_value: postgres
|
|
206
|
-
# options:
|
|
207
|
-
# - env: PGUSER
|
|
208
|
-
# - scope: retail_ai
|
|
209
|
-
# secret: PGUSER
|
|
210
|
-
# password:
|
|
211
|
-
# default_value: postgres
|
|
212
|
-
# options:
|
|
213
|
-
# - env: PGPASSWORD
|
|
214
|
-
# - scope: retail_ai
|
|
215
|
-
# secret: PGPASSWORD
|
|
216
|
-
|
|
217
|
-
# OAuth2 client credentials for Databricks authentication
|
|
218
|
-
# Used to generate access tokens for database connections
|
|
219
|
-
# This approach is recommended for Databricks environments
|
|
220
|
-
client_id:
|
|
221
|
-
options:
|
|
222
|
-
- env: RETAIL_AI_DATABRICKS_CLIENT_ID # Service principal client ID
|
|
223
|
-
- scope: retail_ai
|
|
224
|
-
secret: RETAIL_AI_DATABRICKS_CLIENT_ID
|
|
225
|
-
client_secret:
|
|
226
|
-
options:
|
|
227
|
-
- env: RETAIL_AI_DATABRICKS_CLIENT_SECRET # Service principal secret
|
|
228
|
-
- scope: retail_ai
|
|
229
|
-
secret: RETAIL_AI_DATABRICKS_CLIENT_SECRET
|
|
230
|
-
workspace_host:
|
|
231
|
-
options:
|
|
232
|
-
- env: RETAIL_AI_DATABRICKS_HOST # Databricks workspace URL
|
|
233
|
-
- scope: retail_ai
|
|
234
|
-
secret: RETAIL_AI_DATABRICKS_HOST
|
|
235
|
-
|
|
236
|
-
# Optional: Additional PostgreSQL connection parameters
|
|
237
|
-
# Uncomment and modify as needed for your specific setup
|
|
238
|
-
# connection_kwargs: # Additional connection parameters
|
|
239
|
-
# autocommit: True # Enable autocommit mode
|
|
240
|
-
# prepare_threshold: 0 # Disable prepared statements
|
|
241
|
-
# sslmode: require # Require SSL connection
|
|
242
|
-
# connect_timeout: 10 # Connection timeout in seconds
|
|
243
|
-
|
|
244
|
-
# Optional: Connection pool configuration
|
|
245
|
-
# max_pool_size: 20 # Maximum connections in pool
|
|
246
|
-
# timeout: 5 # Connection timeout in seconds
|
|
247
170
|
|
|
248
171
|
# =============================================================================
|
|
249
172
|
# RETRIEVERS CONFIGURATION
|
|
@@ -264,9 +187,15 @@ retrievers:
|
|
|
264
187
|
- class_cd
|
|
265
188
|
- description
|
|
266
189
|
search_parameters: # Search configuration
|
|
267
|
-
num_results:
|
|
190
|
+
num_results: 50 # Maximum number of results to return
|
|
268
191
|
filters: {} # Additional filters (empty in this case)
|
|
269
192
|
query_type: ANN # Approximate Nearest Neighbor search
|
|
193
|
+
rerank:
|
|
194
|
+
top_n: 10
|
|
195
|
+
columns:
|
|
196
|
+
- merchandise_class
|
|
197
|
+
- product_name
|
|
198
|
+
- brand_name
|
|
270
199
|
|
|
271
200
|
# =============================================================================
|
|
272
201
|
# TOOLS CONFIGURATION
|
|
@@ -310,7 +239,7 @@ tools:
|
|
|
310
239
|
args: {} # No arguments needed
|
|
311
240
|
|
|
312
241
|
# Vector search tool for product similarity
|
|
313
|
-
|
|
242
|
+
find_product_details_by_description_tool: &find_product_details_by_description_tool
|
|
314
243
|
name: vector_search
|
|
315
244
|
function:
|
|
316
245
|
type: factory
|
|
@@ -318,17 +247,17 @@ tools:
|
|
|
318
247
|
args:
|
|
319
248
|
retriever: *products_retriever # Reference to retriever config
|
|
320
249
|
name: product_vector_search_tool # Tool instance name
|
|
321
|
-
description: "Search for products
|
|
250
|
+
description: "Search for products by description" # Tool description
|
|
322
251
|
|
|
323
252
|
# Product details search by description
|
|
324
|
-
find_product_details_by_description_tool:
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
253
|
+
# find_product_details_by_description_tool:
|
|
254
|
+
# &find_product_details_by_description_tool
|
|
255
|
+
# name: find_product_details_by_description
|
|
256
|
+
# function:
|
|
257
|
+
# type: factory
|
|
258
|
+
# name: hardware_store.tools.find_product_details_by_description_tool
|
|
259
|
+
# args:
|
|
260
|
+
# retriever: *products_retriever # Uses product retriever for search
|
|
332
261
|
|
|
333
262
|
# ---------------------------------------------------------------------------
|
|
334
263
|
# UNITY CATALOG TOOLS
|
|
@@ -361,20 +290,6 @@ tools:
|
|
|
361
290
|
type: unity_catalog
|
|
362
291
|
<<: *find_inventory_by_upc
|
|
363
292
|
|
|
364
|
-
# Store-specific inventory tools using Unity Catalog functions
|
|
365
|
-
find_store_inventory_by_sku_uc_tool: &find_store_inventory_by_sku_uc_tool
|
|
366
|
-
name: find_store_inventory_by_sku_uc
|
|
367
|
-
function:
|
|
368
|
-
type: unity_catalog
|
|
369
|
-
<<: *find_store_inventory_by_sku
|
|
370
|
-
|
|
371
|
-
find_store_inventory_by_upc_uc_tool: &find_store_inventory_by_upc_uc_tool
|
|
372
|
-
name: find_store_inventory_by_upc_uc
|
|
373
|
-
function:
|
|
374
|
-
type: unity_catalog
|
|
375
|
-
<<: *find_store_inventory_by_upc
|
|
376
|
-
|
|
377
|
-
|
|
378
293
|
|
|
379
294
|
# =============================================================================
|
|
380
295
|
# GUARDRAILS CONFIGURATION
|
|
@@ -408,26 +323,6 @@ guardrails:
|
|
|
408
323
|
### Response:
|
|
409
324
|
{outputs}
|
|
410
325
|
|
|
411
|
-
# =============================================================================
|
|
412
|
-
# MEMORY CONFIGURATION
|
|
413
|
-
# =============================================================================
|
|
414
|
-
# Configure persistent storage for agent conversations and context
|
|
415
|
-
|
|
416
|
-
memory: &memory
|
|
417
|
-
# Conversation checkpointing for state persistence
|
|
418
|
-
checkpointer:
|
|
419
|
-
name: default_checkpointer # Checkpointer identifier
|
|
420
|
-
type: memory # Storage type (postgres or memory)
|
|
421
|
-
#database: *retail_database # Reference to database configuration
|
|
422
|
-
|
|
423
|
-
# Long-term memory store for agent context
|
|
424
|
-
store:
|
|
425
|
-
name: default_store # Store identifier
|
|
426
|
-
type: memory # Store type (memory or postgres)
|
|
427
|
-
embedding_model: *embedding_model # Model for semantic memory
|
|
428
|
-
dims: 1536 # Embedding dimensions
|
|
429
|
-
# database: *retail_database # Database for persistence (if needed)
|
|
430
|
-
|
|
431
326
|
# =============================================================================
|
|
432
327
|
# AGENTS CONFIGURATION
|
|
433
328
|
# =============================================================================
|
|
@@ -863,32 +758,7 @@ agents:
|
|
|
863
758
|
Questions asking for product suggestions, recommendations, or "best" products for specific needs
|
|
864
759
|
Example: "What's the best drill for home use?" or "Recommend me a good beginner woodworking kit"
|
|
865
760
|
|
|
866
|
-
|
|
867
|
-
name: process_image
|
|
868
|
-
description: "Image analysis specialist for extracting product information from images, including summaries, product names, and UPC codes"
|
|
869
|
-
model: *reasoning_llm
|
|
870
|
-
tools: []
|
|
871
|
-
prompt: |
|
|
872
|
-
### Task Description
|
|
873
|
-
|
|
874
|
-
Analyze the provided product image and extract the following specific information into a structured format:
|
|
875
|
-
|
|
876
|
-
- Summary: Provide a concise summary (1-3 sentences) describing what is shown in the image. Focus on describing the product(s), packaging, and any prominent visual elements.
|
|
877
|
-
- Product Names: Extract the exact product name(s) as they appear on the packaging. Include brand names and specific product variants if visible. List each distinct product separately.
|
|
878
|
-
- UPC Codes: Identify and extract any UPC (Universal Product Code) barcodes visible in the image. These typically appear as 12-digit numbers beneath a barcode. Provide the complete numeric sequence without dashes or spaces.
|
|
879
|
-
|
|
880
|
-
### Important Guidelines
|
|
881
|
-
|
|
882
|
-
- Extract information ONLY if it is clearly visible in the image
|
|
883
|
-
- For product names, use the EXACT text as it appears on packaging
|
|
884
|
-
- For UPC codes, verify all digits are clearly legible before extraction
|
|
885
|
-
- If any requested information is not visible or legible in the image, omit it entirely rather than guessing
|
|
886
|
-
- Do not provide placeholder values, assumptions, or partial information
|
|
887
|
-
- Format all extracted information according to the specified output structure
|
|
888
|
-
|
|
889
|
-
### Response Guidelines
|
|
890
|
-
If any field cannot be determined from the image, exclude it from the output rather than providing an empty value.
|
|
891
|
-
|
|
761
|
+
|
|
892
762
|
# =============================================================================
|
|
893
763
|
# APPLICATION CONFIGURATION
|
|
894
764
|
# =============================================================================
|
|
@@ -919,7 +789,6 @@ app:
|
|
|
919
789
|
- *recommendation # Product recommendation agent
|
|
920
790
|
- *general # General purpose agent
|
|
921
791
|
orchestration: # Agent orchestration configuration
|
|
922
|
-
#memory: *memory # Reference to memory configuration
|
|
923
792
|
supervisor: # Supervisor orchestration pattern
|
|
924
793
|
model: *tool_calling_llm # LLM for routing decisions
|
|
925
794
|
message_hooks:
|
|
@@ -4,11 +4,11 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "dao-ai"
|
|
7
|
-
version = "0.0.
|
|
7
|
+
version = "0.0.29"
|
|
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" }
|
|
11
|
-
requires-python = ">=3.
|
|
11
|
+
requires-python = ">=3.11"
|
|
12
12
|
authors = [
|
|
13
13
|
{ name = "Nate Fleming", email = "nate.fleming@databricks.com" },
|
|
14
14
|
{ name = "Nate Fleming", email = "nate.fleming@gmail.com" },
|
|
@@ -35,6 +35,7 @@ classifiers = [
|
|
|
35
35
|
"License :: OSI Approved :: MIT License",
|
|
36
36
|
"Operating System :: OS Independent",
|
|
37
37
|
"Programming Language :: Python :: 3",
|
|
38
|
+
"Programming Language :: Python :: 3.11",
|
|
38
39
|
"Programming Language :: Python :: 3.12",
|
|
39
40
|
"Programming Language :: Python :: 3.13",
|
|
40
41
|
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
@@ -47,6 +48,7 @@ dependencies = [
|
|
|
47
48
|
"databricks-mcp>=0.3.0",
|
|
48
49
|
"databricks-sdk[openai]>=0.67.0",
|
|
49
50
|
"duckduckgo-search>=8.0.2",
|
|
51
|
+
"flashrank>=0.2.8",
|
|
50
52
|
"gepa>=0.0.17",
|
|
51
53
|
"grandalf>=0.8",
|
|
52
54
|
"langchain>=0.3.27",
|
|
@@ -102,7 +104,7 @@ test = [
|
|
|
102
104
|
"pytest-mock>=3.10.0",
|
|
103
105
|
]
|
|
104
106
|
databricks = [
|
|
105
|
-
"databricks-vectorsearch>=0.
|
|
107
|
+
"databricks-vectorsearch>=0.63",
|
|
106
108
|
"pyspark>=3.5.0",
|
|
107
109
|
"databricks-connect>=15.0.0",
|
|
108
110
|
]
|
|
@@ -165,7 +167,7 @@ exclude = [
|
|
|
165
167
|
|
|
166
168
|
[tool.ruff]
|
|
167
169
|
# Enable the Ruff formatter
|
|
168
|
-
target-version = "
|
|
170
|
+
target-version = "py311" # Minimum supported Python version
|
|
169
171
|
line-length = 88 # Same as Black's default
|
|
170
172
|
indent-width = 4
|
|
171
173
|
|