本文介绍了AI Agent智能体的创建与实现,包括基础Agent构建、ReAct Agent工作机制及联网搜索工具集成。通过代码示例展示了LLM与工具的绑定和自动调用决策过程。作为系列教程,后续将深入LangGraph、RAG、MCP等技术,最终实现全栈Agent开发与部署。
AI Agent 系列文章10, 后续会更新 LangGraph、RAG、MCP等内容,最后全栈开发一个 Agent 智能体并部署上线。
本篇主要介绍
1)Agent 创建
2)ReAct Agent
3)调用“联网搜索”工具的Agent
- Agent创建
之前的功能都是一次性调用llm返回结果,或者需要多次询问,或者二次加工处理。
如果需要自动多次调用llm,自动调用工具等等,就需要agent智能体。
import { ChatDeepSeek } from '@langchain/deepseek' import { createAgent, tool } from 'langchain' import * as z from 'zod' import 'dotenv/config' const llm = new ChatDeepSeek({ model: 'deepseek-chat', apiKey: process.env.DEEPSEEK_API_KEY }) const getWeather = tool( input => `${input.city}一直天气晴朗`, { name: 'query-weather', description: '查询指定城市的天气情况', schema: z.object({ city: z.string().describe('要查询天气的城市') }) } ) const agent = createAgent({ model: llm, tools: [getWeather] }) const res = await agent.invoke({ messages: [{ role: 'user', content: '广州的天气怎么样?' }] }) console.log(res);代码中定义了一个查询天气的工具,它是模拟的,不过不影响 agent 的执行流程。
agent 绑定了 llm 和 tools ,它会根据用户输入的提示词,自动判断需要调用什么。
执行结果:
{ messages: [ HumanMessage { "id": "20422a89-da0e-4e6f-9e8d-ed34900df1f0", "content": "广州的天气怎么样?", "additional_kwargs": {}, "response_metadata": {} }, AIMessage { "id": "5246393a-bd50-4cdf-95e4-c89935bfab01", "content": "我来帮您查询广州的天气情况。", "name": "model", "additional_kwargs": { "tool_calls": [ { "index": 0, "id": "call_00_9IfbfrGjSe8XgfXtGwxQE9zq", "type": "function", "function": "[Object]" } ] }, "response_metadata": { "tokenUsage": { "promptTokens": 337, "completionTokens": 52, "totalTokens": 389 }, "finish_reason": "tool_calls", "model_provider": "openai", "model_name": "deepseek-chat", "usage": { "prompt_tokens": 337, "completion_tokens": 52, "total_tokens": 389, "prompt_tokens_details": { "cached_tokens": 0 }, "prompt_cache_hit_tokens": 0, "prompt_cache_miss_tokens": 337 }, "system_fingerprint": "fp_eaab8d114b_prod0820_fp8_kvcache" }, "tool_calls": [ { "name": "query-weather", "args": { "city": "广州" }, "type": "tool_call", "id": "call_00_9IfbfrGjSe8XgfXtGwxQE9zq" } ], "invalid_tool_calls": [], "usage_metadata": { "output_tokens": 52, "input_tokens": 337, "total_tokens": 389, "input_token_details": { "cache_read": 0 }, "output_token_details": {} } }, ToolMessage { "id": "ca6dc481-e79e-4eb1-9635-67d0e660914b", "content": "广州一直天气晴朗", "name": "query-weather", "additional_kwargs": {}, "response_metadata": {}, "tool_call_id": "call_00_9IfbfrGjSe8XgfXtGwxQE9zq" }, AIMessage { "id": "bce04c5b-5edb-4d42-acd6-dc6971132155", "content": "根据查询结果,广州目前天气晴朗。如果您需要更详细的天气信息,比如温度、湿度或未来几天的天气预报,请告诉我,我 可以为您提供更多帮助。", "name": "model", "additional_kwargs": {}, "response_metadata": { "tokenUsage": { "promptTokens": 402, "completionTokens": 35, "totalTokens": 437 }, "finish_reason": "stop", "model_provider": "openai", "model_name": "deepseek-chat", "usage": { "prompt_tokens": 402, "completion_tokens": 35, "total_tokens": 437, "cached_tokens": 320 }, "prompt_cache_hit_tokens": 320, "prompt_cache_miss_tokens": 82 }, "system_fingerprint": "fp_eaab8d114b_prod0820_fp8_kvcache" }, "tool_calls": [], "invalid_tool_calls": [], "usage_metadata": { "output_tokens": 35, "input_tokens": 402, "total_tokens": 437, "input_token_details": { "cache_read": 320 }, "output_token_details": {} } } ] }上述结果就是 agent 多次调用 llm 和 tool 返回的信息。
第一个是 HumanMessage,用户的提问,然后第二个是 AI 分析后的结果,需要调用 tool,然后是 tool 返回的结果,然后 AI 再根据用户提问和 tool 返回的结果,整合后返回最终的结果。
- ReAct Agent
ReAct(Reasoning 推理 + Acting 行动),agent 根据情况自动多次调用 llm 和 tool。
ReAct Agent 的工作流程是一个典型的 “推理-行动-观察”循环,其核心在于让大模型能够通过多轮工具调用来解决复杂问题。
ReAct 可以体现到 agent 中的所有元素,不仅仅是 llm 和 tool,一个 agent 一般也包括:
- llm
- tools
- memory
- system prompt
- workflow
- structured output
它可以自动执行这些元素,来达到解决问题的目的。
- 调用“联网搜索”工具的Agent
import { ChatDeepSeek } from '@langchain/deepseek' import { createAgent } from 'langchain' import { TavilySearch } from '@langchain/tavily' import 'dotenv/config' const llm = new ChatDeepSeek({ model: 'deepseek-chat', apiKey: process.env.DEEPSEEK_API_KEY }) // 联网搜索的工具 const tavilyTool = new TavilySearch({ maxResults: 2, topic: 'general', tavilyApiKey: process.env.TAVILY_API_KEY }) const agent = createAgent({ model: llm, tools: [tavilyTool] }) const res = await agent.invoke({ messages: [{ role: 'user', content: '电影《疯狂动物城2》今年什么时间上映的' }] }) console.log(res);比如问 “电影《疯狂动物城2》今年什么时间上映的”:
最终回答是 2025年11月26日,agent 调用了 tavily_search 工具进行 联网搜索。
如何学习AI大模型?
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习和面试资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
第一阶段:从大模型系统设计入手,讲解大模型的主要方法;
第二阶段:在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段:大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段:大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段:大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段:以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段:以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓