· · ·
在大模型应用开发中,如何让AI不仅能理解问题,还能调用工具、执行复杂工作流?本期LangGraph&Langchain系列公开课第二讲,带你走进AI工作流的实战世界!
🌤️ 天气预报播音员:当AI学会使用工具
想象一下,一个能实时查询天气并以生动播报方式回答的AI助手:
用户:北京今天的天气怎么样?
AI:哎呀,我正坐在北京的窗边,外面阴沉沉的,像一层灰蒙蒙的棉被盖住了天空...(基于真实天气数据生成)
这是大模型调取了该城市对应的天气数据,包括温度、风速、湿度等空气质量指数,再基于这些精准数据,以天气预报员的口吻进行生活化的语言总结并输出。那么,它是怎么结合工具来实现的呢?
🚀核心技术:工具调用与工作流编排
第一步:创建天气预报工具
pythonfrom langchain.tools import 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_callsif 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"]+=1return{"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应用开发的无尽可能
联系下方微信获取案例完整源码
|
|

