langgraph-agent-toolkit 0.4.3__tar.gz → 0.4.5__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.4.3 → langgraph_agent_toolkit-0.4.5}/CHANGELOG.md +16 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/PKG-INFO +13 -10
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/README.md +3 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/agents/blueprints/react_so/agent.py +6 -3
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/agents/components/creators/create_react_agent.py +59 -48
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/agents/components/utils.py +9 -1
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/core/models/factory.py +22 -9
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/core/settings.py +1 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/run_agent.py +9 -2
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/run_service.py +1 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/pyproject.toml +10 -10
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/uv.lock +37 -37
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/.coveragerc +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/.dockerignore +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/.env.example +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/.github/RELEASE_TEMPLATE/release-template.md +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/.github/codecov.yml +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/.github/dependabot.yml +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/.github/scripts/tag_from_pyproject.sh +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/.github/workflows/deploy.yml +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/.github/workflows/release.yml +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/.github/workflows/sphinx.yml +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/.github/workflows/test.yml +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/.gitignore +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/.pre-commit-config.yaml +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/.project-root +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/CONTRIBUTING.md +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/LICENSE +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/Makefile +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/configs/clickhouse/.clickhouse.env.example +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/configs/langfuse/.langfuse.env.example +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/configs/litellm/.litellm.env.example +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/configs/litellm/config.example.yaml +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/configs/minio/.minio.env.example +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/configs/postgres/.postgres.env.example +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/configs/redis/.redis.env.example +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/docker/app/Dockerfile +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/docker/service/Dockerfile +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/docker-compose.yaml +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/docs/.gitignore +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/docs/Makefile +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/docs/_static/custom.css +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/docs/_templates/class.rst +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/docs/_templates/layout.html +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/docs/_templates/module.rst +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/docs/conf.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/docs/contributing.rst +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/docs/environment_setup.rst +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/docs/index.rst +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/docs/installation.rst +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/docs/make.bat +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/docs/media/agent_architecture.excalidraw +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/docs/media/agent_architecture.png +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/docs/media/agent_diagram.png +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/docs/media/logo.svg +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/docs/usage.rst +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph.json +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/agents/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/agents/agent.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/agents/agent_executor.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/agents/blueprints/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/agents/blueprints/bg_task_agent/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/agents/blueprints/bg_task_agent/agent.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/agents/blueprints/bg_task_agent/task.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/agents/blueprints/bg_task_agent/utils.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/agents/blueprints/chatbot/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/agents/blueprints/chatbot/agent.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/agents/blueprints/command_agent/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/agents/blueprints/command_agent/agent.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/agents/blueprints/interrupt_agent/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/agents/blueprints/interrupt_agent/agent.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/agents/blueprints/knowledge_base_agent/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/agents/blueprints/knowledge_base_agent/agent.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/agents/blueprints/react/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/agents/blueprints/react/agent.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/agents/blueprints/react_so/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/agents/blueprints/supervisor_agent/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/agents/blueprints/supervisor_agent/agent.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/agents/components/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/agents/components/creators/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/agents/components/tools.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/client/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/client/client.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/core/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/core/memory/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/core/memory/base.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/core/memory/factory.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/core/memory/postgres.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/core/memory/sqlite.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/core/memory/types.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/core/models/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/core/models/chat_openai.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/core/models/fake.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/core/observability/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/core/observability/base.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/core/observability/empty.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/core/observability/factory.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/core/observability/langfuse.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/core/observability/langsmith.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/core/observability/types.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/core/prompts/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/core/prompts/chat_prompt_template.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/helper/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/helper/constants.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/helper/logging.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/helper/types.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/helper/utils.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/run_client.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/schema/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/schema/models.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/schema/schema.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/schema/task_data.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/service/__init__.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/service/exception_handlers.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/service/factory.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/service/handler.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/service/middleware.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/service/routes.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/service/types.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/service/utils.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/streamlit_app.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/scripts/postgres-init/create_databases.sql +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/scripts/python/01-invoke-proxy.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/scripts/python/02-test-local-pm.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/scripts/python/03-test-langfuse-pm.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/scripts/python/04-test-langsmith-pm.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/scripts/python/05-test-prompt-types.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/scripts/python/06-test-custom-chat-prompt-template.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/scripts/python/07-test-get-chat-history.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/scripts/python/08-test-update-chat-history.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/scripts/python/09-test-clear-chat-history.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/tests/agents/test_agent_executor.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/tests/agents/test_service_streaming.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/tests/app/conftest.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/tests/app/test_streamlit_app.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/tests/client/conftest.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/tests/client/test_client.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/tests/conftest.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/tests/core/test_llm.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/tests/core/test_memory.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/tests/core/test_observability.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/tests/core/test_prompts.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/tests/core/test_settings.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/tests/integration/test_docker_e2e.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/tests/service/conftest.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/tests/service/test_auth.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/tests/service/test_factory.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/tests/service/test_service.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/tests/service/test_service_e2e.py +0 -0
- {langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/tests/service/test_utils.py +0 -0
|
@@ -6,6 +6,22 @@ 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.4.5]
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- Strucuted output and model factory
|
|
14
|
+
|
|
15
|
+
## [0.4.4]
|
|
16
|
+
|
|
17
|
+
### Updated
|
|
18
|
+
|
|
19
|
+
- Project dependencies
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
|
|
23
|
+
- Strucuted output and model factory
|
|
24
|
+
|
|
9
25
|
## [0.4.3]
|
|
10
26
|
|
|
11
27
|
### Updated
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: langgraph-agent-toolkit
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.5
|
|
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
|
|
@@ -29,13 +29,13 @@ Requires-Dist: httpx~=0.28.1
|
|
|
29
29
|
Requires-Dist: jinja2~=3.1.6
|
|
30
30
|
Requires-Dist: jiter~=0.9.0
|
|
31
31
|
Requires-Dist: joblib>=1.4.2
|
|
32
|
-
Requires-Dist: langchain-community~=0.3.
|
|
33
|
-
Requires-Dist: langchain-core~=0.3.
|
|
34
|
-
Requires-Dist: langgraph-checkpoint-postgres~=2.0.
|
|
35
|
-
Requires-Dist: langgraph-checkpoint-sqlite~=2.0.
|
|
36
|
-
Requires-Dist: langgraph-cli[inmem]~=0.2.
|
|
37
|
-
Requires-Dist: langgraph-supervisor~=0.0.
|
|
38
|
-
Requires-Dist: langgraph~=0.4.
|
|
32
|
+
Requires-Dist: langchain-community~=0.3.23
|
|
33
|
+
Requires-Dist: langchain-core~=0.3.59
|
|
34
|
+
Requires-Dist: langgraph-checkpoint-postgres~=2.0.21
|
|
35
|
+
Requires-Dist: langgraph-checkpoint-sqlite~=2.0.7
|
|
36
|
+
Requires-Dist: langgraph-cli[inmem]~=0.2.8
|
|
37
|
+
Requires-Dist: langgraph-supervisor~=0.0.21
|
|
38
|
+
Requires-Dist: langgraph~=0.4.3
|
|
39
39
|
Requires-Dist: loguru~=0.7.3
|
|
40
40
|
Requires-Dist: multidict>6.3.2
|
|
41
41
|
Requires-Dist: numpy~=1.26.4; python_version <= '3.12'
|
|
@@ -65,7 +65,7 @@ Requires-Dist: langchain-google-genai~=2.1.4; extra == 'all-llms'
|
|
|
65
65
|
Requires-Dist: langchain-google-vertexai~=2.0.21; extra == 'all-llms'
|
|
66
66
|
Requires-Dist: langchain-groq~=0.3.2; extra == 'all-llms'
|
|
67
67
|
Requires-Dist: langchain-ollama~=0.3.2; extra == 'all-llms'
|
|
68
|
-
Requires-Dist: langchain-openai~=0.3.
|
|
68
|
+
Requires-Dist: langchain-openai~=0.3.16; extra == 'all-llms'
|
|
69
69
|
Provides-Extra: all-observability
|
|
70
70
|
Requires-Dist: langfuse~=2.60.3; extra == 'all-observability'
|
|
71
71
|
Requires-Dist: langsmith~=0.3.31; extra == 'all-observability'
|
|
@@ -95,7 +95,7 @@ Requires-Dist: langsmith~=0.3.31; extra == 'langsmith'
|
|
|
95
95
|
Provides-Extra: ollama
|
|
96
96
|
Requires-Dist: langchain-ollama~=0.3.2; extra == 'ollama'
|
|
97
97
|
Provides-Extra: openai
|
|
98
|
-
Requires-Dist: langchain-openai~=0.3.
|
|
98
|
+
Requires-Dist: langchain-openai~=0.3.16; extra == 'openai'
|
|
99
99
|
Provides-Extra: uvicorn-backend
|
|
100
100
|
Requires-Dist: uvicorn~=0.34.2; extra == 'uvicorn-backend'
|
|
101
101
|
Description-Content-Type: text/markdown
|
|
@@ -299,6 +299,9 @@ and includes:
|
|
|
299
299
|
- [LangGraph documentation](https://langchain-ai.github.io/langgraph/concepts/low_level/#multiple-schemas)
|
|
300
300
|
- [LangGraph Memory Concept](https://langchain-ai.github.io/langgraph/concepts/memory/)
|
|
301
301
|
- [LangGraph Memory Persistence](https://langchain-ai.github.io/langgraph/concepts/persistence/#memory)
|
|
302
|
+
- [LangGraph 101 - blueprints](https://github.com/langchain-ai/langgraph-101)
|
|
303
|
+
- [LangGraph - Examples](https://github.com/langchain-ai/langgraph/tree/main/examples)
|
|
304
|
+
- [Complex data extraction with function calling](https://langchain-ai.github.io/langgraph/tutorials/extraction/retries/)
|
|
302
305
|
- [How to edit graph state](https://langchain-ai.github.io/langgraph/how-tos/human_in_the_loop/edit-graph-state/)
|
|
303
306
|
- [How to create tools in Langchain](https://python.langchain.com/docs/how_to/custom_tools/)
|
|
304
307
|
- [Simple Serverless FastAPI with AWS Lambda](https://www.deadbear.io/simple-serverless-fastapi-with-aws-lambda/)
|
|
@@ -197,6 +197,9 @@ and includes:
|
|
|
197
197
|
- [LangGraph documentation](https://langchain-ai.github.io/langgraph/concepts/low_level/#multiple-schemas)
|
|
198
198
|
- [LangGraph Memory Concept](https://langchain-ai.github.io/langgraph/concepts/memory/)
|
|
199
199
|
- [LangGraph Memory Persistence](https://langchain-ai.github.io/langgraph/concepts/persistence/#memory)
|
|
200
|
+
- [LangGraph 101 - blueprints](https://github.com/langchain-ai/langgraph-101)
|
|
201
|
+
- [LangGraph - Examples](https://github.com/langchain-ai/langgraph/tree/main/examples)
|
|
202
|
+
- [Complex data extraction with function calling](https://langchain-ai.github.io/langgraph/tutorials/extraction/retries/)
|
|
200
203
|
- [How to edit graph state](https://langchain-ai.github.io/langgraph/how-tos/human_in_the_loop/edit-graph-state/)
|
|
201
204
|
- [How to create tools in Langchain](https://python.langchain.com/docs/how_to/custom_tools/)
|
|
202
205
|
- [Simple Serverless FastAPI with AWS Lambda](https://www.deadbear.io/simple-serverless-fastapi-with-aws-lambda/)
|
|
@@ -5,7 +5,10 @@ from pydantic import BaseModel, Field
|
|
|
5
5
|
from langgraph_agent_toolkit.agents.agent import Agent
|
|
6
6
|
from langgraph_agent_toolkit.agents.components.creators.create_react_agent import create_react_agent
|
|
7
7
|
from langgraph_agent_toolkit.agents.components.tools import add, multiply
|
|
8
|
-
from langgraph_agent_toolkit.agents.components.utils import
|
|
8
|
+
from langgraph_agent_toolkit.agents.components.utils import (
|
|
9
|
+
AgentStateWithStructuredResponseAndRemainingSteps,
|
|
10
|
+
pre_model_hook_standard,
|
|
11
|
+
)
|
|
9
12
|
from langgraph_agent_toolkit.core import settings
|
|
10
13
|
from langgraph_agent_toolkit.core.models.factory import ModelFactory
|
|
11
14
|
from langgraph_agent_toolkit.schema.models import ModelProvider
|
|
@@ -37,8 +40,8 @@ react_agent_so = Agent(
|
|
|
37
40
|
"You can also ask clarifying questions to the user. "
|
|
38
41
|
),
|
|
39
42
|
pre_model_hook=pre_model_hook_standard,
|
|
40
|
-
response_format=ResponseSchema,
|
|
41
|
-
state_schema=
|
|
43
|
+
# response_format=ResponseSchema,
|
|
44
|
+
state_schema=AgentStateWithStructuredResponseAndRemainingSteps,
|
|
42
45
|
checkpointer=MemorySaver(),
|
|
43
46
|
immediate_step_threshold=5,
|
|
44
47
|
),
|
|
@@ -10,6 +10,7 @@ from typing import (
|
|
|
10
10
|
get_type_hints,
|
|
11
11
|
)
|
|
12
12
|
|
|
13
|
+
from langchain.chat_models.base import _ConfigurableModel
|
|
13
14
|
from langchain_core.language_models import (
|
|
14
15
|
BaseChatModel,
|
|
15
16
|
LanguageModelInput,
|
|
@@ -24,16 +25,17 @@ from langchain_core.messages import (
|
|
|
24
25
|
)
|
|
25
26
|
from langchain_core.runnables import (
|
|
26
27
|
Runnable,
|
|
28
|
+
RunnableBinding,
|
|
27
29
|
RunnableConfig,
|
|
30
|
+
RunnableSequence,
|
|
28
31
|
)
|
|
29
32
|
from langchain_core.tools import BaseTool
|
|
30
|
-
from langgraph.graph import END, StateGraph
|
|
33
|
+
from langgraph.graph import END, START, StateGraph
|
|
31
34
|
from langgraph.graph.graph import CompiledGraph
|
|
32
35
|
from langgraph.prebuilt.chat_agent_executor import (
|
|
33
36
|
AgentState,
|
|
34
37
|
AgentStateWithStructuredResponse,
|
|
35
38
|
StructuredResponseSchema,
|
|
36
|
-
_get_model,
|
|
37
39
|
_get_prompt_runnable,
|
|
38
40
|
_get_state_value,
|
|
39
41
|
_should_bind_tools,
|
|
@@ -45,6 +47,30 @@ from langgraph.types import Checkpointer, Send
|
|
|
45
47
|
from langgraph.utils.runnable import RunnableCallable, RunnableLike
|
|
46
48
|
from pydantic import BaseModel
|
|
47
49
|
|
|
50
|
+
from langgraph_agent_toolkit.agents.components.utils import default_pre_model_hook
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def _get_model(model: LanguageModelLike, config: RunnableConfig) -> BaseChatModel:
|
|
54
|
+
"""Get the underlying model from a RunnableBinding or return the model itself."""
|
|
55
|
+
if isinstance(model, _ConfigurableModel):
|
|
56
|
+
return model._model(config)
|
|
57
|
+
|
|
58
|
+
if isinstance(model, RunnableSequence):
|
|
59
|
+
model = next(
|
|
60
|
+
(step for step in model.steps if isinstance(step, (RunnableBinding, BaseChatModel))),
|
|
61
|
+
model,
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
if isinstance(model, RunnableBinding):
|
|
65
|
+
model = model.bound
|
|
66
|
+
|
|
67
|
+
if not isinstance(model, BaseChatModel):
|
|
68
|
+
raise TypeError(
|
|
69
|
+
f"Expected `model` to be a ChatModel or RunnableBinding (e.g. model.bind_tools(...)), got {type(model)}"
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
return model
|
|
73
|
+
|
|
48
74
|
|
|
49
75
|
def create_react_agent(
|
|
50
76
|
model: Union[str, LanguageModelLike],
|
|
@@ -64,8 +90,8 @@ def create_react_agent(
|
|
|
64
90
|
debug: bool = False,
|
|
65
91
|
version: Literal["v1", "v2"] = "v1",
|
|
66
92
|
name: Optional[str] = None,
|
|
67
|
-
immediate_step_threshold: int = 5,
|
|
68
|
-
immediate_generation_prompt: Optional[str] = None,
|
|
93
|
+
immediate_step_threshold: int = 5,
|
|
94
|
+
immediate_generation_prompt: Optional[str] = None,
|
|
69
95
|
) -> CompiledGraph:
|
|
70
96
|
"""Create a graph that works with a chat model that utilizes tool calling with an additional router.
|
|
71
97
|
|
|
@@ -230,7 +256,7 @@ def create_react_agent(
|
|
|
230
256
|
prompt_with_instruction = [immediate_prompt] + list(messages)
|
|
231
257
|
|
|
232
258
|
# Use the model directly without tool calling capabilities
|
|
233
|
-
base_model = _get_model(model)
|
|
259
|
+
base_model = _get_model(model, config)
|
|
234
260
|
response = cast(AIMessage, base_model.invoke(prompt_with_instruction, config))
|
|
235
261
|
response.name = name
|
|
236
262
|
|
|
@@ -248,7 +274,7 @@ def create_react_agent(
|
|
|
248
274
|
messages = _get_state_value(state, "messages")
|
|
249
275
|
prompt_with_instruction = [immediate_prompt] + list(messages)
|
|
250
276
|
|
|
251
|
-
base_model = _get_model(model)
|
|
277
|
+
base_model = _get_model(model, config)
|
|
252
278
|
# Fix: Use ainvoke instead of invoke for async function
|
|
253
279
|
response = cast(AIMessage, await base_model.ainvoke(prompt_with_instruction, config))
|
|
254
280
|
response.name = name
|
|
@@ -292,7 +318,7 @@ def create_react_agent(
|
|
|
292
318
|
system_prompt, structured_response_schema = response_format
|
|
293
319
|
messages = [SystemMessage(content=system_prompt)] + list(messages)
|
|
294
320
|
|
|
295
|
-
model_with_structured_output = _get_model(model).with_structured_output(
|
|
321
|
+
model_with_structured_output = _get_model(model, config).with_structured_output(
|
|
296
322
|
cast(StructuredResponseSchema, structured_response_schema)
|
|
297
323
|
)
|
|
298
324
|
response = model_with_structured_output.invoke(messages, config)
|
|
@@ -305,12 +331,16 @@ def create_react_agent(
|
|
|
305
331
|
system_prompt, structured_response_schema = response_format
|
|
306
332
|
messages = [SystemMessage(content=system_prompt)] + list(messages)
|
|
307
333
|
|
|
308
|
-
model_with_structured_output = _get_model(model).with_structured_output(
|
|
334
|
+
model_with_structured_output = _get_model(model, config).with_structured_output(
|
|
309
335
|
cast(StructuredResponseSchema, structured_response_schema)
|
|
310
336
|
)
|
|
311
337
|
response = await model_with_structured_output.ainvoke(messages, config)
|
|
312
338
|
return {"structured_response": response}
|
|
313
339
|
|
|
340
|
+
# Use default_pre_model_hook if pre_model_hook is None
|
|
341
|
+
if pre_model_hook is None:
|
|
342
|
+
pre_model_hook = default_pre_model_hook
|
|
343
|
+
|
|
314
344
|
if not tool_calling_enabled:
|
|
315
345
|
# Define a new graph
|
|
316
346
|
workflow = StateGraph(state_schema, config_schema=config_schema)
|
|
@@ -328,16 +358,14 @@ def create_react_agent(
|
|
|
328
358
|
input=input_schema,
|
|
329
359
|
)
|
|
330
360
|
|
|
331
|
-
#
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
workflow.add_conditional_edges("START", router_condition, ["agent", "immediate_generation"])
|
|
340
|
-
entrypoint = "START"
|
|
361
|
+
# Always add pre_model_hook
|
|
362
|
+
workflow.add_node("pre_model_hook", pre_model_hook)
|
|
363
|
+
|
|
364
|
+
# Route pre_model_hook directly to either agent or immediate_generation based on condition
|
|
365
|
+
workflow.add_conditional_edges("pre_model_hook", router_condition, ["agent", "immediate_generation"])
|
|
366
|
+
|
|
367
|
+
# Always set START as entry point
|
|
368
|
+
workflow.add_edge(START, "pre_model_hook")
|
|
341
369
|
|
|
342
370
|
# Connect both agent and immediate_generation to END or structured response
|
|
343
371
|
if response_format is not None:
|
|
@@ -352,8 +380,6 @@ def create_react_agent(
|
|
|
352
380
|
workflow.add_edge("agent", END)
|
|
353
381
|
workflow.add_edge("immediate_generation", END)
|
|
354
382
|
|
|
355
|
-
workflow.set_entry_point(entrypoint)
|
|
356
|
-
|
|
357
383
|
return workflow.compile(
|
|
358
384
|
checkpointer=checkpointer,
|
|
359
385
|
store=store,
|
|
@@ -379,10 +405,7 @@ def create_react_agent(
|
|
|
379
405
|
if version == "v1":
|
|
380
406
|
return "tools"
|
|
381
407
|
elif version == "v2":
|
|
382
|
-
tool_calls = [
|
|
383
|
-
tool_node.inject_tool_args(call, state, store) # type: ignore[arg-type]
|
|
384
|
-
for call in last_message.tool_calls
|
|
385
|
-
]
|
|
408
|
+
tool_calls = [tool_node.inject_tool_args(call, state, store) for call in last_message.tool_calls]
|
|
386
409
|
return [Send("tools", [tool_call]) for tool_call in tool_calls]
|
|
387
410
|
|
|
388
411
|
# Define a new graph
|
|
@@ -395,19 +418,14 @@ def create_react_agent(
|
|
|
395
418
|
)
|
|
396
419
|
workflow.add_node("tools", tool_node)
|
|
397
420
|
|
|
398
|
-
#
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
entrypoint = "pre_model_hook"
|
|
404
|
-
else:
|
|
405
|
-
# If no pre_model_hook, use START as the conditional router
|
|
406
|
-
workflow.add_conditional_edges("START", router_condition, ["agent", "immediate_generation"])
|
|
407
|
-
entrypoint = "START"
|
|
421
|
+
# Always add pre_model_hook node
|
|
422
|
+
workflow.add_node("pre_model_hook", pre_model_hook)
|
|
423
|
+
|
|
424
|
+
# Route pre_model_hook to either agent or immediate_generation based on condition
|
|
425
|
+
workflow.add_conditional_edges("pre_model_hook", router_condition, ["agent", "immediate_generation"])
|
|
408
426
|
|
|
409
|
-
# Set the
|
|
410
|
-
workflow.
|
|
427
|
+
# Set START as the entry point and route to pre_model_hook
|
|
428
|
+
workflow.add_edge(START, "pre_model_hook")
|
|
411
429
|
|
|
412
430
|
# Add structured output node if response_format is provided
|
|
413
431
|
if response_format is not None:
|
|
@@ -436,21 +454,14 @@ def create_react_agent(
|
|
|
436
454
|
if m.name in should_return_direct:
|
|
437
455
|
return END
|
|
438
456
|
|
|
439
|
-
# After tools, go
|
|
440
|
-
return "pre_model_hook"
|
|
457
|
+
# After tools, always go to pre_model_hook
|
|
458
|
+
return "pre_model_hook"
|
|
441
459
|
|
|
442
460
|
if should_return_direct:
|
|
443
|
-
|
|
444
|
-
if pre_model_hook is not None:
|
|
445
|
-
destinations.append("pre_model_hook")
|
|
446
|
-
else:
|
|
447
|
-
destinations.append("START")
|
|
448
|
-
|
|
449
|
-
destinations.append(END)
|
|
450
|
-
workflow.add_conditional_edges("tools", route_tool_responses, destinations)
|
|
461
|
+
workflow.add_conditional_edges("tools", route_tool_responses, ["pre_model_hook", END])
|
|
451
462
|
else:
|
|
452
|
-
# After tools, go
|
|
453
|
-
workflow.add_edge("tools", "pre_model_hook"
|
|
463
|
+
# After tools, always go to pre_model_hook
|
|
464
|
+
workflow.add_edge("tools", "pre_model_hook")
|
|
454
465
|
|
|
455
466
|
# Finally, we compile it!
|
|
456
467
|
return workflow.compile(
|
|
@@ -3,7 +3,7 @@ from typing import TypeVar
|
|
|
3
3
|
from langchain_core.messages.utils import trim_messages
|
|
4
4
|
from langchain_core.runnables import RunnableConfig
|
|
5
5
|
from langgraph.managed.is_last_step import RemainingSteps
|
|
6
|
-
from langgraph.prebuilt.chat_agent_executor import AgentState
|
|
6
|
+
from langgraph.prebuilt.chat_agent_executor import AgentState, AgentStateWithStructuredResponse
|
|
7
7
|
|
|
8
8
|
from langgraph_agent_toolkit.helper.constants import DEFAULT_MAX_MESSAGE_HISTORY_LENGTH
|
|
9
9
|
|
|
@@ -15,6 +15,10 @@ class AgentStateWithRemainingSteps(AgentState):
|
|
|
15
15
|
remaining_steps: RemainingSteps
|
|
16
16
|
|
|
17
17
|
|
|
18
|
+
class AgentStateWithStructuredResponseAndRemainingSteps(AgentStateWithStructuredResponse):
|
|
19
|
+
remaining_steps: RemainingSteps
|
|
20
|
+
|
|
21
|
+
|
|
18
22
|
def pre_model_hook_standard(state: T, config: RunnableConfig):
|
|
19
23
|
# https://langchain-ai.github.io/langgraph/how-tos/create-react-agent-manage-message-history/
|
|
20
24
|
# if last message is a human message, trim the messages to only include human messages
|
|
@@ -40,3 +44,7 @@ def pre_model_hook_standard(state: T, config: RunnableConfig):
|
|
|
40
44
|
)
|
|
41
45
|
|
|
42
46
|
return {"llm_input_messages": updated_messages}
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def default_pre_model_hook(state: T, config: RunnableConfig) -> T:
|
|
50
|
+
return state
|
|
@@ -13,6 +13,7 @@ from typing import (
|
|
|
13
13
|
|
|
14
14
|
from langchain.chat_models.base import _ConfigurableModel, _init_chat_model_helper
|
|
15
15
|
from langchain_core.language_models import BaseChatModel
|
|
16
|
+
from langchain_core.runnables import Runnable, RunnableConfig
|
|
16
17
|
from typing_extensions import TypeAlias
|
|
17
18
|
|
|
18
19
|
from langgraph_agent_toolkit.core.models import ChatOpenAIPatched, FakeToolModel
|
|
@@ -27,11 +28,20 @@ from langgraph_agent_toolkit.schema.models import ModelProvider
|
|
|
27
28
|
ModelT: TypeAlias = FakeToolModel | _ConfigurableModel | BaseChatModel
|
|
28
29
|
|
|
29
30
|
|
|
31
|
+
class _ConfigurableModelCustom(_ConfigurableModel):
|
|
32
|
+
def _model(self, config: Optional[RunnableConfig] = None) -> Runnable:
|
|
33
|
+
params = {**self._default_config, **self._model_params(config)}
|
|
34
|
+
model = ModelFactory._init_chat_model_helper(**params)
|
|
35
|
+
for name, args, kwargs in self._queued_declarative_operations:
|
|
36
|
+
model = getattr(model, name)(*args, **kwargs)
|
|
37
|
+
return model
|
|
38
|
+
|
|
39
|
+
|
|
30
40
|
class ModelFactory:
|
|
31
41
|
"""Factory for creating model instances."""
|
|
32
42
|
|
|
33
43
|
@staticmethod
|
|
34
|
-
def
|
|
44
|
+
def _init_chat_model_helper(model: str, *, model_provider: Optional[str] = None, **kwargs: Any) -> BaseChatModel:
|
|
35
45
|
if model_provider == "openai":
|
|
36
46
|
return ChatOpenAIPatched(model_name=model, **kwargs)
|
|
37
47
|
else:
|
|
@@ -58,13 +68,13 @@ class ModelFactory:
|
|
|
58
68
|
)
|
|
59
69
|
|
|
60
70
|
if not configurable_fields:
|
|
61
|
-
return ModelFactory.
|
|
71
|
+
return ModelFactory._init_chat_model_helper(cast(str, model), model_provider=model_provider, **kwargs)
|
|
62
72
|
else:
|
|
63
73
|
if model:
|
|
64
74
|
kwargs["model"] = model
|
|
65
75
|
if model_provider:
|
|
66
76
|
kwargs["model_provider"] = model_provider
|
|
67
|
-
return
|
|
77
|
+
return _ConfigurableModelCustom(
|
|
68
78
|
default_config=kwargs,
|
|
69
79
|
config_prefix=config_prefix,
|
|
70
80
|
configurable_fields=configurable_fields,
|
|
@@ -77,7 +87,7 @@ class ModelFactory:
|
|
|
77
87
|
model_name: Optional[str] = None,
|
|
78
88
|
configurable_fields: Optional[Union[Literal["any"], List[str], Tuple[str, ...]]] = None,
|
|
79
89
|
config_prefix: Optional[str] = None,
|
|
80
|
-
model_parameter_values: Optional[
|
|
90
|
+
model_parameter_values: Optional[Tuple[Tuple[str, Any], ...]] = None, # Changed to tuple of tuples
|
|
81
91
|
**kwargs: Any,
|
|
82
92
|
) -> ModelT:
|
|
83
93
|
"""Create and return a model instance.
|
|
@@ -87,7 +97,8 @@ class ModelFactory:
|
|
|
87
97
|
model_name: The name of the model to use. If not provided, the default model name will be used.
|
|
88
98
|
configurable_fields: The fields that are configurable. If not provided, the default fields will be used.
|
|
89
99
|
config_prefix: The prefix to use for the configuration. If not provided, the default prefix will be used.
|
|
90
|
-
model_parameter_values: The values for the model parameters
|
|
100
|
+
model_parameter_values: The values for the model parameters as a tuple of (key, value) pairs.
|
|
101
|
+
If not provided, the default values will be used.
|
|
91
102
|
**kwargs: Additional keyword arguments to pass to the model.
|
|
92
103
|
|
|
93
104
|
Returns:
|
|
@@ -97,9 +108,11 @@ class ModelFactory:
|
|
|
97
108
|
ValueError: If the requested model is not supported
|
|
98
109
|
|
|
99
110
|
""" # noqa: E501
|
|
100
|
-
_configurable_fields = configurable_fields
|
|
101
|
-
_config_prefix = config_prefix
|
|
102
|
-
_model_parameter_values =
|
|
111
|
+
_configurable_fields = DEFAULT_CONFIGURABLE_FIELDS if configurable_fields is None else configurable_fields
|
|
112
|
+
_config_prefix = DEFAULT_CONFIG_PREFIX if config_prefix is None else config_prefix
|
|
113
|
+
_model_parameter_values = (
|
|
114
|
+
DEFAULT_MODEL_PARAMETER_VALUES if model_parameter_values is None else dict(model_parameter_values)
|
|
115
|
+
)
|
|
103
116
|
|
|
104
117
|
match model_provider:
|
|
105
118
|
case ModelProvider.FAKE:
|
|
@@ -155,4 +168,4 @@ class ModelFactory:
|
|
|
155
168
|
params.update(override_params)
|
|
156
169
|
|
|
157
170
|
# Create and return the model
|
|
158
|
-
return cls.create(model_provider=provider, model_name=model_name, **params)
|
|
171
|
+
return cls.create(model_provider=provider, model_name=model_name, model_parameter_values=(), **params)
|
|
@@ -76,6 +76,7 @@ class Settings(BaseSettings):
|
|
|
76
76
|
AGENT_PATHS: list[str] = [
|
|
77
77
|
"langgraph_agent_toolkit.agents.blueprints.react.agent:react_agent",
|
|
78
78
|
"langgraph_agent_toolkit.agents.blueprints.chatbot.agent:chatbot_agent",
|
|
79
|
+
"langgraph_agent_toolkit.agents.blueprints.react_so.agent:react_agent_so",
|
|
79
80
|
]
|
|
80
81
|
|
|
81
82
|
LANGCHAIN_TRACING_V2: bool = False
|
{langgraph_agent_toolkit-0.4.3 → langgraph_agent_toolkit-0.4.5}/langgraph_agent_toolkit/run_agent.py
RENAMED
|
@@ -2,12 +2,19 @@ import asyncio
|
|
|
2
2
|
import random
|
|
3
3
|
from uuid import UUID
|
|
4
4
|
|
|
5
|
+
import rootutils
|
|
5
6
|
from dotenv import find_dotenv, load_dotenv
|
|
6
7
|
from langchain_core.runnables import RunnableConfig
|
|
7
8
|
from langfuse.callback import CallbackHandler
|
|
8
9
|
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
_ = rootutils.setup_root(
|
|
12
|
+
search_from=__file__,
|
|
13
|
+
indicator=".project-root",
|
|
14
|
+
pythonpath=True,
|
|
15
|
+
dotenv=False,
|
|
16
|
+
)
|
|
17
|
+
load_dotenv(find_dotenv(".local.env"), override=True)
|
|
11
18
|
|
|
12
19
|
from langgraph_agent_toolkit.agents.agent_executor import AgentExecutor
|
|
13
20
|
from langgraph_agent_toolkit.core.settings import settings
|
|
@@ -47,7 +54,7 @@ async def main() -> None:
|
|
|
47
54
|
),
|
|
48
55
|
)
|
|
49
56
|
logger.info(result.keys())
|
|
50
|
-
logger.info(result)
|
|
57
|
+
# logger.info(result)
|
|
51
58
|
|
|
52
59
|
try:
|
|
53
60
|
result["messages"][-1].pretty_print()
|
|
@@ -24,6 +24,7 @@ def run_service(
|
|
|
24
24
|
custom_settings=dict(
|
|
25
25
|
AGENT_PATHS=[
|
|
26
26
|
"langgraph_agent_toolkit.agents.blueprints.react.agent:react_agent",
|
|
27
|
+
"langgraph_agent_toolkit.agents.blueprints.react_so.agent:react_agent_so",
|
|
27
28
|
"langgraph_agent_toolkit.agents.blueprints.supervisor_agent.agent:supervisor_agent",
|
|
28
29
|
"langgraph_agent_toolkit.agents.blueprints.chatbot.agent:chatbot_agent",
|
|
29
30
|
]
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "langgraph-agent-toolkit"
|
|
7
|
-
version = "0.4.
|
|
7
|
+
version = "0.4.5"
|
|
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" }]
|
|
@@ -34,13 +34,13 @@ dependencies = [
|
|
|
34
34
|
"grpcio >= 1.68.0",
|
|
35
35
|
"httpx ~= 0.28.1",
|
|
36
36
|
"jiter ~= 0.9.0",
|
|
37
|
-
"langchain-core ~= 0.3.
|
|
38
|
-
"langchain-community ~= 0.3.
|
|
39
|
-
"langgraph ~= 0.4.
|
|
40
|
-
"langgraph-cli[inmem] ~= 0.2.
|
|
41
|
-
"langgraph-checkpoint-sqlite ~= 2.0.
|
|
42
|
-
"langgraph-checkpoint-postgres ~= 2.0.
|
|
43
|
-
"langgraph-supervisor ~= 0.0.
|
|
37
|
+
"langchain-core ~= 0.3.59",
|
|
38
|
+
"langchain-community ~= 0.3.23",
|
|
39
|
+
"langgraph ~= 0.4.3",
|
|
40
|
+
"langgraph-cli[inmem] ~= 0.2.8",
|
|
41
|
+
"langgraph-checkpoint-sqlite ~= 2.0.7",
|
|
42
|
+
"langgraph-checkpoint-postgres ~= 2.0.21",
|
|
43
|
+
"langgraph-supervisor ~= 0.0.21",
|
|
44
44
|
"numpy ~= 1.26.4; python_version <= '3.12'",
|
|
45
45
|
"numpy ~= 2.2.3; python_version >= '3.13'",
|
|
46
46
|
"pandas ~= 2.2.3",
|
|
@@ -141,7 +141,7 @@ deepseek = [
|
|
|
141
141
|
]
|
|
142
142
|
|
|
143
143
|
openai = [
|
|
144
|
-
"langchain-openai ~= 0.3.
|
|
144
|
+
"langchain-openai ~= 0.3.16",
|
|
145
145
|
]
|
|
146
146
|
|
|
147
147
|
all-llms = [
|
|
@@ -152,7 +152,7 @@ all-llms = [
|
|
|
152
152
|
"langchain-ollama ~= 0.3.2",
|
|
153
153
|
"langchain-groq ~= 0.3.2",
|
|
154
154
|
"langchain-deepseek ~= 0.1.3",
|
|
155
|
-
"langchain-openai ~= 0.3.
|
|
155
|
+
"langchain-openai ~= 0.3.16",
|
|
156
156
|
]
|
|
157
157
|
|
|
158
158
|
# Observability tools and platforms
|