11from pathlib import Path
22
3- from langchain .messages import AnyMessage , SystemMessage
4- from langgraph .prebuilt import create_react_agent
5- from langgraph .runtime import get_runtime
3+ from langchain .agents import create_agent
4+ from langchain .agents .middleware import ModelRequest , ModelResponse , dynamic_prompt , wrap_model_call
65
76from src import config as sys_config
87from src .agents .common .base import BaseAgent
9- from src .agents .common .context import BaseContext
108from src .agents .common .models import load_chat_model
119from src .agents .common .tools import get_buildin_tools
1210from src .utils import logger
1311
1412model = load_chat_model ("siliconflow/Qwen/Qwen3-235B-A22B-Instruct-2507" )
1513
1614
17- def prompt (state ) -> list [AnyMessage ]:
18- runtime = get_runtime (BaseContext )
19- system_msg = SystemMessage (content = runtime .context .system_prompt )
20- return [system_msg ] + state ["messages" ]
15+ @dynamic_prompt
16+ def context_aware_prompt (request : ModelRequest ) -> str :
17+ runtime = request .runtime
18+ return runtime .context .system_prompt
19+
20+
21+ @wrap_model_call
22+ async def context_based_model (request : ModelRequest , handler ) -> ModelResponse :
23+ # 从 runtime context 读取配置
24+ model_spec = request .runtime .context .model
25+ model = load_chat_model (model_spec )
26+
27+ request = request .override (model = model )
28+ return await handler (request )
2129
2230
2331class ReActAgent (BaseAgent ):
24- name = "ReAct (all tools) "
32+ name = "智能体 Demo "
2533 description = "A react agent that can answer questions and help with tasks."
2634
2735 def __init__ (self , ** kwargs ):
@@ -30,15 +38,21 @@ def __init__(self, **kwargs):
3038 self .workdir = Path (sys_config .save_dir ) / "agents" / self .module_name
3139 self .workdir .mkdir (parents = True , exist_ok = True )
3240
41+ def get_tools (self ):
42+ return get_buildin_tools ()
43+
3344 async def get_graph (self , ** kwargs ):
3445 if self .graph :
3546 return self .graph
3647
37- available_tools = get_buildin_tools ()
38- self .checkpointer = await self ._get_checkpointer ()
39-
4048 # 创建 ReActAgent
41- graph = create_react_agent (model , tools = available_tools , prompt = prompt , checkpointer = self .checkpointer )
49+ graph = create_agent (
50+ model = model ,
51+ tools = self .get_tools (),
52+ middleware = [context_aware_prompt , context_based_model ],
53+ checkpointer = await self ._get_checkpointer (),
54+ )
55+
4256 self .graph = graph
4357 logger .info ("ReActAgent 使用内存 checkpointer 构建成功" )
4458 return graph
0 commit comments