
大模型Agent开发
文章平均质量分 90
上有晨光
这个作者很懒,什么都没留下…
展开
-
LangGraph中的事件流
仅打印聊天模型输出的事件async for event in graph.astream_events({"messages":["你好,请你介绍一下你自己"]},version="v2"):# 自定义数据流,打印聊天模型输出的内容async for event in graph.astream_events({"messages":["你好,请你介绍一下你自己"]},version="v2"):事件流的作用。原创 2025-04-30 16:20:37 · 685 阅读 · 0 评论 -
LangGraph中如何使用流式输出
【代码】LangGraph中如何使用流式输出。原创 2025-04-30 16:15:04 · 730 阅读 · 0 评论 -
LangGraph案例实操:构建复杂工具应用的ReAct自治代理(含代码)
聚焦于在LangGraph框架内构建ReAct自治代理,借助多工具场景需求来检验其构建方式及实际效能。接入实时天气数据查询API:借助OpenWeather API获取天气数据。设计存储实时天气信息的表:定义模型,构建MySQL数据库表结构。定义和注册工具函数使用LangChain的装饰器注册工具函数。运用方法构建ReAct代理。询问涉及多工具使用的复杂问题,如“你给我查一下北京,上海,哈尔滨三个城市的天气,然后再告诉我哪个城市最适合出游,然后你再把原创 2025-04-30 16:07:32 · 246 阅读 · 0 评论 -
LangGraph中ReAct的构建原理
以ReAct提示为例,在LangGraph基于图的实现过程中,用于构建中间的agent节点。当通过LangGraph预构建的ReAct组件创建自主循环代理节点并接收用户问题时,该节点(可以是agent、LM或直接的大模型 )会先接收start节点传来的原始输入,接着对输入信息进行修饰。若需调用工具,则进入循环过程,在工具库中选择工具执行,通过ToolNode预构建组件返回结果并封装在ToolMessage里,不断循环直至得到最终结果。其具备实验追踪功能,能记录模型、提示词、工具调用等数据;原创 2025-04-30 15:52:38 · 1052 阅读 · 0 评论 -
LangGraph之Tool Calling Agent的完整实现案例:实时搜索与数据库集成(含代码)
定义实时检索工具# 利用Pydantic的BaseModel定义SearchQuery类,其中query字段用于接收网络查询问题,Field中的描述用于说明该字段用途"num": 1,})else:# fetch_real_time_info函数用于获取实时互联网信息。# 它接收一个query参数,向指定的URL发送POST请求,请求中包含查询内容q和返回结果数量num。# 根据API要求设置请求头,包括API密钥和内容类型。# 发送请求后,将返回的JSON格式文本转换为字典数据。原创 2025-04-30 15:48:46 · 374 阅读 · 0 评论 -
LangGraph之Tool Calling Agent 中ToolNode的使用
在LangGraph的代理架构体系中,Router Agent是基础形式,在此之上构建的Tool Calling Agent(工具调用代理)极大地拓展了大模型的应用能力。它允许大模型根据用户输入自主选择并调用合适工具,有效解决与外部系统交互时自然语言与特定输入模式不匹配的问题,显著增强了模型处理复杂任务的能力。原创 2025-04-30 15:38:00 · 1066 阅读 · 0 评论 -
LangGraph之结合结构化输出构建Router Agent(数据库)
使用Pydantic库定义模型类,用于结构化输出和数据验证。UserInfo模型类对应数据库中用户信息表的结构,包括姓名、年龄、邮箱和电话等字段,方便对用户相关信息进行结构化处理和存储。模型类用于处理模型生成的自然语言回复,它只有一个response字段,用于存储模型针对用户问题生成的自然语言回答内容。模型类则通过Union类型将UserInfo和包含进来,这样在使用大模型实例的方法时,就可以灵活选择输出类型,实现根据不同业务逻辑返回不同格式数据的功能。# 定义数据库插入的用户信息模型。原创 2025-04-30 15:28:32 · 653 阅读 · 0 评论 -
LangGraph中可应用的三种结构化输出方法
在LangGraph的应用场景中,结构化输出负责将大模型接收的自然语言转化为特定格式,以适配不同场景,主要通过提示工程、输出解析器结合提示工程、内置工具调用三种方式来实现。原创 2025-04-24 17:20:47 · 992 阅读 · 0 评论 -
LangGraph代理架构及Router Agent介绍
原理:大模型能够自主决策调用外部工具(如数据库查询工具、文本编辑工具、计算工具等)并执行操作,然后依据工具返回的结果进一步处理任务,以此来完成更复杂的功能。优势与劣势:借助外部丰富的工具,大大拓展了大模型的能力边界,使其能够灵活应对各种不同类型的任务。然而,该代理模式对工具的稳定性有较强依赖,一旦工具出现故障、接口变更等问题,会影响代理的正常工作。同时,合理选择和组合工具需要精确的判断和规划,否则可能导致资源浪费或任务处理失误。应用场景:广泛应用于需要多种专业工具协同工作的场景。原创 2025-04-24 17:13:53 · 831 阅读 · 0 评论 -
LangGraph扩展:LangSmith基本原理与使用入门
通过这一机制,系统能够切实留存过往对话信息,并在后续交互中精准调用,给出更贴合对话历史的合理回复。在代码实现上,后续会涉及运用特定数据结构(如栈、队列等 )来存储检查点相关信息,同时编写逻辑代码,以确定恰当的时机来保存和读取这些检查点,进而实现对历史对话的高效管理与运用。:是特定Trace下执行某一特定任务的实例。:是项目在不同条件或环境下的执行路径,每个项目可包含多个Trace,代表项目执行的不同可能路径。:代表一个单一的应用程序或服务,是整个系统的顶层概念,是对完整业务功能或产品的抽象。原创 2025-04-24 16:09:13 · 801 阅读 · 0 评论 -
LangGraph中MessageGraph源码功能解析
函数先对输入的消息列表进行类型和格式处理,为无ID的消息生成ID,然后根据消息ID合并两个列表,存在相同ID时按规则替换或删除,最后返回合并后的消息列表。的流转路径,编译图后传入问题运行图逻辑,在这个过程中消息不断流转并更新状态。的定义模式和消息传递机制是构建应用的关键,高阶功能依赖于。,可记录和观察应用程序在这段代码执行过程中的各种信息。函数构建特定的提示信息,结合上一节点的回复,调用。进行数据提取和格式化,最后返回处理后的消息。实现功能,消息传递在节点间进行,体现了。,编译图后传入问题运行,展示了。原创 2025-04-24 16:02:03 · 737 阅读 · 0 评论 -
LangGraph状态管理中Reducer函数的使用
字典类型定义状态:在LangGraph里,字典常被用作状态模式。在一个简单工作流程示例中,有如下代码:在这段代码中,首先定义了两个节点函数addition和,分别实现对状态中x值的加法和减法操作。通过创建图,并添加节点和边,最后编译图并传入初始状态{"x": 10}启动执行。字典作为状态模式,节点可自由读写状态,但需注意键值一致性,若访问不存在的键,如将函数中state["x"]改为state["z"],运行时会报错中断。2.TypedDict定义状态:使用TypedDictx: int。原创 2025-04-24 15:40:51 · 983 阅读 · 0 评论 -
LangGraph中使用字典类型定义状态构建图结构
【代码】LangGraph中使用字典类型定义状态构建图结构。原创 2025-04-24 15:35:18 · 521 阅读 · 0 评论 -
LangGraph中State的定义模式
基于字典类型的定义模式:从开发者视角看,State本质上是一个字典,其键值为列表。每次更新时,会向列表中添加新值,以此支撑后续节点的运行。代码实现步骤使用StateGraph类定义状态,创建StateGraph实例。定义addition和函数,分别实现对状态的加一和减二操作。通过add_node方法添加节点,利用add_edge方法连接节点。最后调用compile方法,将StateGraph转换为可运行的图结构。原创 2025-04-24 15:32:41 · 428 阅读 · 0 评论 -
LangGraph中如何接入大模型做问答流程
LangGraph具备强大的模型兼容性,对主流的在线和开源模型均提供接入支持。借助LangChain框架,开发者能够便捷地集成各类模型。本次以OpenAI的GPT模型为例,使用ChatOpenAI方法进行演示。若需接入其他模型,可查阅LangChain官方文档获取详细接入方式。节点函数支持灵活定义,开发者可根据实际需求定制功能。在模型接入方面,既可以借助LangChain集成模型,也能够运用原生API或本地开源模型权重,即便脱离LangChain框架,依然能够独立构建AI Agent程序。原创 2025-04-24 15:26:41 · 1112 阅读 · 0 评论 -
Langgraph底层源码解析
基类中的同名属性类似,分别用于存储图状态中的节点、边和条件分支信息。此外,LangGraph支持多种图模式,可通过。:用于定义图的结构(也称为模式)。采用单模式运行,即所有节点通过同一个共享的全局。进行通信,各个阶段的输入输出都记录在这个。:用于定义和验证图的配置参数,为。方法提供更细致的访问控制。原创 2025-04-24 09:58:41 · 537 阅读 · 0 评论 -
LangGraph 的底层构建原理
循环和分支灵活实现:能够在应用程序中轻松实现循环和条件逻辑,为构建复杂应用提供了有力支持。强大的持久性保障:自动保存状态,支持随时暂停和恢复图形执行,在错误恢复、人机交互工作流程以及时间旅行等场景中发挥重要作用。便捷的人机交互功能:允许中断图形执行,以便人工批准或编辑代理计划的下一步操作,增强了系统的可控性。全面的流支持能力:支持流输出,包括令牌流,能够满足应用程序对实时响应的需求。计划的下一步操作,增强了系统的可控性。全面的流支持能力:支持流输出,包括令牌流,能够满足应用程序对实时响应的需求。原创 2025-04-24 09:53:33 · 890 阅读 · 0 评论 -
LangChain的AI Agent开发框架架构设计
LangGraph通过模型兼容性、策略灵活性、工程化能力的三重技术突破,为企业级AI Agent开发提供了更具扩展性的技术底座。尽管其学习曲线较Assistant API更陡峭,且效果可能相对较差,但其在数据合规、复杂流程建模、性能优化等方面的优势,使其成为构建行业深度解决方案的首选框架。建议开发者根据业务需求,在快速原型验证与长期技术布局之间选择合适的技术栈,充分释放大模型的工程化应用价值。原创 2025-04-24 09:49:52 · 796 阅读 · 0 评论 -
异步构建集成外部函数的Assistant对象完整工程代码(附github)
BaseTool类是一个抽象基类,其主要作用是为具体的工具类提供一个统一的接口和基本的结构。通过定义抽象方法和属性,强制要求子类实现特定的功能,以保证工具类的一致性和规范性。类继承自BaseTool类,它实现了一个可以执行 Python 代码的工具。通过实现基类的抽象方法,提供了执行 Python 代码并返回结果或错误信息的功能。BaseTool类为工具类提供了一个通用的框架,确保所有工具类具有一致的接口和基本属性。类继承自BaseTool。原创 2025-04-23 17:17:26 · 880 阅读 · 0 评论 -
OpenAI应用案例(2):集成外部函数方法及项目完整功能介绍
为了实现自定义工具的统一管理和使用,框架定义了BaseTool基类,位于tools包的文件中。字段定义与检查:使用pydantic的Field类定义name和字段,这两个字段是每个自定义工具必须明确指定的,分别代表工具的名称和描述。通过方法检查子类是否定义了这两个字段,若未定义则抛出TypeError异常,确保每个自定义工具都具备基本信息。抽象方法定义get_name方法:用于获取工具的名称,子类必须实现该方法,返回工具的具体名称,如类中,get_name方法返回。原创 2025-04-23 17:15:05 · 685 阅读 · 0 评论 -
OpenAI应用案例(1):异步构建Assistant对象的工程化代码
在Python中,普通函数与异步函数在定义和调用方面存在明显差异。定义形式:普通函数使用def关键字定义,例如,功能较为常规,仅返回固定字符串。而异步函数借助async def关键字定义,像,它专为处理异步任务而设计。调用返回结果:普通函数直接调用,返回的就是函数对象本身。但异步函数直接调用时,返回的是协程对象。如果像对待普通函数那样去获取异步函数的返回值,会报错并提示。原创 2025-04-23 17:12:49 · 862 阅读 · 0 评论 -
Assistant API 流式传输中接入外部函数实例(完整代码)
导入OpenAI库,用于与OpenAI的API进行交互# 定义一个名为get_current_weather的函数,用于获取指定地点的当前天气状况# 如果输入的地点中包含“beijing”(不区分大小写)# 返回北京的天气信息,包括地点、温度和单位,以JSON字符串形式# 如果输入的地点中包含“shanghai”(不区分大小写)# 返回上海的天气信息,包括地点、温度和单位,以JSON字符串形式# 如果输入的地点中包含“guangzhou”(不区分大小写)原创 2025-04-23 17:09:47 · 990 阅读 · 0 评论 -
Assistant API 流式传输中的事件流原理细节
OpenAI Assistant API的流式输出在特定操作时会生成新事件,每个事件由和构成。存放如大模型回复等关键数据 ,则表明大模型的处理阶段,像运行、排队、完成等状态信息。除普通问答的标准事件流外,还有线程进入队列、正在进行中等诸多事件。OpenAI官方文档对所有事件有详细说明,并提供了涵盖事件描述和数据描述的表格,涉及创建线程、运行、消息处理等各类事件。最终结果获取:若想像非流式那样获取最终结果,可监听事件并提取相关数据。但非流式输出等待时间长,用户无法实时了解处理进度;而流式输出能实时响应,原创 2025-04-23 09:12:27 · 767 阅读 · 0 评论 -
Assistant API中流式输出的开启方法
属性,这些事件流信息是理解和处理Assistant API流式输出的关键,开发者基于此进行进一步的开发和优化。对象,数据通过该对象逐渐推送,而非一次性返回完整结果。表示运行进行中事件等。对象可获取丰富的事件流信息,如。开启流式传输后,API返回。原创 2025-04-22 15:42:04 · 863 阅读 · 0 评论 -
OpenAI Assistant API :为什么企业级应用必须接入流式输出
定位与功能:OpenAI Assistant API是用于构建AI agent的框架,不仅具备Chat API的常规对话功能,还集成了外部工具函数调用以及独特的工作流,主要用于处理复杂任务需求。主要优点减少编码工作量:借助内置工具,如field search、code interpreter,开发者无需深入了解底层细节,传入参数、上传文档即可实现功能,大大减少代码量。自动管理上下文窗口。原创 2025-04-22 15:28:00 · 602 阅读 · 0 评论 -
OpenAI Assistant API:基于Funcation Calling实现本地代码解释器(完整代码)
与Chat Completions API的关系:本质与Chat Completions API相似,在Assistant对象添加描述即可引用自定义函数。2023年11月6日及之后发布的模型支持并行函数调用,有助于提升检索效率和处理复杂任务的能力。本地代码解释器替代方案:为解决Code Interpreter资费较高的问题,设计两个函数,一个用于执行Python代码,另一个用于执行SQL查询。用户可在同一平台实时进行数据处理和查询,节省使用Assistant API的资费。原创 2025-04-22 15:15:37 · 725 阅读 · 0 评论 -
Assistant API之Code Interpreter(代码解释器)的应用(完整代码)
Code Interpreter(代码解释器)是OpenAI官方提供的内置工具,它能够把用户的需求转换到Python代码的沙盒环境中运行,在数学计算、文本分析以及数据分析等场景发挥重要作用,常被用于处理表格数据,如进行数学分析、绘制图表等任务。Code Interpreter工具在数据分析等领域有着重要的应用价值。在使用过程中,务必注意其收费机制,避免因频繁创建新线程而增加费用。熟练掌握文件处理和结果下载的方法,能够帮助我们在实际应用中更高效地利用该工具进行数据处理和分析工作。# 导入OpenAI库。原创 2025-04-22 15:10:14 · 533 阅读 · 0 评论 -
如何处理Assistant API输出响应中的注释
使用File Search工具检索,每个Assistant对象每天每GB费用是0.2美元。若将同一个1GB文件附加到多个启用检索工具的不同助理,需按助理数量支付存储费(如2个助理则付2 * 每天0.2美元),费用与最终用户和线程数量无关。注释包含在返回响应对象的content数组中的annotations字段里。在OpenAI Assistant API的检索响应中,类似“【4:0tsource】”这样的标识属于注释,其作用是表明检索的来源。原创 2025-04-22 15:07:11 · 742 阅读 · 0 评论 -
在Assistant和Thread定义File Search工具的四种策略
在对话/代理流程最终的输出中,会出现【4:θtsource】等标识,这些标识在Assistant API的设计中属于注释,其作用是清晰地说明检索的来源,便于用户了解回答所依据的信息出处。,意味着没有最低得分限制,所有经过检索算法筛选的文件都将被纳入考虑,作为用户对话的上下文参与生成回答。是一个数值阈值,用于筛选搜索结果,只有得分高于此阈值的文件才会被返回。在上述代码中,不仅定义了Assistant对象的基本信息,还通过。,虽然具体技术细节未知,但它对检索结果的排序起着关键作用。原创 2025-04-22 15:01:48 · 966 阅读 · 0 评论 -
基于 Assistant API 创建在线私有知识库代码实操
向量数据库与传统数据库区别:传统数据库(如MySQL、Oracle)使用SQL语句进行数据搜索,主要基于文本的精确匹配,适用于关键字搜索。向量数据库则是为实现更高效的搜索过程而设计,通过存储向量并利用相似度搜索算法(如余弦相似度),解决语义搜索问题,实现模糊匹配,查找与查询向量最相似的向量,返回相关文本内容。向量数据库原理及相关技术:向量数据库通过嵌入模型将文本块转换为向量表示,每个文本块被映射到高维向量空间。利用这些向量,通过相似度计算(如余弦相似度)来衡量文本之间的相似程度,从而实现语义搜索。原创 2025-04-22 14:56:36 · 698 阅读 · 0 评论 -
OpenAI Assistant API之File Search内置工具说明及文件管理
准备好符合支持类型的本地知识文件,选择自定义或默认的切分策略,将文件存储到向量数据库。结合Assistant API构建对话或代理流程,实现本地知识库问答功能。原创 2025-04-22 14:53:08 · 1064 阅读 · 0 评论 -
Assistant API 进阶应用方法介绍
Assistant API在性能和易用性方面表现卓越,超越了市面上的许多AI框架。它拥有强大的底层逻辑,为构建各类应用系统提供了坚实的支撑。功能描述技术细节应用场景函数定义与注册使用符合OpenAI规范的JSON格式定义函数,包括函数名、参数、描述等,并在Assistant API中注册电商系统中的库存查询、物流信息跟踪函数调用与参数传递Assistant API根据用户输入和对话上下文,判断是否调用自定义函数,并准确传递相关参数智能办公中的日程安排查询、会议资源预订结果处理与回复。原创 2025-04-22 14:51:22 · 803 阅读 · 0 评论 -
OpenAI Assistant API(四):Run状态的轮询实战及Assistant API关键接口详解
在实际开发中,合理运用这些接口可构建功能强大的智能应用。例如,在开发智能客服系统时,可以创建Assistant对象并设置相应指令和模型,利用Thread管理与用户的对话线程,通过Messages记录对话内容,借助Run跟踪客服任务的执行状态,从而实现高效、智能的客户服务。后续可深入探讨其内置工具(代码解释器、文件搜索)、函数调用及流式输出等高级功能。代码解释器可在沙盒执行环境中编写和运行Python代码,生成图形图表,并处理不同数据和格式的文件,有助于解决复杂的代码和数学问题。原创 2025-04-22 14:49:41 · 903 阅读 · 0 评论 -
OpenAI Assistant API(三):Run运行时的状态转移机制
需求:为实时获取结果,需要监控Run的状态。实现思路:理论上,在Run进入queued状态后,不断监控status关键词。当状态达到completed时,打印最后结果,就能确保当前轮次的对话或任务已成功完成。OpenAI Assistant API提供了retrieve方法,可借助该方法及相关框架实现此需求。原创 2025-04-03 09:36:40 · 675 阅读 · 0 评论 -
OpenAI Assistant API(二):Thread、Messges及Run应用方法
(助手的ID)两个必需参数,在运行阶段实现Thread与Assistant的绑定,这种灵活性可使创建多个代理执行不同任务,执行具体线程对话时能灵活选择代理。此流程图展示了Assistant API的基本操作流程,从创建Thread开始,接着构建并添加Message到Thread,最后创建Run来执行大模型响应。Thread创建方式简单,通过。(用于运行的线程ID)和。构建并添加Message。原创 2025-04-03 09:26:37 · 1084 阅读 · 0 评论 -
OpenAI Assistant API(一):Assistant对象的创建方法
用户消息(user message)通过thread传递,run接收assistant和thread(包含用户问题),并依据特定思考方式或工具(如code interpreter代码解释器)生成模型响应,最后将响应追加回thread,完成一轮对话或任务。:assistant可以访问thread,thread通过存储message,并在对话时自动构建用户问题与大模型回答的对应存储机制,同时在后续对话中追加历史信息,让大模型拥有记忆功能。原创 2025-04-03 09:23:11 · 1035 阅读 · 0 评论 -
OpenAI Assistant API框架的整体介绍
OpenAI的影响力:OpenAI及其发布的产品和模型对大模型技术生态影响深远,GPT系列模型能力卓越,应用广泛。OpenAI率先推出Function Calling功能,引领行业发展,促使各模型公司纷纷优化自身模型。Assistance API的推出:在AI Agent概念引发广泛热议时,OpenAI推出Assistance API,旨在构建新一代智能体代理框架规范,为其GPT系列模型提供支持。OpenAI API的特性:OpenAI API处于持续迭代优化中,开发者论坛活跃度高。原创 2025-04-03 09:18:19 · 391 阅读 · 0 评论 -
基于ReAct Agent构建电商智能客服(附github代码)
它可以根据用户的输入,调用相应的工具(如查询产品信息、读取优惠政策、计算价格等),并最终给出回答。在文件的末尾,还包含了一个简单的测试代码,用于验证 OpenAI 模型在当前环境下的连通性。这段代码定义了一个 OllamaClient 类,用于与 Ollama 服务器进行交互,通过调用 Ollama 的 RESTful API 来生成聊天完成的响应。这段代码的主要功能是创建一个客户服务代理,根据用户输入的问题,使用指定的工具函数进行处理,并通过循环不断迭代,直到得到最终答案或达到最大迭代次数。原创 2025-04-03 09:14:12 · 711 阅读 · 0 评论 -
案例:从零复现ReAct Agent的完整流程(附代码)
ReAct Agent是一种用于提示大语言模型的框架,旨在协同大语言模型的推理和行动能力,使模型更强大、通用和可解释。它通过“思考 - 行动 - 观察 - 回答”的循环过程,让智能体能够动态地在产生想法和执行特定任务的行动之间交替,以解决复杂问题。该框架的灵感来源于人类执行任务时思维和行动相结合的方式,在自然语言处理和智能交互领域具有重要应用价值。原创 2025-04-03 09:10:27 · 957 阅读 · 0 评论 -
ReAct Agent框架的基础理论
ReAct Agent是用于提示大语言模型的框架,不同于前端的React框架,它是众多主流Agent开发架构变种的基础。该框架于2022年10月在论文《ReAct: Synergizing Reasoning and Acting in Language Models》中首次引入,并在2023年3月修订。其核心作用是协同大语言模型的推理和行动能力,使模型更强大、通用且可解释,让智能体在产生想法和执行特定任务的行动之间动态交替。相关参考网站ReAct官网。原创 2025-04-03 09:05:42 · 822 阅读 · 0 评论