This commit is contained in:
2025-03-12 16:13:31 +08:00
parent c482bbaeb4
commit b7d59835ce
6 changed files with 209 additions and 52 deletions
+57
View File
@@ -0,0 +1,57 @@
import operator
from typing import TypedDict, List, Annotated
from langgraph.graph import END, StateGraph
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from src.multi_agent.config import LLM
from src.multi_agent.util.weather_search import search_weather
llm = LLM
class WeatherState(TypedDict):
user_request: str
city: str
result: str
def requirement_analysis(state: WeatherState):
user_request = state.get('user_request')
analysis_prompt = ChatPromptTemplate([
('system', '你是一个天气查询agent,你负责从用户的需求中提取出需要查询天气的城市或地区,你只需要输出这个地名,不需要输出其他任何内容'),
('user', f'当前的用户需求是:'),
MessagesPlaceholder(variable_name="user_request"),
])
analysis_chain = analysis_prompt | llm
llm_resp = analysis_chain.invoke({'user_request': [("user", user_request)]})
return {'city': llm_resp.content}
def get_weather_data(state: WeatherState):
city = state.get('city')
weather_data = search_weather(city)
return {'result': weather_data}
def enter_chain(input_data: dict):
return {'user_request': input_data['next_plan']}
workflow = StateGraph(WeatherState)
# 其实完全没必要使用子agent,但演示一下子agent如何并网
workflow.add_node('需求分析', requirement_analysis)
workflow.add_node('获取天气', get_weather_data)
workflow.set_entry_point('需求分析')
workflow.add_edge('需求分析', '获取天气')
workflow.add_edge('获取天气', END)
weather_graph = workflow.compile()
weather_chain = enter_chain | weather_graph
if __name__ == '__main__':
requirement_analysis({})