尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

2026年AI Agent实战指南:从工具调用、RAG到MCP协议与企业级应用

2026年AI Agent实战指南:从工具调用、RAG到MCP协议与企业级应用 大家好我是专注于AI应用开发的技术博主。在探索大模型落地的过程中你是否也遇到过这样的困境模型本身很强大但让它完成一个稍微复杂的任务比如自动分析数据并生成报告、根据用户需求调用外部API、或者处理长文档问答时却总是力不从心需要大量的人工干预和复杂的Prompt工程这正是传统大模型应用的瓶颈所在。而AI Agent智能体正是打破这一瓶颈的关键技术。它让大模型从一个“被动的回答者”转变为一个“主动的执行者”能够自主规划、调用工具、记忆对话最终完成复杂任务。本文将为你系统梳理2026年AI Agent的最新发展从核心架构、工具调用、RAG增强到新兴的MCP协议并结合企业级应用痛点提供一套从入门到实战的完整指南。无论你是希望入门的新手还是寻求项目落地的开发者都能从中找到清晰的路径和可复现的代码。1. AI Agent核心概念与架构演进在深入实战之前我们必须先厘清AI Agent究竟是什么以及它的核心组件是如何协同工作的。1.1 什么是AI Agent简单来说一个AI Agent是一个能够感知环境、进行决策并执行行动以实现特定目标的智能系统。它以大语言模型LLM作为“大脑”但赋予了其“手脚”和“记忆”。大脑LLM负责理解任务、规划步骤、做出决策。这是Agent的推理核心。手脚工具/技能Agent可以调用外部工具如搜索引擎、代码执行器、API接口、数据库等从而突破LLM自身在实时性、准确性和执行能力上的限制。记忆短期与长期Agent需要记住对话历史短期记忆和从过往交互中学到的知识长期记忆以保持对话的连贯性和实现持续学习。与传统的基于Prompt的简单问答相比Agent的核心特征是自主性和目标导向性。你只需要给它一个高级目标如“帮我分析上个月的销售数据并总结趋势”它就能自己拆解步骤、调用工具、迭代优化最终给出结果。1.2 主流智能体架构拆解目前业界主流的Agent架构主要遵循ReActReasoning Acting范式或其变种。其核心工作流是一个“思考-行动-观察”的循环。1. ReAct 范式工作流这是一个经典的Agent推理框架其流程可以概括为任务输入 - LLM思考(规划下一步) - 执行行动(调用工具) - 观察结果 - 循环直至任务完成或失败在这个过程中LLM的“思考”步骤会生成包含Thought推理、Action行动指令、Observation观察结果的文本。例如Thought: 用户想了解北京的天气我需要调用天气查询工具。 Action: search_weather_api Action Input: {city: 北京} Observation: 北京今天晴气温15-25°C。 Thought: 我已经获取到天气信息可以回答用户了。 Final Answer: 北京今天天气晴朗温度在15到25摄氏度之间。2. 更复杂的多智能体架构对于极其复杂的任务单一Agent可能力有不逮因此衍生出多智能体Multi-Agent系统。在这种架构下不同的Agent扮演不同角色如“产品经理”、“架构师”、“程序员”、“测试员”通过协作与辩论共同完成任务。这通常需要一个“协调者”Orchestrator或基于规则的通信机制来管理它们之间的交互。1.3 2026年AI Agent技术趋势结合当前2026年的发展我们可以看到几个明显的趋势专业化与垂直化通用Agent逐渐向金融、医疗、编程、科研等垂直领域深入需要更专业的工具链和领域知识RAG。标准化与协议化工具调用接口的标准化成为关键MCPModel Context Protocol协议等旨在解决不同Agent框架与工具之间的兼容性问题。记忆与工作流长效化Agent不再局限于单次会话而是能够维护长期记忆并执行需要数小时甚至数天的复杂工作流Workflow。评估与基准测试体系化像Harvey AI Agent Benchmark这类评估框架的出现使得衡量Agent在代码、数学、推理等任务上的能力有了统一标准。2. 环境准备与核心工具栈在开始构建Agent之前我们需要搭建一个基础的开发环境。本文将以Python生态为主因为其拥有最丰富的AI Agent相关库。2.1 基础环境配置操作系统推荐 Linux (Ubuntu 20.04) 或 macOSWindows 可使用 WSL2。Python版本Python 3.10 或 3.11。避免使用过新或过旧的版本以保证库的兼容性。包管理工具使用pip和venv或conda创建独立的虚拟环境。# 创建并激活虚拟环境 python -m venv agent-env source agent-env/bin/activate # Linux/macOS # agent-env\Scripts\activate # Windows # 升级pip pip install --upgrade pip2.2 核心框架与库选择根据你的需求可以选择不同的开发框架LangChain / LangGraph生态最成熟、社区最活跃的框架提供了构建Agent所需的所有基础组件模型集成、工具、记忆、链。LangGraph特别擅长构建有状态的、多步骤的工作流。LlamaIndex最初专注于RAG现已扩展为强大的Agent框架尤其在数据连接和检索方面有优势。AutoGen (by Microsoft)专注于多智能体对话编程非常适合构建多Agent协同场景。Semantic Kernel (by Microsoft)面向生产级应用强调规划、记忆和技能插件。Dify / Flowise低代码/无代码平台可以通过可视化拖拽快速搭建AI应用和简单Agent适合产品经理或快速原型验证。对于初学者和希望深度掌控的开发者我们选择LangChain作为本篇教程的核心框架因为它学习曲线相对平缓文档丰富且能覆盖绝大多数Agent场景。安装核心库pip install langchain langchain-community langchain-openai如果你计划使用OpenAI的模型还需要安装OpenAI SDK并设置API Keypip install openai export OPENAI_API_KEYyour-api-key-here # 或在代码中设置3. Agent核心能力一工具调用实战工具调用Tool Calling是Agent能力的基石。它让LLM能够与外部世界互动。3.1 什么是工具Tool在LangChain中一个工具本质上是一个函数它有着清晰的名称、描述和参数定义。LLM根据这些描述来决定何时以及如何调用它。3.2 创建与使用自定义工具让我们创建一个简单的“计算器”工具和一个“获取当前时间”的工具。# 文件custom_tools.py from langchain.tools import tool from datetime import datetime import math tool def calculate(expression: str) - str: 执行一个数学表达式计算。支持加减乘除和乘方。例如calculate(\2 3 * 4\) try: # 警告在生产环境中直接eval是危险的这里仅作演示。 # 实际应用应使用更安全的表达式解析库如 asteval。 result eval(expression, {__builtins__: {}}, {math: math}) return f计算结果: {result} except Exception as e: return f计算错误: {e} tool def get_current_time(timezone: str Asia/Shanghai) - str: 获取指定时区的当前时间。时区参数例如Asia/Shanghai, America/New_York。 from datetime import datetime, timezone as tz import pytz # 需要安装pip install pytz try: tz_obj pytz.timezone(timezone) current_time datetime.now(tz_obj).strftime(%Y-%m-%d %H:%M:%S %Z%z) return f{timezone}的当前时间是: {current_time} except pytz.exceptions.UnknownTimeZoneError: return f错误未知时区 {timezone}。 # 将工具放入列表 my_tools [calculate, get_current_time] # 打印工具的描述供LLM理解 for tool in my_tools: print(f工具名: {tool.name}) print(f描述: {tool.description}) print(f参数: {tool.args}) print(- * 30)3.3 构建你的第一个智能体现在我们将使用OpenAI的模型和上面创建的工具构建一个简单的ReAct智能体。# 文件first_agent.py import os from langchain_openai import ChatOpenAI from langchain.agents import create_react_agent, AgentExecutor from langchain import hub # 用于拉取预设的Prompt # 1. 设置API Key (请替换为你的Key) os.environ[OPENAI_API_KEY] your-openai-api-key # 2. 初始化大语言模型 llm ChatOpenAI(modelgpt-4o-mini, temperature0) # 使用gpt-4o-mini温度设为0使输出更确定 # 3. 导入之前定义的工具 from custom_tools import my_tools # 4. 拉取一个为ReAct范式优化好的Prompt模板 # 这个Prompt会指导LLM按照 Thought/Action/Observation 的格式输出 prompt hub.pull(hwchase17/react) # 5. 创建智能体 agent create_react_agent(llmllm, toolsmy_tools, promptprompt) # 6. 创建执行器它负责运行Agent的循环 agent_executor AgentExecutor(agentagent, toolsmy_tools, verboseTrue, handle_parsing_errorsTrue) # 7. 运行智能体 if __name__ __main__: # 示例查询1数学计算 result1 agent_executor.invoke({input: 请计算 (15 7) * 3 的值是多少}) print(\n--- 查询1结果 ---) print(result1[output]) # 示例查询2获取时间 result2 agent_executor.invoke({input: 现在纽约是几点钟}) print(\n--- 查询2结果 ---) print(result2[output]) # 示例查询3需要多步推理的任务 result3 agent_executor.invoke({input: 先计算10的平方然后加上东京当前时间的小时数只取数字部分。}) print(\n--- 查询3结果 ---) print(result3[output])运行这个脚本你将看到Agent详细的思考过程因为verboseTrue和最终结果。它展示了Agent如何自主决定调用哪个工具、传递什么参数并根据返回结果进行下一步推理。4. Agent核心能力二RAG增强实战虽然工具调用解决了“执行”问题但要让Agent拥有专业、准确、实时的知识就需要RAG检索增强生成。RAG通过从外部知识库中检索相关信息来辅助LLM生成答案有效缓解“幻觉”问题并支持私有数据查询。4.1 RAG核心流程与痛点一个典型的RAG流程包括文档加载与切分将PDF、Word、网页等文档加载并切分成语义相关的“块”。向量化与存储将文本块转换为向量嵌入存入向量数据库。检索将用户问题也转换为向量在数据库中查找最相似的文本块。增强生成将检索到的相关文本块作为上下文连同用户问题一起提交给LLM生成最终答案。企业级RAG常见痛点切分策略不当切分过碎丢失上下文过长则包含噪声。检索精度低简单向量相似度检索可能无法找到最相关片段。无法溯源答案生成后不知道具体引用了哪份文档的哪个部分。多模态处理如何高效处理图片、表格中的信息。知识更新如何增量更新知识库而不必全部重建。4.2 搭建一个简单的RAG系统我们使用LangChain和Chroma向量数据库来构建一个本地知识库问答Agent。# 安装必要的库 pip install langchain-chroma # Chroma向量数据库集成 pip install pypdf # 用于读取PDF pip install tiktoken # 用于文本切分 pip install sentence-transformers # 用于本地嵌入模型可选避免调用API# 文件rag_agent.py import os from langchain_chroma import Chroma from langchain_community.document_loaders import PyPDFLoader from langchain_text_splitters import RecursiveCharacterTextSplitter from langchain_openai import OpenAIEmbeddings, ChatOpenAI from langchain.chains import RetrievalQA from langchain.prompts import PromptTemplate # 1. 加载文档 (假设我们有一个名为 report.pdf 的文件) loader PyPDFLoader(./report.pdf) # 请确保此文件存在 documents loader.load() # 2. 切分文档 text_splitter RecursiveCharacterTextSplitter( chunk_size500, # 每个块约500字符 chunk_overlap50, # 块之间重叠50字符以保持上下文 separators[\n\n, \n, 。, , , , , , ] # 中文友好的分隔符 ) texts text_splitter.split_documents(documents) print(f文档被切分为 {len(texts)} 个块。) # 3. 创建向量存储 # 使用OpenAI的嵌入模型也可以换成 HuggingFaceEmbeddings 等本地模型 embeddings OpenAIEmbeddings(modeltext-embedding-3-small) # 持久化存储到本地 ./chroma_db 目录 vectorstore Chroma.from_documents( documentstexts, embeddingembeddings, persist_directory./chroma_db ) vectorstore.persist() # 保存到磁盘 print(向量数据库已创建并保存。) # 4. 构建检索器 retriever vectorstore.as_retriever( search_typesimilarity, # 相似度检索 search_kwargs{k: 3} # 返回最相关的3个块 ) # 5. 创建带有自定义Prompt的RAG链 prompt_template 请根据以下上下文来回答问题。如果你不知道答案就说你不知道不要编造。 上下文 {context} 问题{question} 请用中文给出详细、准确的答案 PROMPT PromptTemplate( templateprompt_template, input_variables[context, question] ) llm ChatOpenAI(modelgpt-4o-mini, temperature0) qa_chain RetrievalQA.from_chain_type( llmllm, chain_typestuff, # 将检索到的所有上下文“塞”进Prompt retrieverretriever, chain_type_kwargs{prompt: PROMPT}, return_source_documentsTrue # 非常重要返回源文档用于溯源 ) # 6. 进行问答 if __name__ __main__: query 这份报告中提到的主要风险是什么 result qa_chain.invoke({query: query}) print(f问题{query}) print(f\n答案{result[result]}) print(f\n--- 引用溯源 ---) for i, doc in enumerate(result[source_documents]): print(f片段 {i1} (来自第{doc.metadata.get(page, N/A)}页): {doc.page_content[:200]}...)这个示例展示了RAG的基本流程并实现了引用溯源这是企业应用中的关键需求。4.3 RAG优化策略更好的切分尝试语义切分SemanticChunker或按标题切分。混合检索结合向量检索和关键词检索如BM25以提高召回率。重排序Re-ranking使用更精细的模型对检索出的Top N结果进行重排序提升Top 1的精度。Agentic RAG让Agent主动控制检索过程例如先判断是否需要检索、决定检索关键词、对多轮检索结果进行综合判断。这是当前的前沿方向。5. 新兴协议MCP详解与集成随着工具生态的丰富一个关键问题浮现如何让不同框架LangChain, LlamaIndex, AutoGen的Agent都能方便地使用同一套工具MCPModel Context Protocol协议应运而生。5.1 MCP协议是什么MCP是一个开放协议用于在服务器提供工具和资源和客户端如AI应用、Agent框架之间进行标准化通信。你可以把它想象成AI世界的“USB协议”或“gRPC”。服务器Server暴露一系列工具如数据库查询、内部API、资源如文件和提示模板。客户端Client连接服务器发现并使用其提供的所有能力。协议Protocol定义了标准的JSON-RPC消息格式用于列出工具、调用工具、读取资源等。它的核心价值在于解耦。工具开发者只需实现一个MCP服务器任何支持MCP的客户端包括未来出现的新框架都能立即使用这些工具无需为每个框架编写适配器。5.2 快速体验MCP我们可以使用一个简单的MCP服务器示例来感受其工作方式。首先安装必要的库pip install mcp python-dotenv创建一个简单的MCP服务器它提供一个“查询天气”的工具# 文件simple_mcp_server.py import asyncio from mcp import ClientSession, StdioServerParameters from mcp.client.stdio import stdio_client # 模拟一个天气数据源 weather_data { Beijing: {temp: 22°C, condition: Sunny}, Shanghai: {temp: 25°C, condition: Cloudy}, New York: {temp: 18°C, condition: Rainy}, } async def main(): # 定义服务器参数这里我们实际上启动一个“模拟”的服务器进程。 # 在生产中这通常是一个独立的、长期运行的程序。 server_params StdioServerParameters( commandpython, # 命令 args[-c, # 这是一个内联的、极其简化的MCP服务器模拟代码。 # 真正的MCP服务器实现会更复杂会实现标准的协议接口。 import sys import json while True: line sys.stdin.readline() if not line: break try: request json.loads(line) if request.get(method) tools/list: response { jsonrpc: 2.0, id: request[id], result: { tools: [{ name: get_weather, description: 获取指定城市的天气信息, inputSchema: { type: object, properties: { city: {type: string, description: 城市名称} }, required: [city] } }] } } print(json.dumps(response), flushTrue) elif request.get(method) tools/call: params request[params] if params[name] get_weather: city params.get(arguments, {}).get(city, Unknown) weather weather_data.get(city, {temp: N/A, condition: Unknown city}) response { jsonrpc: 2.0, id: request[id], result: { content: [{ type: text, text: f{city}的天气是{weather[condition]}气温{weather[temp]}。 }] } } print(json.dumps(response), flushTrue) except Exception as e: print(json.dumps({jsonrpc: 2.0, id: request.get(id), error: {message: str(e)}}), flushTrue) ] # 参数执行一段模拟服务器行为的Python代码 ) # 创建客户端会话并连接服务器 async with stdio_client(server_params) as (read, write): async with ClientSession(read, write) as session: await session.initialize() # 初始化会话 # 1. 列出服务器提供的所有工具 tools await session.list_tools() print(可用的工具) for tool in tools: print(f - {tool.name}: {tool.description}) # 2. 调用一个工具 print(\n调用 get_weather 工具...) result await session.call_tool(get_weather, arguments{city: Beijing}) # 结果是一个Content对象列表 for content in result.content: if content.type text: print(f结果: {content.text}) if __name__ __main__: asyncio.run(main())运行此脚本你会看到客户端成功连接到模拟的MCP服务器列出工具并调用它。在实际开发中你会使用像mcp-server-weather这样真正的MCP服务器包或者自己实现一个。5.3 在LangChain中集成MCP工具LangChain已经支持将MCP服务器提供的工具无缝集成到Agent中。# 文件langchain_with_mcp.py import asyncio from langchain.agents import AgentExecutor, create_tool_calling_agent from langchain_openai import ChatOpenAI from langchain_core.prompts import ChatPromptTemplate # 需要安装 langchain-mcp from langchain_mcp import MCPServer async def main(): # 1. 连接到MCP服务器 (假设你有一个运行在本地8080端口的天气服务器) # 实际中你需要先启动一个MCP服务器进程。 async with await MCPServer.connect(http://localhost:8080) as server: # 2. 获取该服务器提供的所有工具并转换为LangChain Tool对象 mcp_tools await server.get_tools() print(f从MCP服务器加载了 {len(mcp_tools)} 个工具。) # 3. 初始化LLM和Agent llm ChatOpenAI(modelgpt-4o-mini, temperature0) prompt ChatPromptTemplate.from_messages([ (system, 你是一个有帮助的助手可以调用工具来回答问题。), (human, {input}), (placeholder, {agent_scratchpad}), ]) agent create_tool_calling_agent(llmllm, toolsmcp_tools, promptprompt) agent_executor AgentExecutor(agentagent, toolsmcp_tools, verboseTrue) # 4. 运行Agent它将可以自动使用MCP服务器提供的工具 result await agent_executor.ainvoke({input: 北京和上海的天气怎么样对比一下。}) print(f\n最终答案{result[output]}) if __name__ __main__: asyncio.run(main())通过MCP你可以轻松地将公司内部的任何服务CRM、ERP、数据库封装成标准工具供所有AI应用调用极大地提升了工具的复用性和Agent的生态兼容性。6. 企业级应用落地痛点与解决方案将AI Agent从Demo推向生产会面临一系列挑战。以下是关键痛点及应对思路痛点描述解决方案与建议幻觉与准确性Agent基于不准确信息或自身“臆想”做出错误决策。1.强化RAG确保知识库准确、及时。2.设置置信度阈值对关键操作要求Agent提供置信度或引用来源低于阈值则转人工。3.后置校验对Agent的输出特别是代码、数据进行自动化校验。工具调用安全恶意或错误的工具调用可能导致数据泄露、系统损坏或产生费用。1.权限最小化为Agent分配仅满足其任务所需的最小权限。2.操作确认与审批流对高风险操作如删除、支付设置人工确认环节。3.输入输出过滤与审计对所有工具调用的输入输出进行安全扫描和日志记录。长上下文与记忆管理复杂任务需要长程记忆但LLM上下文窗口有限且成本高。1.分层记忆系统短期记忆对话历史、长期记忆向量数据库存储关键摘要。2.记忆摘要与提炼定期将冗长对话总结成关键点存入长期记忆。3.选择性回忆根据当前任务从长期记忆中检索最相关的记忆片段。性能与成本Agent的多次LLM调用和工具调用可能导致响应慢、费用高。1.优化Prompt精简Prompt使用更高效的模型如gpt-4o-mini进行简单推理。2.缓存机制对相同或相似的查询结果进行缓存。3.异步与并行对可并行的工具调用或子任务进行异步处理。评估与监控缺乏标准方法评估Agent在生产环境中的表现。1.定义核心指标任务完成率、人工接管率、用户满意度、平均处理时间。2.A/B测试对比不同Prompt或架构版本的效果。3.全链路日志记录每个Agent的思考、行动、观察便于问题回溯和优化。工作流Workflow编排复杂业务逻辑需要多个Agent或步骤有序、有条件地执行。1.使用LangGraph其基于图的状态机模型非常适合编排复杂、有循环和条件分支的工作流。2.明确状态与边界清晰定义每个节点的输入、输出和错误处理。3.可视化设计利用LangGraph的可视化工具来设计和调试工作流。7. 完整项目实战构建一个数据分析助手Agent让我们综合运用所学构建一个能理解自然语言、从数据库查询数据、进行分析并生成图表的数据分析助手。项目目标用户可以说“帮我查看上周销售额最高的5个产品并画个柱状图”Agent能自动完成SQL查询、数据处理和可视化。技术栈LangChain (Agent), SQLite (数据库),sqlite3(工具),matplotlib(工具),pandas(工具)。7.1 准备模拟数据与环境# 文件setup_database.py import sqlite3 import pandas as pd from datetime import datetime, timedelta import random # 创建数据库和表 conn sqlite3.connect(sales_data.db) cursor conn.cursor() cursor.execute( CREATE TABLE IF NOT EXISTS sales ( id INTEGER PRIMARY KEY, product_name TEXT, sale_date DATE, amount REAL, region TEXT ) ) # 生成模拟数据 products [产品A, 产品B, 产品C, 产品D, 产品E] regions [华东, 华北, 华南, 华西] start_date datetime.now() - timedelta(days30) data [] for i in range(200): product random.choice(products) sale_date start_date timedelta(daysrandom.randint(0, 29)) amount round(random.uniform(100, 5000), 2) region random.choice(regions) data.append((i1, product, sale_date.strftime(%Y-%m-%d), amount, region)) cursor.executemany(INSERT INTO sales VALUES (?, ?, ?, ?, ?), data) conn.commit() print(模拟销售数据已生成。) print(pd.read_sql_query(SELECT * FROM sales LIMIT 5, conn)) conn.close()7.2 创建数据分析工具# 文件data_analysis_tools.py from langchain.tools import tool import sqlite3 import pandas as pd import matplotlib.pyplot as plt import io import base64 tool def query_sql(sql_query: str) - str: 执行一个SQL查询语句并返回结果。数据库是sales_data.db表名是sales。 try: conn sqlite3.connect(sales_data.db) df pd.read_sql_query(sql_query, conn) conn.close() # 将DataFrame转换为易读的字符串 if df.empty: return 查询结果为空。 else: return df.to_string(indexFalse) except Exception as e: return fSQL查询错误: {e} tool def plot_bar_chart(data_json: str, x_column: str, y_column: str, title: str 图表) - str: 根据提供的JSON数据通常是DataFrame的to_json结果绘制柱状图并返回base64编码的图片字符串。 参数 data_json: JSON格式的字符串数据。 x_column: 作为X轴的列名。 y_column: 作为Y轴的列名。 title: 图表标题。 try: df pd.read_json(data_json, orientsplit) plt.figure(figsize(10, 6)) plt.bar(df[x_column], df[y_column]) plt.xlabel(x_column) plt.ylabel(y_column) plt.title(title) plt.xticks(rotation45) plt.tight_layout() # 将图片保存到内存缓冲区并转换为base64 buf io.BytesIO() plt.savefig(buf, formatpng) plt.close() buf.seek(0) img_base64 base64.b64encode(buf.read()).decode(utf-8) return fdata:image/png;base64,{img_base64} except Exception as e: return f生成图表时出错: {e} # 工具列表 analysis_tools [query_sql, plot_bar_chart]7.3 构建并运行数据分析Agent# 文件data_analysis_agent.py import os from langchain_openai import ChatOpenAI from langchain.agents import create_react_agent, AgentExecutor from langchain import hub from data_analysis_tools import analysis_tools import json os.environ[OPENAI_API_KEY] your-openai-api-key llm ChatOpenAI(modelgpt-4o-mini, temperature0) prompt hub.pull(hwchase17/react) agent create_react_agent(llmllm, toolsanalysis_tools, promptprompt) agent_executor AgentExecutor(agentagent, toolsanalysis_tools, verboseTrue, handle_parsing_errorsTrue, max_iterations5) def run_agent_query(user_query): 运行Agent并处理可能返回的图表 result agent_executor.invoke({input: user_query}) output result[output] # 检查输出中是否包含base64图片 if output.startswith(data:image/png;base64,): # 在实际Web应用中你可以将这个字符串直接设置为img标签的src print(Agent生成了一个图表。) # 这里我们只打印提示实际可以保存或显示图片 # 例如with open(chart.png, wb) as f: f.write(base64.b64decode(output.split(,)[1])) return 图表已生成。 else: return output if __name__ __main__: # 示例查询1简单的数据查询 query1 销售数据表中总共有多少条记录 print(f问题{query1}) answer1 run_agent_query(query1) print(f回答{answer1}\n) # 示例查询2复杂的数据分析与可视化 query2 帮我找出上周假设今天是2026-08-01上周就是7月25日到7月31日销售额最高的3个产品 并绘制一个展示它们销售额的柱状图图表标题设为上周Top 3产品销售额。 print(f问题{query2}) answer2 run_agent_query(query2) print(f回答{answer2})这个项目展示了如何将SQL查询、数据处理和可视化封装成工具并由一个Agent智能地编排执行。你可以在此基础上扩展更多工具如发送邮件、写入报告等构建更强大的自动化数据分析流水线。8. 学习路线与资源推荐8.1 循序渐进的学习路径基础入门1-2周掌握Python基础。理解大语言模型LLM的基本原理和API调用OpenAI/文心一言/通义千问等。学习LangChain核心概念Model I/O, Chains, Memory。Agent核心2-3周深入理解ReAct范式。掌握Tool的定义与调用。构建你的第一个多功能Agent如查询天气、计算、搜索。学习使用LangGraph构建有状态的工作流。知识增强1-2周学习RAG全流程文档加载、切分、向量化、检索、生成。实践使用Chroma, Pinecone, Weaviate等向量数据库。解决RAG中的痛点检索精度、引用溯源、多轮对话。进阶与生产化持续研究多智能体Multi-Agent系统如AutoGen。探索MCP协议尝试将内部服务工具化。关注Agent评估框架如Harvey Benchmark。学习企业级部署、监控、安全与成本优化。8.2 推荐资源官方文档永远是第一手资料。LangChain DocumentationLlamaIndex DocumentationAutoGen DocumentationModel Context Protocol开源项目在GitHub上搜索awesome-ai-agents有很多优秀的项目集合。实践社区关注Hugging Face, LangChain DiscordReddit的r/LocalLLaMA和r/LangChain板块。AI Agent的世界正在快速演进从简单的工具调用到复杂的多智能体协作从封闭的Demo到开放的企业级应用。希望这篇教程能为你打开这扇大门。记住最好的学习方式是动手实践从一个简单的工具开始逐步构建更复杂的智能体并最终解决你实际工作和学习中遇到的具体问题。如果在实践中遇到任何问题欢迎在评论区交流讨论。
返回列表