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.
Files changed (165) hide show
  1. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/CHANGELOG.md +16 -0
  2. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/PKG-INFO +15 -15
  3. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/conf.py +1 -1
  4. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/agent_executor.py +128 -114
  5. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/bg_task_agent/agent.py +3 -3
  6. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/chatbot/agent.py +3 -3
  7. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/interrupt_agent/agent.py +4 -4
  8. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/knowledge_base_agent/agent.py +3 -3
  9. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/react/agent.py +2 -2
  10. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/react_new/agent.py +2 -2
  11. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/react_so/agent.py +2 -2
  12. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/supervisor_agent/agent.py +2 -2
  13. langgraph_agent_toolkit-0.8.2/langgraph_agent_toolkit/core/__init__.py +5 -0
  14. langgraph_agent_toolkit-0.8.2/langgraph_agent_toolkit/core/models/__init__.py +11 -0
  15. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/models/factory.py +106 -6
  16. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/observability/base.py +26 -3
  17. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/observability/langfuse.py +73 -14
  18. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/pyproject.toml +19 -18
  19. langgraph_agent_toolkit-0.8.2/tests/agents/test_agent_executor.py +211 -0
  20. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/core/test_llm.py +5 -5
  21. langgraph_agent_toolkit-0.8.2/tests/core/test_observability.py +304 -0
  22. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/uv.lock +753 -756
  23. langgraph_agent_toolkit-0.8.0/langgraph_agent_toolkit/core/__init__.py +0 -5
  24. langgraph_agent_toolkit-0.8.0/langgraph_agent_toolkit/core/models/__init__.py +0 -5
  25. langgraph_agent_toolkit-0.8.0/tests/agents/test_agent_executor.py +0 -435
  26. langgraph_agent_toolkit-0.8.0/tests/core/test_observability.py +0 -877
  27. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.coveragerc +0 -0
  28. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.dockerignore +0 -0
  29. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.env.example +0 -0
  30. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  31. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  32. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  33. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.github/RELEASE_TEMPLATE/release-template.md +0 -0
  34. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.github/codecov.yml +0 -0
  35. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.github/dependabot.yml +0 -0
  36. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.github/scripts/tag_from_pyproject.sh +0 -0
  37. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.github/workflows/deploy.yml +0 -0
  38. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.github/workflows/release.yml +0 -0
  39. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.github/workflows/sphinx.yml +0 -0
  40. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.github/workflows/test.yml +0 -0
  41. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.gitignore +0 -0
  42. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.pre-commit-config.yaml +0 -0
  43. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/.project-root +0 -0
  44. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/CONTRIBUTING.md +0 -0
  45. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/LICENSE +0 -0
  46. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/Makefile +0 -0
  47. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/README.md +0 -0
  48. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/configs/clickhouse/.clickhouse.env.example +0 -0
  49. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/configs/langfuse/.langfuse.env.example +0 -0
  50. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/configs/litellm/.litellm.env.example +0 -0
  51. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/configs/litellm/config.example.yaml +0 -0
  52. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/configs/minio/.minio.env.example +0 -0
  53. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/configs/postgres/.postgres.env.example +0 -0
  54. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/configs/redis/.redis.env.example +0 -0
  55. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docker/app/Dockerfile +0 -0
  56. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docker/service/Dockerfile +0 -0
  57. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docker-compose.yaml +0 -0
  58. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/.gitignore +0 -0
  59. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/Makefile +0 -0
  60. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/_static/custom.css +0 -0
  61. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/_templates/class.rst +0 -0
  62. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/_templates/layout.html +0 -0
  63. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/_templates/module.rst +0 -0
  64. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/contributing.rst +0 -0
  65. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/environment_setup.rst +0 -0
  66. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/index.rst +0 -0
  67. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/installation.rst +0 -0
  68. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/make.bat +0 -0
  69. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/media/agent_architecture.excalidraw +0 -0
  70. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/media/agent_architecture.png +0 -0
  71. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/media/agent_diagram.png +0 -0
  72. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/media/logo.svg +0 -0
  73. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/docs/usage.rst +0 -0
  74. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph.json +0 -0
  75. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/__init__.py +0 -0
  76. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/__init__.py +0 -0
  77. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/agent.py +0 -0
  78. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/__init__.py +0 -0
  79. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/bg_task_agent/__init__.py +0 -0
  80. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/bg_task_agent/task.py +0 -0
  81. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/bg_task_agent/utils.py +0 -0
  82. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/chatbot/__init__.py +0 -0
  83. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/command_agent/__init__.py +0 -0
  84. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/command_agent/agent.py +0 -0
  85. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/interrupt_agent/__init__.py +0 -0
  86. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/knowledge_base_agent/__init__.py +0 -0
  87. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/react/__init__.py +0 -0
  88. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/react_new/__init__.py +0 -0
  89. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/react_so/__init__.py +0 -0
  90. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/blueprints/supervisor_agent/__init__.py +0 -0
  91. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/components/__init__.py +0 -0
  92. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/components/checkpoint/__init__.py +0 -0
  93. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/components/checkpoint/empty.py +0 -0
  94. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/components/creators/__init__.py +0 -0
  95. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/components/creators/create_react_agent.py +0 -0
  96. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/components/tools.py +0 -0
  97. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/agents/components/utils.py +0 -0
  98. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/client/__init__.py +0 -0
  99. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/client/client.py +0 -0
  100. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/memory/__init__.py +0 -0
  101. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/memory/base.py +0 -0
  102. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/memory/factory.py +0 -0
  103. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/memory/postgres.py +0 -0
  104. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/memory/sqlite.py +0 -0
  105. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/memory/types.py +0 -0
  106. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/models/chat_openai.py +0 -0
  107. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/models/fake.py +0 -0
  108. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/observability/__init__.py +0 -0
  109. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/observability/empty.py +0 -0
  110. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/observability/factory.py +0 -0
  111. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/observability/langsmith.py +0 -0
  112. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/observability/types.py +0 -0
  113. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/prompts/__init__.py +0 -0
  114. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/prompts/chat_prompt_template.py +0 -0
  115. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/prompts/prompt_manager.py +0 -0
  116. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/core/settings.py +0 -0
  117. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/helper/__init__.py +0 -0
  118. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/helper/constants.py +0 -0
  119. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/helper/exceptions.py +0 -0
  120. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/helper/logging.py +0 -0
  121. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/helper/types.py +0 -0
  122. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/helper/utils.py +0 -0
  123. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/run_agent.py +0 -0
  124. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/run_client.py +0 -0
  125. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/run_service.py +0 -0
  126. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/schema/__init__.py +0 -0
  127. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/schema/models.py +0 -0
  128. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/schema/schema.py +0 -0
  129. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/schema/task_data.py +0 -0
  130. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/service/__init__.py +0 -0
  131. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/service/exception_handlers.py +0 -0
  132. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/service/factory.py +0 -0
  133. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/service/handler.py +0 -0
  134. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/service/middleware.py +0 -0
  135. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/service/routes.py +0 -0
  136. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/service/types.py +0 -0
  137. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/service/utils.py +0 -0
  138. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/langgraph_agent_toolkit/streamlit_app.py +0 -0
  139. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/scripts/postgres-init/create_databases.sql +0 -0
  140. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/scripts/postgres-init/create_schema.sql +0 -0
  141. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/scripts/python/01-invoke-proxy.py +0 -0
  142. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/scripts/python/02-test-local-pm.py +0 -0
  143. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/scripts/python/03-test-langfuse-pm.py +0 -0
  144. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/scripts/python/04-test-langsmith-pm.py +0 -0
  145. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/scripts/python/05-test-prompt-types.py +0 -0
  146. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/scripts/python/06-test-custom-chat-prompt-template.py +0 -0
  147. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/scripts/python/07-test-get-chat-history.py +0 -0
  148. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/scripts/python/08-test-update-chat-history.py +0 -0
  149. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/scripts/python/09-test-clear-chat-history.py +0 -0
  150. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/scripts/python/098-cls-example.py +0 -0
  151. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/scripts/python/099-t.py +0 -0
  152. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/agents/test_service_streaming.py +0 -0
  153. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/client/conftest.py +0 -0
  154. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/client/test_client.py +0 -0
  155. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/conftest.py +0 -0
  156. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/core/test_memory.py +0 -0
  157. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/core/test_prompts.py +0 -0
  158. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/core/test_settings.py +0 -0
  159. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/helper/test_helper_utils.py +0 -0
  160. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/integration/test_docker_e2e.py +0 -0
  161. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/service/conftest.py +0 -0
  162. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/service/test_auth.py +0 -0
  163. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/service/test_factory.py +0 -0
  164. {langgraph_agent_toolkit-0.8.0 → langgraph_agent_toolkit-0.8.2}/tests/service/test_service.py +0 -0
  165. {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.0
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.120.0,>=0.116.1
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.12,>=0.10
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.3,>=1.0.0
35
- Requires-Dist: langchain<1.0.4,>=1.0.0
36
- Requires-Dist: langgraph-checkpoint-postgres<3.0.1,>=3.0.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.3,>=1.0.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: numpy~=1.26.4; python_version == '3.11'
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.12.0,>=2.9.1
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~=1.1.0
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.51,>=1.45
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.8.2,>=2.60.3; extra == 'all-observability'
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.8.2,>=2.60.3; extra == 'langfuse'
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~=0.35.0; extra == 'uvicorn-backend'
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://python.langchain.com/docs/integrations", None), # Fixed URL
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
- # Invoke the agent
320
- response_events: list[tuple[str, Any]] = await agent.graph.ainvoke(
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
- config=config,
323
- # stream_mode=["updates", "values"],
324
- stream_mode=["values"],
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
- response_type, response = response_events[-1]
328
-
329
- if response_type == "values" and "__interrupt__" not in response:
330
- generated_message = response.get("structured_response")
331
- if not generated_message:
332
- generated_message = response["messages"][-1]
333
-
334
- # Normal response, the agent completed successfully
335
- output = langchain_to_chat_message(generated_message)
336
- elif response_type == "values" and "__interrupt__" in response:
337
- # The last thing to occur was an interrupt
338
- # Return the value of the first interrupt as an AIMessage
339
- output = langchain_to_chat_message(AIMessage(content=response["__interrupt__"][0].value))
340
- elif response_type == "updates" and "__interrupt__" in response:
341
- # The last thing to occur was an interrupt
342
- # Return the value of the first interrupt as an AIMessage
343
- output = langchain_to_chat_message(AIMessage(content=response["__interrupt__"][0].value))
344
- else:
345
- raise ValueError(f"Unexpected response type: {response_type}")
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
- output.run_id = str(run_id)
348
- return output
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
- # Stream from the agent with appropriate modes
395
- stream_mode = ["updates", "messages", "custom"] if stream_tokens else ["updates"]
396
-
397
- async for stream_event in agent.graph.astream(input=input_data, config=config, stream_mode=stream_mode):
398
- if not isinstance(stream_event, tuple):
399
- continue
400
-
401
- stream_mode, event = stream_event
402
- new_messages = []
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
- update_messages = (updates or {}).get("messages", [])
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
- # Skip non-LLM nodes that might send messages
444
- if not isinstance(msg, AIMessageChunk):
445
- continue
446
- content = remove_tool_calls(msg.content)
447
- if content:
448
- # Empty content in OpenAI context usually means the model is asking for a tool to be invoked
449
- yield convert_message_content_to_string(content)
450
-
451
- # LangGraph streaming may emit tuples: (field_name, field_value)
452
- # e.g. ('content', <str>), ('tool_calls', [ToolCall,...]), ('additional_kwargs', {...}), etc.
453
- # We accumulate only supported fields into `parts` and skip unsupported metadata.
454
- # More info at: https://langchain-ai.github.io/langgraph/cloud/how-tos/stream_messages/
455
- processed_messages = []
456
- current_message: dict[str, Any] = {}
457
- for msg in new_messages:
458
- if isinstance(msg, tuple):
459
- key, value = msg
460
- # Store parts in temporary dict
461
- current_message[key] = value
462
- else:
463
- # Add complete message if we have one in progress
464
- if current_message:
465
- processed_messages.append(create_ai_message(current_message))
466
- current_message = {}
467
- processed_messages.append(msg)
468
-
469
- # Add any remaining message parts
470
- if current_message:
471
- processed_messages.append(create_ai_message(current_message))
472
-
473
- for msg in processed_messages:
474
- try:
475
- chat_message = langchain_to_chat_message(msg)
476
- chat_message.run_id = str(run_id)
477
- # Skip the input message if it's repeated by LangGraph
478
- if chat_message.type == "human" and chat_message.content == msg:
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 ModelFactory
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 = ModelFactory.get_model_from_config(model_config)
39
+ m = CompletionModelFactory.get_model_from_config(model_config)
40
40
  else:
41
41
  # Fall back to traditional approach
42
- m = ModelFactory.create(
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 ModelFactory
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 = ModelFactory.get_model_from_config(model_config)
30
+ model = CompletionModelFactory.get_model_from_config(model_config)
31
31
  else:
32
32
  # Fall back to the traditional approach
33
- model = ModelFactory.create(
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 ModelFactory
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 = ModelFactory.create(
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 = ModelFactory.create(
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 = ModelFactory.create(
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 ModelFactory
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 = ModelFactory.get_model_from_config(model_config)
161
+ model = CompletionModelFactory.get_model_from_config(model_config)
162
162
  else:
163
163
  # Fall back to the traditional approach
164
- model = ModelFactory.create(
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 ModelFactory
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=ModelFactory.create(
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 ModelFactory
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 = ModelFactory.create(
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 ModelFactory
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 = ModelFactory.create(
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 ModelFactory
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 = ModelFactory.create(
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,5 @@
1
+ from langgraph_agent_toolkit.core.models.factory import CompletionModelFactory
2
+ from langgraph_agent_toolkit.core.settings import settings
3
+
4
+
5
+ __all__ = ["settings", "CompletionModelFactory"]
@@ -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
+ ]