langgraph-agent-toolkit 0.7.0__tar.gz → 0.7.2__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.
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/.env.example +1 -25
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/CHANGELOG.md +30 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/PKG-INFO +13 -10
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/README.md +3 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/agents/agent_executor.py +6 -1
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/core/observability/langfuse.py +14 -3
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/core/settings.py +19 -4
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/pyproject.toml +16 -16
- langgraph_agent_toolkit-0.7.2/scripts/python/099-t.py +52 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/tests/agents/test_agent_executor.py +30 -27
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/tests/core/test_prompts.py +2 -0
- langgraph_agent_toolkit-0.7.2/uv.lock +4467 -0
- langgraph_agent_toolkit-0.7.0/uv.lock +0 -4331
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/.coveragerc +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/.dockerignore +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/.github/RELEASE_TEMPLATE/release-template.md +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/.github/codecov.yml +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/.github/dependabot.yml +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/.github/scripts/tag_from_pyproject.sh +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/.github/workflows/deploy.yml +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/.github/workflows/release.yml +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/.github/workflows/sphinx.yml +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/.github/workflows/test.yml +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/.gitignore +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/.pre-commit-config.yaml +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/.project-root +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/CONTRIBUTING.md +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/LICENSE +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/Makefile +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/configs/clickhouse/.clickhouse.env.example +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/configs/langfuse/.langfuse.env.example +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/configs/litellm/.litellm.env.example +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/configs/litellm/config.example.yaml +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/configs/minio/.minio.env.example +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/configs/postgres/.postgres.env.example +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/configs/redis/.redis.env.example +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/docker/app/Dockerfile +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/docker/service/Dockerfile +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/docker-compose.yaml +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/docs/.gitignore +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/docs/Makefile +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/docs/_static/custom.css +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/docs/_templates/class.rst +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/docs/_templates/layout.html +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/docs/_templates/module.rst +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/docs/conf.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/docs/contributing.rst +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/docs/environment_setup.rst +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/docs/index.rst +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/docs/installation.rst +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/docs/make.bat +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/docs/media/agent_architecture.excalidraw +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/docs/media/agent_architecture.png +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/docs/media/agent_diagram.png +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/docs/media/logo.svg +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/docs/usage.rst +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph.json +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/__init__.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/agents/__init__.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/agents/agent.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/agents/blueprints/__init__.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/agents/blueprints/bg_task_agent/__init__.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/agents/blueprints/bg_task_agent/agent.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/agents/blueprints/bg_task_agent/task.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/agents/blueprints/bg_task_agent/utils.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/agents/blueprints/chatbot/__init__.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/agents/blueprints/chatbot/agent.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/agents/blueprints/command_agent/__init__.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/agents/blueprints/command_agent/agent.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/agents/blueprints/interrupt_agent/__init__.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/agents/blueprints/interrupt_agent/agent.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/agents/blueprints/knowledge_base_agent/__init__.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/agents/blueprints/knowledge_base_agent/agent.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/agents/blueprints/react/__init__.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/agents/blueprints/react/agent.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/agents/blueprints/react_so/__init__.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/agents/blueprints/react_so/agent.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/agents/blueprints/supervisor_agent/__init__.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/agents/blueprints/supervisor_agent/agent.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/agents/components/__init__.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/agents/components/creators/__init__.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/agents/components/creators/create_react_agent.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/agents/components/tools.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/agents/components/utils.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/client/__init__.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/client/client.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/core/__init__.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/core/memory/__init__.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/core/memory/base.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/core/memory/factory.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/core/memory/postgres.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/core/memory/sqlite.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/core/memory/types.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/core/models/__init__.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/core/models/chat_openai.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/core/models/factory.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/core/models/fake.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/core/observability/__init__.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/core/observability/base.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/core/observability/empty.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/core/observability/factory.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/core/observability/langsmith.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/core/observability/types.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/core/prompts/__init__.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/core/prompts/chat_prompt_template.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/helper/__init__.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/helper/constants.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/helper/logging.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/helper/types.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/helper/utils.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/run_agent.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/run_client.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/run_service.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/schema/__init__.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/schema/models.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/schema/schema.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/schema/task_data.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/service/__init__.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/service/exception_handlers.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/service/factory.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/service/handler.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/service/middleware.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/service/routes.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/service/types.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/service/utils.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/langgraph_agent_toolkit/streamlit_app.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/scripts/postgres-init/create_databases.sql +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/scripts/python/01-invoke-proxy.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/scripts/python/02-test-local-pm.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/scripts/python/03-test-langfuse-pm.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/scripts/python/04-test-langsmith-pm.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/scripts/python/05-test-prompt-types.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/scripts/python/06-test-custom-chat-prompt-template.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/scripts/python/07-test-get-chat-history.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/scripts/python/08-test-update-chat-history.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/scripts/python/09-test-clear-chat-history.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/tests/agents/test_service_streaming.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/tests/app/conftest.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/tests/app/test_streamlit_app.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/tests/client/conftest.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/tests/client/test_client.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/tests/conftest.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/tests/core/test_llm.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/tests/core/test_memory.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/tests/core/test_observability.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/tests/core/test_settings.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/tests/integration/test_docker_e2e.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/tests/service/conftest.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/tests/service/test_auth.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/tests/service/test_factory.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/tests/service/test_service.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/tests/service/test_service_e2e.py +0 -0
- {langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/tests/service/test_utils.py +0 -0
|
@@ -85,31 +85,7 @@ OLLAMA_BASE_URL=
|
|
|
85
85
|
|
|
86
86
|
# Model configurations - use multiline format with line continuation for readability
|
|
87
87
|
# It can be useful if you want to use different models for different agents or use different models from different providers.
|
|
88
|
-
MODEL_CONFIGS={
|
|
89
|
-
"gpt4o": {\
|
|
90
|
-
"provider": "azure_openai",\
|
|
91
|
-
"name": "gpt-4o",\
|
|
92
|
-
"api_key": "azure-key-123",\
|
|
93
|
-
"endpoint": "https://your-resource.openai.azure.com/",\
|
|
94
|
-
"api_version": "2023-05-15",\
|
|
95
|
-
"deployment": "gpt4o-deployment",\
|
|
96
|
-
"temperature": 0.7\
|
|
97
|
-
},\
|
|
98
|
-
"gpt4o-mini": {\
|
|
99
|
-
"provider": "azure_openai",\
|
|
100
|
-
"name": "gpt-4o-mini",\
|
|
101
|
-
"api_key": "azure-key-123",\
|
|
102
|
-
"endpoint": "https://your-resource.openai.azure.com/",\
|
|
103
|
-
"api_version": "2023-05-15",\
|
|
104
|
-
"deployment": "gpt4o-mini-deployment"\
|
|
105
|
-
},\
|
|
106
|
-
"gemini": {\
|
|
107
|
-
"provider": "google_genai",\
|
|
108
|
-
"name": "gemini-pro",\
|
|
109
|
-
"api_key": "google-key-123",\
|
|
110
|
-
"temperature": 0.7\
|
|
111
|
-
}\
|
|
112
|
-
}
|
|
88
|
+
MODEL_CONFIGS={"router":{"provider":"azure_openai","model_name":"gpt-4o","openai_api_key":"your-azure-key-here","azure_endpoint":"https://your-resource.openai.azure.com/","openai_api_version":"2024-12-01-preview","deployment_name":"gpt-4o-deployment"},"assistant":{"provider":"azure_openai","model_name":"gpt-4o-mini","openai_api_key":"your-azure-key-here","azure_endpoint":"https://your-resource.openai.azure.com/","openai_api_version":"2024-12-01-preview","deployment_name":"gpt-4o-mini-deployment"},"analyzer":{"provider":"google_genai","model_name":"gemini-pro","api_key":"your-google-key-here","temperature":0.7}}
|
|
113
89
|
|
|
114
90
|
# Amazon Bedrock Knowledge Base ID
|
|
115
91
|
AWS_KB_ID=
|
|
@@ -6,6 +6,36 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
|
6
6
|
and this project adheres to
|
|
7
7
|
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
8
8
|
|
|
9
|
+
## [0.7.2]
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- New env variable for model config
|
|
14
|
+
|
|
15
|
+
## [0.7.1]
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- Agent executor test mock assertion to include additional `environment` and
|
|
20
|
+
`tags` parameters
|
|
21
|
+
- Async test methods missing `@pytest.mark.asyncio` decorator in prompts tests
|
|
22
|
+
|
|
23
|
+
### Updated
|
|
24
|
+
|
|
25
|
+
- Dependencies to latest versions
|
|
26
|
+
- Agent executor `get_callback_handler` method to pass additional parameters:
|
|
27
|
+
- Added `environment` parameter from settings.ENV_MODE
|
|
28
|
+
- Added `tags` parameter with agent name for better observability tracking
|
|
29
|
+
|
|
30
|
+
### Improved
|
|
31
|
+
|
|
32
|
+
- Langfuse observability prompt hash detection with fallback mechanism:
|
|
33
|
+
- Enhanced `push_prompt` method to use tags as fallback when commit_message is
|
|
34
|
+
empty
|
|
35
|
+
- Added robust `hasattr` checks for both `commit_message` and `tags`
|
|
36
|
+
attributes
|
|
37
|
+
- Improved logging to show old vs new hash values for better debugging
|
|
38
|
+
|
|
9
39
|
## [0.7.0]
|
|
10
40
|
|
|
11
41
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: langgraph-agent-toolkit
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.2
|
|
4
4
|
Summary: Full toolkit for running an AI agent service built with LangGraph, FastAPI and Streamlit
|
|
5
5
|
Project-URL: documentation, https://kryvokhyzha.github.io/langgraph-agent-toolkit
|
|
6
6
|
Project-URL: repository, https://github.com/kryvokhyzha/langgraph-agent-toolkit
|
|
@@ -33,24 +33,24 @@ Requires-Dist: langchain-community~=0.3.24
|
|
|
33
33
|
Requires-Dist: langchain-core~=0.3.60
|
|
34
34
|
Requires-Dist: langgraph-checkpoint-postgres~=2.0.21
|
|
35
35
|
Requires-Dist: langgraph-checkpoint-sqlite~=2.0.7
|
|
36
|
-
Requires-Dist: langgraph-cli[inmem]
|
|
36
|
+
Requires-Dist: langgraph-cli[inmem]<0.4.0,>=0.2.10
|
|
37
37
|
Requires-Dist: langgraph-supervisor~=0.0.21
|
|
38
38
|
Requires-Dist: langgraph~=0.4.5
|
|
39
39
|
Requires-Dist: loguru~=0.7.3
|
|
40
40
|
Requires-Dist: multidict>6.3.2
|
|
41
|
+
Requires-Dist: numpy<2.4.0,>=2.2.3; python_version >= '3.13'
|
|
41
42
|
Requires-Dist: numpy~=1.26.4; python_version <= '3.12'
|
|
42
|
-
Requires-Dist: numpy~=2.2.3; python_version >= '3.13'
|
|
43
43
|
Requires-Dist: onnxruntime~=1.22.0
|
|
44
|
-
Requires-Dist: pandas
|
|
44
|
+
Requires-Dist: pandas<2.4.0,>=2.2.3
|
|
45
45
|
Requires-Dist: psycopg[binary,pool]~=3.2.4
|
|
46
46
|
Requires-Dist: pyarrow>=19.0.1
|
|
47
|
-
Requires-Dist: pydantic-settings
|
|
47
|
+
Requires-Dist: pydantic-settings<2.11.0,>=2.9.1
|
|
48
48
|
Requires-Dist: pydantic~=2.11.1
|
|
49
49
|
Requires-Dist: pyowm~=3.3.0
|
|
50
50
|
Requires-Dist: python-dotenv~=1.1.0
|
|
51
51
|
Requires-Dist: rootutils>=1.0.7
|
|
52
52
|
Requires-Dist: setuptools>=75.6.0
|
|
53
|
-
Requires-Dist: streamlit
|
|
53
|
+
Requires-Dist: streamlit<1.47,>=1.45
|
|
54
54
|
Requires-Dist: uvicorn~=0.34.0
|
|
55
55
|
Requires-Dist: watchdog~=6.0.0
|
|
56
56
|
Provides-Extra: all-backends
|
|
@@ -68,8 +68,8 @@ Requires-Dist: langchain-groq~=0.3.2; extra == 'all-llms'
|
|
|
68
68
|
Requires-Dist: langchain-ollama~=0.3.2; extra == 'all-llms'
|
|
69
69
|
Requires-Dist: langchain-openai~=0.3.16; extra == 'all-llms'
|
|
70
70
|
Provides-Extra: all-observability
|
|
71
|
-
Requires-Dist: langfuse
|
|
72
|
-
Requires-Dist: langsmith
|
|
71
|
+
Requires-Dist: langfuse<3.1.0,>=2.60.3; extra == 'all-observability'
|
|
72
|
+
Requires-Dist: langsmith<0.5.0,>=0.3.31; extra == 'all-observability'
|
|
73
73
|
Provides-Extra: anthropic
|
|
74
74
|
Requires-Dist: langchain-anthropic~=0.3.12; extra == 'anthropic'
|
|
75
75
|
Provides-Extra: aws
|
|
@@ -90,9 +90,9 @@ Provides-Extra: gunicorn-backend
|
|
|
90
90
|
Requires-Dist: gunicorn~=23.0.0; extra == 'gunicorn-backend'
|
|
91
91
|
Requires-Dist: uvicorn[standard]~=0.34.2; extra == 'gunicorn-backend'
|
|
92
92
|
Provides-Extra: langfuse
|
|
93
|
-
Requires-Dist: langfuse
|
|
93
|
+
Requires-Dist: langfuse<3.1.0,>=2.60.3; extra == 'langfuse'
|
|
94
94
|
Provides-Extra: langsmith
|
|
95
|
-
Requires-Dist: langsmith
|
|
95
|
+
Requires-Dist: langsmith<0.5.0,>=0.3.31; extra == 'langsmith'
|
|
96
96
|
Provides-Extra: ollama
|
|
97
97
|
Requires-Dist: langchain-ollama~=0.3.2; extra == 'ollama'
|
|
98
98
|
Provides-Extra: openai
|
|
@@ -150,6 +150,9 @@ Whether you're building a simple chatbot or complex multi-agent system, this
|
|
|
150
150
|
toolkit provides the infrastructure to develop, test, and deploy your
|
|
151
151
|
LangGraph-based agents with confidence.
|
|
152
152
|
|
|
153
|
+
You can use [DeepWiki](https://deepwiki.com/kryvokhyzha/langgraph-agent-toolkit)
|
|
154
|
+
to learn more about this repository.
|
|
155
|
+
|
|
153
156
|
## 📑 Contents
|
|
154
157
|
|
|
155
158
|
- [Introduction](#-introduction)
|
|
@@ -47,6 +47,9 @@ Whether you're building a simple chatbot or complex multi-agent system, this
|
|
|
47
47
|
toolkit provides the infrastructure to develop, test, and deploy your
|
|
48
48
|
LangGraph-based agents with confidence.
|
|
49
49
|
|
|
50
|
+
You can use [DeepWiki](https://deepwiki.com/kryvokhyzha/langgraph-agent-toolkit)
|
|
51
|
+
to learn more about this repository.
|
|
52
|
+
|
|
50
53
|
## 📑 Contents
|
|
51
54
|
|
|
52
55
|
- [Introduction](#-introduction)
|
|
@@ -237,7 +237,12 @@ class AgentExecutor:
|
|
|
237
237
|
if agent_config:
|
|
238
238
|
configurable.update(agent_config)
|
|
239
239
|
|
|
240
|
-
callback = agent.observability.get_callback_handler(
|
|
240
|
+
callback = agent.observability.get_callback_handler(
|
|
241
|
+
session_id=thread_id,
|
|
242
|
+
user_id=user_id,
|
|
243
|
+
environment=settings.ENV_MODE,
|
|
244
|
+
tags=[agent.name],
|
|
245
|
+
)
|
|
241
246
|
|
|
242
247
|
config = RunnableConfig(
|
|
243
248
|
configurable=configurable,
|
|
@@ -67,11 +67,21 @@ class LangfuseObservability(BaseObservabilityPlatform):
|
|
|
67
67
|
existing_prompt = langfuse.get_prompt(name=name)
|
|
68
68
|
|
|
69
69
|
# Check if content has changed by comparing hashes
|
|
70
|
-
|
|
70
|
+
# First try commit_message, then fall back to tags
|
|
71
|
+
existing_hash = None
|
|
72
|
+
if hasattr(existing_prompt, "commit_message") and existing_prompt.commit_message:
|
|
73
|
+
existing_hash = existing_prompt.commit_message
|
|
74
|
+
elif hasattr(existing_prompt, "tags") and existing_prompt.tags and len(existing_prompt.tags) > 0:
|
|
75
|
+
# Use the first tag as the hash (assuming it contains the prompt hash)
|
|
76
|
+
existing_hash = existing_prompt.tags[0]
|
|
77
|
+
|
|
78
|
+
if existing_hash and existing_hash == prompt_hash:
|
|
71
79
|
content_changed = False
|
|
72
|
-
logger.debug(f"Prompt '{name}' content unchanged")
|
|
80
|
+
logger.debug(f"Prompt '{name}' content unchanged (hash: {existing_hash})")
|
|
73
81
|
else:
|
|
74
|
-
logger.debug(
|
|
82
|
+
logger.debug(
|
|
83
|
+
f"Prompt '{name}' content changed from previous version (old: {existing_hash}, new: {prompt_hash})"
|
|
84
|
+
)
|
|
75
85
|
except Exception:
|
|
76
86
|
logger.debug(f"Existing prompt '{name}' not found, will create a new one")
|
|
77
87
|
|
|
@@ -95,6 +105,7 @@ class LangfuseObservability(BaseObservabilityPlatform):
|
|
|
95
105
|
prompt=prompt_template,
|
|
96
106
|
labels=labels,
|
|
97
107
|
type=type_prompt,
|
|
108
|
+
tags=[prompt_hash], # for v2 version
|
|
98
109
|
commit_message=prompt_hash, # Store hash in commit_message
|
|
99
110
|
)
|
|
100
111
|
if existing_prompt is None:
|
|
@@ -86,7 +86,7 @@ class Settings(BaseSettings):
|
|
|
86
86
|
|
|
87
87
|
LANGFUSE_SECRET_KEY: SecretStr | None = None
|
|
88
88
|
LANGFUSE_PUBLIC_KEY: SecretStr | None = None
|
|
89
|
-
LANGFUSE_HOST: Annotated[str, BeforeValidator(check_str_is_http)] = "
|
|
89
|
+
LANGFUSE_HOST: Annotated[str, BeforeValidator(check_str_is_http)] = "https://cloud.langfuse.com"
|
|
90
90
|
|
|
91
91
|
# Database Configuration
|
|
92
92
|
MEMORY_BACKEND: MemoryBackends = MemoryBackends.SQLITE
|
|
@@ -98,12 +98,13 @@ class Settings(BaseSettings):
|
|
|
98
98
|
POSTGRES_HOST: str | None = None
|
|
99
99
|
POSTGRES_PORT: int | None = None
|
|
100
100
|
POSTGRES_DB: str | None = None
|
|
101
|
-
POSTGRES_POOL_SIZE: int = Field(default=
|
|
102
|
-
POSTGRES_MIN_SIZE: int = Field(default=
|
|
103
|
-
POSTGRES_MAX_IDLE: int = Field(default=
|
|
101
|
+
POSTGRES_POOL_SIZE: int = Field(default=200, description="Maximum number of connections in the pool")
|
|
102
|
+
POSTGRES_MIN_SIZE: int = Field(default=10, description="Minimum number of connections in the pool")
|
|
103
|
+
POSTGRES_MAX_IDLE: int = Field(default=300, description="Maximum number of idle connections")
|
|
104
104
|
|
|
105
105
|
# Model configurations dictionary
|
|
106
106
|
MODEL_CONFIGS: Dict[str, Dict[str, Any]] = Field(default_factory=dict)
|
|
107
|
+
MODEL_CONFIGS_PATH: str | None = None
|
|
107
108
|
|
|
108
109
|
def _apply_langgraph_env_overrides(self) -> None:
|
|
109
110
|
"""Apply any LANGGRAPH_ prefixed environment variables to override settings."""
|
|
@@ -151,6 +152,7 @@ class Settings(BaseSettings):
|
|
|
151
152
|
def _initialize_model_configs(self) -> None:
|
|
152
153
|
"""Initialize model configurations from environment variables."""
|
|
153
154
|
model_configs_env = os.environ.get("MODEL_CONFIGS")
|
|
155
|
+
model_configs_path_env = os.environ.get("MODEL_CONFIGS_PATH")
|
|
154
156
|
if model_configs_env:
|
|
155
157
|
try:
|
|
156
158
|
configs = json.loads(model_configs_env)
|
|
@@ -161,6 +163,19 @@ class Settings(BaseSettings):
|
|
|
161
163
|
logger.warning("MODEL_CONFIGS environment variable is not a valid JSON object")
|
|
162
164
|
except json.JSONDecodeError:
|
|
163
165
|
logger.error("Failed to parse MODEL_CONFIGS environment variable as JSON")
|
|
166
|
+
elif model_configs_path_env:
|
|
167
|
+
try:
|
|
168
|
+
with open(model_configs_path_env, "r", encoding="utf-8") as f:
|
|
169
|
+
configs = json.load(f)
|
|
170
|
+
if isinstance(configs, dict):
|
|
171
|
+
self.MODEL_CONFIGS = configs
|
|
172
|
+
logger.info(f"Loaded {len(configs)} model configurations from {model_configs_path_env}")
|
|
173
|
+
else:
|
|
174
|
+
logger.warning("MODEL_CONFIGS_PATH file is not a valid JSON object")
|
|
175
|
+
except (FileNotFoundError, json.JSONDecodeError) as e:
|
|
176
|
+
logger.error(f"Failed to load model configurations from {model_configs_path_env}: {e}")
|
|
177
|
+
else:
|
|
178
|
+
logger.info("No MODEL_CONFIGS found in environment variables or file")
|
|
164
179
|
|
|
165
180
|
def get_model_config(self, config_key: str) -> Optional[Dict[str, Any]]:
|
|
166
181
|
"""Get a model configuration by key.
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "langgraph-agent-toolkit"
|
|
7
|
-
version = "0.7.
|
|
7
|
+
version = "0.7.2"
|
|
8
8
|
description = "Full toolkit for running an AI agent service built with LangGraph, FastAPI and Streamlit"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
authors = [{ name = "Roman Kryvokhyzha", email = "kriwohizha@gmail.com" }, { name = "Joshua Carroll", email = "carroll.joshk@gmail.com" }]
|
|
@@ -37,22 +37,22 @@ dependencies = [
|
|
|
37
37
|
"langchain-core ~= 0.3.60",
|
|
38
38
|
"langchain-community ~= 0.3.24",
|
|
39
39
|
"langgraph ~= 0.4.5",
|
|
40
|
-
"langgraph-cli[inmem]
|
|
40
|
+
"langgraph-cli[inmem] >= 0.2.10,< 0.4.0",
|
|
41
41
|
"langgraph-checkpoint-sqlite ~= 2.0.7",
|
|
42
42
|
"langgraph-checkpoint-postgres ~= 2.0.21",
|
|
43
43
|
"langgraph-supervisor ~= 0.0.21",
|
|
44
44
|
"numpy ~= 1.26.4; python_version <= '3.12'",
|
|
45
|
-
"numpy
|
|
45
|
+
"numpy >= 2.2.3,< 2.4.0; python_version >= '3.13'",
|
|
46
46
|
"onnxruntime ~= 1.22.0",
|
|
47
|
-
"pandas
|
|
47
|
+
"pandas >= 2.2.3,< 2.4.0",
|
|
48
48
|
"psycopg[binary,pool] ~= 3.2.4",
|
|
49
49
|
"pyarrow >= 19.0.1",
|
|
50
50
|
"pydantic ~= 2.11.1",
|
|
51
|
-
"pydantic-settings
|
|
51
|
+
"pydantic-settings >= 2.9.1,< 2.11.0",
|
|
52
52
|
"pyowm ~= 3.3.0",
|
|
53
53
|
"python-dotenv ~= 1.1.0",
|
|
54
54
|
"setuptools >= 75.6.0",
|
|
55
|
-
"streamlit
|
|
55
|
+
"streamlit >= 1.45,< 1.47",
|
|
56
56
|
"watchdog ~= 6.0.0",
|
|
57
57
|
"joblib >= 1.4.2",
|
|
58
58
|
"uvicorn ~= 0.34.0",
|
|
@@ -81,7 +81,7 @@ client = [
|
|
|
81
81
|
"httpx ~= 0.28.1",
|
|
82
82
|
"pydantic ~= 2.11.1",
|
|
83
83
|
"python-dotenv ~= 1.1.0",
|
|
84
|
-
"streamlit
|
|
84
|
+
"streamlit >= 1.45,< 1.47",
|
|
85
85
|
"watchdog ~= 6.0.0",
|
|
86
86
|
]
|
|
87
87
|
|
|
@@ -158,17 +158,17 @@ all-llms = [
|
|
|
158
158
|
|
|
159
159
|
# Observability tools and platforms
|
|
160
160
|
langfuse = [
|
|
161
|
-
"langfuse
|
|
162
|
-
]
|
|
161
|
+
"langfuse >= 2.60.3,< 3.1.0",
|
|
162
|
+
]
|
|
163
163
|
|
|
164
|
-
langsmith = [
|
|
165
|
-
"langsmith
|
|
166
|
-
]
|
|
164
|
+
langsmith = [
|
|
165
|
+
"langsmith >= 0.3.31,< 0.5.0",
|
|
166
|
+
]
|
|
167
167
|
|
|
168
|
-
all-observability = [
|
|
169
|
-
"langfuse
|
|
170
|
-
"langsmith
|
|
171
|
-
]
|
|
168
|
+
all-observability = [
|
|
169
|
+
"langfuse >= 2.60.3,< 3.1.0",
|
|
170
|
+
"langsmith >= 0.3.31,< 0.5.0",
|
|
171
|
+
]
|
|
172
172
|
|
|
173
173
|
[project.urls]
|
|
174
174
|
documentation = "https://kryvokhyzha.github.io/langgraph-agent-toolkit"
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import os
|
|
2
|
+
|
|
3
|
+
from dotenv import find_dotenv, load_dotenv
|
|
4
|
+
from langchain.chat_models.base import init_chat_model
|
|
5
|
+
from pydantic import BaseModel, Field
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
load_dotenv(find_dotenv(".local.env"), override=True)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ResponseSchema(BaseModel):
|
|
12
|
+
response: str = Field(
|
|
13
|
+
description="The response on user query.",
|
|
14
|
+
)
|
|
15
|
+
alternative_response: str = Field(
|
|
16
|
+
description="The alternative response on user query.",
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
if __name__ == "__main__":
|
|
21
|
+
DEFAULT_CONFIG_PREFIX = "agent"
|
|
22
|
+
DEFAULT_CONFIGURABLE_FIELDS = ("temperature", "max_tokens", "top_p", "streaming")
|
|
23
|
+
DEFAULT_MODEL_PARAMETER_VALUES = dict(
|
|
24
|
+
temperature=0.0,
|
|
25
|
+
max_tokens=1024,
|
|
26
|
+
top_p=0.7,
|
|
27
|
+
streaming=False,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
configurable_model = init_chat_model(
|
|
31
|
+
model=os.getenv("OPENAI_MODEL_NAME"),
|
|
32
|
+
model_provider="openai",
|
|
33
|
+
config_prefix=DEFAULT_CONFIG_PREFIX,
|
|
34
|
+
configurable_fields=DEFAULT_CONFIGURABLE_FIELDS,
|
|
35
|
+
openai_api_key=os.getenv("OPENAI_API_KEY"),
|
|
36
|
+
openai_api_base=os.getenv("OPENAI_API_BASE_URL"),
|
|
37
|
+
**DEFAULT_MODEL_PARAMETER_VALUES,
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
print(f"Configurable model type: {type(configurable_model)}")
|
|
41
|
+
print("=" * 25)
|
|
42
|
+
|
|
43
|
+
model_so = configurable_model.with_structured_output(ResponseSchema)
|
|
44
|
+
|
|
45
|
+
print(f"Model with SO type: {type(configurable_model)}")
|
|
46
|
+
print("=" * 25)
|
|
47
|
+
|
|
48
|
+
result = model_so.invoke("Who is the president of Brasil?", config={"temperature": 0.5})
|
|
49
|
+
|
|
50
|
+
print(f"Result type: {type(result)}")
|
|
51
|
+
print(f"Result: {result}")
|
|
52
|
+
print("=" * 25)
|
{langgraph_agent_toolkit-0.7.0 → langgraph_agent_toolkit-0.7.2}/tests/agents/test_agent_executor.py
RENAMED
|
@@ -331,38 +331,41 @@ async def test_setup_agent_execution(agent_executor, mock_agent):
|
|
|
331
331
|
message_content = "Hello, setup!"
|
|
332
332
|
input_obj = MockInput(message=message_content)
|
|
333
333
|
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
334
|
+
with patch("langgraph_agent_toolkit.agents.agent_executor.settings") as mock_settings:
|
|
335
|
+
mock_settings.ENV_MODE = "test"
|
|
336
|
+
|
|
337
|
+
# Call the setup method directly
|
|
338
|
+
agent, input_data, config, run_id = await agent_executor._setup_agent_execution(
|
|
339
|
+
agent_id="test-agent",
|
|
340
|
+
input=input_obj,
|
|
341
|
+
thread_id="test-thread-123",
|
|
342
|
+
user_id="test-user-456",
|
|
343
|
+
model_name="test-model",
|
|
344
|
+
agent_config={"temperature": 0.7},
|
|
345
|
+
)
|
|
343
346
|
|
|
344
|
-
|
|
345
|
-
|
|
347
|
+
# Verify agent is correct
|
|
348
|
+
assert agent is mock_agent
|
|
346
349
|
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
350
|
+
# Verify input is a HumanMessage with expected content
|
|
351
|
+
assert isinstance(input_data, dict)
|
|
352
|
+
assert "messages" in input_data
|
|
353
|
+
assert isinstance(input_data["messages"][0], HumanMessage)
|
|
354
|
+
assert input_data["messages"][0].content == message_content
|
|
352
355
|
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
356
|
+
# Verify config is correct - access as a dictionary, not an object
|
|
357
|
+
assert config["configurable"]["thread_id"] == "test-thread-123"
|
|
358
|
+
assert config["configurable"]["user_id"] == "test-user-456"
|
|
359
|
+
assert config["configurable"]["model_name"] == "test-model"
|
|
360
|
+
assert config["configurable"]["temperature"] == 0.7
|
|
358
361
|
|
|
359
|
-
|
|
360
|
-
|
|
362
|
+
# Verify run_id is a UUID
|
|
363
|
+
assert isinstance(run_id, UUID)
|
|
361
364
|
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
365
|
+
# Verify observability callback was requested with both session_id and user_id
|
|
366
|
+
mock_agent.observability.get_callback_handler.assert_called_once_with(
|
|
367
|
+
session_id="test-thread-123", user_id="test-user-456", environment="test", tags=["test-agent"]
|
|
368
|
+
)
|
|
366
369
|
|
|
367
370
|
|
|
368
371
|
@pytest.mark.asyncio
|
|
@@ -402,6 +402,7 @@ class TestObservabilityChatPromptTemplate:
|
|
|
402
402
|
template.invoke(input=dict(test_var="test4"))
|
|
403
403
|
assert mock_platform.pull_prompt.call_count == 2
|
|
404
404
|
|
|
405
|
+
@pytest.mark.asyncio
|
|
405
406
|
async def test_async_invoke(self):
|
|
406
407
|
"""Test asynchronous invocation."""
|
|
407
408
|
template = ObservabilityChatPromptTemplate.from_observability_platform(
|
|
@@ -575,6 +576,7 @@ class TestObservabilityChatPromptTemplate:
|
|
|
575
576
|
assert "Follow-up answer" in messages2[4].content
|
|
576
577
|
assert "Human prompt with human value" in messages2[5].content
|
|
577
578
|
|
|
579
|
+
@pytest.mark.asyncio
|
|
578
580
|
async def test_async_message_placeholder(self):
|
|
579
581
|
"""Test asynchronous handling of MessagesPlaceholder."""
|
|
580
582
|
# Use the same approach as in test_message_placeholder_handling
|