当前位置: 首页 > news >正文

用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 } from"langchain"; import * as z from"zod"; // 1. 定义天气工具 const getWeather = tool( (input) =>`It's 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: It's always sunny in Tokyo!

效果对比:

指标传统做法LangChain
代码量50+ 行10+ 行
开发时间半天10 分钟
功能完整度基础完整(工具 + 推理 + 记忆)
可扩展性好(加工具就行)

生活化类比:创建 Agent 就像开咖啡店

创建 Agent 就像开咖啡店

步骤类比LangChain 对应
准备工具咖啡机、磨豆机、冰箱tool()定义工具
设定规则咖啡店规则(“微笑服务”)systemPrompt设定行为
配置原料咖啡豆、牛奶、糖model配置模型
记住常客会员卡、偏好记录checkpointer添加记忆
规范输出统一杯型、标签responseFormat结构化输出
开始营业迎接客人invoke()运行 Agent

步骤一:创建基础 Agent(10 行代码)

创建基础 Agent 流程

完整代码
import { createAgent, tool } from"langchain"; import * as z from"zod"; // 1. 定义天气工具 const getWeather = tool( (input) =>`It's 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: It's 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 } from"langchain"; import { MemorySaver } from"@langchain/langgraph"; import * as z from"zod"; // 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 user's 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 }) =>`It's 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 user's 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: "It's always sunny in Florida!" } // 第二次回答 Second response: { punny_response: "You're 'thund-erfully' welcome! It's 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 } from"@langchain/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 customer's 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 回答格式不对没有使用结构化输出添加responseFormat
Agent 记不住对话没有添加记忆使用checkpointerthread_id
Agent 说话风格不对系统提示不够具体写更详细的系统提示,指定风格
运行速度慢模型参数设置不当调整temperaturetimeout等参数
API Key 错误环境变量没配置检查环境变量是否正确设置

💡 调试技巧:

  • 先从简单的工具开始
  • 逐步添加功能
  • console.log打印中间结果
  • 检查 Agent 的思考过程

总结对比表

功能基础 Agent真实世界 Agent区别
工具数量1 个多个能力更全面
系统提示详细行为更规范
模型配置默认自定义输出更稳定
结构化输出格式更统一
记忆能持续对话
代码量10 行50 行功能更完整
适用场景快速测试生产环境更专业可靠

核心要点回顾

  1. ✅ 快速开始 5 步:定义工具 → 创建 Agent → 配置参数 → 运行测试 → 扩展功能

  2. ✅ 10 行代码:tool()定义技能,createAgent()创建助手,invoke()启动任务

  3. ✅ 系统提示:给 Agent 设定角色、风格和规则,越具体越好

  4. ✅ 结构化输出:用 Zod 定义格式,让 Agent 返回固定结构的数据

  5. ✅ 记忆功能:用MemorySaverthread_id让 Agent 记住对话

  6. ✅ 真实世界:多个工具、详细系统提示、自定义模型配置、结构化输出、记忆,这些是生产级 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%免费

http://www.jsqmd.com/news/550267/

相关文章:

  • Blender批量FBX导出自动化解决方案:Batex插件的技术实现与应用实践
  • 2026年自助棋牌室系统服务商TOP5盘点:谁在引领行业稳定新标准?
  • 智慧校园建设新引擎:vDisk 云桌面重塑高校机房管理模式
  • 3分钟掌握全平台资源下载神器:res-downloader终极配置指南
  • 【Vue】Vue3滑动拼图验证组件实战:从零构建安全登录系统
  • 基于Pyspark的大众点评数据分析和可视化之旅
  • 进阶篇第7节:常量内存与只读缓存——适用于只读数据的优化手段
  • 别再只看Vos和GBW了!用这5个实战案例,手把手教你读懂运放Datasheet
  • P11830 [省选联考 2025] 幸运数字
  • 编译器为什么有时候不使用内存的地址读取,而是使用缓存的,它优化的原理和原则是什么
  • 别再死记硬背了!用快递、电话和写信,5分钟搞懂计算机网络三大交换方式
  • 新手入门指南:利用快马ai理解c语言文件读写基础代码
  • AI客服监控系统:构建闲鱼智能客服的全链路可观测体系
  • 合肥家长必看!孩子近视验光全流程+高口碑眼镜店推荐 - 品牌测评鉴赏家
  • 文墨共鸣多场景:支持API批量调用、Web交互、CLI命令行三种使用模式
  • 深圳企业聚会首选:轰趴馆,省心又出圈的聚会解决方案
  • 【开题答辩全过程】以 基于Java的渔悦垂钓管理网站的设计与实现为例,包含答辩的问题和答案
  • 大模型学习进阶:收藏必备,小白程序员快速掌握RAG架构核心技术!
  • 七天纯实战AI大模型入门手册,小白程序员必备,值得收藏!
  • wiliwili:游戏主机离线娱乐的终极解决方案
  • ca6140车床手柄座加工工艺规程及夹具设计【钻φ14h7mm孔】 (说明书 CAD图纸 proe三维 开题报告 外文翻
  • 邯郸弘发化工|官方电话及服务详解+全国回收服务,省心处置各类化工原料 - 宁夏壹山网络
  • 智能家庭网络新选择:iStoreOS开源路由系统全攻略
  • 别再复制粘贴了!Matlab 2023b中文注释乱码,用记事本三步搞定
  • 如何用Ludusavi保护你珍贵的游戏存档?3步轻松备份,告别进度丢失烦恼!
  • SmallThinker-3B-Preview模型微调入门:使用自定义数据提升垂直领域表现
  • 小白程序员必看:收藏这份视觉-语言模型(VLM)学习指南,轻松入门大模型时代
  • Source Code Pro字体全攻略:打造高效编程环境的专业配置指南
  • 简单三步:用Qwen3语义雷达,为你的网站添加智能搜索功能
  • Qwen3-Reranker-0.6B实战:如何用它优化你的知识库检索效果