chat / src /agent /react_agent.py
Killer-8's picture
Upload 6 files
2364c5e verified
Raw
History Blame Contribute Delete
1.58 kB
from langchain.agents import create_agent
from model.factory import chat_model
from utils.prompt_loader import load_system_prompts
from agent.tools.agent_tools import (rag_summarize, get_weather, get_user_location, get_user_id,
get_current_month, fetch_external_data, fill_context_for_report)
from agent.tools.middleware import monitor_tool, log_before_model, report_prompt_switch
class ReactAgent:
def __init__(self):
self.agent = create_agent(
model=chat_model,
system_prompt=load_system_prompts(),
tools=[rag_summarize, get_weather, get_user_location, get_user_id,
get_current_month, fetch_external_data, fill_context_for_report],
middleware=[monitor_tool, log_before_model, report_prompt_switch],
)
def execute_stream(self, query: str):
input_dict = {
"messages": [
{"role": "user", "content": query},
]
}
# 第三个参数context就是上下文runtime中的信息,就是我们做提示词切换的标记
for chunk in self.agent.stream(input_dict, stream_mode="values", context={"report": False}):
latest_message = chunk["messages"][-1]
if latest_message.content:
yield latest_message.content.strip() + "\n"
if __name__ == '__main__':
agent = ReactAgent()
for chunk in agent.execute_stream("扫地机器人迷路原因及解决方法"):
print(chunk, end="", flush=True)