fix(agents): 修复模型配置在子智能体中不生效的问题
1. 移除 AnthropicPromptCachingMiddleware 并简化 SummarizationMiddleware 配置 2. 在 context_based_model 中添加调试日志 更新 research-agent 的描述以明确其功能
This commit is contained in:
parent
a9d2f41e43
commit
3b03a91e39
@ -4,6 +4,7 @@ from collections.abc import Callable
|
|||||||
|
|
||||||
from langchain.agents.middleware import ModelRequest, ModelResponse, dynamic_prompt, wrap_model_call
|
from langchain.agents.middleware import ModelRequest, ModelResponse, dynamic_prompt, wrap_model_call
|
||||||
|
|
||||||
|
from src.utils import logger
|
||||||
from src.agents.common import load_chat_model
|
from src.agents.common import load_chat_model
|
||||||
|
|
||||||
|
|
||||||
@ -20,4 +21,5 @@ async def context_based_model(request: ModelRequest, handler: Callable[[ModelReq
|
|||||||
model = load_chat_model(model_spec)
|
model = load_chat_model(model_spec)
|
||||||
|
|
||||||
request = request.override(model=model)
|
request = request.override(model=model)
|
||||||
|
logger.debug(f"Using model {model_spec} for request {request.messages[-1].content[:200]}")
|
||||||
return await handler(request)
|
return await handler(request)
|
||||||
|
|||||||
@ -5,7 +5,6 @@ from deepagents.middleware.patch_tool_calls import PatchToolCallsMiddleware
|
|||||||
from deepagents.middleware.subagents import SubAgentMiddleware
|
from deepagents.middleware.subagents import SubAgentMiddleware
|
||||||
from langchain.agents import create_agent
|
from langchain.agents import create_agent
|
||||||
from langchain.agents.middleware import ModelRequest, SummarizationMiddleware, TodoListMiddleware, dynamic_prompt
|
from langchain.agents.middleware import ModelRequest, SummarizationMiddleware, TodoListMiddleware, dynamic_prompt
|
||||||
from langchain_anthropic.middleware import AnthropicPromptCachingMiddleware
|
|
||||||
|
|
||||||
from src.agents.common import BaseAgent, load_chat_model
|
from src.agents.common import BaseAgent, load_chat_model
|
||||||
from src.agents.common.middlewares import context_based_model, inject_attachment_context
|
from src.agents.common.middlewares import context_based_model, inject_attachment_context
|
||||||
@ -18,7 +17,7 @@ search_tools = [search]
|
|||||||
|
|
||||||
research_sub_agent = {
|
research_sub_agent = {
|
||||||
"name": "research-agent",
|
"name": "research-agent",
|
||||||
"description": ("利用搜索工具,用于研究更深入的问题。"),
|
"description": ("利用搜索工具,用于研究更深入的问题。将调研结果写入到主题研究文件中。"),
|
||||||
"system_prompt": (
|
"system_prompt": (
|
||||||
"你是一位专注的研究员。你的工作是根据用户的问题进行研究。"
|
"你是一位专注的研究员。你的工作是根据用户的问题进行研究。"
|
||||||
"进行彻底的研究,然后用详细的答案回复用户的问题,只有你的最终答案会被传递给用户。"
|
"进行彻底的研究,然后用详细的答案回复用户的问题,只有你的最终答案会被传递给用户。"
|
||||||
@ -85,18 +84,6 @@ class DeepAgent(BaseAgent):
|
|||||||
model = load_chat_model(context.model)
|
model = load_chat_model(context.model)
|
||||||
tools = await self.get_tools()
|
tools = await self.get_tools()
|
||||||
|
|
||||||
if (
|
|
||||||
model.profile is not None
|
|
||||||
and isinstance(model.profile, dict)
|
|
||||||
and "max_input_tokens" in model.profile
|
|
||||||
and isinstance(model.profile["max_input_tokens"], int)
|
|
||||||
): # 此处参考 model.dev 中的 max_input_tokens
|
|
||||||
trigger = ("fraction", 0.85)
|
|
||||||
keep = ("fraction", 0.10)
|
|
||||||
else:
|
|
||||||
trigger = ("tokens", 110000)
|
|
||||||
keep = ("messages", 10)
|
|
||||||
|
|
||||||
# 使用 create_deep_agent 创建深度智能体
|
# 使用 create_deep_agent 创建深度智能体
|
||||||
graph = create_agent(
|
graph = create_agent(
|
||||||
model=model,
|
model=model,
|
||||||
@ -112,26 +99,25 @@ class DeepAgent(BaseAgent):
|
|||||||
default_tools=tools,
|
default_tools=tools,
|
||||||
subagents=[critique_sub_agent, research_sub_agent],
|
subagents=[critique_sub_agent, research_sub_agent],
|
||||||
default_middleware=[
|
default_middleware=[
|
||||||
|
context_based_model, # 动态模型选择
|
||||||
TodoListMiddleware(),
|
TodoListMiddleware(),
|
||||||
FilesystemMiddleware(),
|
FilesystemMiddleware(),
|
||||||
SummarizationMiddleware(
|
SummarizationMiddleware(
|
||||||
model=model,
|
model=model,
|
||||||
trigger=trigger,
|
trigger=("tokens", 110000),
|
||||||
keep=keep,
|
keep=("messages", 10),
|
||||||
trim_tokens_to_summarize=None,
|
trim_tokens_to_summarize=None,
|
||||||
),
|
),
|
||||||
AnthropicPromptCachingMiddleware(unsupported_model_behavior="ignore"),
|
|
||||||
PatchToolCallsMiddleware(),
|
PatchToolCallsMiddleware(),
|
||||||
],
|
],
|
||||||
general_purpose_agent=True,
|
general_purpose_agent=True,
|
||||||
),
|
),
|
||||||
SummarizationMiddleware(
|
SummarizationMiddleware(
|
||||||
model=model,
|
model=model,
|
||||||
trigger=trigger,
|
trigger=("tokens", 110000),
|
||||||
keep=keep,
|
keep=("messages", 10),
|
||||||
trim_tokens_to_summarize=None,
|
trim_tokens_to_summarize=None,
|
||||||
),
|
),
|
||||||
AnthropicPromptCachingMiddleware(unsupported_model_behavior="ignore"),
|
|
||||||
PatchToolCallsMiddleware(),
|
PatchToolCallsMiddleware(),
|
||||||
],
|
],
|
||||||
checkpointer=await self._get_checkpointer(),
|
checkpointer=await self._get_checkpointer(),
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user