从 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/8/10 21:24:46 阅读更多 →
计算机毕业设计之高校“智慧党建”管理系统的设计与实现

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

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

2026/8/10 21:24:46 阅读更多 →
计算机毕业设计之高考志愿推荐系统的设计与实现

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

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

2026/8/10 21:24:46 阅读更多 →

最新新闻

ImpromptuInterface实战案例:如何优雅地将ExpandoObject转换为强类型接口

ImpromptuInterface实战案例:如何优雅地将ExpandoObject转换为强类型接口

ImpromptuInterface实战案例:如何优雅地将ExpandoObject转换为强类型接口 【免费下载链接】impromptu-interface Static interface to dynamic implementation (duck casting). Uses the DLR combined with Reflect.Emit. 项目地址: https://gitcode.com/gh_mirr…

2026/8/10 22:09:04 阅读更多 →
3分钟掌握Window Resizer:彻底解决Windows窗口大小调整难题的终极方案

3分钟掌握Window Resizer:彻底解决Windows窗口大小调整难题的终极方案

3分钟掌握Window Resizer:彻底解决Windows窗口大小调整难题的终极方案 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 你是否曾为那些固执的Windows窗口而烦恼&#xf…

2026/8/10 22:09:04 阅读更多 →
Azure DevOps CLI Extension核心功能解析:从项目创建到权限管理的完整指南

Azure DevOps CLI Extension核心功能解析:从项目创建到权限管理的完整指南

Azure DevOps CLI Extension核心功能解析:从项目创建到权限管理的完整指南 【免费下载链接】azure-devops-cli-extension Azure DevOps Extension for Azure CLI 项目地址: https://gitcode.com/gh_mirrors/az/azure-devops-cli-extension Azure DevOps CLI …

2026/8/10 22:09:04 阅读更多 →
iOS推送注册进阶:Orbiter的设备令牌管理与静默通知配置指南

iOS推送注册进阶:Orbiter的设备令牌管理与静默通知配置指南

iOS推送注册进阶:Orbiter的设备令牌管理与静默通知配置指南 【免费下载链接】Orbiter Push Notification Registration for iOS 项目地址: https://gitcode.com/gh_mirrors/orb/Orbiter Orbiter是一款专注于iOS推送通知注册的轻量级框架,旨在帮助…

2026/8/10 22:09:04 阅读更多 →
OpenCensus-Java未来展望:新特性与社区发展路线图

OpenCensus-Java未来展望:新特性与社区发展路线图

OpenCensus-Java未来展望:新特性与社区发展路线图 【免费下载链接】opencensus-java A stats collection and distributed tracing framework 项目地址: https://gitcode.com/gh_mirrors/op/opencensus-java OpenCensus-Java作为一款功能强大的统计收集和分布…

2026/8/10 22:09:04 阅读更多 →
【Multisim仿真两片CD4532级联成一个16线-4线优先编码器】2024-11-15

【Multisim仿真两片CD4532级联成一个16线-4线优先编码器】2024-11-15

缘由Multisim仿真两片CD4532级联成一个16线-4线优先编码器_其他-CSDN问答 用两片CD4532级联成一个16线-4线优先编码器,但是如图设计不通过。预期输出是随着开关变化显示不同数字。 可参我仿真运行图: 级联和非级联 摩訶般若波羅蜜當得真知識品第七十三…

2026/8/10 22:08:03 阅读更多 →

日新闻

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南 【免费下载链接】graphql-css A blazing fast CSS-in-GQL™ library. 项目地址: https://gitcode.com/gh_mirrors/gr/graphql-css GraphQL-CSS是一个基于GraphQL的CSS-in-GQL™库&#xff0…

2026/8/10 0:00:02 阅读更多 →
告别语言障碍:KISS Translator 双语翻译插件终极指南

告别语言障碍:KISS Translator 双语翻译插件终极指南

告别语言障碍:KISS Translator 双语翻译插件终极指南 【免费下载链接】kiss-translator A simple, open source bilingual translation extension & Greasemonkey script (一个简约、开源的 双语对照翻译扩展 & 油猴脚本) 项目地址: https://gitcode.com/…

2026/8/10 0:00:02 阅读更多 →
BepInEx配置管理器:游戏插件配置的终极可视化解决方案

BepInEx配置管理器:游戏插件配置的终极可视化解决方案

BepInEx配置管理器:游戏插件配置的终极可视化解决方案 【免费下载链接】BepInEx.ConfigurationManager Plugin configuration manager for BepInEx 项目地址: https://gitcode.com/gh_mirrors/be/BepInEx.ConfigurationManager 你是否曾经因为游戏插件的复杂…

2026/8/10 0:00:02 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/10 1:05:29 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/10 1:05:29 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/10 1:05:29 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/10 17:07:33 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/10 1:05:29 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/10 17:07:33 阅读更多 →