用10行代码打造AI Agent:新手小白也能快速上手大模型开发(收藏版)
用10行代码打造AI Agent新手小白也能快速上手大模型开发收藏版本文对比了传统AI开发与LangChain的效率差异通过定义工具、配置系统提示和结构化输出等核心组件展示了如何用极简代码实现具备记忆和多工具调用能力的Agent。文章以“开咖啡店”为喻生动解释了创建Agent的5个步骤并提供了完整示例代码。此外还详细解析了系统提示、工具、结构化输出和记忆等关键组件并探讨了客服助手、个人助手等不同业务场景的Agent应用。本文适合初学者快速入门大模型应用开发助你轻松掌握AI开发新技能。简单来说快速开始只需 5 步定义工具 → 创建 Agent → 配置参数 → 运行测试 → 扩展功能。就像做一道菜准备食材工具→ 点火创建 Agent→ 调味配置→ 翻炒运行→ 摆盘扩展。 本节目标读完本节你将能够回答这些问题❓ 如何用 10 行代码创建一个会查天气的 Agent❓ 系统提示System Prompt有什么用如何写一个好的系统提示❓ 什么是结构化输出为什么要用它❓ 如何让 Agent 记住之前的对话❓ 真实世界的 Agent 需要哪些组件核心痛点与解决方案痛点AI 开发的起步困难症痛点传统做法有多痛苦不知从何开始面对一堆文档无从下手看了一天文档一行代码没写功能太简单只能调用模型不会用工具说是 AI 助手其实就是个聊天机器人难以扩展想加个功能要重写一半代码越写越复杂最后成了代码屎山没有记忆聊完就忘无法持续对话用户“我刚才问什么来着”传统做法 vs LangChain 效率对比举个例子 你想做一个能查天气的 AI 助手。传统做法1. **注册天气 API 账号** 2. **写天气 API 调用代码** 3. **写 OpenAI 调用代码** 4. **写逻辑用户问天气就调用天气 API** 5. **测试、调试、修复 bug** 6. **想加记忆功能重写一半代码**解决LangChain 一键生成import { createAgent, tool } fromlangchain; import * as z fromzod; // 1. 定义天气工具 const getWeather tool( (input) Its always sunny in ${input.city}!, { name: get_weather, description: Get the weather for a given city, schema: z.object({ city: z.string() }), } ); // 2. 创建 Agent const agent createAgent({ model: claude-sonnet-4-5-20250929, tools: [getWeather], }); // 3. 运行测试 const result await agent.invoke({ messages: [{ role: user, content: 东京天气怎么样 }], }); console.log(result.messages.at(-1)?.content); // Output: Its always sunny in Tokyo!效果对比指标传统做法LangChain代码量50 行10 行开发时间半天10 分钟功能完整度基础完整工具 推理 记忆可扩展性差好加工具就行生活化类比创建 Agent 就像开咖啡店创建 Agent 就像开咖啡店步骤类比LangChain 对应准备工具咖啡机、磨豆机、冰箱tool()定义工具设定规则咖啡店规则“微笑服务”systemPrompt设定行为配置原料咖啡豆、牛奶、糖model配置模型记住常客会员卡、偏好记录checkpointer添加记忆规范输出统一杯型、标签responseFormat结构化输出开始营业迎接客人invoke()运行 Agent步骤一创建基础 Agent10 行代码创建基础 Agent 流程完整代码import { createAgent, tool } fromlangchain; import * as z fromzod; // 1. 定义天气工具 const getWeather tool( (input) Its always sunny in ${input.city}!, { name: get_weather, description: Get the weather for a given city, schema: z.object({ city: z.string() }), } ); // 2. 创建 Agent const agent createAgent({ model: claude-sonnet-4-5-20250929, tools: [getWeather], }); // 3. 运行测试 const result await agent.invoke({ messages: [{ role: user, content: 东京天气怎么样 }], }); // 4. 查看结果 console.log(result.messages.at(-1)?.content); // Output: Its always sunny in Tokyo!代码解析行号代码人话解读5-14tool()定义“我创建了一个叫 get_weather 的工具能查指定城市的天气”6工具逻辑“工具被调用时返回一个固定的天气信息”8-12工具配置“告诉 Agent这个工具叫什么、能做什么、需要什么参数”17-20createAgent()“创建一个 AI 助手用 Claude 模型会使用天气工具”23-26invoke()“启动任务用户问东京天气Agent 会自己决定调用什么工具”29查看结果“从返回的消息中找到最后一条那是 Agent 的回答”❝ 人话解读tool()函数就像注册一个技能告诉 Agent 它会什么createAgent()就像雇佣一个员工给他技能和大脑invoke()就像给员工派任务他会自己想办法完成步骤二创建真实世界的 Agent真实世界 Agent 架构真实世界的 Agent 需要什么组件作用为什么需要系统提示设定角色和行为让 Agent 知道自己是谁该怎么说话多个工具扩展能力一个工具不够用需要多个工具配合模型配置控制输出调整温度、超时等参数让输出更稳定结构化输出格式统一让 Agent 返回固定格式的数据方便后续处理记忆持续对话记住之前的对话像人类一样聊天完整示例天气预报助手会说双关语import { createAgent, tool } fromlangchain; import { MemorySaver } fromlangchain/langgraph; import * as z fromzod; // 1. 定义系统提示 const systemPrompt You are an expert weather forecaster, who speaks in puns. You have access to two tools: - get_weather_for_location: use this to get the weather for a specific location - get_user_location: use this to get the users location If a user asks you for the weather, make sure you know the location. If you can tell from the question that they mean wherever they are, use the get_user_location tool to find their location.; // 2. 定义工具 const getWeather tool( ({ city }) Its always sunny in ${city}!, { name: get_weather_for_location, description: Get the weather for a specific location, schema: z.object({ city: z.string() }), } ); const getUserLocation tool( (_, config) { const { user_id } config.context; return user_id 1 ? Florida : SF; }, { name: get_user_location, description: Get the users current location, schema: z.object({}), } ); // 3. 定义结构化输出格式 const responseFormat z.object({ punny_response: z.string(), weather_conditions: z.string().optional(), }); // 4. 设置记忆 const checkpointer new MemorySaver(); // 5. 创建 Agent const agent createAgent({ model: claude-sonnet-4-5-20250929, systemPrompt, tools: [getUserLocation, getWeather], responseFormat, checkpointer, }); // 6. 运行 Agent const config { configurable: { thread_id: 1 }, context: { user_id: 1 }, }; // 第一次提问问外面的天气 const response1 await agent.invoke( { messages: [{ role: user, content: 外面天气怎么样 }] }, config ); console.log(First response:, response1.structuredResponse); // 第二次提问继续对话 const response2 await agent.invoke( { messages: [{ role: user, content: 谢谢 }] }, config ); console.log(Second response:, response2.structuredResponse);预期输出// 第一次回答 First response: { punny_response: Florida is still having a sun-derful day! The sunshine is playing ray-dio hits all day long!, weather_conditions: Its always sunny in Florida! } // 第二次回答 Second response: { punny_response: Youre thund-erfully welcome! Its always a breeze to help you stay current with the weather., weather_conditions: undefined }❝ 人话解读系统提示让 Agent 成为会说双关语的天气预报员get_user_location工具让 Agent 知道用户在哪里结构化输出让 Agent 返回固定格式的数据checkpointer让 Agent 记住之前的对话核心组件详解1. 系统提示System Prompt什么是系统提示 系统提示是给 Agent 的身份说明书告诉它你是谁角色你该怎么说话风格你有什么工具能力你该怎么使用工具规则好的系统提示的特点特点示例为什么重要具体“你是会说双关语的天气预报员”让 Agent 知道自己的定位可操作“如果不知道位置使用 get_user_location 工具”给 Agent 明确的行动指南简洁控制在 100-200 字避免占用太多上下文空间个性化“说话要幽默多用天气相关的双关语”让 Agent 有独特的人格2. 工具Tools工具的结构const myTool tool( (input, config) { // 工具逻辑接收输入返回结果 return工具执行结果; }, { name: tool_name, // 工具名字 description: 工具描述, // Agent 靠这个决定何时使用 schema: z.object({ // 参数验证 param1: z.string(), param2: z.number(), }), } );工具的参数参数类型说明例子inputobject工具的输入参数{ city: Tokyo }configobject上下文信息{ context: { user_id: 1 } }3. 结构化输出Response Format什么是结构化输出 让 Agent 返回固定格式的数据而不是自由文本。为什么要用✅ 格式统一方便后续处理✅ 类型安全减少错误✅ 前端展示更方便使用方法const responseFormat z.object({ name: z.string(), // 必需字段 age: z.number().optional(), // 可选字段 tags: z.array(z.string()), // 数组 }); const agent createAgent({ // ... responseFormat, // 告诉 Agent 返回这个格式 }); // 使用时 const result await agent.invoke({/* ... */}); console.log(result.structuredResponse); // 直接得到结构化对象4. 记忆Memory什么是记忆 让 Agent 记住之前的对话保持上下文连续性。如何使用import { MemorySaver } fromlangchain/langgraph; // 创建记忆存储 const checkpointer new MemorySaver(); const agent createAgent({ // ... checkpointer, // 添加记忆 }); // 运行时需要 thread_id const config { configurable: { thread_id: conversation_1 }, // 每个对话一个 ID }; // 第一次对话 await agent.invoke({/* ... */}, config); // 第二次对话用同一个 thread_id await agent.invoke({/* ... */}, config);❝⚠️ 注意MemorySaver是内存存储重启后会丢失。生产环境要用持久化存储比如数据库。业务场景不同类型的快速应用Agent 业务场景应用场景工具需求系统提示特色功能客服助手查询订单、查物流、处理退款“你是专业客服语气友好解决问题”结构化输出统一回复格式个人助手查天气、定闹钟、发邮件“你是贴心助手记住用户偏好”记忆功能记住用户习惯学习助手搜索资料、解答问题、生成练习“你是耐心老师讲解详细鼓励学生”多工具协作搜索 总结营销助手生成文案、分析数据、找客户“你是创意营销专家善于抓痛点”结构化输出营销文案模板代码助手搜索文档、生成代码、调试错误“你是资深程序员代码简洁注释清晰”工具集成查 API 文档示例客服助手工具query_order查询订单状态track_shipment查询物流信息process_refund处理退款系统提示You are a helpful customer service agent. Be friendly and patient. Always try to solve the customers problem. If you need order information, use the query_order tool. If you need shipping information, use the track_shipment tool. If the customer wants a refund, use the process_refund tool.使用const result await agent.invoke({ messages: [{ role: user, content: 我的订单 #12345 发货了吗 }] });常见问题与解决方案问题原因解决方案Agent 不知道用工具工具描述不够清晰写更详细的description说明什么时候用Agent 回答格式不对没有使用结构化输出添加responseFormatAgent 记不住对话没有添加记忆使用checkpointer和thread_idAgent 说话风格不对系统提示不够具体写更详细的系统提示指定风格运行速度慢模型参数设置不当调整temperature、timeout等参数API Key 错误环境变量没配置检查环境变量是否正确设置❝ 调试技巧先从简单的工具开始逐步添加功能用console.log打印中间结果检查 Agent 的思考过程总结对比表功能基础 Agent真实世界 Agent区别工具数量1 个多个能力更全面系统提示无详细行为更规范模型配置默认自定义输出更稳定结构化输出无有格式更统一记忆无有能持续对话代码量10 行50 行功能更完整适用场景快速测试生产环境更专业可靠核心要点回顾✅ 快速开始 5 步定义工具 → 创建 Agent → 配置参数 → 运行测试 → 扩展功能✅ 10 行代码tool()定义技能createAgent()创建助手invoke()启动任务✅ 系统提示给 Agent 设定角色、风格和规则越具体越好✅ 结构化输出用 Zod 定义格式让 Agent 返回固定结构的数据✅ 记忆功能用MemorySaver和thread_id让 Agent 记住对话✅ 真实世界多个工具、详细系统提示、自定义模型配置、结构化输出、记忆这些是生产级 Agent 的标配记住快速开始的目的不是写完美的代码而是快速体验 LangChain 的魅力。先跑起来再慢慢优化。你已经迈出了 AI 应用开发的第一步接下来的路会越来越精彩## 最后近期科技圈传来重磅消息行业巨头英特尔宣布大规模裁员2万人传统技术岗位持续萎缩的同时另一番景象却在AI领域上演——AI相关技术岗正开启“疯狂扩招”模式据行业招聘数据显示具备3-5年大模型相关经验的开发者在大厂就能拿到50K×20薪的高薪待遇薪资差距肉眼可见业内资深HR预判不出1年“具备AI项目实战经验”将正式成为技术岗投递的硬性门槛。在行业迭代加速的当下“温水煮青蛙”式的等待只会让自己逐渐被淘汰与其被动应对不如主动出击抢先掌握AI大模型核心原理落地应用技术项目实操经验借行业风口实现职业翻盘深知技术人入门大模型时容易走弯路我特意整理了一套全网最全最细的大模型零基础学习礼包涵盖入门思维导图、经典书籍手册、从入门到进阶的实战视频、可直接运行的项目源码等核心内容。这份资料无需付费免费分享给所有想入局AI大模型的朋友扫码免费领取全部内容部分资料展示1、 AI大模型学习路线图2、 全套AI大模型应用开发视频教程从入门到进阶这里都有跟着老师学习事半功倍。3、 大模型学习书籍文档4、AI大模型最新行业报告2025最新行业报告针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。5、大模型大厂面试真题整理了百度、阿里、字节等企业近三年的AI大模型岗位面试题涵盖基础理论、技术实操、项目经验等维度每道题都配有详细解析和答题思路帮你针对性提升面试竞争力。6、大模型项目实战配套源码学以致用在项目实战中检验和巩固你所学到的知识同时为你找工作就业和职业发展打下坚实的基础。学会后的收获• 基于大模型全栈工程实现前端、后端、产品经理、设计、数据分析等通过这门课可获得不同能力• 能够利用大模型解决相关实际项目需求 大数据时代越来越多的企业和机构需要处理海量数据利用大模型技术可以更好地处理这些数据提高数据分析和决策的准确性。因此掌握大模型应用开发技能可以让程序员更好地应对实际项目需求• 基于大模型和企业数据AI应用开发实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能 学会Fine-tuning垂直训练大模型数据准备、数据蒸馏、大模型部署一站式掌握• 能够完成时下热门大模型垂直领域模型训练能力提高程序员的编码能力 大模型应用开发需要掌握机器学习算法、深度学习框架等技术这些技术的掌握可以提高程序员的编码能力和分析能力让程序员更加熟练地编写高质量的代码。扫码免费领取全部内容这些资料真的有用吗这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】