从 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 干点什么活评论区聊聊说不定能一起想些有意思的用法。

相关新闻

最新新闻

浏览器插件开发实战:B站隐私模式实现原理与风控规避指南

浏览器插件开发实战:B站隐私模式实现原理与风控规避指南

你是不是也遇到过这种情况:在B站(哔哩哔哩)上搜索一个冷门技术问题,或者观看一些特定领域的视频,结果接下来几天,你的首页推荐、广告推送,甚至其他平台的广告,都开始“精准”地围绕这…

2026/8/11 2:34:28
数学建模AI智能体:从本地部署到全流程应用实践指南

数学建模AI智能体:从本地部署到全流程应用实践指南

这次我们来看一个面向数学建模和科研场景的智能体项目。它不是一个单一的模型,而是一个整合了多种AI能力的工具链,旨在辅助研究人员和学生完成从问题分析、文献检索、代码生成、论文撰写到结果可视化的全流程工作。对于数学建模竞赛、课程作业或需要快速…

2026/8/11 2:34:28
如何实现淘宝自动化上架自动化?底层架构降维碾压,把店群做成工业流水线

如何实现淘宝自动化上架自动化?底层架构降维碾压,把店群做成工业流水线

如何实现淘宝自动化上架自动化?底层架构降维碾压,把店群做成工业流水线 做店群的老板都知道,淘宝的自动化上架,是店群运营中最耗人力也最容易出错的环节。 手动上架一个商品从填写标题、上传主图、设置SKU、填写详情到发布&…

2026/8/11 2:34:28
如何实现淘宝极速自动改价自动化?接口直取+DOM穿透,双层突破平台反爬体系

如何实现淘宝极速自动改价自动化?接口直取+DOM穿透,双层突破平台反爬体系

如何实现淘宝极速自动改价自动化?接口直取DOM穿透,双层突破平台反爬体系 干店群想赚钱,核心就两个字——效率。淘宝的极速自动改价,是店群运营中最耗人力也最容易出错的环节。 电商价格战是分钟级的。竞品降价了你5分钟内不跟&a…

2026/8/11 2:34:28
如何实现淘宝极速自动改价自动化?不抢焦不抢屏,后台跑百店你前台打游戏

如何实现淘宝极速自动改价自动化?不抢焦不抢屏,后台跑百店你前台打游戏

如何实现淘宝极速自动改价自动化?不抢焦不抢屏,后台跑百店你前台打游戏 做电商这么多年,最大的感悟就是:淘宝的极速自动改价,是店群运营中最耗人力也最容易出错的环节。 电商价格战是分钟级的。竞品降价了你5分钟内不…

2026/8/11 2:34:28
从Excel到亿级宽表:数据接入治理为什么是规模推广的‘第一公里‘

从Excel到亿级宽表:数据接入治理为什么是规模推广的‘第一公里‘

导语 很多企业把 BI 规模推广的卡点,归结到"可视化不够酷"或"分析模型不好用",但真正在项目里跑过三个月的团队会知道:问题往往出在最底层——数据从 Excel 散落各处的状态,被接进一个能承载亿级宽表的统一分…

2026/8/11 2:29:27