langchain-dev-utils 1.4.1__tar.gz → 1.4.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 (71) hide show
  1. langchain_dev_utils-1.4.2/AGENTS.md +173 -0
  2. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/PKG-INFO +1 -1
  3. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/pyproject.toml +1 -1
  4. langchain_dev_utils-1.4.2/src/langchain_dev_utils/__init__.py +1 -0
  5. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/_utils.py +37 -0
  6. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/agents/middleware/handoffs.py +18 -9
  7. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/agents/middleware/model_router.py +9 -1
  8. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/agents/wrap.py +1 -1
  9. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/tests/test_embedding.py +4 -4
  10. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/tests/test_handoffs_middleware.py +1 -7
  11. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/tests/test_load_embbeding.py +0 -1
  12. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/tests/utils/register.py +0 -4
  13. langchain_dev_utils-1.4.1/src/langchain_dev_utils/__init__.py +0 -1
  14. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/.gitignore +0 -0
  15. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/.python-version +0 -0
  16. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/.vscode/settings.json +0 -0
  17. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/LICENSE +0 -0
  18. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/README.md +0 -0
  19. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/README_cn.md +0 -0
  20. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/agents/__init__.py +0 -0
  21. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/agents/factory.py +0 -0
  22. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/agents/middleware/__init__.py +0 -0
  23. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/agents/middleware/format_prompt.py +0 -0
  24. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/agents/middleware/model_fallback.py +0 -0
  25. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/agents/middleware/plan.py +0 -0
  26. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/agents/middleware/summarization.py +0 -0
  27. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/agents/middleware/tool_call_repair.py +0 -0
  28. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/agents/middleware/tool_emulator.py +0 -0
  29. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/agents/middleware/tool_selection.py +0 -0
  30. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/chat_models/__init__.py +0 -0
  31. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/chat_models/adapters/__init__.py +0 -0
  32. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/chat_models/adapters/create_utils.py +0 -0
  33. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/chat_models/adapters/openai_compatible.py +0 -0
  34. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/chat_models/adapters/register_profiles.py +0 -0
  35. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/chat_models/base.py +0 -0
  36. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/chat_models/types.py +0 -0
  37. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/embeddings/__init__.py +0 -0
  38. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/embeddings/adapters/__init__.py +0 -0
  39. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/embeddings/adapters/create_utils.py +0 -0
  40. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/embeddings/adapters/openai_compatible.py +0 -0
  41. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/embeddings/base.py +0 -0
  42. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/graph/__init__.py +0 -0
  43. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/graph/parallel.py +0 -0
  44. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/graph/sequential.py +0 -0
  45. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/graph/types.py +0 -0
  46. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/message_convert/__init__.py +0 -0
  47. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/message_convert/content.py +0 -0
  48. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/message_convert/format.py +0 -0
  49. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/pipeline/__init__.py +0 -0
  50. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/pipeline/parallel.py +0 -0
  51. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/pipeline/sequential.py +0 -0
  52. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/pipeline/types.py +0 -0
  53. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/py.typed +0 -0
  54. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/tool_calling/__init__.py +0 -0
  55. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/tool_calling/human_in_the_loop.py +0 -0
  56. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/src/langchain_dev_utils/tool_calling/utils.py +0 -0
  57. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/tests/__init__.py +0 -0
  58. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/tests/test_agent.py +0 -0
  59. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/tests/test_chat_models.py +0 -0
  60. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/tests/test_graph.py +0 -0
  61. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/tests/test_human_in_the_loop.py +0 -0
  62. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/tests/test_load_model.py +0 -0
  63. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/tests/test_messages.py +0 -0
  64. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/tests/test_model_tool_emulator.py +0 -0
  65. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/tests/test_plan_middleware.py +0 -0
  66. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/tests/test_router_model.py +0 -0
  67. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/tests/test_tool_call_repair.py +0 -0
  68. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/tests/test_tool_calling.py +0 -0
  69. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/tests/test_wrap_agent.py +0 -0
  70. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/tests/utils/__init__.py +0 -0
  71. {langchain_dev_utils-1.4.1 → langchain_dev_utils-1.4.2}/uv.lock +0 -0
@@ -0,0 +1,173 @@
1
+ # Agentic Coding Guidelines for langchain-dev-utils
2
+
3
+ This file provides guidelines for AI agents working in this repository.
4
+
5
+ ## Project Overview
6
+
7
+ A Python utility library for LangChain and LangGraph development. Uses hatchling build system, uv for package management, ruff for linting, and pytest for testing.
8
+
9
+ ---
10
+
11
+ ## Build/Lint/Test Commands
12
+
13
+ ### Package Management (uv)
14
+ ```bash
15
+ # Install dependencies
16
+ uv sync
17
+
18
+ # Install with optional dependencies
19
+ uv sync --extra standard
20
+
21
+ # Install dev dependencies
22
+ uv sync --group dev
23
+
24
+ # Install test dependencies
25
+ uv sync --group tests
26
+ ```
27
+
28
+ ### Linting & Formatting (ruff)
29
+ ```bash
30
+ # Check linting
31
+ uv run ruff check .
32
+
33
+ # Check specific file
34
+ uv run ruff check src/langchain_dev_utils/path/to/file.py
35
+
36
+ # Fix auto-fixable issues
37
+ uv run ruff check --fix .
38
+
39
+ # Format code
40
+ uv run ruff format .
41
+
42
+ # Format specific file
43
+ uv run ruff format src/langchain_dev_utils/path/to/file.py
44
+ ```
45
+
46
+ ### Testing (pytest)
47
+ ```bash
48
+ # Run all tests
49
+ uv run pytest
50
+
51
+ # Run with verbose output
52
+ uv run pytest -v
53
+
54
+ # Run specific test file
55
+ uv run pytest tests/test_agent.py
56
+
57
+ # Run specific test function
58
+ uv run pytest tests/test_agent.py::test_prebuilt_agent
59
+
60
+ # Run specific test class
61
+ uv run pytest tests/test_chat_models.py::TestImageProcessing
62
+
63
+ # Run with asyncio support (automatically configured)
64
+ uv run pytest -s
65
+
66
+ # Run tests matching pattern
67
+ uv run pytest -k "test_load"
68
+ ```
69
+
70
+ ### Build
71
+ ```bash
72
+ # Build package
73
+ uv build
74
+
75
+ # Build wheel only
76
+ uv build --wheel
77
+ ```
78
+
79
+ ---
80
+
81
+ ## Code Style Guidelines
82
+
83
+ ### Imports
84
+ - Use absolute imports for external packages
85
+ - Use relative imports within the package (e.g., `from ..chat_models import ...`)
86
+ - Group imports: stdlib → third-party → local
87
+ - Ruff handles import sorting automatically
88
+
89
+ ### Type Hints
90
+ - Use type hints for all function parameters and return types
91
+ - Use `Optional[Type]` or `Type | None` for nullable types (both acceptable)
92
+ - Use `Any` sparingly and only when necessary
93
+ - Use `Sequence`, `Mapping` for generic collections
94
+ - Use generics with TypeVars where appropriate
95
+
96
+ ### Naming Conventions
97
+ - `snake_case` for functions, methods, variables
98
+ - `PascalCase` for classes
99
+ - `UPPER_CASE` for constants
100
+ - `_leading_underscore` for private/internal functions
101
+ - Leading double underscore for name mangling when needed
102
+
103
+ ### Docstrings
104
+ - Use Google-style docstrings
105
+ - Include Args, Returns, Raises sections for public functions
106
+ - Include Examples section for complex functions
107
+ - Keep docstrings under 100 characters per line when possible
108
+
109
+ ### Code Structure
110
+ - Maximum line length: 88 characters (ruff enforces, E501 ignored)
111
+ - Use trailing commas in multi-line structures
112
+ - Two blank lines between top-level functions/classes
113
+ - One blank line between methods
114
+
115
+ ### Error Handling
116
+ - Use specific exception types, not bare `except:`
117
+ - Provide descriptive error messages with f-strings
118
+ - Use `raise ValueError(msg)` pattern with descriptive messages
119
+ - Avoid bare `raise` statements
120
+
121
+ ### Async Code
122
+ - Use `pytest.mark.asyncio` for async test functions
123
+ - Use `async`/`await` consistently
124
+ - Prefer `asyncio` primitives from standard library
125
+
126
+ ### Ruff Configuration
127
+ - Enabled rules: E, F, I, PGH003, T201
128
+ - Import sorting (I) is enforced
129
+ - No print statements in production code (T201)
130
+
131
+ ---
132
+
133
+ ## Testing Guidelines
134
+
135
+ - Tests live in `tests/` directory
136
+ - Test files named `test_*.py`
137
+ - Test functions named `test_*`
138
+ - Use pytest fixtures for setup/teardown
139
+ - Use `pytest.mark.asyncio` for async tests
140
+ - Mock external API calls in unit tests
141
+ - Integration tests use actual APIs (marked implicitly by test names)
142
+ - Tests use `langchain-tests` for standard integration test suites
143
+
144
+ ---
145
+
146
+ ## Project Structure
147
+
148
+ ```
149
+ langchain-dev-utils/
150
+ ├── src/langchain_dev_utils/ # Source code
151
+ │ ├── agents/ # Agent utilities
152
+ │ ├── chat_models/ # Chat model utilities
153
+ │ ├── embeddings/ # Embedding utilities
154
+ │ ├── graph/ # Graph utilities
155
+ │ ├── message_convert/ # Message conversion
156
+ │ ├── pipeline/ # Pipeline utilities (deprecated since v1.4.0, will be removed in v1.5.0)
157
+ │ └── tool_calling/ # Tool calling utilities
158
+ ├── tests/ # Test files
159
+ ├── docs/ # Documentation
160
+ ├── pyproject.toml # Project configuration
161
+ └── uv.lock # Dependency lock file
162
+ ```
163
+
164
+ ---
165
+
166
+ ## Dependencies
167
+
168
+ - Core: langchain, langchain-core, langgraph
169
+ - Optional: jinja2, json-repair, langchain-openai
170
+ - Dev: ruff, dashscope, langchain-model-profiles
171
+ - Test: python-dotenv, langchain-tests, langchain-deepseek, langchain-qwq, langchain-ollama, langchain-community
172
+
173
+ Python version: >=3.11
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langchain-dev-utils
3
- Version: 1.4.1
3
+ Version: 1.4.2
4
4
  Summary: A practical utility library for LangChain and LangGraph development
5
5
  Project-URL: Source Code, https://github.com/TBice123123/langchain-dev-utils
6
6
  Project-URL: repository, https://github.com/TBice123123/langchain-dev-utils
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "langchain-dev-utils"
3
- version = "1.4.1"
3
+ version = "1.4.2"
4
4
  description = "A practical utility library for LangChain and LangGraph development"
5
5
  readme = "README.md"
6
6
  authors = [{ name = "tiebingice", email = "tiebingice123@outlook.com" }]
@@ -0,0 +1 @@
1
+ __version__ = "1.4.2"
@@ -1,11 +1,48 @@
1
1
  from importlib import util
2
2
  from typing import Literal, Optional, cast
3
3
 
4
+ from langchain_core.tools import BaseTool
4
5
  from langgraph.graph import StateGraph
5
6
  from langgraph.graph.state import StateNode
6
7
  from pydantic import BaseModel
7
8
 
8
9
 
10
+ def _duplicate_tools(tools: list[BaseTool]) -> list[BaseTool]:
11
+ """Duplicate tools with the same name.
12
+
13
+ Args:
14
+ tools (list[BaseTool]): The list of tools.
15
+
16
+ Returns:
17
+ list[BaseTool]: The duplicated tools.
18
+ """
19
+ tool_name_set = set()
20
+ duplicated_tools = []
21
+ for tool_obj in tools:
22
+ if tool_obj.name not in tool_name_set:
23
+ duplicated_tools.append(tool_obj)
24
+ tool_name_set.add(tool_obj.name)
25
+ return duplicated_tools
26
+
27
+
28
+ def _merge_tools(tools: list[BaseTool]) -> list[BaseTool]:
29
+ """Merge tools with the same name.
30
+
31
+ Args:
32
+ tools (list[BaseTool]): The list of tools.
33
+
34
+ Returns:
35
+ list[BaseTool]: The merged tools.
36
+ """
37
+ tool_name_set = set()
38
+ merged_tools = []
39
+ for tool_obj in tools:
40
+ if tool_obj.name not in tool_name_set:
41
+ merged_tools.append(tool_obj)
42
+ tool_name_set.add(tool_obj.name)
43
+ return merged_tools
44
+
45
+
9
46
  def _transform_node_to_tuple(
10
47
  node: StateNode | tuple[str, StateNode],
11
48
  ) -> tuple[str, StateNode]:
@@ -1,4 +1,4 @@
1
- from typing import Any, Awaitable, Callable, Literal, cast
1
+ from typing import Awaitable, Callable, Literal, cast
2
2
 
3
3
  from langchain.agents import AgentState
4
4
  from langchain.agents.middleware import AgentMiddleware, ModelRequest, ModelResponse
@@ -9,6 +9,7 @@ from langchain_core.messages import SystemMessage, ToolMessage
9
9
  from langgraph.types import Command
10
10
  from typing_extensions import NotRequired, Optional, TypedDict
11
11
 
12
+ from langchain_dev_utils._utils import _duplicate_tools, _merge_tools
12
13
  from langchain_dev_utils.chat_models import load_chat_model
13
14
 
14
15
 
@@ -19,7 +20,7 @@ class MultiAgentState(AgentState):
19
20
  class AgentConfig(TypedDict):
20
21
  model: NotRequired[str | BaseChatModel]
21
22
  prompt: str | SystemMessage
22
- tools: NotRequired[list[BaseTool | dict[str, Any]]]
23
+ tools: NotRequired[list[BaseTool]]
23
24
  default: NotRequired[bool]
24
25
  handoffs: list[str] | Literal["all"]
25
26
 
@@ -176,7 +177,16 @@ class HandoffAgentMiddleware(AgentMiddleware):
176
177
  agents_config,
177
178
  handoffs_tools,
178
179
  )
179
- self.tools = handoffs_tools
180
+
181
+ all_tools = [
182
+ *handoffs_tools,
183
+ ]
184
+
185
+ for agent_name in agents_config:
186
+ tools = agents_config.get(agent_name, {}).get("tools", [])
187
+ all_tools.extend(tools)
188
+
189
+ self.tools = _merge_tools(all_tools)
180
190
 
181
191
  def _get_override_request(self, request: ModelRequest) -> ModelRequest:
182
192
  active_agent_name = request.state.get("active_agent", self.default_agent_name)
@@ -184,15 +194,14 @@ class HandoffAgentMiddleware(AgentMiddleware):
184
194
  _config = self.agents_config[active_agent_name]
185
195
 
186
196
  params = {}
187
- if _config.get("model"):
188
- model = _config.get("model")
197
+ if model := _config.get("model"):
189
198
  if isinstance(model, str):
190
199
  model = load_chat_model(model)
191
200
  params["model"] = model
192
- if _config.get("prompt"):
193
- params["system_prompt"] = _config.get("prompt")
194
- if _config.get("tools"):
195
- params["tools"] = _config.get("tools")
201
+ if prompt := _config.get("prompt"):
202
+ params["system_prompt"] = prompt
203
+ if tools := _config.get("tools"):
204
+ params["tools"] = _duplicate_tools(tools)
196
205
 
197
206
  if params:
198
207
  return request.override(**params)
@@ -10,6 +10,7 @@ from langgraph.runtime import Runtime
10
10
  from pydantic import BaseModel, Field
11
11
  from typing_extensions import TypedDict
12
12
 
13
+ from langchain_dev_utils._utils import _duplicate_tools, _merge_tools
13
14
  from langchain_dev_utils.chat_models import load_chat_model
14
15
  from langchain_dev_utils.message_convert import format_sequence
15
16
 
@@ -120,6 +121,13 @@ class ModelRouterMiddleware(AgentMiddleware):
120
121
 
121
122
  self.router_prompt = router_prompt
122
123
 
124
+ all_tools = []
125
+ for model in model_list:
126
+ if tools := model.get("tools"):
127
+ all_tools.extend(tools)
128
+
129
+ self.tools = _merge_tools(all_tools)
130
+
123
131
  def _select_model(self, messages: list[AnyMessage]):
124
132
  response = cast(
125
133
  SelectModel,
@@ -174,7 +182,7 @@ class ModelRouterMiddleware(AgentMiddleware):
174
182
  model = load_chat_model(select_model_name)
175
183
  override_kwargs["model"] = model
176
184
  if model_values["tools"] is not None:
177
- override_kwargs["tools"] = model_values["tools"]
185
+ override_kwargs["tools"] = _duplicate_tools(model_values["tools"])
178
186
  if model_values["system_prompt"] is not None:
179
187
  override_kwargs["system_message"] = SystemMessage(
180
188
  content=model_values["system_prompt"]
@@ -17,7 +17,7 @@ def _process_input(request: str, runtime: ToolRuntime) -> str:
17
17
  def _process_output(
18
18
  request: str, response: dict[str, Any], runtime: ToolRuntime
19
19
  ) -> Any:
20
- return response["messages"][-1].content
20
+ return response["messages"][-1].text
21
21
 
22
22
 
23
23
  def get_subagent_name(runtime: ToolRuntime) -> str:
@@ -5,8 +5,8 @@ from langchain_tests.integration_tests.embeddings import EmbeddingsIntegrationTe
5
5
 
6
6
  from langchain_dev_utils.embeddings.adapters import create_openai_compatible_embedding
7
7
 
8
- SiliconFlowEmbeddings = create_openai_compatible_embedding(
9
- "siliconflow", embedding_model_cls_name="SiliconFlowEmbeddings"
8
+ ZAIEmbeddings = create_openai_compatible_embedding(
9
+ "zai", embedding_model_cls_name="ZAIEmbeddings"
10
10
  )
11
11
 
12
12
 
@@ -14,9 +14,9 @@ class TestStandard(EmbeddingsIntegrationTests):
14
14
  @property
15
15
  def embeddings_class(self) -> type[Embeddings]:
16
16
  """Embeddings class."""
17
- return cast("type[Embeddings]", SiliconFlowEmbeddings)
17
+ return cast("type[Embeddings]", ZAIEmbeddings)
18
18
 
19
19
  @property
20
20
  def embedding_model_params(self) -> dict[str, Any]:
21
21
  """Embeddings model parameters."""
22
- return {"model": "BAAI/bge-m3"}
22
+ return {"model": "embedding-3"}
@@ -6,9 +6,7 @@ from langgraph.checkpoint.memory import InMemorySaver
6
6
  from langgraph.types import Command
7
7
 
8
8
  from langchain_dev_utils.agents import create_agent
9
- from langchain_dev_utils.agents.middleware import (
10
- HandoffAgentMiddleware,
11
- )
9
+ from langchain_dev_utils.agents.middleware import HandoffAgentMiddleware
12
10
  from langchain_dev_utils.agents.middleware.handoffs import AgentConfig
13
11
  from langchain_dev_utils.chat_models import load_chat_model
14
12
 
@@ -91,10 +89,6 @@ def test_handoffs_middleware():
91
89
  handoffs_tool_overrides=handoffs_tool_map,
92
90
  )
93
91
  ],
94
- tools=[
95
- get_current_time,
96
- run_code,
97
- ],
98
92
  checkpointer=InMemorySaver(),
99
93
  )
100
94
 
@@ -7,7 +7,6 @@ from langchain_dev_utils.embeddings import load_embeddings
7
7
  @pytest.fixture(
8
8
  params=[
9
9
  "dashscope:text-embedding-v4",
10
- "siliconflow:BAAI/bge-m3",
11
10
  "ollama:bge-m3:latest",
12
11
  ]
13
12
  )
@@ -27,10 +27,6 @@ def register_all_model_providers():
27
27
  def register_all_embeddings_providers():
28
28
  batch_register_embeddings_provider(
29
29
  [
30
- {
31
- "provider_name": "siliconflow",
32
- "embeddings_model": "openai-compatible",
33
- },
34
30
  {"provider_name": "dashscope", "embeddings_model": DashScopeEmbeddings},
35
31
  ]
36
32
  )
@@ -1 +0,0 @@
1
- __version__ = "1.4.1"