大数跨境

LangGraph路由器实战:从天气预报到自动化测试,揭秘AI工作流的强大能力

LangGraph路由器实战:从天气预报到自动化测试,揭秘AI工作流的强大能力 慧测
2026-01-26
0

·  ·  ·

图片

但问智能出品

图片
  • 免费获取源码

    huice666/danwen668

  • 原创课程大纲

    https://huicewang.com/testing

  • B 站系列视频

    https://space.bilibili.com/1037858964

在大模型应用开发中,如何让AI不仅能理解问题,还能调用工具、执行复杂工作流?本期LangGraph&Langchain系列公开课第二讲,带你走进AI工作流的实战世界!

🌤️ 天气预报播音员:当AI学会使用工具

想象一下,一个能实时查询天气并以生动播报方式回答的AI助手:

用户北京今天的天气怎么样?

AI:哎呀,我正坐在北京的窗边,外面阴沉沉的,像一层灰蒙蒙的棉被盖住了天空...(基于真实天气数据生成)

这是大模型调取了该城市对应的天气数据,包括温度、风速、湿度等空气质量指数,再基于这些精准数据,以天气预报员的口吻进行生活化的语言总结并输出。那么,它是怎么结合工具来实现的呢?

🚀核心技术:工具调用与工作流编排


第一步:创建天气预报工具

pythonfrom langchain.tools import tool@tooldefget_weather(city:str):"""获取指定城市的天气信息""" # 调用第三方天气APIapi_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"]}

智能路由:评审失败则重新生成

pythondefroute_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应用开发的无尽可能

联系下方微信获取案例完整源码

图片
huice666
图片
danwen668

【声明】内容源于网络
0
0
慧测
专注人工智能前沿技术落地企业实战应用
内容 0
粉丝 0
慧测 专注人工智能前沿技术落地企业实战应用
总阅读0
粉丝0
内容0