学校网站建设工作总结麻将软件开发平台

张小明 2025/12/31 13:23:48
学校网站建设工作总结,麻将软件开发平台,建站公司最喜欢的网站,广州白云区今天最新消息LangGraph 流式输出学习总结 github链接#xff1a;https://github.com/hzqjgthy/LangGraph_TL #xff08;求star#xff09;本文档总结了 7 个脚本中关于 LangGraph 和 LangChain 流式输出的核心知识点。 #x1f4da; 目录 基础知识脚本概览核心知识点详解实战案例…LangGraph 流式输出学习总结 github链接https://github.com/hzqjgthy/LangGraph_TL 求star本文档总结了 7 个脚本中关于 LangGraph 和 LangChain 流式输出的核心知识点。 目录基础知识脚本概览核心知识点详解实战案例最佳实践1. 基础知识1.1 环境配置所有脚本都使用了以下基础配置fromlangchain.chat_modelsimportinit_chat_modelfromdotenvimportload_dotenvimportos load_dotenv(overrideTrue)# 初始化模型llminit_chat_model(modeldeepseek-chat,model_providerdeepseek,api_keyos.getenv(DEEPSEEK_API_KEY),base_urlos.getenv(DEEPSEEK_URL),temperature0,)1.2 核心依赖库langchain/langchain_core: LLM 框架langgraph: 构建 Agent 工作流sqlalchemy: 数据库 ORM 操作requests: HTTP 请求API 调用pydantic: 数据验证和模型定义2. 脚本概览脚本行数核心功能关键知识点test_29.py45OpenWeather API 测试API 调用基础、JSON 解析test_30.py242LangGraph Agent 基础create_react_agent、工具集成、非流式输出test_31.py43LangChain 流式输出astream 方法、chunk 累加test_32.py266LangGraph 同步流式输出values/updates 模式test_33.py245LangGraph 异步流式输出异步 astreamtest_34.py245messages 模式流式输出增量 token 处理test_35.py254astream_events 事件流事件驱动流式输出3. 核心知识点详解3.1 OpenWeather API 集成 (test_29.py)功能查询城市天气信息代码要点defget_weather(loc):urlhttps://api.openweathermap.org/data/2.5/weatherparams{q:loc,# 城市名称英文appid:YOUR_API_KEY,units:metric,# 摄氏度lang:zh_cn# 简体中文}responserequests.get(url,paramsparams)returnjson.dumps(response.json())注意事项中国城市需使用英文名称如 Beijing, ShanghaiAPI Key 需要从 OpenWeather 网站注册获取返回值为 JSON 字符串格式3.2 LangGraph Agent 基础 (test_30.py)3.2.1 工具定义使用tool装饰器定义工具并使用 Pydantic 模型定义参数classWeatherLoc(BaseModel):location:strField(description城市名称)tool(args_schemaWeatherLoc)defget_weather(location):查询当前天气# 实现代码3.2.2 数据库集成使用 SQLAlchemy 定义数据模型fromsqlalchemyimportcreate_engine,Column,Integer,String,Floatfromsqlalchemy.ormimportsessionmaker,declarative_base Basedeclarative_base()classWeather(Base):__tablename__weather_11city_idColumn(Integer,primary_keyTrue)city_nameColumn(String(50))temperatureColumn(Float)# ... 其他字段数据库连接DATABASE_URImysqlpymysql://user:passwordhost:3306/database?charsetutf8mb4enginecreate_engine(DATABASE_URI)Base.metadata.create_all(engine)Sessionsessionmaker(bindengine)3.2.3 创建 Agentfromlanggraph.prebuiltimportcreate_react_agent tools[fetch_real_time_info,get_weather,insert_weather_to_db,query_weather_from_db]graphcreate_react_agent(llm,toolstools)3.2.4 可视化png_bytesgraph.get_graph(xrayTrue).draw_mermaid_png()withopen(graph_30.png,wb)asf:f.write(png_bytes)3.2.5 非流式调用responsegraph.invoke({messages:[北京今天的天气怎么样]})print(response[messages][-1].content)3.3 LangChain 流式输出基础 (test_31.py)异步流式输出asyncdefstream_function():chunks[]asyncforchunkinllm.astream(你好请你详细的介绍一下你自己。):chunks.append(chunk)print(chunk.content,end|,flushTrue)# chunk 可以累加combinedchunks[0]chunks[1]chunks[2]print(combined)asyncio.run(stream_function())关键点使用astream()方法进行异步流式输出每个 chunk 包含部分响应内容chunk 对象支持操作符进行累加需要asyncio.run()来执行异步函数3.4 LangGraph 流式输出模式LangGraph 提供了 5 种流式输出模式模式返回内容使用场景values每个步骤后的完整状态需要完整上下文updates每个节点的增量更新按节点处理messages增量 token 流实时文本输出debug详细调试信息调试程序custom自定义流高级定制3.5 同步流式输出 (test_32.py)3.5.1 values 模式特点返回每个步骤后的完整状态defprint_stream(stream):forsub_streaminstream:# sub_stream 是字典包含 messages 字段messagesub_stream[messages][-1]message.pretty_print()input_message{messages:[你好南京现在的天气怎么样]}print_stream(graph.stream(input_message,stream_modevalues))输出结构{messages:[HumanMessage(...),AIMessage(...),ToolMessage(...)]}3.5.2 updates 模式特点返回每个节点的增量更新defprint_stream_updates(stream):forsub_streaminstream:# sub_stream 结构: {节点名称: {messages: [消息]}}fornode_name,node_datainsub_stream.items():print(f---{node_name.upper()}节点 ---)ifmessagesinnode_data:formessageinnode_data[messages]:message.pretty_print()print_stream_updates(graph.stream(input_message,stream_modeupdates))输出结构{agent:{messages:[AIMessage(...)]},tools:{messages:[ToolMessage(...)]}}节点类型agent: LLM 的决策或响应tools: 工具执行结果3.6 异步流式输出 (test_33.py)3.6.1 异步 values 模式asyncdefstream_function():asyncforchunkingraph.astream(input{messages:[你好成都的天气怎么样]},stream_modevalues):messagechunk[messages][-1].pretty_print()asyncio.run(stream_function())3.6.2 异步 updates 模式asyncdefstream_function_2():inputs{messages:[(human,你好乌鲁木齐的天气怎么样)]}asyncforchunkingraph.astream(inputs,stream_modeupdates):fornode,valuesinchunk.items():print(f接收到的更新节点: {node})messagevalues[messages][0]message.pretty_print()asyncio.run(stream_function_2())同步 vs 异步同步(stream): 阻塞式适合简单脚本异步(astream): 非阻塞适合高并发场景3.7 messages 模式流式输出 (test_34.py)特点记录每个消息中的增量 token实现逐字输出asyncdefstream_function():asyncformsg,metadataingraph.astream({messages:[你好帮我查询一下数据库中北京的天气数据]},stream_modemessages):# 只输出非 HumanMessage 的内容ifmsg.contentandnotisinstance(msg,HumanMessage):print(msg.content,end|,flushTrue)# 处理 AIMessageChunkifisinstance(msg,AIMessageChunk):iffirst:gatheredmsg firstFalseelse:gatheredgatheredmsg# 累加 chunk# 输出工具调用信息ifmsg.tool_call_chunks:print(gathered.tool_calls)asyncio.run(stream_function())适用场景实时显示 LLM 生成的文本类似 ChatGPT 的打字机效果需要逐 token 处理的场景3.8 astream_events 事件流 (test_35.py)特点事件驱动的流式输出提供更细粒度的控制3.8.1 基础用法asyncdefstream_function():asyncforeventingraph.astream_events({messages:[北京的天气怎么样]},versionv2):kindevent[event]print(f{kind}:{event[name]}----------------{event[data]})asyncio.run(stream_function())3.8.2 提取 AIMessageChunkasyncdefstream_function():asyncforeventingraph.astream_events({messages:[北京的天气怎么样]},versionv2):kindevent[event]# 过滤聊天模型流事件ifkindon_chat_model_stream:chunkevent[data][chunk]# 输出文本内容ifchunk.content:print(chunk.content,end,flushTrue)# 输出工具调用信息elifchunk.tool_calls:fortool_callinchunk.tool_calls:iftool_call.get(name):print(f\n[调用工具:{tool_call[name]}]\n)asyncio.run(stream_function())事件类型on_chat_model_stream: 聊天模型输出流on_tool_start: 工具开始执行on_tool_end: 工具执行结束其他更多事件类型…优势精细控制每个事件的处理可以区分模型响应和工具调用适合复杂的 UI 交互场景4. 实战案例4.1 多城市天气查询与存储需求查询多个城市天气并存储到数据库responsegraph.invoke({messages:[帮我查一下北京、上海、哈尔滨三个城市的天气并存储到数据库]})Agent 执行流程解析用户意图需要查询 3 个城市并行调用get_weather工具 3 次提取天气数据中的关键字段调用insert_weather_to_db工具 3 次存储数据返回执行结果4.2 数据库天气对比分析需求从数据库读取天气数据并进行对比分析responsegraph.invoke({messages:[帮我分析一下数据库中北京和哈尔滨城市天气的信息做详细对比]})Agent 执行流程调用query_weather_from_db查询北京天气调用query_weather_from_db查询哈尔滨天气LLM 对比分析温度、天气状况等数据生成详细的对比报告和出行建议4.3 实时信息检索需求获取最新的互联网信息responsegraph.invoke({messages:[你知道 Claude 3.5 发布的 computer use 吗请用中文回复]})Agent 执行流程识别需要实时信息调用fetch_real_time_info工具搜索解析搜索结果生成中文回答5. 最佳实践5.1 流式输出选择指南场景推荐模式理由简单问答values完整上下文易于调试UI 实时显示messages逐字输出用户体验好调试工具调用updates清晰区分 agent 和 tools复杂事件处理astream_events精细控制每个事件性能要求高异步 (astream)非阻塞高并发5.2 工具设计原则明确的文档字符串描述工具功能、参数、返回值使用 Pydantic 模型定义清晰的参数结构错误处理捕获异常并返回友好的错误信息返回标准格式统一返回 JSON 字符串或字典5.3 数据库操作最佳实践tool(args_schemaQueryWeatherSchema)defquery_weather_from_db(city_name:str):sessionSession()try:# 执行查询weather_datasession.query(Weather).filter(Weather.city_namecity_name).first()ifweather_data:return{city_name:weather_data.city_name,temperature:weather_data.temperature,# ... 其他字段}else:return{messages:[f未找到城市 {city_name} 的天气信息。]}exceptExceptionase:return{messages:[f查询失败错误原因{e}]}finally:session.close()# 确保关闭会话关键点使用try-except-finally确保资源释放每次操作创建新的 session使用merge()实现插入或更新发生错误时rollback()5.4 流式输出性能优化使用异步对于 I/O 密集型操作批量处理减少网络往返次数合理的 flushprint(..., end, flushTrue)避免过度打印只输出必要信息5.5 消息类型总结消息类型用途来源HumanMessage用户输入用户AIMessage模型响应LLMToolMessage工具执行结果工具AIMessageChunk模型流式输出片段LLM (流式)6. 常见问题6.1 为什么使用英文城市名称OpenWeather API 只支持英文城市名称。对于中国城市北京 → Beijing上海 → Shanghai哈尔滨 → Harbin6.2 如何处理 API Key使用环境变量fromdotenvimportload_dotenv load_dotenv(overrideTrue)api_keyos.getenv(OPENWEATHER_API_KEY).env文件示例OPENWEATHER_API_KEYyour_key_here DEEPSEEK_API_KEYyour_key_here DEEPSEEK_URLhttps://api.deepseek.com6.3 流式输出没有实时显示确保使用flushTrue参数不要使用print()的缓冲在 Jupyter Notebook 中可能需要IPython.display6.4 数据库连接失败检查数据库服务是否运行连接字符串是否正确用户权限是否足够防火墙设置7. 技术栈总结7.1 核心框架LangChain: LLM 应用开发框架LangGraph: 构建多步骤 Agent 工作流SQLAlchemy: Python SQL 工具包和 ORM7.2 外部服务OpenWeather API: 天气数据服务Serper API: Google 搜索 API 代理DeepSeek: 大语言模型服务MySQL: 关系型数据库7.3 Python 标准库asyncio: 异步 I/Orequests: HTTP 库json: JSON 处理os: 操作系统接口8. 学习路径建议第一步运行test_29.py理解 API 调用基础第二步运行test_30.py理解 Agent 的构建和工具集成第三步运行test_31.py理解基础流式输出第四步运行test_32.py和test_33.py对比同步/异步流式输出第五步运行test_34.py理解 messages 模式的实时输出第六步运行test_35.py掌握事件驱动的高级流式输出9. 扩展阅读LangChain 官方文档LangGraph 官方文档OpenWeather API 文档SQLAlchemy 官方文档Pydantic 官方文档10. 总结本系列脚本从基础的 API 调用到复杂的 Agent 流式输出全面展示了 LangGraph 的核心功能✅工具集成如何定义和使用工具✅数据库操作SQLAlchemy ORM 的最佳实践✅流式输出5 种不同模式的适用场景✅异步编程提升并发性能✅事件驱动精细控制 Agent 执行流程掌握这些知识点后可以构建功能强大的 LLM 应用实现复杂的多步骤推理、工具调用和实时交互。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

姜堰网站建设江苏省建设厅官方网站

离线音乐歌词智能同步管理工具深度解析 【免费下载链接】lrcget Utility for mass-downloading LRC synced lyrics for your offline music library. 项目地址: https://gitcode.com/gh_mirrors/lr/lrcget 在数字音乐时代,离线音乐库的管理往往面临着一个共同…

张小明 2025/12/29 4:17:25 网站建设

上海松江 网站建设公司wordpress安装主题需要ftp

从三个疑问谈谈我们的核心理念AI能写代码早已不是新鲜话题,但当它被引入真实的日常开发流程时,工程层面的问题才真正开始暴露:为什么在多数团队里,AI 写代码仍然时好时坏?为什么同样一句指令,有时像资深工程…

张小明 2025/12/29 5:33:32 网站建设

一条龙网站建设wordpress淘宝客单页

AkVirtualCamera虚拟摄像头终极方案:高效配置与性能调优指南 【免费下载链接】akvirtualcamera akvirtualcamera, virtual camera for Mac and Windows 项目地址: https://gitcode.com/gh_mirrors/ak/akvirtualcamera 还在为视频会议软件无法识别自定义视频源…

张小明 2025/12/29 5:33:31 网站建设

app 游戏网站建设徐州工程造价信息网

第一章:物流仓储Agent分拣效率的现状与挑战在当前高度自动化的物流体系中,智能Agent被广泛应用于仓储分拣环节,以提升作业效率和降低人力成本。然而,尽管技术不断演进,分拣效率仍面临多重挑战,包括动态环境…

张小明 2025/12/29 5:33:29 网站建设

phpmysql网站开发笔记中国建筑网官网监理工程师网站

在制造业设备工厂的设计部门中,SolidWorks三维设计是核心工作之一。随着项目复杂度的提升和团队规模的扩大,如何让8-10名设计人员高效共享一台高性能图形工作站成为亟待解决的难题。制造业设备工厂可通过以下系统性方案,利用共享云桌面技术实…

张小明 2025/12/29 5:33:27 网站建设

有什么网站可以做电子版邀请函wps怎么做网页

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

张小明 2025/12/29 5:33:25 网站建设