langgraph-agent-toolkit 0.8.0__tar.gz → 0.8.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.8.0 → langgraph_agent_toolkit-0.8.2}/CHANGELOG.md +16 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/PKG-INFO +15 -15
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/conf.py +1 -1
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/agent_executor.py +128 -114
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/bg_task_agent/agent.py +3 -3
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/chatbot/agent.py +3 -3
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/interrupt_agent/agent.py +4 -4
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/knowledge_base_agent/agent.py +3 -3
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/react/agent.py +2 -2
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/react_new/agent.py +2 -2
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/react_so/agent.py +2 -2
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/supervisor_agent/agent.py +2 -2
- langgraph_agent_toolkit-0.8.2/langgraph_agent_toolkit/core/__init__.py +5 -0
- langgraph_agent_toolkit-0.8.2/langgraph_agent_toolkit/core/models/__init__.py +11 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/models/factory.py +106 -6
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/observability/base.py +26 -3
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/observability/langfuse.py +73 -14
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/pyproject.toml +19 -18
- langgraph_agent_toolkit-0.8.2/tests/agents/test_agent_executor.py +211 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/core/test_llm.py +5 -5
- langgraph_agent_toolkit-0.8.2/tests/core/test_observability.py +304 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/uv.lock +753 -756
- langgraph_agent_toolkit-0.8.0/langgraph_agent_toolkit/core/__init__.py +0 -5
- langgraph_agent_toolkit-0.8.0/langgraph_agent_toolkit/core/models/__init__.py +0 -5
- langgraph_agent_toolkit-0.8.0/tests/agents/test_agent_executor.py +0 -435
- langgraph_agent_toolkit-0.8.0/tests/core/test_observability.py +0 -877
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.coveragerc +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.dockerignore +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.env.example +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.github/RELEASE_TEMPLATE/release-template.md +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.github/codecov.yml +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.github/dependabot.yml +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.github/scripts/tag_from_pyproject.sh +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.github/workflows/deploy.yml +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.github/workflows/release.yml +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.github/workflows/sphinx.yml +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.github/workflows/test.yml +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.gitignore +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.pre-commit-config.yaml +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.project-root +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/CONTRIBUTING.md +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/LICENSE +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/Makefile +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/README.md +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/configs/clickhouse/.clickhouse.env.example +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/configs/langfuse/.langfuse.env.example +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/configs/litellm/.litellm.env.example +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/configs/litellm/config.example.yaml +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/configs/minio/.minio.env.example +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/configs/postgres/.postgres.env.example +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/configs/redis/.redis.env.example +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docker/app/Dockerfile +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docker/service/Dockerfile +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docker-compose.yaml +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/.gitignore +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/Makefile +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/_static/custom.css +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/_templates/class.rst +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/_templates/layout.html +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/_templates/module.rst +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/contributing.rst +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/environment_setup.rst +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/index.rst +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/installation.rst +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/make.bat +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/media/agent_architecture.excalidraw +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/media/agent_architecture.png +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/media/agent_diagram.png +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/media/logo.svg +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/usage.rst +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph.json +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/__init__.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/__init__.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/agent.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/__init__.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/bg_task_agent/__init__.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/bg_task_agent/task.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/bg_task_agent/utils.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/chatbot/__init__.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/command_agent/__init__.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/command_agent/agent.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/interrupt_agent/__init__.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/knowledge_base_agent/__init__.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/react/__init__.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/react_new/__init__.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/react_so/__init__.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/supervisor_agent/__init__.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/components/__init__.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/components/checkpoint/__init__.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/components/checkpoint/empty.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/components/creators/__init__.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/components/creators/create_react_agent.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/components/tools.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/components/utils.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/client/__init__.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/client/client.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/memory/__init__.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/memory/base.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/memory/factory.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/memory/postgres.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/memory/sqlite.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/memory/types.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/models/chat_openai.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/models/fake.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/observability/__init__.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/observability/empty.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/observability/factory.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/observability/langsmith.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/observability/types.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/prompts/__init__.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/prompts/chat_prompt_template.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/prompts/prompt_manager.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/settings.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/helper/__init__.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/helper/constants.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/helper/exceptions.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/helper/logging.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/helper/types.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/helper/utils.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/run_agent.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/run_client.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/run_service.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/schema/__init__.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/schema/models.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/schema/schema.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/schema/task_data.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/service/__init__.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/service/exception_handlers.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/service/factory.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/service/handler.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/service/middleware.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/service/routes.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/service/types.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/service/utils.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/streamlit_app.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/scripts/postgres-init/create_databases.sql +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/scripts/postgres-init/create_schema.sql +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/scripts/python/01-invoke-proxy.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/scripts/python/02-test-local-pm.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/scripts/python/03-test-langfuse-pm.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/scripts/python/04-test-langsmith-pm.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/scripts/python/05-test-prompt-types.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/scripts/python/06-test-custom-chat-prompt-template.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/scripts/python/07-test-get-chat-history.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/scripts/python/08-test-update-chat-history.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/scripts/python/09-test-clear-chat-history.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/scripts/python/098-cls-example.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/scripts/python/099-t.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/agents/test_service_streaming.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/client/conftest.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/client/test_client.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/conftest.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/core/test_memory.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/core/test_prompts.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/core/test_settings.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/helper/test_helper_utils.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/integration/test_docker_e2e.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/service/conftest.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/service/test_auth.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/service/test_factory.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/service/test_service.py +0 -0
- {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/service/test_service_e2e.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.8.2]
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- Factory for embedding models
|
|
14
|
+
|
|
15
|
+
## [0.8.1]
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- langfuse `score` -> `create_score`
|
|
20
|
+
|
|
21
|
+
### Updated
|
|
22
|
+
|
|
23
|
+
- Core Dependencies
|
|
24
|
+
|
|
9
25
|
## [0.8.0]
|
|
10
26
|
|
|
11
27
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: langgraph-agent-toolkit
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.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
|
|
@@ -23,36 +23,36 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
|
23
23
|
Requires-Python: <3.14,>=3.11
|
|
24
24
|
Requires-Dist: ddgs>=9.5.0
|
|
25
25
|
Requires-Dist: duckduckgo-search>=7.3.0
|
|
26
|
-
Requires-Dist: fastapi<0.
|
|
26
|
+
Requires-Dist: fastapi<0.122.0,>=0.116.1
|
|
27
27
|
Requires-Dist: fire~=0.7.0
|
|
28
28
|
Requires-Dist: grpcio>=1.68.0
|
|
29
29
|
Requires-Dist: httpx~=0.28.1
|
|
30
30
|
Requires-Dist: jinja2~=3.1.6
|
|
31
|
-
Requires-Dist: jiter<0.
|
|
31
|
+
Requires-Dist: jiter<0.13,>=0.10
|
|
32
32
|
Requires-Dist: joblib>=1.4.2
|
|
33
33
|
Requires-Dist: langchain-community<0.4.2,>=0.4.0
|
|
34
|
-
Requires-Dist: langchain-core<1.0.
|
|
35
|
-
Requires-Dist: langchain<1.0.
|
|
36
|
-
Requires-Dist: langgraph-checkpoint-postgres<3.0.
|
|
34
|
+
Requires-Dist: langchain-core<1.0.5,>=1.0.0
|
|
35
|
+
Requires-Dist: langchain<1.0.6,>=1.0.0
|
|
36
|
+
Requires-Dist: langgraph-checkpoint-postgres<3.0.2,>=3.0.0
|
|
37
37
|
Requires-Dist: langgraph-checkpoint-sqlite<3.0.1,>=3.0.0
|
|
38
38
|
Requires-Dist: langgraph-cli[inmem]<0.5.0,>=0.2.10
|
|
39
39
|
Requires-Dist: langgraph-supervisor~=0.0.21
|
|
40
|
-
Requires-Dist: langgraph<1.0.
|
|
40
|
+
Requires-Dist: langgraph<1.0.4,>=1.0.0
|
|
41
41
|
Requires-Dist: loguru~=0.7.3
|
|
42
42
|
Requires-Dist: multidict>6.3.2
|
|
43
|
+
Requires-Dist: numpy<2.4.0,>=1.26.4; python_version == '3.11'
|
|
43
44
|
Requires-Dist: numpy<2.4.0,>=2.0.0; python_version >= '3.12'
|
|
44
|
-
Requires-Dist:
|
|
45
|
-
Requires-Dist: onnxruntime<1.23.0,>=1.20.0
|
|
45
|
+
Requires-Dist: onnxruntime<1.24.0,>=1.20.0
|
|
46
46
|
Requires-Dist: pandas<2.4.0,>=2.2.3
|
|
47
47
|
Requires-Dist: psycopg[binary,pool]~=3.2.4
|
|
48
48
|
Requires-Dist: pyarrow>=19.0.1
|
|
49
|
-
Requires-Dist: pydantic-settings<2.
|
|
49
|
+
Requires-Dist: pydantic-settings<2.13.0,>=2.9.1
|
|
50
50
|
Requires-Dist: pydantic<2.13.0,>=2.11.1
|
|
51
51
|
Requires-Dist: pyowm<3.6,>=3.3
|
|
52
|
-
Requires-Dist: python-dotenv
|
|
52
|
+
Requires-Dist: python-dotenv<1.3,>=1.1
|
|
53
53
|
Requires-Dist: rootutils>=1.0.7
|
|
54
54
|
Requires-Dist: setuptools>=75.6.0
|
|
55
|
-
Requires-Dist: streamlit<1.
|
|
55
|
+
Requires-Dist: streamlit<1.52,>=1.45
|
|
56
56
|
Requires-Dist: uvicorn<0.39,>=0.35
|
|
57
57
|
Requires-Dist: watchdog~=6.0.0
|
|
58
58
|
Provides-Extra: all-backends
|
|
@@ -70,7 +70,7 @@ Requires-Dist: langchain-groq~=1.0.0; extra == 'all-llms'
|
|
|
70
70
|
Requires-Dist: langchain-ollama~=1.0.0; extra == 'all-llms'
|
|
71
71
|
Requires-Dist: langchain-openai~=1.0.0; extra == 'all-llms'
|
|
72
72
|
Provides-Extra: all-observability
|
|
73
|
-
Requires-Dist: langfuse<3.
|
|
73
|
+
Requires-Dist: langfuse<3.9.2,>=2.60.3; extra == 'all-observability'
|
|
74
74
|
Requires-Dist: langsmith<0.5.0,>=0.3.31; extra == 'all-observability'
|
|
75
75
|
Provides-Extra: anthropic
|
|
76
76
|
Requires-Dist: langchain-anthropic~=1.0.0; extra == 'anthropic'
|
|
@@ -92,13 +92,13 @@ Provides-Extra: gunicorn-backend
|
|
|
92
92
|
Requires-Dist: gunicorn~=23.0.0; extra == 'gunicorn-backend'
|
|
93
93
|
Requires-Dist: uvicorn[standard]<0.39,>=0.35; extra == 'gunicorn-backend'
|
|
94
94
|
Provides-Extra: langfuse
|
|
95
|
-
Requires-Dist: langfuse<3.
|
|
95
|
+
Requires-Dist: langfuse<3.9.2,>=2.60.3; extra == 'langfuse'
|
|
96
96
|
Provides-Extra: langsmith
|
|
97
97
|
Requires-Dist: langsmith<0.5.0,>=0.3.31; extra == 'langsmith'
|
|
98
98
|
Provides-Extra: openai
|
|
99
99
|
Requires-Dist: langchain-openai~=1.0.0; extra == 'openai'
|
|
100
100
|
Provides-Extra: uvicorn-backend
|
|
101
|
-
Requires-Dist: uvicorn
|
|
101
|
+
Requires-Dist: uvicorn<0.39,>=0.35; extra == 'uvicorn-backend'
|
|
102
102
|
Description-Content-Type: text/markdown
|
|
103
103
|
|
|
104
104
|
<div align="center">
|
|
@@ -112,7 +112,7 @@ autosummary_generate = True
|
|
|
112
112
|
# Intersphinx mappings - update with corrected URLs
|
|
113
113
|
intersphinx_mapping = {
|
|
114
114
|
"python": ("https://docs.python.org/3", None),
|
|
115
|
-
"langgraph": ("https://
|
|
115
|
+
"langgraph": ("https://langchain-ai.github.io/langgraph/", None),
|
|
116
116
|
"pydantic": ("https://docs.pydantic.dev/latest/", None),
|
|
117
117
|
"fastapi": ("https://fastapi.tiangolo.com/", None),
|
|
118
118
|
}
|
|
@@ -316,36 +316,43 @@ class AgentExecutor:
|
|
|
316
316
|
recursion_limit=recursion_limit,
|
|
317
317
|
)
|
|
318
318
|
|
|
319
|
-
#
|
|
320
|
-
|
|
319
|
+
# Wrap execution in trace context
|
|
320
|
+
with agent.observability.trace_context(
|
|
321
|
+
run_id=run_id,
|
|
322
|
+
user_id=user_id,
|
|
321
323
|
input=input_data,
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
324
|
+
agent_name=agent.name,
|
|
325
|
+
):
|
|
326
|
+
# Invoke the agent
|
|
327
|
+
response_events: list[tuple[str, Any]] = await agent.graph.ainvoke(
|
|
328
|
+
input=input_data,
|
|
329
|
+
config=config,
|
|
330
|
+
# stream_mode=["updates", "values"],
|
|
331
|
+
stream_mode=["values"],
|
|
332
|
+
)
|
|
326
333
|
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
334
|
+
response_type, response = response_events[-1]
|
|
335
|
+
|
|
336
|
+
if response_type == "values" and "__interrupt__" not in response:
|
|
337
|
+
generated_message = response.get("structured_response")
|
|
338
|
+
if not generated_message:
|
|
339
|
+
generated_message = response["messages"][-1]
|
|
340
|
+
|
|
341
|
+
# Normal response, the agent completed successfully
|
|
342
|
+
output = langchain_to_chat_message(generated_message)
|
|
343
|
+
elif response_type == "values" and "__interrupt__" in response:
|
|
344
|
+
# The last thing to occur was an interrupt
|
|
345
|
+
# Return the value of the first interrupt as an AIMessage
|
|
346
|
+
output = langchain_to_chat_message(AIMessage(content=response["__interrupt__"][0].value))
|
|
347
|
+
elif response_type == "updates" and "__interrupt__" in response:
|
|
348
|
+
# The last thing to occur was an interrupt
|
|
349
|
+
# Return the value of the first interrupt as an AIMessage
|
|
350
|
+
output = langchain_to_chat_message(AIMessage(content=response["__interrupt__"][0].value))
|
|
351
|
+
else:
|
|
352
|
+
raise ValueError(f"Unexpected response type: {response_type}")
|
|
346
353
|
|
|
347
|
-
|
|
348
|
-
|
|
354
|
+
output.run_id = str(run_id)
|
|
355
|
+
return output
|
|
349
356
|
|
|
350
357
|
@handle_agent_errors
|
|
351
358
|
async def stream(
|
|
@@ -391,96 +398,103 @@ class AgentExecutor:
|
|
|
391
398
|
recursion_limit=recursion_limit,
|
|
392
399
|
)
|
|
393
400
|
|
|
394
|
-
#
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
if stream_mode == "updates":
|
|
405
|
-
for node, updates in event.items():
|
|
406
|
-
# A simple approach to handle agent interrupts.
|
|
407
|
-
# In a more sophisticated implementation, we could add
|
|
408
|
-
# some structured ChatMessage type to return the interrupt value.
|
|
409
|
-
if node == "__interrupt__":
|
|
410
|
-
interrupt: Interrupt
|
|
411
|
-
for interrupt in updates:
|
|
412
|
-
new_messages.append(AIMessage(content=interrupt.value))
|
|
413
|
-
continue
|
|
401
|
+
# Wrap execution in trace context
|
|
402
|
+
with agent.observability.trace_context(
|
|
403
|
+
run_id=run_id,
|
|
404
|
+
user_id=user_id,
|
|
405
|
+
input=input_data,
|
|
406
|
+
agent_name=agent.name,
|
|
407
|
+
):
|
|
408
|
+
# Stream from the agent with appropriate modes
|
|
409
|
+
stream_mode = ["updates", "messages", "custom"] if stream_tokens else ["updates"]
|
|
414
410
|
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
# Special case for supervisor agent
|
|
418
|
-
if node == "supervisor":
|
|
419
|
-
# Get only the last AIMessage since supervisor includes all previous messages
|
|
420
|
-
ai_messages = [msg for msg in update_messages if isinstance(msg, AIMessage)]
|
|
421
|
-
if ai_messages:
|
|
422
|
-
update_messages = [ai_messages[-1]]
|
|
423
|
-
|
|
424
|
-
# Special case for expert agents
|
|
425
|
-
if node in ("research_expert", "math_expert"):
|
|
426
|
-
# Convert to ToolMessage so it displays in the UI as a tool response
|
|
427
|
-
if update_messages:
|
|
428
|
-
msg = ToolMessage(
|
|
429
|
-
content=update_messages[0].content,
|
|
430
|
-
name=node,
|
|
431
|
-
tool_call_id="",
|
|
432
|
-
)
|
|
433
|
-
update_messages = [msg]
|
|
434
|
-
new_messages.extend(update_messages)
|
|
435
|
-
|
|
436
|
-
elif stream_mode == "custom":
|
|
437
|
-
new_messages = [event]
|
|
438
|
-
|
|
439
|
-
elif stream_mode == "messages" and stream_tokens:
|
|
440
|
-
msg, metadata = event
|
|
441
|
-
if "skip_stream" in metadata.get("tags", []):
|
|
411
|
+
async for stream_event in agent.graph.astream(input=input_data, config=config, stream_mode=stream_mode):
|
|
412
|
+
if not isinstance(stream_event, tuple):
|
|
442
413
|
continue
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
if
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
414
|
+
|
|
415
|
+
stream_mode, event = stream_event
|
|
416
|
+
new_messages = []
|
|
417
|
+
|
|
418
|
+
if stream_mode == "updates":
|
|
419
|
+
for node, updates in event.items():
|
|
420
|
+
# A simple approach to handle agent interrupts.
|
|
421
|
+
# In a more sophisticated implementation, we could add
|
|
422
|
+
# some structured ChatMessage type to return the interrupt value.
|
|
423
|
+
if node == "__interrupt__":
|
|
424
|
+
interrupt: Interrupt
|
|
425
|
+
for interrupt in updates:
|
|
426
|
+
new_messages.append(AIMessage(content=interrupt.value))
|
|
427
|
+
continue
|
|
428
|
+
|
|
429
|
+
update_messages = (updates or {}).get("messages", [])
|
|
430
|
+
|
|
431
|
+
# Special case for supervisor agent
|
|
432
|
+
if node == "supervisor":
|
|
433
|
+
# Get only the last AIMessage since supervisor includes all previous messages
|
|
434
|
+
ai_messages = [msg for msg in update_messages if isinstance(msg, AIMessage)]
|
|
435
|
+
if ai_messages:
|
|
436
|
+
update_messages = [ai_messages[-1]]
|
|
437
|
+
|
|
438
|
+
# Special case for expert agents
|
|
439
|
+
if node in ("research_expert", "math_expert"):
|
|
440
|
+
# Convert to ToolMessage so it displays in the UI as a tool response
|
|
441
|
+
if update_messages:
|
|
442
|
+
msg = ToolMessage(
|
|
443
|
+
content=update_messages[0].content,
|
|
444
|
+
name=node,
|
|
445
|
+
tool_call_id="",
|
|
446
|
+
)
|
|
447
|
+
update_messages = [msg]
|
|
448
|
+
new_messages.extend(update_messages)
|
|
449
|
+
|
|
450
|
+
elif stream_mode == "custom":
|
|
451
|
+
new_messages = [event]
|
|
452
|
+
|
|
453
|
+
elif stream_mode == "messages" and stream_tokens:
|
|
454
|
+
msg, metadata = event
|
|
455
|
+
if "skip_stream" in metadata.get("tags", []):
|
|
456
|
+
continue
|
|
457
|
+
# Skip non-LLM nodes that might send messages
|
|
458
|
+
if not isinstance(msg, AIMessageChunk):
|
|
459
|
+
continue
|
|
460
|
+
content = remove_tool_calls(msg.content)
|
|
461
|
+
if content:
|
|
462
|
+
# Empty content in OpenAI context usually means the model is asking for a tool to be invoked
|
|
463
|
+
yield convert_message_content_to_string(content)
|
|
464
|
+
|
|
465
|
+
# LangGraph streaming may emit tuples: (field_name, field_value)
|
|
466
|
+
# e.g. ('content', <str>), ('tool_calls', [ToolCall,...]), ('additional_kwargs', {...}), etc.
|
|
467
|
+
# We accumulate only supported fields into `parts` and skip unsupported metadata.
|
|
468
|
+
# More info at: https://langchain-ai.github.io/langgraph/cloud/how-tos/stream_messages/
|
|
469
|
+
processed_messages = []
|
|
470
|
+
current_message: dict[str, Any] = {}
|
|
471
|
+
for msg in new_messages:
|
|
472
|
+
if isinstance(msg, tuple):
|
|
473
|
+
key, value = msg
|
|
474
|
+
# Store parts in temporary dict
|
|
475
|
+
current_message[key] = value
|
|
476
|
+
else:
|
|
477
|
+
# Add complete message if we have one in progress
|
|
478
|
+
if current_message:
|
|
479
|
+
processed_messages.append(create_ai_message(current_message))
|
|
480
|
+
current_message = {}
|
|
481
|
+
processed_messages.append(msg)
|
|
482
|
+
|
|
483
|
+
# Add any remaining message parts
|
|
484
|
+
if current_message:
|
|
485
|
+
processed_messages.append(create_ai_message(current_message))
|
|
486
|
+
|
|
487
|
+
for msg in processed_messages:
|
|
488
|
+
try:
|
|
489
|
+
chat_message = langchain_to_chat_message(msg)
|
|
490
|
+
chat_message.run_id = str(run_id)
|
|
491
|
+
# Skip the input message if it's repeated by LangGraph
|
|
492
|
+
if chat_message.type == "human" and chat_message.content == msg:
|
|
493
|
+
continue
|
|
494
|
+
yield chat_message
|
|
495
|
+
except Exception as e:
|
|
496
|
+
logger.error(f"Error parsing message: {e}")
|
|
479
497
|
continue
|
|
480
|
-
yield chat_message
|
|
481
|
-
except Exception as e:
|
|
482
|
-
logger.error(f"Error parsing message: {e}")
|
|
483
|
-
continue
|
|
484
498
|
|
|
485
499
|
def save(self, path: str, agent_ids: Optional[List[str]] = None) -> None:
|
|
486
500
|
"""Save agents to disk using joblib.
|
|
@@ -10,7 +10,7 @@ from langgraph.types import StreamWriter
|
|
|
10
10
|
from langgraph_agent_toolkit.agents.agent import Agent
|
|
11
11
|
from langgraph_agent_toolkit.agents.blueprints.bg_task_agent.task import Task
|
|
12
12
|
from langgraph_agent_toolkit.core import settings
|
|
13
|
-
from langgraph_agent_toolkit.core.models.factory import
|
|
13
|
+
from langgraph_agent_toolkit.core.models.factory import CompletionModelFactory
|
|
14
14
|
from langgraph_agent_toolkit.schema.models import ModelProvider
|
|
15
15
|
|
|
16
16
|
|
|
@@ -36,10 +36,10 @@ async def acall_model(state: AgentState, config: RunnableConfig) -> AgentState:
|
|
|
36
36
|
if model_config_key and model_config_key in settings.MODEL_CONFIGS:
|
|
37
37
|
# Create model from configuration
|
|
38
38
|
model_config = settings.MODEL_CONFIGS[model_config_key]
|
|
39
|
-
m =
|
|
39
|
+
m = CompletionModelFactory.get_model_from_config(model_config)
|
|
40
40
|
else:
|
|
41
41
|
# Fall back to traditional approach
|
|
42
|
-
m =
|
|
42
|
+
m = CompletionModelFactory.create(
|
|
43
43
|
mmodel_provider=config["configurable"].get("model_provider", ModelProvider.OPENAI),
|
|
44
44
|
model_name=config["configurable"].get("model_name", settings.OPENAI_MODEL_NAME),
|
|
45
45
|
openai_api_base=settings.OPENAI_API_BASE_URL,
|
|
@@ -4,7 +4,7 @@ from langgraph.func import entrypoint
|
|
|
4
4
|
|
|
5
5
|
from langgraph_agent_toolkit.agents.agent import Agent
|
|
6
6
|
from langgraph_agent_toolkit.core import settings
|
|
7
|
-
from langgraph_agent_toolkit.core.models.factory import
|
|
7
|
+
from langgraph_agent_toolkit.core.models.factory import CompletionModelFactory
|
|
8
8
|
from langgraph_agent_toolkit.schema.models import ModelProvider
|
|
9
9
|
|
|
10
10
|
|
|
@@ -27,10 +27,10 @@ async def chatbot(
|
|
|
27
27
|
if model_config_key and model_config_key in settings.MODEL_CONFIGS:
|
|
28
28
|
# Use the model configuration from settings
|
|
29
29
|
model_config = settings.MODEL_CONFIGS[model_config_key]
|
|
30
|
-
model =
|
|
30
|
+
model = CompletionModelFactory.get_model_from_config(model_config)
|
|
31
31
|
else:
|
|
32
32
|
# Fall back to the traditional approach
|
|
33
|
-
model =
|
|
33
|
+
model = CompletionModelFactory.create(
|
|
34
34
|
model_provider=config["configurable"].get("model_provider", ModelProvider.OPENAI),
|
|
35
35
|
model_name=config["configurable"].get("model_name", settings.OPENAI_MODEL_NAME),
|
|
36
36
|
openai_api_base=settings.OPENAI_API_BASE_URL,
|
|
@@ -13,7 +13,7 @@ from pydantic import BaseModel, Field
|
|
|
13
13
|
|
|
14
14
|
from langgraph_agent_toolkit.agents.agent import Agent
|
|
15
15
|
from langgraph_agent_toolkit.core import settings
|
|
16
|
-
from langgraph_agent_toolkit.core.models.factory import
|
|
16
|
+
from langgraph_agent_toolkit.core.models.factory import CompletionModelFactory
|
|
17
17
|
from langgraph_agent_toolkit.schema.models import ModelProvider
|
|
18
18
|
|
|
19
19
|
|
|
@@ -45,7 +45,7 @@ Don't tell the user what their sign is, you are just demonstrating your knowledg
|
|
|
45
45
|
|
|
46
46
|
async def background(state: AgentState, config: RunnableConfig) -> AgentState:
|
|
47
47
|
"""Demonstrate doing work before the interrupt."""
|
|
48
|
-
m =
|
|
48
|
+
m = CompletionModelFactory.create(
|
|
49
49
|
model_provider=config["configurable"].get("model_provider", ModelProvider.OPENAI),
|
|
50
50
|
model_name=config["configurable"].get("model_name", settings.OPENAI_MODEL_NAME),
|
|
51
51
|
openai_api_base=settings.OPENAI_API_BASE_URL,
|
|
@@ -80,7 +80,7 @@ async def determine_birthdate(state: AgentState, config: RunnableConfig) -> Agen
|
|
|
80
80
|
|
|
81
81
|
If no birthdate is found, it will perform an interrupt before proceeding.
|
|
82
82
|
"""
|
|
83
|
-
m =
|
|
83
|
+
m = CompletionModelFactory.create(
|
|
84
84
|
model_provider=config["configurable"].get("model_provider", ModelProvider.OPENAI),
|
|
85
85
|
model_name=config["configurable"].get("model_name", settings.OPENAI_MODEL_NAME),
|
|
86
86
|
config_prefix="",
|
|
@@ -141,7 +141,7 @@ async def determine_sign(state: AgentState, config: RunnableConfig) -> AgentStat
|
|
|
141
141
|
if not state.get("birthdate"):
|
|
142
142
|
raise ValueError("No birthdate found in state")
|
|
143
143
|
|
|
144
|
-
m =
|
|
144
|
+
m = CompletionModelFactory.create(
|
|
145
145
|
model_provider=config["configurable"].get("model_provider", ModelProvider.OPENAI),
|
|
146
146
|
model_name=config["configurable"].get("model_name", settings.OPENAI_MODEL_NAME),
|
|
147
147
|
openai_api_base=settings.OPENAI_API_BASE_URL,
|
|
@@ -12,7 +12,7 @@ from langgraph.managed import RemainingSteps
|
|
|
12
12
|
|
|
13
13
|
from langgraph_agent_toolkit.agents.agent import Agent
|
|
14
14
|
from langgraph_agent_toolkit.core import settings
|
|
15
|
-
from langgraph_agent_toolkit.core.models.factory import
|
|
15
|
+
from langgraph_agent_toolkit.core.models.factory import CompletionModelFactory
|
|
16
16
|
from langgraph_agent_toolkit.helper.logging import logger
|
|
17
17
|
from langgraph_agent_toolkit.schema.models import ModelProvider
|
|
18
18
|
|
|
@@ -158,10 +158,10 @@ async def acall_model(state: AgentState, config: RunnableConfig) -> AgentState:
|
|
|
158
158
|
if model_config_key and model_config_key in settings.MODEL_CONFIGS:
|
|
159
159
|
# Use the model configuration from settings
|
|
160
160
|
model_config = settings.MODEL_CONFIGS[model_config_key]
|
|
161
|
-
model =
|
|
161
|
+
model = CompletionModelFactory.get_model_from_config(model_config)
|
|
162
162
|
else:
|
|
163
163
|
# Fall back to the traditional approach
|
|
164
|
-
model =
|
|
164
|
+
model = CompletionModelFactory.create(
|
|
165
165
|
model_provider=config["configurable"].get("model_provider", ModelProvider.OPENAI),
|
|
166
166
|
model_name=config["configurable"].get("model_name", settings.OPENAI_MODEL_NAME),
|
|
167
167
|
openai_api_base=settings.OPENAI_API_BASE_URL,
|
|
@@ -5,7 +5,7 @@ from langgraph_agent_toolkit.agents.agent import Agent
|
|
|
5
5
|
from langgraph_agent_toolkit.agents.components.creators.create_react_agent import create_react_agent
|
|
6
6
|
from langgraph_agent_toolkit.agents.components.tools import add, multiply
|
|
7
7
|
from langgraph_agent_toolkit.agents.components.utils import AgentStateWithRemainingSteps, pre_model_hook_standard
|
|
8
|
-
from langgraph_agent_toolkit.core.models.factory import
|
|
8
|
+
from langgraph_agent_toolkit.core.models.factory import CompletionModelFactory
|
|
9
9
|
from langgraph_agent_toolkit.core.observability.factory import ObservabilityFactory
|
|
10
10
|
from langgraph_agent_toolkit.core.observability.types import ChatMessageDict, MessageRole, ObservabilityBackend
|
|
11
11
|
from langgraph_agent_toolkit.core.prompts.chat_prompt_template import ObservabilityChatPromptTemplate
|
|
@@ -51,7 +51,7 @@ react_agent = Agent(
|
|
|
51
51
|
name="react-agent",
|
|
52
52
|
description="A react agent.",
|
|
53
53
|
graph=create_react_agent(
|
|
54
|
-
model=
|
|
54
|
+
model=CompletionModelFactory.create(
|
|
55
55
|
model_provider=ModelProvider.OPENAI,
|
|
56
56
|
model_name=settings.OPENAI_MODEL_NAME,
|
|
57
57
|
openai_api_base=settings.OPENAI_API_BASE_URL,
|
|
@@ -10,12 +10,12 @@ from langgraph.checkpoint.memory import MemorySaver
|
|
|
10
10
|
from langgraph_agent_toolkit.agents.agent import Agent
|
|
11
11
|
from langgraph_agent_toolkit.agents.components.tools import add, multiply
|
|
12
12
|
from langgraph_agent_toolkit.core import settings
|
|
13
|
-
from langgraph_agent_toolkit.core.models.factory import
|
|
13
|
+
from langgraph_agent_toolkit.core.models.factory import CompletionModelFactory
|
|
14
14
|
from langgraph_agent_toolkit.helper.constants import DEFAULT_MAX_MESSAGE_HISTORY_LENGTH
|
|
15
15
|
from langgraph_agent_toolkit.schema.models import ModelProvider
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
model =
|
|
18
|
+
model = CompletionModelFactory.create(
|
|
19
19
|
model_provider=ModelProvider.OPENAI,
|
|
20
20
|
model_name=settings.OPENAI_MODEL_NAME,
|
|
21
21
|
config_prefix="",
|
|
@@ -13,7 +13,7 @@ from pydantic import BaseModel, Field
|
|
|
13
13
|
from langgraph_agent_toolkit.agents.agent import Agent
|
|
14
14
|
from langgraph_agent_toolkit.agents.components.tools import add, multiply
|
|
15
15
|
from langgraph_agent_toolkit.core import settings
|
|
16
|
-
from langgraph_agent_toolkit.core.models.factory import
|
|
16
|
+
from langgraph_agent_toolkit.core.models.factory import CompletionModelFactory
|
|
17
17
|
from langgraph_agent_toolkit.helper.constants import DEFAULT_MAX_MESSAGE_HISTORY_LENGTH
|
|
18
18
|
from langgraph_agent_toolkit.schema.models import ModelProvider
|
|
19
19
|
|
|
@@ -27,7 +27,7 @@ class ResponseSchema(BaseModel):
|
|
|
27
27
|
)
|
|
28
28
|
|
|
29
29
|
|
|
30
|
-
model =
|
|
30
|
+
model = CompletionModelFactory.create(
|
|
31
31
|
model_provider=ModelProvider.OPENAI,
|
|
32
32
|
model_name=settings.OPENAI_MODEL_NAME,
|
|
33
33
|
config_prefix="",
|
|
@@ -6,11 +6,11 @@ from langgraph_supervisor import create_supervisor
|
|
|
6
6
|
from langgraph_agent_toolkit.agents.agent import Agent
|
|
7
7
|
from langgraph_agent_toolkit.agents.components.tools import add, multiply
|
|
8
8
|
from langgraph_agent_toolkit.core import settings
|
|
9
|
-
from langgraph_agent_toolkit.core.models.factory import
|
|
9
|
+
from langgraph_agent_toolkit.core.models.factory import CompletionModelFactory
|
|
10
10
|
from langgraph_agent_toolkit.schema.models import ModelProvider
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
model =
|
|
13
|
+
model = CompletionModelFactory.create(
|
|
14
14
|
model_provider=ModelProvider.OPENAI,
|
|
15
15
|
model_name=settings.OPENAI_MODEL_NAME,
|
|
16
16
|
openai_api_base=settings.OPENAI_API_BASE_URL,
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from langgraph_agent_toolkit.core.models.chat_openai import ChatOpenAIPatched
|
|
2
|
+
from langgraph_agent_toolkit.core.models.factory import CompletionModelFactory, EmbeddingModelFactory
|
|
3
|
+
from langgraph_agent_toolkit.core.models.fake import FakeToolModel
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
__all__ = [
|
|
7
|
+
"ChatOpenAIPatched",
|
|
8
|
+
"FakeToolModel",
|
|
9
|
+
"EmbeddingModelFactory",
|
|
10
|
+
"CompletionModelFactory",
|
|
11
|
+
]
|