北京网站建设建站公司公司重名 做网站

张小明 2026/1/9 10:16:34
北京网站建设建站公司,公司重名 做网站,江苏建设人才网证书查询,10m带宽做下载网站LangChain 是一款开源框架#xff0c;内置智能体架构#xff0c;且可与任意模型或工具集成。2025年10月23日发布的LangChain1.0是一个非常大的革新#xff0c;比如create_agent可以方面的创建ReAct模式的智能体#xff0c;中间件的推出可以实现人机交互、动态系统提示词、动…LangChain 是一款开源框架内置智能体架构且可与任意模型或工具集成。2025年10月23日发布的LangChain1.0是一个非常大的革新比如create_agent可以方面的创建ReAct模式的智能体中间件的推出可以实现人机交互、动态系统提示词、动态注入上下文等等通过向工作流中预埋中间件能够实现工作流的高效拓展和可定制化。本文主要将注意力放在人机交互上。人机交互是ReAct模式智能体的一大特点。01 人机交互的定义与实现人机交互Human-in-the-loop, HITL指智能体为了向人类索要执行权限或额外信息而主动中断并在获得人类反馈后继续执行的过程。LangChain 的人机交互功能可以通过内置中间件 HumanInTheLoopMiddleware实现。触发人机交互后HITL 会将当前状态保存到 checkpointer 检查点中并等待人类回复。获得回复后再将状态从检查点中恢复出来继续执行任务。02 总体流程当用户提出一个问题的时候有三种情况不需要调用工具则直接由大模型返回问题答案大模型发现需要调用工具则交给用户审批是否需要调用工具若用户拒绝调用则直接返回给大模型用户拒绝信息由大模型整理并回复大模型发现需要调用工具则交给用户审批用户批准调用工具则大模型会发起对具体工具的调用调用结果返回给大模型再由大模型整理并生成最终回复反馈给用户03 实例分析天气查询我们这里可以举一个例子假设我需要查询某地的天气。首先定义一个工具get_weather通过该工具可以获取到实时天气# 工具函数 tool def get_weather(city: str) - str: 通过调用 wttr.in API 查询真实的天气信息。 # API端点我们请求JSON格式的数据 url fhttps://wttr.in/{city}?formatj1 print(result) try: # 发起网络请求 response requests.get(url) # 检查响应状态码是否为200 (成功) response.raise_for_status() # 解析返回的JSON数据 data response.json() # 提取当前天气状况 current_condition data[current_condition][0] weather_desc current_condition[weatherDesc][0][value] temp_c current_condition[temp_C] # 格式化成自然语言返回 return f{city}当前天气:{weather_desc}气温{temp_c}摄氏度 except requests.exceptions.RequestException as e: # 处理网络错误 return f错误:查询天气时遇到网络问题 - {e}智能代理的构建下面使用create_agent函数构建一个智能代理在该方法内部封装我们用到的工具核心在于利用HumanInTheLoopMiddleware实现审批功能。如果审批通过则调用工具如果审批不通过就直接返回结果。代码实现如下# 创建带有工具调用的Agent tool_agent create_agent( model llm, tools [get_weather], middleware [ HumanInTheLoopMiddleware( interrupt_on{ # 需要审批允许approve,reject两种审批类型 get_weather: {allowed_decisions: [approve, reject]} }, description_prefixTool execution pending approval., ), ], checkpointerInMemorySaver(), system_promptYou are a helpful assistant. )调用与中断机制具体使用的时候我们先通过agent进行invoke这步和普通的调用方式一样只是要加上config包括线程id等信息便于和中断后的进程对接保持对话一致性。后面可以交给LangChain agent的中断机制如果大模型思考后发现需要调用我们的工具了它会观察是否在中断列表中如果在中断列表中则会中断当得到工具的审批结果后回复执行调用工具并返回结果。# 运行Agent config {configurable: {thread_id: str(uuid.uuid4())}} # 发送请求到大模型 result tool_agent.invoke( {messages: [{ role: user, content: 杭州今天天气怎么样 }]}, config, stream_modevalues ) print(result.get(__interrupt__)) # 中断之后根据审批结果来调用工具或拒绝调用 result tool_agent.invoke( Command( resume{decisions: [{type: approve}]} ), config )中断信息示例我们可以察看中断信息我们可以查看中断信息如下[Interrupt(value{action_requests: [{name: get_weather, args: {city: 杭州}, description: Tool execution pending approval\n\nTool: get_weather\nArgs: {city: 杭州}}], review_configs: [{action_name: get_weather, allowed_decisions: [approve, reject]}]}, id7b4af04b519e98cb8006ad0f0a0faa71)]可以看到大模型识别到我们需要调用工具get_weather并且获取到了调用的参数是city值是“杭州”。我们这里假设人工审批结果是approve即批准调用工具得到了天气查询的结果根据查询结果杭州今天的天气情况如下天气状况 局部多云Partly cloudy气温 9摄氏度今天杭州天气比较凉爽建议您适当添加衣物。由于是多云天气可能会有阳光时隐时现的情况。04 基于streamlit的UI实现接下来我们以streamlit作为UI界面来完成一个完整的例子在用户界面上可以提问系统会去查看是否需要调用工具如果需要调用工具则会把审批权交给用户由用户来决定是否调用工具。代码如下import os import uuid from langchain_openai import ChatOpenAI from langchain.agents import create_agent from langchain.agents.middleware import HumanInTheLoopMiddleware from langchain_core.tools import tool from langgraph.checkpoint.memory import InMemorySaver from langgraph.types import Command import streamlit as st import requests # --- 模型和工具定义不变--- llm ChatOpenAI( streamingTrue, modeldeepseek-chat, openai_api_keyAPI KEY, openai_api_basehttps://api.deepseek.com, max_tokens1024, temperature0.1 ) # 工具函数 tool def get_weather(city: str) - str: 通过调用 wttr.in API 查询真实的天气信息。 # API端点我们请求JSON格式的数据 url fhttps://wttr.in/{city}?formatj1 try: # 发起网络请求 response requests.get(url) # 检查响应状态码是否为200 (成功) response.raise_for_status() # 解析返回的JSON数据 data response.json() # 提取当前天气状况 current_condition data[current_condition][0] weather_desc current_condition[weatherDesc][0][value] temp_c current_condition[temp_C] # 格式化成自然语言返回 return f{city}当前天气:{weather_desc}气温{temp_c}摄氏度 except requests.exceptions.RequestException as e: # 处理网络错误 return f错误:查询天气时遇到网络问题 - {e} # --- 初始化 Agent只做一次--- if tool_agent not in st.session_state: checkpointer InMemorySaver() st.session_state.tool_agent create_agent( modelllm, tools[get_weather, add_numbers, calculate_bmi], middleware[ HumanInTheLoopMiddleware( interrupt_on{ get_weather: {allowed_decisions: [approve, reject]} }, description_prefixTool execution pending approval., ), ], checkpointercheckpointer, system_promptYou are a helpful assistant. ) tool_agent st.session_state.tool_agent # --- Streamlit UI --- st.title(LangGraph Streamlit 工具调用审批 Demo) # 初始化状态 if waiting_for_approval not in st.session_state: st.session_state.waiting_for_approval False if approval_config not in st.session_state: st.session_state.approval_config None if interrupt_data not in st.session_state: st.session_state.interrupt_data None user_query st.text_input(请输入你的问题例如上海天气, keyuser_input) # 1. 提交查询 if st.button(提交查询) and user_query: thread_id str(uuid.uuid4()) config {configurable: {thread_id: thread_id}} result tool_agent.invoke( {messages: [{role: user, content: user_query}]}, config, stream_modevalues ) if result.get(__interrupt__) is not None: st.session_state.waiting_for_approval True st.session_state.approval_config config st.session_state.interrupt_data result[__interrupt__][0].value st.rerun() # 立即刷新显示审批 UI else: st.write(result[messages][-1].content) # 2. 审批 UI独立于提交按钮 if st.session_state.waiting_for_approval: tool_call st.session_state.interrupt_data action tool_call[action_requests][0] st.info(工具调用需要审批请操作) st.subheader(工具调用审批) st.write(f**工具名称**{action[name]}) st.write(f**工具参数**{action[args]}) col1, col2 st.columns(2) with col1: if st.button(✅ 批准调用): result tool_agent.invoke( Command(resume{decisions: [{type: approve}]}), st.session_state.approval_config ) st.write(result[messages][-1].content) # 重置状态 st.session_state.waiting_for_approval False st.session_state.approval_config None st.session_state.interrupt_data None #st.rerun() with col2: if st.button(❌ 拒绝调用): result tool_agent.invoke( Command(resume{decisions: [{type: reject}]}), st.session_state.approval_config ) st.write(result[messages][-1].content) # 重置状态 st.session_state.waiting_for_approval False st.session_state.approval_config None st.session_state.interrupt_data None #st.rerun()streamlit的特点与状态管理问题streamlit作为一个简单而强大的用于快速构建和部署数据科学和机器学习项目也提供了强大的会话状态管理功能。在streamlit应用中每次用户与组件如按钮、输入框交互时整个python脚本都会从头开始重新运行。这种设计模式简化了开发但也带来了一个常见问题如何确保数据在脚本重运行后依然保持其最新状态。st.session_state是streamlit提供的用于在多次重运行之间持久化数据的重要机制。然而当st.session_state的更新逻辑与按钮点击事件结合时可能会出现预期之外的行为特别是当更新操作发生在条件语句如if st.button(…)内部时。解决按钮点击无响应问题如果不处理的话当我们点击“提交查询”后系统提示了“批准调用”和“拒绝调用”两个按钮这时候如果点击“批准按钮”“拒绝调用”是没有响应的因为python脚本会重头运行这时响应事件已经丢失了。要解决这个问题就需要在streamlit按钮调用的时候维持状态所以需要在session_state中加入状态。如当session_state.waiting_for_approveTrue的时候再显示按钮这样按钮的点击事件就有用了。那么如何系统的去学习大模型LLM作为一名深耕行业的资深大模型算法工程师我经常会收到一些评论和私信我是小白学习大模型该从哪里入手呢我自学没有方向怎么办这个地方我不会啊。如果你也有类似的经历一定要继续看下去这些问题啊也不是三言两语啊就能讲明白的。所以我综合了大模型的所有知识点给大家带来一套全网最全最细的大模型零基础教程。在做这套教程之前呢我就曾放空大脑以一个大模型小白的角度去重新解析它采用基础知识和实战项目相结合的教学方式历时3个月终于完成了这样的课程让你真正体会到什么是每一秒都在疯狂输出知识点。由于篇幅有限⚡️ 朋友们如果有需要全套 《2025全新制作的大模型全套资料》扫码获取~大模型学习指南路线汇总我们这套大模型资料呢会从基础篇、进阶篇和项目实战篇等三大方面来讲解。①.基础篇基础篇里面包括了Python快速入门、AI开发环境搭建及提示词工程带你学习大模型核心原理、prompt使用技巧、Transformer架构和预训练、SFT、RLHF等一些基础概念用最易懂的方式带你入门大模型。②.进阶篇接下来是进阶篇你将掌握RAG、Agent、Langchain、大模型微调和私有化部署学习如何构建外挂知识库并和自己的企业相结合学习如何使用langchain框架提高开发效率和代码质量、学习如何选择合适的基座模型并进行数据集的收集预处理以及具体的模型微调等等。③.实战篇实战篇会手把手带着大家练习企业级的落地项目已脱敏比如RAG医疗问答系统、Agent智能电商客服系统、数字人项目实战、教育行业智能助教等等从而帮助大家更好的应对大模型时代的挑战。④.福利篇最后呢会给大家一个小福利课程视频中的所有素材有搭建AI开发环境资料包还有学习计划表几十上百G素材、电子书和课件等等只要你能想到的素材我这里几乎都有。我已经全部上传到CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】相信我这套大模型系统教程将会是全网最齐全 最易懂的小白专用课
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

西昌城乡建设网站开发跨境电商系统

从零打造企业级图标系统:Ant Design图标深度定制实践 【免费下载链接】ant-design An enterprise-class UI design language and React UI library 项目地址: https://gitcode.com/gh_mirrors/antde/ant-design "为什么我的应用图标看起来总是缺乏个性&…

张小明 2026/1/8 3:13:03 网站建设

甘肃省建设工程网上投标网站深圳物流公司招聘信息

手把手教你用HAL库让STM32变身I2C HID设备 你有没有想过,一块普通的STM32开发板,不接USB线,也能像键盘、鼠标一样被电脑“认出来”?更神奇的是,它还能上报触摸坐标、按钮状态,甚至模拟手写笔行为——这一切…

张小明 2026/1/4 2:26:08 网站建设

佳木斯做网站网站设计开发项目书

DLT Viewer汽车诊断日志分析工具:从零基础到实战精通的完整指南 【免费下载链接】dlt-viewer 项目地址: https://gitcode.com/gh_mirrors/dlt/dlt-viewer 在智能汽车时代,一次看似普通的系统故障可能隐藏着复杂的通信问题。想象一下:…

张小明 2026/1/6 13:07:35 网站建设

成都网站建设 培训学校什么样的网站可以做站群

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个对比项目,展示typedef和#define在以下方面的差异:1. 类型安全性比较;2. 作用域差异;3. 调试便利性;4. 代码可读性…

张小明 2026/1/4 2:25:04 网站建设

值得做的网站php网站建设管理教材

终极指南:3步掌握哔咔漫画批量下载神器 【免费下载链接】picacomic-downloader 哔咔漫画 picacomic pica漫画 bika漫画 PicACG 多线程下载器,带图形界面 带收藏夹,已打包exe 下载速度飞快 项目地址: https://gitcode.com/gh_mirrors/pi/pic…

张小明 2026/1/5 8:35:56 网站建设

论坛网站建设公司网站备案需要多少钱

弹幕文字实时识别:HunyuanOCR提取直播视频中的观众评论 在一场热门电竞赛事的直播间里,每秒涌出上百条滚动弹幕——“这波操作太秀了!”、“666”、“can we get a subtitle?”。这些密集叠加、中英混杂、字体各异的文字不仅构成了独特的社…

张小明 2026/1/8 9:43:17 网站建设