基于LangChain构建一个简单的Agent代理

Langchain-agent入门笔记(1) 自整理langchain-agent入门笔记 阅读详情

摘要:本文说明如何基于LangChain构建一个简单的Agent代理;使用OpenAi模型和TAVILY搜索。

该Agent代理具备读取历史信息的能力。

在介绍之前首先说明如何在Pycharm中配置代理。这样就可以使用LangSmith来进行追踪和TAVILY来搜索。

Pycharm打开,依次点积File,Settings,Appearance&behavior、System settings、HTTP Proxy,选择Manual proxy configuration,选择HTTP,以我为例,我挂着clash小猫,打开电脑网络设置的代理。

将IP地址、端口、下面的文本框分别粘贴复制到刚才打开的Pycharm中的相应地址,点击check connection,输入谷歌网址进行测试。测试成功即可。

上面介绍完了如何在Pycharm中使用代理,下面进入正题。根据我当前的理解,agent的工作流程是

  • 接收输入:代理接收用户的输入消息,并开始处理。
  • 启动代理链:代理链启动,准备处理输入数据。
  • 调用工具或服务:根据需要,代理调用特定的工具或服务来执行部分任务。
  • 工具处理结束:工具完成任务并返回结果,代理接收工具输出。
  • 生成响应:代理根据输入数据和工具输出,逐步生成响应内容。
  • 代理链处理结束:代理链完成整个处理流程,生成最终响应。

第一步

导入相应的api创建chat对象以及搜索工具定义。

os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = ''
os.environ["TAVILY_API_KEY"] = ''
api_key = ""
api_base = ""
model = ChatOpenAI(model="gpt-3.5-turbo", api_key=api_key, base_url=api_base)

search = TavilySearchResults(max_results=2)
search_results = search.invoke("what is the weather in SF")
print(search_results)

tools = [search]
model_with_tools = model.bind_tools(tools)

引号中的内容都要自己去获取。定义model时直接在ChatOpenAI后的()添加model、api_key、base_url是我随便试试的竟然成功了,这是使用代理的方式连接openai。如果读者有实力可以直接定义openai的api_key,模型定义时只要传入model参数即可。search是定义的工具。将定义的工具和模型bind一下,因为我没有找到科大讯飞对应的api说明,星火大模型也没有bind方法,所以用openai来示例。

第二步

定义agent_executor

agent_executor = create_react_agent(model, tools)

以上面的定义为例,分别以返回的输出结果以Messagt的形式或者token的形式展示;

Streaming Messages如下

for chunk in agent_executor.stream(
    {"messages": [HumanMessage(content="whats the weather in sf?")]}
):
    print(chunk)
    print("----")
async def handle_agent_events():
    async for event in agent_executor.astream_events(
        {"messages": [HumanMessage(content="whats the weather in sf?")]}, version="v1"
    ):
        kind = event["event"]
        if kind == "on_chain_start":
            if event["name"] == "Agent":
                print(
                    f"Starting agent: {event['name']} with input: {event['data'].get('input')}"
                )
        elif kind == "on_chain_end":
            if event["name"] == "Agent":
                print()
                print("--")
                print(
                    f"Done agent: {event['name']} with output: {event['data'].get('output')['output']}"
                )
        if kind == "on_chat_model_stream":
            content = event["data"]["chunk"].content
            if content:
                print(content, end="|")
        elif kind == "on_tool_start":
            print("--")
            print(
                f"Starting tool: {event['name']} with inputs: {event['data'].get('input')}"
            )
        elif kind == "on_tool_end":
            print(f"Done tool: {event['name']}")
            print(f"Tool output was: {event['data'].get('output')}")
            print("--")

# 启动异步事件处理函数
asyncio.run(handle_agent_events())

Streaming tokens如上,.astream_events方法就是以token的形式返回,输出结果如下

这两个个例子就是按照我的理解进行agent对事件的处理来执行的。这两个例子都不会读取历史信息,按我之前的介绍需要加入cofig,在agent中还要新增内存memory。

第三步

添加内存和config

memory = SqliteSaver.from_conn_string(":memory:")

agent_executor = create_react_agent(model, tools, checkpointer=memory)

config = {"configurable": {"thread_id": "abc123"}}

分别执行下面两段代码可以说明。

for chunk in agent_executor.stream(
    {"messages": [HumanMessage(content="hi im bob!")]}, config
):
    print(chunk)
    print("----")
for chunk in agent_executor.stream(
    {"messages": [HumanMessage(content="whats my name?")]}, config
):
    print(chunk)
    print("----")

读者可以尝试新定义一个config,更改线程id,执行第二段代码会输出我不知道您的名字类似的话。

本篇文章说明了用Langchain构建一个简单的agent代理的过程,还增加了内存可以读取历史信息。

LLM之LangChain(二)| LangChain中的Agent 定义了两个工具,“搜索”和“查找”,其中“搜索”工具搜索文档,“查找”工具执行术语查找。上述代码从LangChain库导入必要的模块,包括代理和语言模型,它设置了一个具有特定代理配置的会话代理,称为“self-ask-with-search”。此代理是为在会话设置中使用而设计的,它结合了React框架来确定使用哪个工具,并利用内存来记住以前的对话交互。LangChain是一种功能强大的自动化工具,可用于各种任务,它提供了可用于创建agent的各种工具。然后,代码提供两个提示来演示与代理的一次性交互。 阅读详情

相关推荐

高效构建可决策代理—使用Gemini Functions Agent和LangChain

通过这篇文章,我们学习了如何使用Google Gemini函数调用和LangChain创建一个智能代理,并利用LangSmith工具进行跟踪和调试。LangChain官方文档Google Gemini API文档Tavily搜索引擎API指南。

dfvcbipanjr的博客 421

langchain-Agent代理详解

Langchain Agent详解

weixin_45626120的博客 1万+

使用 LangChain 和 LangGraph 构建 SQL 数据库交互Agent代理

从数据库中获取可用的表。根据问题确定相关的表。获取相关表的 DDL(数据定义语言)。基于问题和 DDL 信息生成查询语句。使用大型语言模型(LLM)检查查询语句中的常见错误。执行查询并返回结果。根据数据库引擎反馈的错误信息修正查询,直到查询成功。基于查询结果生成响应。:获取数据库中的可用表。:获取表的 DDL。:执行查询并返回结果或错误信息。手动定义@tool我们使用 LangGraph 来定义代理的工作流。首先调用获取可用表。根据问题和表信息选择相关表。

weixin_54688252的博客 1549

【LangChain系列6】【Agent模块详解】

LangChain给自身的定位是:用于开发由大语言模型支持的应用程序的框架。它的做法是:通过提供标准化且丰富的模块抽象,构建大语言模型的输入输出规范,利用其核心概念chains,灵活地连接整个应用开发流程。这里是LangChain系列的第六篇,主要介绍LangChain的Agent模块。

艰难困苦,玉汝于成。 4644

LangChain Agent实战:从零构建智能工具调用代理

在人工智能应用开发领域,Agent(智能代理)已成为连接大语言模型与外部工具的核心架构。其工作原理基于经典的“思考-行动-观察”循环范式,通过LLM作为规划中枢,协调各类专用工具执行具体任务,实现复杂问题的自动化解决。这种架构的技术价值在于将LLM的推理能力与外部工具的执行能力相结合,突破了纯文本生成的局限,使AI系统能够处理实时数据查询、数学计算、API调用等多样化场景。在实际工程实践中,开发者需要掌握工具定义、Agent类型选择、执行流程优化等关键技能。本文以LangChain框架为例,通过构建一个集成

weixin_29051193的博客 351

构建智能代理:使用LangChain AgentExecutor创建交互式多工具Agent

通过本文,我们了解了如何使用LangChain的AgentExecutor创建一个多工具智能代理。尽管AgentExecutor是一个很好的起点,但在需要更多灵活性时,可以参考LangGraph Agents或迁移指南。

hutyhjs的博客 812

LangChain 构建 AI 代理(Agent)

本文介绍了使用LangChain构建AI代理系统的技术方案。该系统通过集成Qwen大语言模型和Tavily搜索引擎工具,实现了智能判断和自动执行工具调用的能力。核心流程包括:模型初始化、工具绑定、自动判断逻辑、代理执行器创建以及完整查询处理。系统能够区分知识性问题和需要外部信息的问题,并根据不同类型自动选择直接回答或调用搜索引擎获取实时数据。关键代码展示了工具绑定、判断逻辑和代理执行器的实现,最终构建出一个具备"思考-行动-观察"能力的AI代理系统。

feffsdsfdsfd的博客 989

【ai】pycharm安装langchain 相关module

langchain-community

突围 1133

探索XML-Agent:如何利用Anthropic模型与LangChain构建智能代理

XML-Agent为开发者提供了一种独特的方式来通过XML语法进行智能决策。这不仅简化了自动化任务的实现,还增强了系统的灵活性。LangChain官方文档Anthropic API文档FastAPI文档。

adfyvatbia的博客 407

【五.LangChain技术与应用】【26.LangChain Agent基础应用(上):智能代理的构建】

想象一下,你有个私人管家:你跟他说“帮我查查明天北京的天气,然后推荐个适合穿风衣的餐厅”,管家不会傻乎乎地只查天气或只找餐厅,而是先拆解任务、调用工具(查天气API、搜餐厅评分)、综合结果再回答你——这就是**Agent(智能代理)**的核心逻辑。它不像传统程序那样写死流程,而是靠大模型(比如GPT-4)当大脑,根据你的指令和当前环境,动态选择工具(Tools)完成任务。咱们以“旅游助手”为例,搞个能查天气、搜景点、推荐行程的Agent。用OpenAI的模型当大脑,组合工具和记忆模块。

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 279

SAP物料主数据表结构全解析:ABAP开发与MM模块必知必会

本文深入解析SAP物料主数据的核心表结构,涵盖MARA、MAKT、MARC、MARD及MVKE等关键表。详细阐述了物料主数据在ABAP开发和MM模块中的存储逻辑与关联关系,帮助开发者和顾问高效处理数据查询、增强功能及业务故障排查,是掌握SAP物料管理基础的必读指南。

weixin_29216957的博客 375

LangChain Open Agent Platform — 无代码构建智能代理的开源平台

随着人工智能技术的快速发展,智能代理(Agent)在自动化任务处理、数据分析和用户交互等领域展现出巨大潜力。然而,构建和部署智能代理通常需要深厚的技术背景和复杂的代码实现,这对非技术用户或快速原型开发构成了门槛。

Sinokap的博客 1047

Ubuntu+Dify实战:如何让大模型知识库完美支持图片召回(附避坑指南)

本文详细介绍了在Ubuntu系统上部署Dify平台,并实现大模型知识库图片召回功能的完整实战方案。通过解析Dify处理图片的底层逻辑,重点讲解了配置Nginx代理服务器将本地图片路径转换为可公开访问URL的核心工程步骤,并提供了文档预处理、环境变量配置以及父子分段策略等高级技巧,帮助开发者构建图文并茂的AI应用,有效提升知识库的丰富性和用户体验。

c7d8e的博客 442

LangChain实战教程:从0到1构建RAG知识库与AI Agent智能代理

大模型应用开发正从单一对话走向企业级落地,RAG(检索增强生成)与AI Agent(智能代理)是其中两条核心技术路径。RAG通过文档加载、文本切分、向量化检索与生成链路,让大模型基于私有知识回答;AI Agent则通过工具调用与流程编排,自主完成多步任务。二者结合,可实现企业知识库问答、客服辅助、数据分析及研发自动化等典型场景。LangChain作为主流开发框架,提供了从链式组装到图编排的完整组件体系。本文基于一套36讲实战教程,系统讲解从环境准备、向量库搭建、检索问答链路,到Agent工具开发、LangG

weixin_33957648的博客 320

保姆级教程:用Zemax 18.9复现单模光纤耦合仿真(附康宁SMF-28e参数)

本文提供了一份详细的Zemax 18.9单模光纤耦合仿真教程,以康宁SMF-28e为例,涵盖从软件设置、材料参数输入到系统构建和优化的全流程。通过光束耦合分析和物理光学传播(POP)技术,帮助用户准确模拟光纤耦合效率,并解决常见问题,适用于光学设计初学者和专业人士。

weixin_27330481的博客 307

华为OD机试真题 新系统【查找能被整除的最大整数】

华为OD新系统机试真题【查找能被整除的最大整数】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【查找能被整除的最大整数】

qq_45776114的博客 667

LangChain-v0.2 Build an Agent 构建代理

语言模型本身不能采取行动,它们只是输出文本。LangChain的一个重要用例是创建代理。代理是使用LLM作为推理引擎来确定要采取哪些行动,以及传递哪些输入的系统。执行操作后,可以将结果反馈到LLM中,以确定是否需要更多操作,或者是否可以完成。本文我们将构建一个可以与搜索引擎交互的代理。您将能够向该代理提问,观看它调用搜索工具,并与之进行对话。

sziitjin的博客 1421

利用requests库下载bilibili字幕文件

文章目录1. 前言2. 程序下载大法好2.1 挖掘思路2.2 核心知识点2.3 汇总代码 1. 前言   之前的博客介绍了使用工具下载B站视频,但美中不足的是无法下载字幕。为了提高效率,将下载字幕的工作用程序自动化处理。 2. 程序下载大法好 2.1 挖掘思路   在谷歌浏览器中按下F12,打开谷歌开发者工具。搜索subtitle,则会得到一个json文件,如下图所示:   在网页中空白位置点击查看网页源代码,然后通过搜索(Ctrl+f)查找subtitle,则会发现在subtitle_url中包含了对应

herosunly的博客 4万+

如何构建一个简单的AI Agent(极简指南)

让我们开始深入了解吧!- 设置环境:安装 Python,然后用 pip 安装所选框架(如 pip install langchain )。- 获取 API 密钥:对于人工智能模型(如 OpenAI),注册并获取 API 密钥。定义:人工智能代理是一种感知环境并采取行动以实现目标(如聊天、任务自动化)的程序。- 连接模型:关联模型,如 OpenAI 的 GPT(需 API 密钥)。- 定义工具:添加代理可使用的功能,如网络搜索或记忆功能。- 外部工具:集成 API(如天气代理的天气 API )。

m0_46568584的博客 1207

【华为OD技术面试真题 - 技术面】- 测试面试题(1)

专栏:华为OD面试真题精选 目录: 2024华为OD面试手撕代码真题目录以及八股文真题目录黑盒测试:白盒测试:基本功能验证:边界条件测试:空白输入测试:特殊字符和格式测试:响应时间测试:压力测试:针对在不同系统和设备上测试聊天窗口功能,以及网络正常的前置条件,我们可以增加以下测试用例:系统和设备:PC端测试:移动端测试:功能验证:前置条件:网络性能影响测试:Postman:SoapUI:JMeter:Rest-Assured:Tricentis Tosca:ReadyAPI:CI/CD工具集成:测试管理工

算法大师! 3682

皮肤病识别 - 使用DenseNet或EfficientNet模型在ISIC数据集上进行皮肤病识别任务

在本篇博客中,我们探讨了如何使用 DenseNet 和 EfficientNet 模型在 ISIC 数据集上进行皮肤病识别任务。我们加载了数据集,并进行了预处理。然后我们使用 Keras 构建了两个不同的模型,并训练和评估了它们。最后,我们使用训练好的模型对新的皮肤病图像进行了预测。

斌擎科技 1298

Langchain agent窥探

在大模型时代,大模型agent是一个很火的概念,它是一种基于大语言模型(如 GPT、LLaMA 等)构建的智能代理系统,能够通过自然语言理解和生成能力,结合工具(Tools)或外部知识,完成复杂的任务。比如前两天爆火的manus,就是一种agent。本文基于langchain构建一款简单的agent,窥探其执行过程。import os@tool想要执行什么任务,需要根据问题,构建一个prompt,利于大模型正确回答,在这个例子中,任务很简单,就是让agent根据问题调用函数计算1+1的值。AI: 2。

sinat_28694519的博客 456

2023年GESP12月认证C++五级真题解析

例如,如果a=4,那么4是最⼩的幸运数,而1不是,但我们可以连续对1做3次+1操作,使其变为4,所以我们可以说,1幸运化后的结果是 4。【题目大意】给一个完全平方数的标准,推导出哪些是超级幸运数,然后判断N个数字中,哪些是超级幸运数,是的输出“lucky”,不是的输出离该数字最近的比它大的数字。前一个数字,下标是j的数字是偶数,后面的数字下标是j+1的是奇数,按照要求,偶数在奇数的后面,要交换。A函数时间复杂度是O(n/2),B函数算法是O(sqrt(n)),大部分情况后者是优的,值更小。

lan_in的博客 1003

LangChain之Agent代理

首先需要创建想要使用的工具。Tavily (用于在线搜索)创建的本地索引的检索器。

2401_85378759的博客 1178

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

langchain实战-基于ollama+deepseek实现agent代理

指导基于langchain开发AI代理工具

AI agent 703

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【智能体开发】《LangChain核心技术与LLM项目实践》_73.[第8章 Agent系统] 自定义LLM代理:从零构建你的Agent

**摘要:** 本文深入解析LangChain Agent的核心架构与实现原理,指导开发者从零构建自定义LLM代理。主要内容包括: 1. **核心概念**:剖析Agent与Chain的本质区别,详解ReAct(推理+行动)范式的运作机制 2. **架构拆解**:分析三大核心组件(工具集、提示模板、输出解析器)与执行引擎的协同工作流程 3. **实战演示**:提供从零编写Minimal Agent的代码示例,涵盖自定义工具、错误处理和流式输出 4. **优化技巧**:分享提示工程、容错机制设计等进阶调优方法

515

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: 使用LangChain构建一个简单的chatbot
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值