langgraph-agent-toolkit 0.1.2__tar.gz → 0.2.0__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.2.0/.coveragerc +6 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/.env.example +35 -8
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/.github/PULL_REQUEST_TEMPLATE.md +2 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/CHANGELOG.md +11 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/PKG-INFO +26 -6
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/README.md +25 -5
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/configs/litellm/config.example.yaml +13 -1
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/agents/agent_executor.py +21 -10
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/agents/blueprints/bg_task_agent/agent.py +7 -1
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/agents/blueprints/chatbot/agent.py +7 -3
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/agents/blueprints/interrupt_agent/agent.py +19 -3
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/agents/blueprints/react/agent.py +7 -1
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/agents/blueprints/react_so/agent.py +7 -1
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/agents/blueprints/supervisor_agent/agent.py +7 -1
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/client/client.py +45 -20
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/core/memory/postgres.py +2 -1
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/core/models/factory.py +37 -38
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/core/settings.py +34 -42
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/helper/constants.py +3 -1
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/schema/__init__.py +0 -2
- langgraph_agent_toolkit-0.2.0/langgraph_agent_toolkit/schema/models.py +13 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/schema/schema.py +13 -14
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/service/routes.py +2 -5
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/service/utils.py +3 -2
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/streamlit_app.py +0 -4
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/pyproject.toml +1 -1
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/tests/agents/test_agent_executor.py +9 -9
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/tests/app/conftest.py +0 -3
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/tests/app/test_streamlit_app.py +11 -6
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/tests/client/test_client.py +10 -9
- langgraph_agent_toolkit-0.2.0/tests/core/test_llm.py +48 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/tests/core/test_settings.py +53 -59
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/tests/integration/test_docker_e2e.py +2 -1
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/tests/service/test_service.py +7 -15
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/uv.lock +1 -1
- langgraph_agent_toolkit-0.1.2/.coveragerc +0 -5
- langgraph_agent_toolkit-0.1.2/langgraph_agent_toolkit/schema/models.py +0 -25
- langgraph_agent_toolkit-0.1.2/tests/core/test_llm.py +0 -56
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/.dockerignore +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/.github/RELEASE_TEMPLATE/release-template.md +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/.github/codecov.yml +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/.github/dependabot.yml +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/.github/scripts/tag_from_pyproject.sh +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/.github/workflows/deploy.yml +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/.github/workflows/release.yml +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/.github/workflows/test.yml +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/.gitignore +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/.pre-commit-config.yaml +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/.project-root +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/CONTRIBUTING.md +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/LICENSE +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/Makefile +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/configs/clickhouse/.clickhouse.env.example +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/configs/litellm/.litellm.env.example +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/configs/minio/.minio.env.example +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/configs/postgres/.postgres.env.example +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/configs/redis/.redis.env.example +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/docker/app/Dockerfile +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/docker/service/Dockerfile +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/docker-compose.yaml +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/docs/media/agent_architecture.excalidraw +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/docs/media/agent_architecture.png +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/docs/media/agent_diagram.png +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph.json +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/__init__.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/agents/__init__.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/agents/agent.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/agents/blueprints/__init__.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/agents/blueprints/bg_task_agent/__init__.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/agents/blueprints/bg_task_agent/task.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/agents/blueprints/bg_task_agent/utils.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/agents/blueprints/chatbot/__init__.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/agents/blueprints/command_agent/__init__.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/agents/blueprints/command_agent/agent.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/agents/blueprints/interrupt_agent/__init__.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/agents/blueprints/react/__init__.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/agents/blueprints/react_so/__init__.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/agents/blueprints/supervisor_agent/__init__.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/agents/components/__init__.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/agents/components/creators/__init__.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/agents/components/creators/create_react_agent.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/agents/components/tools.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/agents/components/utils.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/client/__init__.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/core/__init__.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/core/memory/__init__.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/core/memory/base.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/core/memory/factory.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/core/memory/sqlite.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/core/memory/types.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/core/models/__init__.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/core/models/chat_openai.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/core/models/fake.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/core/observability/__init__.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/core/observability/base.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/core/observability/empty.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/core/observability/factory.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/core/observability/langfuse.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/core/observability/langsmith.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/core/observability/types.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/core/prompts/__init__.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/core/prompts/chat_prompt_template.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/helper/__init__.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/helper/logging.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/helper/types.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/helper/utils.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/run_agent.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/run_client.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/run_service.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/schema/task_data.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/service/__init__.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/service/exception_handlers.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/service/factory.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/service/handler.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/service/middleware.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/langgraph_agent_toolkit/service/types.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/scripts/postgres-init/create_databases.sql +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/scripts/python/01-invoke-proxy.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/scripts/python/02-test-local-pm.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/scripts/python/03-test-langfuse-pm.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/scripts/python/04-test-langsmith-pm.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/scripts/python/05-test-prompt-types.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/scripts/python/06-test-custom-chat-prompt-template.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/tests/client/conftest.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/tests/conftest.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/tests/core/test_memory.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/tests/core/test_observability.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/tests/core/test_prompts.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/tests/service/conftest.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/tests/service/test_auth.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/tests/service/test_factory.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/tests/service/test_service_e2e.py +0 -0
- {langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/tests/service/test_utils.py +0 -0
|
@@ -47,11 +47,38 @@ POSTGRES_MAX_IDLE=5
|
|
|
47
47
|
# Use a fake model for testing
|
|
48
48
|
USE_FAKE_MODEL=false
|
|
49
49
|
|
|
50
|
-
#
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
50
|
+
# OpenAI Settings
|
|
51
|
+
OPENAI_API_KEY=
|
|
52
|
+
OPENAI_API_BASE_URL=
|
|
53
|
+
OPENAI_API_VERSION=
|
|
54
|
+
OPENAI_MODEL_NAME=
|
|
55
|
+
|
|
56
|
+
# Azure OpenAI Settings
|
|
57
|
+
AZURE_OPENAI_API_KEY=
|
|
58
|
+
AZURE_OPENAI_ENDPOINT=
|
|
59
|
+
AZURE_OPENAI_API_VERSION=
|
|
60
|
+
AZURE_OPENAI_MODEL_NAME=
|
|
61
|
+
AZURE_OPENAI_DEPLOYMENT_NAME=
|
|
62
|
+
|
|
63
|
+
# Anthropic Settings
|
|
64
|
+
ANTHROPIC_API_KEY=
|
|
65
|
+
ANTHROPIC_MODEL_NAME=
|
|
66
|
+
|
|
67
|
+
# Google VertexAI Settings
|
|
68
|
+
GOOGLE_VERTEXAI_MODEL_NAME=
|
|
69
|
+
GOOGLE_VERTEXAI_API_KEY=
|
|
70
|
+
|
|
71
|
+
# Google GenAI Settings
|
|
72
|
+
GOOGLE_GENAI_MODEL_NAME=
|
|
73
|
+
GOOGLE_GENAI_API_KEY=
|
|
74
|
+
|
|
75
|
+
# Bedrock Settings
|
|
76
|
+
AWS_BEDROCK_MODEL_NAME=
|
|
77
|
+
|
|
78
|
+
# DeepSeek Settings
|
|
79
|
+
DEEPSEEK_MODEL_NAME=
|
|
80
|
+
DEEPSEEK_API_KEY=
|
|
81
|
+
|
|
82
|
+
# Ollama Settings
|
|
83
|
+
OLLAMA_MODEL_NAME=
|
|
84
|
+
OLLAMA_BASE_URL=
|
|
@@ -6,6 +6,17 @@ 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.2.0]
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- Refactored code structure for better maintainability
|
|
14
|
+
- Refactored Model factory
|
|
15
|
+
|
|
16
|
+
### Removed
|
|
17
|
+
|
|
18
|
+
- Removed AllModels and added environment variables for different providers
|
|
19
|
+
|
|
9
20
|
## [0.1.2]
|
|
10
21
|
|
|
11
22
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: langgraph-agent-toolkit
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: Full toolkit for running an AI agent service built with LangGraph, FastAPI and Streamlit
|
|
5
5
|
Project-URL: repository, https://github.com/kryvokhyzha/langgraph-agent-toolkit
|
|
6
6
|
Project-URL: PyPI, https://pypi.org/project/langgraph-agent-toolkit
|
|
@@ -133,7 +133,8 @@ Features include:
|
|
|
133
133
|
|
|
134
134
|
## 🏗️ Architecture
|
|
135
135
|
|
|
136
|
-
<img src="docs/media/agent_architecture.png" width="800">
|
|
136
|
+
<!-- <img src="docs/media/agent_architecture.png" width="800"> -->
|
|
137
|
+
<img src="https://github.com/kryvokhyzha/langgraph-agent-toolkit/blob/main/docs/media/agent_architecture.png?raw=true" width="800">
|
|
137
138
|
|
|
138
139
|
## ✨ Key Features
|
|
139
140
|
|
|
@@ -183,10 +184,29 @@ Features include:
|
|
|
183
184
|
**🔑 LLM API Configuration**
|
|
184
185
|
|
|
185
186
|
```env
|
|
186
|
-
#
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
187
|
+
# OpenAI Settings
|
|
188
|
+
OPENAI_API_KEY=sk-xxxxxxxxxxxxx
|
|
189
|
+
OPENAI_API_BASE_URL=http://litellm:4000/v1 # Can be OpenAI API or LiteLLM proxy
|
|
190
|
+
OPENAI_API_VERSION=2025-01-01
|
|
191
|
+
OPENAI_MODEL_NAME=gpt-4o-mini
|
|
192
|
+
|
|
193
|
+
# Azure OpenAI Settings (Optional)
|
|
194
|
+
AZURE_OPENAI_API_KEY=
|
|
195
|
+
AZURE_OPENAI_ENDPOINT=
|
|
196
|
+
AZURE_OPENAI_API_VERSION=
|
|
197
|
+
AZURE_OPENAI_MODEL_NAME=
|
|
198
|
+
AZURE_OPENAI_DEPLOYMENT_NAME=
|
|
199
|
+
|
|
200
|
+
# Anthropic Settings (Optional)
|
|
201
|
+
ANTHROPIC_API_KEY=
|
|
202
|
+
ANTHROPIC_MODEL_NAME=
|
|
203
|
+
|
|
204
|
+
# Other provider settings are also available:
|
|
205
|
+
# - Google VertexAI
|
|
206
|
+
# - Google GenAI
|
|
207
|
+
# - AWS Bedrock
|
|
208
|
+
# - DeepSeek
|
|
209
|
+
# - Ollama
|
|
190
210
|
```
|
|
191
211
|
|
|
192
212
|
**🗄️ Database Configuration**
|
|
@@ -62,7 +62,8 @@ Features include:
|
|
|
62
62
|
|
|
63
63
|
## 🏗️ Architecture
|
|
64
64
|
|
|
65
|
-
<img src="docs/media/agent_architecture.png" width="800">
|
|
65
|
+
<!-- <img src="docs/media/agent_architecture.png" width="800"> -->
|
|
66
|
+
<img src="https://github.com/kryvokhyzha/langgraph-agent-toolkit/blob/main/docs/media/agent_architecture.png?raw=true" width="800">
|
|
66
67
|
|
|
67
68
|
## ✨ Key Features
|
|
68
69
|
|
|
@@ -112,10 +113,29 @@ Features include:
|
|
|
112
113
|
**🔑 LLM API Configuration**
|
|
113
114
|
|
|
114
115
|
```env
|
|
115
|
-
#
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
116
|
+
# OpenAI Settings
|
|
117
|
+
OPENAI_API_KEY=sk-xxxxxxxxxxxxx
|
|
118
|
+
OPENAI_API_BASE_URL=http://litellm:4000/v1 # Can be OpenAI API or LiteLLM proxy
|
|
119
|
+
OPENAI_API_VERSION=2025-01-01
|
|
120
|
+
OPENAI_MODEL_NAME=gpt-4o-mini
|
|
121
|
+
|
|
122
|
+
# Azure OpenAI Settings (Optional)
|
|
123
|
+
AZURE_OPENAI_API_KEY=
|
|
124
|
+
AZURE_OPENAI_ENDPOINT=
|
|
125
|
+
AZURE_OPENAI_API_VERSION=
|
|
126
|
+
AZURE_OPENAI_MODEL_NAME=
|
|
127
|
+
AZURE_OPENAI_DEPLOYMENT_NAME=
|
|
128
|
+
|
|
129
|
+
# Anthropic Settings (Optional)
|
|
130
|
+
ANTHROPIC_API_KEY=
|
|
131
|
+
ANTHROPIC_MODEL_NAME=
|
|
132
|
+
|
|
133
|
+
# Other provider settings are also available:
|
|
134
|
+
# - Google VertexAI
|
|
135
|
+
# - Google GenAI
|
|
136
|
+
# - AWS Bedrock
|
|
137
|
+
# - DeepSeek
|
|
138
|
+
# - Ollama
|
|
119
139
|
```
|
|
120
140
|
|
|
121
141
|
**🗄️ Database Configuration**
|
{langgraph_agent_toolkit-0.1.2 → langgraph_agent_toolkit-0.2.0}/configs/litellm/config.example.yaml
RENAMED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
# https://docs.litellm.ai/docs/proxy/configs
|
|
1
|
+
# Proxy doc: https://docs.litellm.ai/docs/proxy/configs
|
|
2
|
+
# Caching doc: https://docs.litellm.ai/docs/proxy/config_settings
|
|
2
3
|
|
|
4
|
+
# list of supported models on the server, with model-specific configs
|
|
3
5
|
model_list:
|
|
4
6
|
- model_name: gpt-4o-mini
|
|
5
7
|
litellm_params:
|
|
@@ -16,6 +18,7 @@ model_list:
|
|
|
16
18
|
model_info:
|
|
17
19
|
supported_environments: ["development", "production", "staging"]
|
|
18
20
|
|
|
21
|
+
# list of credentials to be used by the models
|
|
19
22
|
credential_list:
|
|
20
23
|
- credential_name: default_azure_credential
|
|
21
24
|
credential_values:
|
|
@@ -25,12 +28,14 @@ credential_list:
|
|
|
25
28
|
credential_info:
|
|
26
29
|
description: "Production credentials for EU region"
|
|
27
30
|
|
|
31
|
+
# litellm Module settings
|
|
28
32
|
litellm_settings:
|
|
29
33
|
drop_params: True
|
|
30
34
|
num_retries: 2 # retry call 3 times on each model_name (e.g. zephyr-beta)
|
|
31
35
|
request_timeout: 40 # raise Timeout error if call takes longer than 10s. Sets litellm.request_timeout
|
|
32
36
|
allowed_fails: 3 # cooldown model if it fails > 1 call in a minute.
|
|
33
37
|
|
|
38
|
+
# litellm Router settings
|
|
34
39
|
router_settings: # router_settings are optional
|
|
35
40
|
routing_strategy: latency-based-routing # Literal["simple-shuffle", "least-busy", "usage-based-routing","latency-based-routing"], default="simple-shuffle"
|
|
36
41
|
model_group_alias: { "gpt-4": "gpt-3.5-turbo" } # all requests with `gpt-4` will be routed to models with `gpt-3.5-turbo`
|
|
@@ -40,8 +45,15 @@ router_settings: # router_settings are optional
|
|
|
40
45
|
redis_password: os.environ/REDIS_AUTH
|
|
41
46
|
redis_port: 1992
|
|
42
47
|
|
|
48
|
+
# Server settings
|
|
43
49
|
general_settings:
|
|
44
50
|
master_key: os.environ/LITELLM_MASTER_KEY
|
|
45
51
|
database_connection_pool_limit: 1000
|
|
52
|
+
database_connection_timeout: 60
|
|
46
53
|
store_model_in_db: True
|
|
47
54
|
store_prompts_in_spend_logs: True
|
|
55
|
+
# environment_variables:
|
|
56
|
+
# # settings for using redis caching
|
|
57
|
+
# REDIS_HOST: redis-16337.c322.us-east-1-2.ec2.cloud.redislabs.com
|
|
58
|
+
# REDIS_PORT: "16337"
|
|
59
|
+
# REDIS_PASSWORD:
|
|
@@ -172,7 +172,8 @@ class AgentExecutor:
|
|
|
172
172
|
message: str,
|
|
173
173
|
thread_id: Optional[str] = None,
|
|
174
174
|
user_id: Optional[str] = None,
|
|
175
|
-
|
|
175
|
+
model_name: Optional[str] = None,
|
|
176
|
+
model_provider: Optional[str] = None,
|
|
176
177
|
agent_config: Optional[Dict[str, Any]] = None,
|
|
177
178
|
recursion_limit: Optional[int] = None,
|
|
178
179
|
) -> Tuple[Agent, Any, Any, UUID]:
|
|
@@ -183,7 +184,8 @@ class AgentExecutor:
|
|
|
183
184
|
message: User message to send to the agent
|
|
184
185
|
thread_id: Optional thread ID for conversation history
|
|
185
186
|
user_id: Optional user ID for the agent
|
|
186
|
-
|
|
187
|
+
model_name: Optional model name to override the default
|
|
188
|
+
model_provider: Optional model provider to override the default
|
|
187
189
|
agent_config: Optional additional configuration for the agent
|
|
188
190
|
recursion_limit: Optional recursion limit for the agent
|
|
189
191
|
|
|
@@ -208,8 +210,11 @@ class AgentExecutor:
|
|
|
208
210
|
"user_id": user_id,
|
|
209
211
|
}
|
|
210
212
|
|
|
211
|
-
if
|
|
212
|
-
configurable["
|
|
213
|
+
if model_name:
|
|
214
|
+
configurable["model_name"] = model_name
|
|
215
|
+
|
|
216
|
+
if model_provider:
|
|
217
|
+
configurable["model_provider"] = model_provider
|
|
213
218
|
|
|
214
219
|
if agent_config:
|
|
215
220
|
configurable.update(agent_config)
|
|
@@ -243,7 +248,8 @@ class AgentExecutor:
|
|
|
243
248
|
message: str,
|
|
244
249
|
thread_id: Optional[str] = None,
|
|
245
250
|
user_id: Optional[str] = None,
|
|
246
|
-
|
|
251
|
+
model_name: Optional[str] = None,
|
|
252
|
+
model_provider: Optional[str] = None,
|
|
247
253
|
agent_config: Optional[Dict[str, Any]] = None,
|
|
248
254
|
recursion_limit: Optional[int] = None,
|
|
249
255
|
) -> ChatMessage:
|
|
@@ -254,7 +260,8 @@ class AgentExecutor:
|
|
|
254
260
|
message: User message to send to the agent
|
|
255
261
|
thread_id: Optional thread ID for conversation history
|
|
256
262
|
user_id: Optional user ID for the agent
|
|
257
|
-
|
|
263
|
+
model_name: Optional model name to override the default
|
|
264
|
+
model_provider: Optional model provider to override the default
|
|
258
265
|
agent_config: Optional additional configuration for the agent
|
|
259
266
|
recursion_limit: Optional recursion limit for the agent
|
|
260
267
|
|
|
@@ -267,7 +274,8 @@ class AgentExecutor:
|
|
|
267
274
|
message=message,
|
|
268
275
|
thread_id=thread_id,
|
|
269
276
|
user_id=user_id,
|
|
270
|
-
|
|
277
|
+
model_name=model_name,
|
|
278
|
+
model_provider=model_provider,
|
|
271
279
|
agent_config=agent_config,
|
|
272
280
|
recursion_limit=recursion_limit,
|
|
273
281
|
)
|
|
@@ -300,7 +308,8 @@ class AgentExecutor:
|
|
|
300
308
|
message: str,
|
|
301
309
|
thread_id: Optional[str] = None,
|
|
302
310
|
user_id: Optional[str] = None,
|
|
303
|
-
|
|
311
|
+
model_name: Optional[str] = None,
|
|
312
|
+
model_provider: Optional[str] = None,
|
|
304
313
|
stream_tokens: bool = True,
|
|
305
314
|
agent_config: Optional[Dict[str, Any]] = None,
|
|
306
315
|
recursion_limit: Optional[int] = None,
|
|
@@ -312,7 +321,8 @@ class AgentExecutor:
|
|
|
312
321
|
message: User message to send to the agent
|
|
313
322
|
thread_id: Optional thread ID for conversation history
|
|
314
323
|
user_id: Optional user ID for the agent
|
|
315
|
-
|
|
324
|
+
model_name: Optional model name to override the default
|
|
325
|
+
model_provider: Optional model provider to override the default
|
|
316
326
|
stream_tokens: Whether to stream individual tokens
|
|
317
327
|
agent_config: Optional additional configuration for the agent
|
|
318
328
|
recursion_limit: Optional recursion limit for the agent
|
|
@@ -326,7 +336,8 @@ class AgentExecutor:
|
|
|
326
336
|
message=message,
|
|
327
337
|
thread_id=thread_id,
|
|
328
338
|
user_id=user_id,
|
|
329
|
-
|
|
339
|
+
model_name=model_name,
|
|
340
|
+
model_provider=model_provider,
|
|
330
341
|
agent_config=agent_config,
|
|
331
342
|
recursion_limit=recursion_limit,
|
|
332
343
|
)
|
|
@@ -11,6 +11,7 @@ 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
13
|
from langgraph_agent_toolkit.core.models.factory import ModelFactory
|
|
14
|
+
from langgraph_agent_toolkit.schema.models import ModelProvider
|
|
14
15
|
|
|
15
16
|
|
|
16
17
|
class AgentState(MessagesState, total=False):
|
|
@@ -29,7 +30,12 @@ def wrap_model(model: BaseChatModel) -> RunnableSerializable[AgentState, AIMessa
|
|
|
29
30
|
|
|
30
31
|
|
|
31
32
|
async def acall_model(state: AgentState, config: RunnableConfig) -> AgentState:
|
|
32
|
-
m = ModelFactory.create(
|
|
33
|
+
m = ModelFactory.create(
|
|
34
|
+
mmodel_provider=config["configurable"].get("model_provider", ModelProvider.OPENAI),
|
|
35
|
+
model_name=config["configurable"].get("model_name", settings.OPENAI_MODEL_NAME),
|
|
36
|
+
openai_api_base=settings.OPENAI_API_BASE_URL,
|
|
37
|
+
openai_api_key=settings.OPENAI_API_KEY,
|
|
38
|
+
)
|
|
33
39
|
model_runnable = wrap_model(m)
|
|
34
40
|
response = await model_runnable.ainvoke(state, config)
|
|
35
41
|
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
from langchain_core.messages import BaseMessage
|
|
2
2
|
from langchain_core.runnables import RunnableConfig
|
|
3
|
-
from langgraph.checkpoint.memory import MemorySaver
|
|
4
3
|
from langgraph.func import entrypoint
|
|
5
|
-
from langgraph.graph import add_messages
|
|
6
4
|
|
|
7
5
|
from langgraph_agent_toolkit.agents.agent import Agent
|
|
8
6
|
from langgraph_agent_toolkit.core import settings
|
|
9
7
|
from langgraph_agent_toolkit.core.models.factory import ModelFactory
|
|
8
|
+
from langgraph_agent_toolkit.schema.models import ModelProvider
|
|
10
9
|
|
|
11
10
|
|
|
12
11
|
@entrypoint(
|
|
@@ -22,7 +21,12 @@ async def chatbot(
|
|
|
22
21
|
if previous:
|
|
23
22
|
messages = previous["messages"] + messages
|
|
24
23
|
|
|
25
|
-
model = ModelFactory.create(
|
|
24
|
+
model = ModelFactory.create(
|
|
25
|
+
model_provider=config["configurable"].get("model_provider", ModelProvider.OPENAI),
|
|
26
|
+
model_name=config["configurable"].get("model_name", settings.OPENAI_MODEL_NAME),
|
|
27
|
+
openai_api_base=settings.OPENAI_API_BASE_URL,
|
|
28
|
+
openai_api_key=settings.OPENAI_API_KEY,
|
|
29
|
+
)
|
|
26
30
|
response = await model.ainvoke(messages)
|
|
27
31
|
return entrypoint.final(value={"messages": [response]}, save={"messages": messages + [response]})
|
|
28
32
|
|
|
@@ -14,6 +14,7 @@ from pydantic import BaseModel, Field
|
|
|
14
14
|
from langgraph_agent_toolkit.agents.agent import Agent
|
|
15
15
|
from langgraph_agent_toolkit.core import settings
|
|
16
16
|
from langgraph_agent_toolkit.core.models.factory import ModelFactory
|
|
17
|
+
from langgraph_agent_toolkit.schema.models import ModelProvider
|
|
17
18
|
|
|
18
19
|
|
|
19
20
|
class AgentState(MessagesState, total=False):
|
|
@@ -44,7 +45,12 @@ Don't tell the user what their sign is, you are just demonstrating your knowledg
|
|
|
44
45
|
|
|
45
46
|
async def background(state: AgentState, config: RunnableConfig) -> AgentState:
|
|
46
47
|
"""Demonstrate doing work before the interrupt."""
|
|
47
|
-
m = ModelFactory.create(
|
|
48
|
+
m = ModelFactory.create(
|
|
49
|
+
model_provider=config["configurable"].get("model_provider", ModelProvider.OPENAI),
|
|
50
|
+
model_name=config["configurable"].get("model_name", settings.OPENAI_MODEL_NAME),
|
|
51
|
+
openai_api_base=settings.OPENAI_API_BASE_URL,
|
|
52
|
+
openai_api_key=settings.OPENAI_API_KEY,
|
|
53
|
+
)
|
|
48
54
|
model_runnable = wrap_model(m, background_prompt.format())
|
|
49
55
|
response = await model_runnable.ainvoke(state, config)
|
|
50
56
|
|
|
@@ -74,7 +80,12 @@ async def determine_birthdate(state: AgentState, config: RunnableConfig) -> Agen
|
|
|
74
80
|
|
|
75
81
|
If no birthdate is found, it will perform an interrupt before proceeding.
|
|
76
82
|
"""
|
|
77
|
-
m = ModelFactory.create(
|
|
83
|
+
m = ModelFactory.create(
|
|
84
|
+
model_provider=config["configurable"].get("model_provider", ModelProvider.OPENAI),
|
|
85
|
+
model_name=config["configurable"].get("model_name", settings.OPENAI_MODEL_NAME),
|
|
86
|
+
openai_api_base=settings.OPENAI_API_BASE_URL,
|
|
87
|
+
openai_api_key=settings.OPENAI_API_KEY,
|
|
88
|
+
)
|
|
78
89
|
model_runnable = wrap_model(
|
|
79
90
|
m.with_structured_output(BirthdateExtraction),
|
|
80
91
|
birthdate_extraction_prompt.format(),
|
|
@@ -117,7 +128,12 @@ async def determine_sign(state: AgentState, config: RunnableConfig) -> AgentStat
|
|
|
117
128
|
if not state.get("birthdate"):
|
|
118
129
|
raise ValueError("No birthdate found in state")
|
|
119
130
|
|
|
120
|
-
m = ModelFactory.create(
|
|
131
|
+
m = ModelFactory.create(
|
|
132
|
+
model_provider=config["configurable"].get("model_provider", ModelProvider.OPENAI),
|
|
133
|
+
model_name=config["configurable"].get("model_name", settings.OPENAI_MODEL_NAME),
|
|
134
|
+
openai_api_base=settings.OPENAI_API_BASE_URL,
|
|
135
|
+
openai_api_key=settings.OPENAI_API_KEY,
|
|
136
|
+
)
|
|
121
137
|
model_runnable = wrap_model(m, sign_prompt.format(birthdate=state["birthdate"].strftime("%Y-%m-%d")))
|
|
122
138
|
response = await model_runnable.ainvoke(state, config)
|
|
123
139
|
|
|
@@ -10,6 +10,7 @@ from langgraph_agent_toolkit.core.observability.factory import ObservabilityFact
|
|
|
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
|
|
12
12
|
from langgraph_agent_toolkit.core.settings import settings
|
|
13
|
+
from langgraph_agent_toolkit.schema.models import ModelProvider
|
|
13
14
|
|
|
14
15
|
|
|
15
16
|
PROMPT_NAME = "react-assistant"
|
|
@@ -50,7 +51,12 @@ react_agent = Agent(
|
|
|
50
51
|
name="react-agent",
|
|
51
52
|
description="A react agent.",
|
|
52
53
|
graph=create_react_agent(
|
|
53
|
-
model=ModelFactory.create(
|
|
54
|
+
model=ModelFactory.create(
|
|
55
|
+
model_provider=ModelProvider.OPENAI,
|
|
56
|
+
model_name=settings.OPENAI_MODEL_NAME,
|
|
57
|
+
openai_api_base=settings.OPENAI_API_BASE_URL,
|
|
58
|
+
openai_api_key=settings.OPENAI_API_KEY,
|
|
59
|
+
),
|
|
54
60
|
tools=[add, multiply, DuckDuckGoSearchResults()],
|
|
55
61
|
prompt=prompt,
|
|
56
62
|
pre_model_hook=pre_model_hook_standard,
|
|
@@ -8,6 +8,7 @@ from langgraph_agent_toolkit.agents.components.tools import add, multiply
|
|
|
8
8
|
from langgraph_agent_toolkit.agents.components.utils import AgentStateWithRemainingSteps, pre_model_hook_standard
|
|
9
9
|
from langgraph_agent_toolkit.core import settings
|
|
10
10
|
from langgraph_agent_toolkit.core.models.factory import ModelFactory
|
|
11
|
+
from langgraph_agent_toolkit.schema.models import ModelProvider
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
class ResponseSchema(BaseModel):
|
|
@@ -23,7 +24,12 @@ react_agent_so = Agent(
|
|
|
23
24
|
name="react-agent-so",
|
|
24
25
|
description="A react agent with structured output.",
|
|
25
26
|
graph=create_react_agent(
|
|
26
|
-
model=ModelFactory.create(
|
|
27
|
+
model=ModelFactory.create(
|
|
28
|
+
model_provider=ModelProvider.OPENAI,
|
|
29
|
+
model_name=settings.OPENAI_MODEL_NAME,
|
|
30
|
+
openai_api_base=settings.OPENAI_API_BASE_URL,
|
|
31
|
+
openai_api_key=settings.OPENAI_API_KEY,
|
|
32
|
+
),
|
|
27
33
|
tools=[add, multiply, DuckDuckGoSearchResults()],
|
|
28
34
|
prompt=(
|
|
29
35
|
"You are a team support agent that can perform calculations and search the web. "
|
|
@@ -7,9 +7,15 @@ 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
9
|
from langgraph_agent_toolkit.core.models.factory import ModelFactory
|
|
10
|
+
from langgraph_agent_toolkit.schema.models import ModelProvider
|
|
10
11
|
|
|
11
12
|
|
|
12
|
-
model = ModelFactory.create(
|
|
13
|
+
model = ModelFactory.create(
|
|
14
|
+
model_provider=ModelProvider.OPENAI,
|
|
15
|
+
model_name=settings.OPENAI_MODEL_NAME,
|
|
16
|
+
openai_api_base=settings.OPENAI_API_BASE_URL,
|
|
17
|
+
openai_api_key=settings.OPENAI_API_KEY,
|
|
18
|
+
)
|
|
13
19
|
|
|
14
20
|
math_agent = create_react_agent(
|
|
15
21
|
model=model,
|
|
@@ -87,7 +87,8 @@ class AgentClient:
|
|
|
87
87
|
async def ainvoke(
|
|
88
88
|
self,
|
|
89
89
|
message: str,
|
|
90
|
-
|
|
90
|
+
model_name: str | None = None,
|
|
91
|
+
model_provider: str | None = None,
|
|
91
92
|
thread_id: str | None = None,
|
|
92
93
|
user_id: str | None = None,
|
|
93
94
|
agent_config: dict[str, Any] | None = None,
|
|
@@ -96,7 +97,8 @@ class AgentClient:
|
|
|
96
97
|
|
|
97
98
|
Args:
|
|
98
99
|
message (str): The message to send to the agent
|
|
99
|
-
|
|
100
|
+
model_name (str, optional): LLM model to use for the agent
|
|
101
|
+
model_provider (str, optional): LLM model provider to use for the agent
|
|
100
102
|
thread_id (str, optional): Thread ID for continuing a conversation
|
|
101
103
|
user_id (str, optional): User ID for identifying the user
|
|
102
104
|
agent_config (dict[str, Any], optional): Additional configuration to pass through to the agent
|
|
@@ -111,8 +113,10 @@ class AgentClient:
|
|
|
111
113
|
request = UserInput(message=message)
|
|
112
114
|
if thread_id:
|
|
113
115
|
request.thread_id = thread_id
|
|
114
|
-
if
|
|
115
|
-
request.
|
|
116
|
+
if model_name:
|
|
117
|
+
request.model_name = model_name
|
|
118
|
+
if model_provider:
|
|
119
|
+
request.model_provider = model_provider
|
|
116
120
|
if agent_config:
|
|
117
121
|
request.agent_config = agent_config
|
|
118
122
|
if user_id:
|
|
@@ -135,7 +139,8 @@ class AgentClient:
|
|
|
135
139
|
def invoke(
|
|
136
140
|
self,
|
|
137
141
|
message: str,
|
|
138
|
-
|
|
142
|
+
model_name: str | None = None,
|
|
143
|
+
model_provider: str | None = None,
|
|
139
144
|
thread_id: str | None = None,
|
|
140
145
|
user_id: str | None = None,
|
|
141
146
|
agent_config: dict[str, Any] | None = None,
|
|
@@ -144,7 +149,8 @@ class AgentClient:
|
|
|
144
149
|
|
|
145
150
|
Args:
|
|
146
151
|
message (str): The message to send to the agent
|
|
147
|
-
|
|
152
|
+
model_name (str, optional): LLM model to use for the agent
|
|
153
|
+
model_provider (str, optional): LLM model provider to use for the agent
|
|
148
154
|
thread_id (str, optional): Thread ID for continuing a conversation
|
|
149
155
|
user_id (str, optional): User ID for identifying the user
|
|
150
156
|
agent_config (dict[str, Any], optional): Additional configuration to pass through to the agent
|
|
@@ -159,8 +165,10 @@ class AgentClient:
|
|
|
159
165
|
request = UserInput(message=message)
|
|
160
166
|
if thread_id:
|
|
161
167
|
request.thread_id = thread_id
|
|
162
|
-
if
|
|
163
|
-
request.
|
|
168
|
+
if model_name:
|
|
169
|
+
request.model_name = model_name
|
|
170
|
+
if model_provider:
|
|
171
|
+
request.model_provider = model_provider
|
|
164
172
|
if agent_config:
|
|
165
173
|
request.agent_config = agent_config
|
|
166
174
|
if user_id:
|
|
@@ -207,7 +215,8 @@ class AgentClient:
|
|
|
207
215
|
def stream(
|
|
208
216
|
self,
|
|
209
217
|
message: str,
|
|
210
|
-
|
|
218
|
+
model_name: str | None = None,
|
|
219
|
+
model_provider: str | None = None,
|
|
211
220
|
thread_id: str | None = None,
|
|
212
221
|
user_id: str | None = None,
|
|
213
222
|
agent_config: dict[str, Any] | None = None,
|
|
@@ -221,7 +230,8 @@ class AgentClient:
|
|
|
221
230
|
|
|
222
231
|
Args:
|
|
223
232
|
message (str): The message to send to the agent
|
|
224
|
-
|
|
233
|
+
model_name (str, optional): LLM model to use for the agent
|
|
234
|
+
model_provider (str, optional): LLM model provider to use for the agent
|
|
225
235
|
thread_id (str, optional): Thread ID for continuing a conversation
|
|
226
236
|
user_id (str, optional): User ID for identifying the user
|
|
227
237
|
agent_config (dict[str, Any], optional): Additional configuration to pass through to the agent
|
|
@@ -238,8 +248,10 @@ class AgentClient:
|
|
|
238
248
|
request = StreamInput(message=message, stream_tokens=stream_tokens)
|
|
239
249
|
if thread_id:
|
|
240
250
|
request.thread_id = thread_id
|
|
241
|
-
if
|
|
242
|
-
request.
|
|
251
|
+
if model_name:
|
|
252
|
+
request.model_name = model_name
|
|
253
|
+
if model_provider:
|
|
254
|
+
request.model_provider = model_provider
|
|
243
255
|
if agent_config:
|
|
244
256
|
request.agent_config = agent_config
|
|
245
257
|
if user_id:
|
|
@@ -266,7 +278,8 @@ class AgentClient:
|
|
|
266
278
|
async def astream(
|
|
267
279
|
self,
|
|
268
280
|
message: str,
|
|
269
|
-
|
|
281
|
+
model_name: str | None = None,
|
|
282
|
+
model_provider: str | None = None,
|
|
270
283
|
thread_id: str | None = None,
|
|
271
284
|
user_id: str | None = None,
|
|
272
285
|
agent_config: dict[str, Any] | None = None,
|
|
@@ -280,7 +293,8 @@ class AgentClient:
|
|
|
280
293
|
|
|
281
294
|
Args:
|
|
282
295
|
message (str): The message to send to the agent
|
|
283
|
-
|
|
296
|
+
model_name (str, optional): LLM model to use for the agent
|
|
297
|
+
model_provider (str, optional): LLM model provider to use for the agent
|
|
284
298
|
thread_id (str, optional): Thread ID for continuing a conversation
|
|
285
299
|
user_id (str, optional): User ID for identifying the user
|
|
286
300
|
agent_config (dict[str, Any], optional): Additional configuration to pass through to the agent
|
|
@@ -297,8 +311,10 @@ class AgentClient:
|
|
|
297
311
|
request = StreamInput(message=message, stream_tokens=stream_tokens)
|
|
298
312
|
if thread_id:
|
|
299
313
|
request.thread_id = thread_id
|
|
300
|
-
if
|
|
301
|
-
request.
|
|
314
|
+
if model_name:
|
|
315
|
+
request.model_name = model_name
|
|
316
|
+
if model_provider:
|
|
317
|
+
request.model_provider = model_provider
|
|
302
318
|
if agent_config:
|
|
303
319
|
request.agent_config = agent_config
|
|
304
320
|
if user_id:
|
|
@@ -324,13 +340,22 @@ class AgentClient:
|
|
|
324
340
|
raise AgentClientError(f"Error: {e}")
|
|
325
341
|
|
|
326
342
|
async def acreate_feedback(
|
|
327
|
-
self,
|
|
343
|
+
self,
|
|
344
|
+
run_id: str,
|
|
345
|
+
key: str,
|
|
346
|
+
score: float,
|
|
347
|
+
kwargs: dict[str, Any] = {},
|
|
348
|
+
user_id: str | None = None,
|
|
328
349
|
) -> None:
|
|
329
350
|
"""Create a feedback record for a run.
|
|
330
351
|
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
352
|
+
Args:
|
|
353
|
+
run_id (str): The ID of the run to provide feedback for
|
|
354
|
+
key (str): The key for the feedback
|
|
355
|
+
score (float): The score for the feedback
|
|
356
|
+
kwargs (dict[str, Any], optional): Additional metadata for the feedback
|
|
357
|
+
user_id (str, optional): User ID for identifying the user
|
|
358
|
+
|
|
334
359
|
"""
|
|
335
360
|
request = Feedback(run_id=run_id, key=key, score=score, user_id=user_id, kwargs=kwargs)
|
|
336
361
|
async with httpx.AsyncClient() as client:
|
|
@@ -36,7 +36,8 @@ class PostgresMemoryBackend(BaseMemoryBackend):
|
|
|
36
36
|
)
|
|
37
37
|
return True
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
@staticmethod
|
|
40
|
+
def get_connection_string() -> str:
|
|
40
41
|
"""Build and return the PostgreSQL connection string from settings."""
|
|
41
42
|
return (
|
|
42
43
|
f"postgresql://{settings.POSTGRES_USER}:"
|