从 0 搭一个 AI Agent:用 LangChain + MCP 让大模型自己调用工具完成任务
平时用大模型我们是一问一答它只动嘴不动手。但有些活其实可以让它自己去找资料、调接口、跑命令比如查一下杭州明后天的天气再帮我订个提醒。这种能自己动手干活的模型就叫 Agent智能体。这篇我就从零搭一个最小可用的 Agent让大模型自己去调用工具代码不多都能跑。先搞明白 Agent 到底在干嘛Agent 和普通聊天最大的区别是它多了个循环。普通对话你问 → 它答 → 结束。Agent你给个任务 → 大模型决定我要用哪个工具 → 工具执行 → 结果反馈给大模型 → 大模型再看下一步 → 直到任务完成。所以 Agent 的核心就三样一个能思考的大模型它负责决定下一步干啥一堆工具实际上是函数比如查天气、算个东西、读文件一个循环机制让它能反复思考→行动→看结果我们这里用 LangChain 的 Agent 框架把这些串起来工具用 MCP 来接入。为什么提 MCP以前接工具很麻烦每个工具都要自己写一套调用的代码。MCPModel Context Protocol是个统一标准工具按这个协议暴露出来大模型就能通用地调用不用每家写一套。现在很多现成的工具服务都支持 MCP接起来省事很多。装环境pipinstalllangchain langchain-openai langchain-community mcp openai代码1. 接大模型importosfromlangchain_openaiimportChatOpenAI os.environ[DEEPSEEK_API_KEY]sk-你的keyllmChatOpenAI(modeldeepseek-chat,api_keyos.environ[DEEPSEEK_API_KEY],base_urlhttps://api.deepseek.com/v1,temperature0.2,)2. 定义两个工具工具其实就是普通函数加个装饰器把它描述给大模型就行。fromlangchain.toolsimporttoolfromdatetimeimportdatetimetooldefget_current_time()-str:返回当前的日期和时间。returndatetime.now().strftime(%Y-%m-%d %H:%M:%S)tooldefadd_numbers(a:float,b:float)-float:把两个数字加起来。returnab tools[get_current_time,add_numbers]大模型就靠函数名和 docstring 来理解这个工具能干啥、怎么用所以 docstring 写得清楚点很重要别惜字。3. 创建 Agentfromlangchain.agentsimportcreate_tool_calling_agent,AgentExecutorfromlangchain_core.promptsimportChatPromptTemplate promptChatPromptTemplate.from_messages([(system,你是一个乐于助人的助手会调用工具来完成任务。),(placeholder,{chat_history}),(human,{input}),(placeholder,{agent_scratchpad}),])agentcreate_tool_calling_agent(llm,tools,prompt)executorAgentExecutor(agentagent,toolstools,verboseTrue)4. 跑起来# 问一个需要工具的问题responseexecutor.invoke({input:现在几点了顺便帮我算一下 123 456 等于多少。})print(response[output])verboseTrue 会打印出 Agent 的思考过程你能看到它先调了 get_current_time又调了 add_numbers最后才组织答案。这个过程看着还挺有意思。踩过的坑坑现象怎么解函数没写 docstring大模型根本不知道有这个工具每个工具都写清楚干啥 参数是啥工具返回格式不统一大模型解析结果出错尽量统一返回字符串别混着返回 dict循环不设上限复杂任务卡死、一直转给 AgentExecutor 加 max_iterations温度太高Agent 决策忽左忽右决策任务温度压到 0.2 以下循环上限这个我专门提一句不加的话遇到那种绕弯子的任务Agent 可能陷入死循环一直调工具很费 token。加个限制executorAgentExecutor(agentagent,toolstools,verboseTrue,max_iterations5)再进一步用 MCP 接现成工具如果不想自己写工具想直接用社区现成的可以这样接一个 MCP 服务器示例是接一个文件系统工具fromlangchain_mcp_adaptersimportload_mcp_server# 假设本地跑了个 MCP 服务地址如下mcp_toolsload_mcp_server(https://example.com/mcp,my-tool)tools[get_current_time,add_numbers]mcp_tools这样就能把别的团队已经做好的工具直接接进来不用重复造轮子。收个尾最小 Agent 其实就这么点东西一个会思考的模型 几个工具 一个循环。难的是把工具描述写清楚、把循环控制好。先把上面这个跑通再慢慢加复杂工具方向就不会错。你打算用 Agent 干点什么活评论区聊聊说不定能一起想些有意思的用法。

相关新闻

米利珠单抗Mirikizumab治疗溃疡性结肠炎,每季度一针让肠道重获安宁

米利珠单抗Mirikizumab治疗溃疡性结肠炎,每季度一针让肠道重获安宁

溃疡性结肠炎是一种慢性复发性肠道炎症,患者的结肠和直肠黏膜持续发炎、糜烂,表现为反复腹泻、黏液脓血便、腹痛和里急后重。中重度患者每天腹泻可达10次以上,夜间也要频繁起床上厕所,生活质量严重受损。传统治疗依赖氨基水杨酸、…

2026/10/7 10:27:11 阅读更多 →
计算机毕业设计之高校“智慧党建”管理系统的设计与实现

计算机毕业设计之高校“智慧党建”管理系统的设计与实现

二十一世纪我们的社会进入了信息时代,信息管理系统的建立,大大提高了人们信息化水平。传统的管理方式对时间、地点的限制太多,而在线管理系统刚好能满足这些需求,在线管理系统突破了传统管理方式的局限性。于是本文针对这一需求设…

2026/10/7 23:39:51 阅读更多 →
计算机毕业设计之高考志愿推荐系统的设计与实现

计算机毕业设计之高考志愿推荐系统的设计与实现

随着信息时代的来临,过去的传统管理方式缺点逐渐暴露,对过去的传统管理方式的缺点进行分析,采取计算机方式构建高考志愿推荐系统。本文通过课题背景、课题目的及意义相关技术,提出了一种专业信息、院校简介、常见问题、预测分数线…

2026/10/10 6:09:56 阅读更多 →

最新新闻

Python语音识别实战:从MFCC特征提取到CTC训练与避坑指南

Python语音识别实战:从MFCC特征提取到CTC训练与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 6:45:56 阅读更多 →
从单Agent到多Agent集群:7x24小时稳定运行的架构设计与实践

从单Agent到多Agent集群:7x24小时稳定运行的架构设计与实践

半夜两点二十三分,我的单 Agent 自动化流程终于把自己玩死了:上下文窗口撑爆之后,它开始对着同一个任务反复"确认",把状态标记改得乱七八糟,任务队列里还堆着两百多条没处理的数据。那一刻我意识到&#xff…

2026/10/12 6:45:56 阅读更多 →
旗帜图片爬虫实战:格式校验、感知哈希去重与增量更新指南

旗帜图片爬虫实战:格式校验、感知哈希去重与增量更新指南

简介:这是一份面向Python爬虫入门学习者与数据分析初学者的实战源码包,以抓取东京奥运会奖牌国家及地区旗帜图片为案例,演示从网页解析、图片下载到数据存储的完整流程。压缩包内含两个文件——一个HTML文件和一个Jupyter Notebook文件&#…

2026/10/12 6:45:56 阅读更多 →
双 11 Token 预算红线硬限制:当单日模型消耗达到 80% 阈值时的自适应限流

双 11 Token 预算红线硬限制:当单日模型消耗达到 80% 阈值时的自适应限流

去年大促预售第一天中午,财务总监踩着高跟鞋直接冲进了我们技术架构组,脸色铁青。她指着大模型供应商后台的账单明细:公司账户里预先充值的 15 万元 Token 额度,从凌晨 0 点到中午 11 点半,短短不到半天时间被烧掉了 1…

2026/10/12 6:45:56 阅读更多 →
大模型私有化部署:从硬件选型到安全合规的全栈生产实践

大模型私有化部署:从硬件选型到安全合规的全栈生产实践

1. 私有化部署不是“把模型拷贝过去”,而是重建一套生产级推理基础设施很多人第一次听说“大模型私有化部署”,脑子里浮现的画面是:下载一个GGUF格式的模型文件,丢进某个本地GUI工具里点几下,然后弹出个聊天窗口——事…

2026/10/12 6:45:56 阅读更多 →
开源大模型私有化部署实战:算力底座、显存规划与推理框架选型

开源大模型私有化部署实战:算力底座、显存规划与推理框架选型

开源模型私有化部署从来不是一件“装个软件就能跑”的事。我接手过不少内部演示和实验项目,最深的体会是:模型本身的参数再漂亮,落到自己的机器上、接到业务流程里,才是真正见功夫的地方。这段时间圈子里对开源模型的讨论很多&…

2026/10/12 6:44:55 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →