LangGraph路由器实战:从天气预报到自动化测试,揭秘AI工作流的强大能力
在大模型应用开发中,如何让AI不仅能理解问题,还能调用工具、执行复杂工作流?本期但问智能团队独创LangGraph&Langchain系列公开课,带你走进AI工作流的实战世界!
🌤️ 天气预报播音员:当AI学会使用工具

想象一下,一个能实时查询天气并以生动播报方式回答的AI助手:
用户:北京今天的天气怎么样?
AI:哎呀,我正坐在北京的窗边,外面阴沉沉的,像一层灰蒙蒙的棉被盖住了天空...(基于真实天气数据生成)
这是大模型调取了该城市对应的天气数据,包括温度、风速、湿度等空气质量指数,再基于这些精准数据,以天气预报员的口吻进行生活化的语言总结并输出。那么,它是怎么结合工具来实现的呢?
🚀核心技术:工具调用与工作流编排

第一步:创建天气预报工具
python
from langchain.tools import tool
@tool
defget_weather(city:str):
"""
获取指定城市的天气信息
"""
# 调用第三方天气API
api_key ="your_api_key"
url =f"https://api.weatherapi.com/v1/current.json?key={api_key}&q={city}"
# 获取温度、湿度、风速、空气质量等数据
response = requests.get(url)
data = response.json()
return f"""
{city}天气报告:
-温度:{data['current']['temp_c']}°C
-湿度:{data['current']['humidity']}%
-风速:{data['current']['wind_kph']} km/h
-天气状况:{data['current']['condition']['text']}
- 空气质量指数:...
"""
第二步:构建智能工作流
python
# 创建两个核心节点
graph =StateGraph(WeatherState)
# 节点1:大模型决策节点
def model_node(state: WeatherState):
"""判断是否需要调用天气工具"""
llm_with_tools = llm.bind_tools([get_weather])
response = llm_with_tools.invoke(state["messages"])
return{"messages":[response]}
# 节点2:工具执行节点
def tool_node(state: WeatherState):
"""执行天气查询工具"""
last_message = state["messages"][-1]
# 提取工具调用信息
tool_calls = last_message.tool_calls
if tool_calls:
for tool_call in tool_calls:
if tool_call["name"]=="get_weather":
city = tool_call["args"]["city"]
weather_info = get_weather.invoke({"city": city})
return{"messages":[ToolMessage(weather_info)]}
# 节点3:报告生成节点
def report_node(state: WeatherState):
"""生成播报风格的天气报告"""
prompt ="""你是一位亲切的天气预报播音员,请用亲身体验的方式描述以下天气数据..."""
response = llm.invoke(prompt +str(state["messages"][-1].content))
return{"messages":[response]}
第三步:设计路由逻辑
python
# 条件边:决定工作流走向
def route_after_model(state: WeatherState):
"""根据模型输出决定下一步"""
last_message =state["messages"][-1]
if hasattr(last_message,"tool_calls")and last_message.tool_calls:
return"use_tool"# 需要调用工具
return"end"# 直接结束
# 构建完整工作流
graph.add_node("model", model_node)
graph.add_node("tool", tool_node)
graph.add_node("report", report_node)
graph.add_conditional_edges(
"model",
route_after_model,
{
"use_tool":"tool",
"end": END
}
)
graph.add_edge("tool","report")
graph.add_edge("report", END)
🎯 测试用例生成系统:AI赋能软件测试

更精彩的是,同样的技术可以应用于软件测试领域,打造自动化测试用例生成系统:
四节点工作流设计
1. 编写测试用例节点
2. AI评审节点
3. 格式化节点
4. 保存到Excel节点
python
# 测试用例评审逻辑
defreview_test_cases(state: TestState):
"""AI评审测试用例"""
review_prompt =f"""
你是一位资深的测试评审专家,请评审以下测试用例:
{state['test_cases']}
评审维度:
1.完整性(是否覆盖所有需求)
2. 清晰性(步骤是否明确)
3. 可执行性
4. 边界情况覆盖
输出格式:
-评审结果:通过/不通过
-改进建议:...
-需要重写的用例:...
"""
response = llm.invoke(review_prompt)
# 记录评审次数
state["review_count"]+=1
return{"review_result": response,"review_count": state["review_count"]}
智能路由:评审失败则重新生成
python
defroute_after_review(state: TestState):
"""根据评审结果决定下一步"""
if state["review_result"]=="通过"or state["review_count"]>=3:
return"format_cases" # 评审通过或达到最大次数
return"rewrite_cases" # 需要重新编写
graph.add_conditional_edges(
"review",
route_after_review,
{
"format_cases":"format",
"rewrite_cases":"write_cases" # 回到编写节点
}
)
📚核心知识点总结

1.工具绑定机制
·大模型本身不知道天气数据
·通过bind_tools()将工具能力"赋予"模型
·模型学会在适当时机调用工具
2.条件路由设计
·基于模型输出动态决定工作流走向
·实现"智能决策"能力
·支持复杂业务逻辑编排
3.节点化架构
·每个节点专注单一功能
·易于维护和扩展
·支持并行执行和错误处理
4.状态管理
·在工作流中传递和修改状态
·支持多次迭代和循环
·保持上下文一致性
🚀从理论到实践

这些项目不仅展示了LangGraph的强大能力,更提供了可落地的解决方案:
1.天气预报播音员可扩展为:
o智能客服系统
o数据查询助手
o个性化推荐引擎
2.测试用例系统可发展为:
o全流程测试自动化平台
o需求分析到用例生成一体化
o智能缺陷预测系统
无论你是开发者还是测试工程师,掌握AI工作流编排技术都将成为未来的核心竞争力。从简单的工具调用到复杂的业务流转,LangGraph为你提供了一站式解决方案。
让我们一起探索AI应用开发的无尽可能
📞 支持与反馈
维护团队: 北京慧测·杭州但问智能技术团队
更多推荐

所有评论(0)