30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度最近在跟进 AI Agent 落地实践时发现很多开发者对“Agentic AI”的理解还停留在概念层面感觉它很强大但具体怎么从零构建一个能自主决策、执行复杂任务的智能体却缺少一套清晰、可复现的路径。恰好近期行业峰会上的“代码秀”环节将 Agentic AI 的构建过程进行了现场拆解从环境搭建、工具调用到工作流编排完整呈现了生产级 Agent 的诞生过程。这对于我们一线开发者来说无疑是最具参考价值的实战指南。本文将基于这类“代码秀”所展示的核心流程为你系统拆解如何构建一个具备“Agentic”能力的 AI 应用。我们将从最基础的 RAG检索增强生成讲起逐步深入到 Agentic RAG 的架构设计、工具链集成以及关键的工作流编排。无论你是想快速上手一个智能助手还是计划在企业内部部署复杂的多智能体系统本文提供的思路、代码示例和避坑指南都能为你提供直接的帮助。我们将重点关注如何让 Agent 不仅会“答”更要会“想”和“做”。1. 从 RAG 到 Agentic RAG理解智能体的进化在深入代码之前我们必须厘清基础 RAG 与 Agentic RAG 的根本区别。这决定了我们整个架构的设计思路。传统 RAG检索增强生成是一个相对线性的过程。用户输入一个问题Query系统通过检索器Retriever从知识库中找到相关的文档片段Context然后将问题和检索到的上下文一并交给大语言模型LLM由 LLM 生成最终答案。整个过程可以概括为“检索 - 拼接 - 生成”。它的核心优势在于让 LLM 的回答基于事实减少“幻觉”但其决策逻辑是固定的、被动的。它无法根据中间结果决定下一步做什么比如发现检索到的信息不相关时它不会主动调整检索策略或询问澄清问题。Agentic RAG则引入了“智能体”Agent的概念。在这里LLM 扮演着“大脑”或“控制器”的角色。它不仅仅是一个文本生成器更是一个具备规划、决策和执行能力的协调中心。一个典型的 Agentic RAG 工作流可能是这样的规划LLM 分析用户问题将其分解为一系列子任务或步骤例如“首先需要查询产品A的规格然后对比产品B的价格最后生成一份对比报告”。执行LLM 根据规划自主调用相应的工具Tools来完成任务。工具可以包括检索器、计算器、代码执行器、API 调用等。观察与迭代LLM 检查工具执行的结果。如果结果不满足要求例如检索结果不相关它可以重新规划调整查询词再次检索或者尝试调用其他工具。总结与输出在所有子任务完成后LLM 综合各步骤的结果生成最终答案。这个循环规划 - 执行 - 观察是 Agentic 能力的核心。它使得系统能够处理开放式、多步骤的复杂问题而不仅仅是简单的问答。为什么需要 Agentic RAG想象一个场景用户问“帮我分析一下我们上个季度销售额下降的原因并给出下个季度的营销建议。”传统 RAG 可能会检索出一堆关于“销售额”、“下降原因”、“营销策略”的文档然后生成一个笼统的总结。而 Agentic RAG 驱动的智能体可以1调用数据库查询工具获取精确的销售数据2调用数据分析工具进行环比、同比分析3根据分析结果检索市场报告和竞品信息4调用报告生成工具整合数据、分析和建议形成一份结构化的分析报告。整个过程无需人工干预智能体自主协调多个工具和数据源。2. 环境准备与核心工具链构建 Agentic RAG 系统我们不需要从零发明轮子。可以借助成熟的框架和云服务来搭建。这里我们以一个基于 Python 的流行技术栈为例它也是许多“代码秀”中演示的基础。2.1 基础环境操作系统Linux (Ubuntu 20.04/22.04 LTS) 或 macOSWindows 建议使用 WSL2。Python 版本3.9 或 3.10。避免使用 3.11 可能存在的某些库兼容性问题。包管理工具pip或conda。2.2 核心框架与库我们将使用LangChain作为智能体编排框架它提供了丰富的工具集成和智能体模板。同时使用Chroma作为本地向量数据库进行演示。# 创建并进入项目目录 mkdir agentic-rag-demo cd agentic-rag-demo # 创建虚拟环境推荐 python -m venv venv source venv/bin/activate # Linux/macOS # venv\Scripts\activate # Windows # 安装核心依赖 pip install langchain langchain-community langchain-core # 安装 OpenAI 模型接口也可替换为其他模型 pip install openai # 安装向量数据库和文本嵌入模型 pip install chromadb sentence-transformers # 安装用于网页内容提取的工具 pip install beautifulsoup4 requests2.3 大语言模型 (LLM) 选择你需要一个具备较强推理和工具调用能力的 LLM。我们将使用 OpenAI 的 GPT-4 系列模型作为“大脑”。你需要准备一个有效的 OpenAI API Key。备选方案你也可以使用 Anthropic Claude、Google Gemini 或开源的 Llama 3、Qwen 等模型通过 LangChain 的相应接口集成。生产环境需要考虑成本、延迟和私有化部署。2.4 项目结构预览一个清晰的项目结构有助于管理复杂度。agentic-rag-demo/ ├── main.py # 主程序入口 ├── config.py # 配置文件API Keys等 ├── tools/ # 自定义工具目录 │ ├── __init__.py │ ├── web_search.py # 网络搜索工具 │ └── calculator.py # 计算工具 ├── agents/ # 智能体定义目录 │ ├── __init__.py │ └── research_agent.py # 研究型智能体 ├── knowledge_base/ # 知识库相关 │ ├── docs/ # 存放原始文档 │ ├── vector_store.py # 向量库构建与检索 │ └── embeddings.py # 嵌入模型配置 └── requirements.txt # 项目依赖列表3. 构建核心组件工具、知识库与智能体Agentic 系统的三大支柱是工具Tools、记忆Memory/知识库Knowledge Base和智能体Agent本身。3.1 创建自定义工具工具是智能体的“手”和“脚”。LangChain 提供了装饰器来轻松创建工具。# tools/calculator.py from langchain.tools import tool import math tool def calculate(expression: str) - str: 执行数学计算。输入一个数学表达式字符串如 (3 5) * 2返回计算结果。 try: # 警告使用 eval 存在安全风险仅用于演示。生产环境应使用安全表达式解析库如 asteval。 # 此处必须严格限制输入或使用沙箱环境。 result eval(expression, {__builtins__: {}}, {**math.__dict__}) return f计算结果: {result} except Exception as e: return f计算错误: {e} # tools/web_search.py from langchain.tools import tool import requests from bs4 import BeautifulSoup tool def search_web(query: str) - str: 执行简单的网页搜索并提取摘要。输入一个搜索查询词。 # 注意这是一个简化示例。实际应用中应使用 Serper、SerpAPI 或 Bing Search API 等专业服务。 # 此处仅演示工具定义格式直接返回模拟结果。 print(f[工具调用] 正在搜索: {query}) # 模拟网络请求和解析过程 # response requests.get(fhttps://www.google.com/search?q{query}, headers...) # soup BeautifulSoup(response.content, html.parser) # ... 提取逻辑 ... simulated_result f关于 {query} 的模拟搜索结果这是一个演示性的文本摘要实际工具应集成真正的搜索API。 return simulated_result3.2 构建本地知识库向量检索这是 RAG 的“记忆”部分。我们使用sentence-transformers生成嵌入用Chroma存储和检索。# knowledge_base/embeddings.py from langchain_community.embeddings import HuggingFaceEmbeddings def get_embedding_model(): 获取本地嵌入模型避免调用远程API产生费用和延迟。 model_name all-MiniLM-L6-v2 # 轻量级且效果不错的句子嵌入模型 model_kwargs {device: cpu} # 使用GPU可改为 {device: cuda} encode_kwargs {normalize_embeddings: False} embeddings HuggingFaceEmbeddings( model_namemodel_name, model_kwargsmodel_kwargs, encode_kwargsencode_kwargs ) return embeddings # knowledge_base/vector_store.py from langchain_community.vectorstores import Chroma from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain_community.document_loaders import TextLoader import os from .embeddings import get_embedding_model class KnowledgeBase: def __init__(self, persist_directory./chroma_db): self.embeddings get_embedding_model() self.persist_directory persist_directory self.vector_store None self._init_vector_store() def _init_vector_store(self): 初始化或加载已有的向量存储。 if os.path.exists(self.persist_directory): print(f加载已有向量库: {self.persist_directory}) self.vector_store Chroma( persist_directoryself.persist_directory, embedding_functionself.embeddings ) else: print(创建新的向量库。) # 初始化为空等待添加文档 self.vector_store Chroma( persist_directoryself.persist_directory, embedding_functionself.embeddings ) def add_documents(self, file_path: str): 向知识库添加单个文本文档。 loader TextLoader(file_path) documents loader.load() # 分割文本以适应模型的上下文窗口 text_splitter RecursiveCharacterTextSplitter( chunk_size500, chunk_overlap50 ) splits text_splitter.split_documents(documents) self.vector_store.add_documents(splits) print(f已添加文档: {file_path}) def search(self, query: str, k3) - list: 检索与查询最相关的k个文档片段。 if self.vector_store is None: return [] docs self.vector_store.similarity_search(query, kk) return [doc.page_content for doc in docs] def as_retriever(self): 将知识库转换为 LangChain Retriever 对象方便集成。 return self.vector_store.as_retriever(search_kwargs{k: 3})3.3 定义智能体Agent我们将创建一个“研究助手”智能体它能根据问题决定是检索本地知识库、进行网络搜索还是进行数学计算。# agents/research_agent.py from langchain.agents import AgentExecutor, create_react_agent from langchain.prompts import PromptTemplate from langchain_openai import ChatOpenAI import sys import os sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from tools.calculator import calculate from tools.web_search import search_web from knowledge_base.vector_store import KnowledgeBase class ResearchAgent: def __init__(self, openai_api_key: str, model_namegpt-4-turbo-preview): # 1. 初始化 LLM self.llm ChatOpenAI( modelmodel_name, temperature0, # 降低随机性使工具调用更稳定 api_keyopenai_api_key ) # 2. 准备工具列表 self.kb KnowledgeBase() # 创建一个检索工具 from langchain.tools.retriever import create_retriever_tool retriever_tool create_retriever_tool( self.kb.as_retriever(), knowledge_base_search, 搜索公司的内部知识库获取关于产品、政策、流程的详细信息。 ) self.tools [calculate, search_web, retriever_tool] # 3. 定义智能体提示词模板 # ReAct 框架提示词鼓励模型进行推理Reason和行动Act prompt PromptTemplate.from_template( 你是一个强大的研究助手。你的任务是回答用户的问题并利用所有可用的工具来获取最准确、最新的信息。 你可以使用的工具 {tools} 请严格按照以下格式回应 思考你需要先思考当前情况决定下一步该做什么。如果需要使用工具请说明原因。 行动你要执行的动作必须是以下格式之一 - 使用工具{tool_names} 中的一个。 - 最终答案直接给用户答案。 当你使用工具时必须使用以下格式动作: [工具名称] 动作输入: [工具的输入必须是一个字符串]工具使用后会返回一个观察结果。基于观察你可以继续思考并采取下一个动作或者给出最终答案。 开始 问题{input} 思考{agent_scratchpad} ) # 4. 创建智能体 self.agent create_react_agent( llmself.llm, toolsself.tools, promptprompt ) # 5. 创建执行器 self.agent_executor AgentExecutor( agentself.agent, toolsself.tools, verboseTrue, # 打印详细的执行步骤便于调试 handle_parsing_errorsTrue, # 优雅处理解析错误 max_iterations5, # 限制最大迭代次数防止死循环 early_stopping_methodgenerate # 当智能体决定结束时停止 ) def run(self, query: str) - str: 运行智能体处理用户查询。 try: result self.agent_executor.invoke({input: query}) return result[output] except Exception as e: return f智能体执行过程中出现错误: {e}4. 完整实战组装并运行你的第一个 Agentic RAG 系统现在我们将所有组件组装起来完成一个端到端的流程。4.1 准备配置文件与环境变量为了避免在代码中硬编码敏感信息我们使用环境变量。# 在项目根目录创建 .env 文件 echo OPENAI_API_KEYyour_openai_api_key_here .env# config.py import os from dotenv import load_dotenv load_dotenv() # 加载 .env 文件中的环境变量 OPENAI_API_KEY os.getenv(OPENAI_API_KEY) if not OPENAI_API_KEY: raise ValueError(请在 .env 文件中设置 OPENAI_API_KEY)4.2 准备知识库文档在knowledge_base/docs/目录下创建一个示例文档company_products.txt。# company_products.txt 产品名称智能办公助手SmartOffice Assistant 核心功能语音会议纪要、邮件自动分类与摘要、日程智能安排。 最新版本v2.1.3 发布日期2024年5月15日 定价基础版 99美元/月/用户企业版需联系销售。 产品名称数据分析平台DataInsight Platform 核心功能支持SQL/NoSQL多数据源连接提供拖拽式报表和预测性分析。 最新版本v5.2.0 发布日期2024年4月10日 定价按数据行数和功能模块收费起价为 500美元/月。4.3 编写主程序# main.py from config import OPENAI_API_KEY from agents.research_agent import ResearchAgent from knowledge_base.vector_store import KnowledgeBase import sys def main(): # 1. 初始化知识库并添加文档 print(初始化知识库...) kb KnowledgeBase() kb.add_documents(knowledge_base/docs/company_products.txt) print(知识库准备就绪。\n) # 2. 初始化研究助手智能体 print(初始化研究助手智能体...) agent ResearchAgent(openai_api_keyOPENAI_API_KEY) print(智能体已就位。\n) # 3. 交互式问答循环 print( 研究助手已启动 ) print(输入 quit 或 exit 退出程序。) while True: try: user_input input(\n你的问题: ).strip() if user_input.lower() in [quit, exit]: print(再见) break if not user_input: continue print(\n--- 智能体开始思考 ---) answer agent.run(user_input) print(f\n--- 最终答案 ---\n{answer}) except KeyboardInterrupt: print(\n程序被中断。) break except Exception as e: print(f发生未知错误: {e}) if __name__ __main__: main()4.4 运行与验证在终端中运行你的程序python main.py4.5 示例交互与结果分析让我们看看智能体如何处理不同类型的问题。场景一基于知识库的精确问答你的问题: 智能办公助手的最新版本是什么价格是多少智能体执行过程verbose 输出:思考用户询问智能办公助手的最新版本和价格。我应该先搜索内部知识库来获取准确信息。 动作: knowledge_base_search 动作输入: 智能办公助手 最新版本 价格 观察找到了相关文档[文档内容... 包含版本v2.1.3和价格信息] 思考我已经从知识库中找到了相关信息。现在可以组织最终答案。 最终答案根据公司知识库智能办公助手SmartOffice Assistant的最新版本是 v2.1.3发布日期为2024年5月15日。其定价为基础版 99美元/月/用户企业版需联系销售。场景二需要计算和推理的复杂问题你的问题: 如果我们有10个用户使用智能办公助手基础版一年总费用是多少智能体执行过程:思考这个问题需要两个信息1每个用户的月度费用2计算10个用户一年的总费用。我先搜索知识库获取单价。 动作: knowledge_base_search 动作输入: 智能办公助手 基础版 价格 观察找到了相关文档[...基础版 99美元/月/用户...] 思考我找到了单价。现在需要计算 10 用户 * 99美元/月 * 12个月。我应该使用计算器工具来确保准确性。 动作: calculate 动作输入: 10 * 99 * 12 观察计算结果: 11880 思考计算完成。现在可以给出最终答案。 最终答案智能办公助手基础版价格为99美元/月/用户。10个用户使用一年的总费用为 10 * 99 * 12 11,880美元。场景三知识库无法回答需要外部信息模拟你的问题: 最新的Python 3.12版本有什么主要新特性智能体执行过程:思考这是一个关于Python编程语言最新版本特性的问题。公司知识库可能没有这类通用技术信息。我应该使用网络搜索工具来获取最新信息。 动作: search_web 动作输入: Python 3.12 主要新特性 观察[工具调用] 正在搜索: Python 3.12 主要新特性 关于 Python 3.12 主要新特性 的模拟搜索结果这是一个演示性的文本摘要...实际应包含真实搜索结果 思考根据网络搜索结果模拟我可以总结Python 3.12的新特性。 最终答案根据模拟结果Python 3.12 的主要新特性可能包括更快的解释器、改进的错误信息、新的类型注解语法等。建议访问 Python 官方网站或权威技术博客获取最准确和详细的列表。通过以上交互你可以清晰地看到 Agentic RAG 智能体的“思考-行动-观察”循环。它能够自主选择工具结合内部知识和外部模拟信息完成多步骤任务。5. 进阶构建更强大的 Agentic 工作流与 RAG-Critic 模式基础的 ReAct 智能体已经能处理很多问题。但在生产环境中我们常常需要更复杂、更可靠的工作流。这就是“代码秀”中常提到的Agentic Workflow和RAG-Critic模式的价值所在。5.1 多智能体协作Multi-Agent Collaboration对于复杂任务可以设计多个各司其职的智能体协同工作。例如规划智能体Planner负责拆解用户任务生成执行计划。执行智能体Executor负责调用具体工具完成任务。评审智能体Critic/Reviewer负责检查执行结果的质量、一致性和安全性。# 概念性代码展示多智能体协作思路 from langchain.agents import AgentExecutor, create_react_agent from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder from langchain_core.messages import HumanMessage, AIMessage class PlannerAgent: def plan(self, task): # 调用LLM将复杂任务分解为子任务列表 # 返回[步骤1: 搜索A信息, 步骤2: 计算B数据, 步骤3: 生成报告] pass class ExecutorAgent: def execute(self, subtask, tools): # 针对每个子任务调用基础的工具使用智能体如我们之前构建的ResearchAgent pass class CriticAgent: def review(self, final_output, original_task): # 检查输出是否完整、准确、无有害内容 # 如果不合格可以要求重新执行或修正 pass # 主协调器 def orchestrate_workflow(user_task): planner PlannerAgent() executor ExecutorAgent() critic CriticAgent() plan planner.plan(user_task) all_results [] for step in plan: result executor.execute(step) all_results.append(result) draft_output synthesize(all_results) # 合成初步结果 final_output critic.review(draft_output, user_task) return final_output5.2 实现 RAG-Critic 模式RAG-Critic 是 Agentic Workflow 在检索环节的精妙应用。其核心思想是不让智能体盲目相信第一次检索的结果而是引入一个“评审”步骤自动评估检索结果的相关性和质量并指导后续的检索或重写策略。一个简单的 RAG-Critic 工作流如下初始检索根据用户问题从向量库检索出 Top-K 个文档片段。相关性批判Critique让 LLM扮演 Critic评估每个检索片段与问题的相关性并给出分数或理由。例如“片段1高度相关因为它直接提到了产品价格片段2部分相关但讨论的是旧版本片段3不相关。”决策与行动如果存在高相关片段直接用于生成答案。如果相关片段不足Critic 可以重写查询Query Reformulation生成一个更精确的查询词然后触发新一轮检索。或者Critic 可以决定进行网络搜索以补充最新或更广泛的信息。合成与最终生成使用经过筛选和可能补充后的高质量上下文生成最终答案。# 一个简化的 RAG-Critic 模块示例 from langchain_openai import ChatOpenAI class RAGCritic: def __init__(self, llm): self.llm llm self.retriever KnowledgeBase().as_retriever() def critique_and_retrieve(self, query, max_iterations2): 带批判的检索流程。 current_query query collected_contexts [] for i in range(max_iterations): # 1. 检索 docs self.retriever.invoke(current_query) if not docs: break # 2. 批判评估 critique_prompt f 用户问题{query} 当前检索查询{current_query} 请评估以下检索结果的相关性并为每个结果打分1-5分5分最相关。 同时如果总体相关性不足例如没有结果得4分或5分请分析原因并生成一个更优化的搜索查询。 检索结果 {chr(10).join([f[结果{i1}] {d.page_content[:200]}... for i, d in enumerate(docs)])} 请按以下格式回复 评估[对整体相关性的简短评价] 得分[结果1得分][结果2得分]... 优化查询如果需要[如果相关性不足请提供一个新的、更精确的查询词] critique_response self.llm.invoke(critique_prompt).content # 3. 解析批判结果此处简化实际需要更稳健的解析 lines critique_response.split(\n) optimized_query None for line in lines: if 优化查询 in line: optimized_query line.split()[-1].strip() # 4. 收集高相关片段假设得分4 # 这里简化处理实际应根据解析出的分数筛选 # 我们假设critic认为相关就全部收集 collected_contexts.extend([d.page_content for d in docs]) # 5. 决定是否继续 if optimized_query and optimized_query ! current_query: print(f[RAG-Critic] 第{i1}轮检索相关性不足优化查询为: {optimized_query}) current_query optimized_query else: print(f[RAG-Critic] 第{i1}轮检索结果满意停止迭代。) break return collected_contexts def answer_with_critique(self, query): 使用 RAG-Critic 流程回答问题。 good_contexts self.critique_and_retrieve(query) if not good_contexts: return 抱歉在知识库中未找到足够相关的信息来回答此问题。 final_prompt f 基于以下上下文信息回答用户的问题。如果上下文信息不足以回答问题请如实说明。 上下文 {chr(10).join(good_contexts)} 用户问题{query} 答案 answer self.llm.invoke(final_prompt).content return answer将RAGCritic模块集成到之前的ResearchAgent中替换掉简单的knowledge_base_search工具就能显著提升复杂问题下检索的准确性和答案的可靠性。6. 常见问题与排查思路在构建和运行 Agentic RAG 系统时你可能会遇到以下典型问题。问题现象常见原因解决思路智能体陷入死循环或达到最大迭代次数1. 工具输出格式不符合 LLM 预期。2. 提示词Prompt没有清晰定义停止条件。3. LLM 无法理解当前状态反复调用同一工具。1. 检查工具函数的tool装饰器中的描述是否清晰输出是否为字符串。2. 在AgentExecutor中设置max_iterations如10和early_stopping_method。3. 启用verboseTrue观察每一步的“思考”和“动作”调整提示词引导其总结。工具调用失败或解析错误1. 工具输入参数类型不匹配。2. LLM 生成的“动作输入”格式错误。3. 工具函数本身抛出异常如网络超时。1. 确保工具函数有明确的类型注解和文档字符串docstring。2. 在AgentExecutor中设置handle_parsing_errorsTrue来捕获解析错误并返回友好信息。3. 在工具函数内部做好异常处理try-except返回错误描述而非抛出异常。检索结果不相关导致答案质量差1. 文本分割chunk策略不合理破坏了语义。2. 嵌入模型不适合当前领域。3. 查询词过于简单或模糊。1. 调整RecursiveCharacterTextSplitter的chunk_size和chunk_overlap或尝试按标题、段落分割。2. 尝试不同的嵌入模型如text-embedding-3-smallOpenAI或bge-large-zh-v1.5中文。3. 实施查询扩展Query Expansion或RAG-Critic模式让LLM重写查询。响应速度慢1. LLM API 调用延迟高。2. 本地嵌入模型计算慢。3. 智能体迭代次数过多。1. 考虑使用更快的模型如gpt-3.5-turbo用于简单任务或部署本地模型。2. 将嵌入模型加载到 GPU或使用更轻量的模型。3. 优化提示词减少不必要的思考步骤缓存频繁检索的结果。Token 消耗巨大成本高1. 检索返回的上下文过长。2. 智能体与LLM交互轮次多。3. 提示词过于冗长。1. 限制检索返回的文档数量k值和每个文档的长度。2. 使用“Map-Reduce”或“Refine”等摘要策略处理长文档。3. 精简提示词移除不必要的指令。监控 Token 使用量。7. 生产环境最佳实践与工程建议要将演示项目转化为可靠的生产系统需要关注以下方面7.1 架构与部署服务化不要以脚本方式运行。将智能体封装为 REST API使用 FastAPI、Flask或 gRPC 服务方便集成。异步处理对于耗时的工具调用如网络请求、复杂计算使用异步asyncio避免阻塞提高并发能力。容器化使用 Docker 封装应用、模型和依赖确保环境一致性。利用 Kubernetes 进行编排和扩缩容。云原生考虑使用云厂商的托管服务如 Amazon SageMaker部署模型、Amazon Bedrock调用多种基础模型、向量数据库如 Amazon OpenSearch Serverless with Vector Engine来降低运维复杂度。7.2 可观测性与评估全链路追踪Tracing集成像LangSmith或Langfuse这样的平台。记录每一次 LLM 调用、工具调用、中间结果的输入输出、Token 消耗和延迟。这对于调试复杂的工作流、理解成本构成至关重要。评估体系建立自动化评估管道衡量智能体的回答在准确性、相关性、有用性和安全性上的表现。可以使用 LLM 作为裁判LLM-as-a-Judge进行批量评估。监控与告警监控 API 调用成功率、延迟、错误率以及 Token 消耗成本。设置告警阈值。7.3 性能与成本优化缓存策略对频繁且结果不变的查询如知识库检索、某些计算实施缓存可以显著降低 LLM 调用和计算开销。模型选型根据任务复杂度选择合适的模型。简单的分类、提取任务可用小模型复杂的规划、创作任务再用大模型。考虑混合使用。上下文管理精心设计上下文窗口的使用。优先放入最相关的信息对长文档进行智能摘要后再放入上下文。7.4 安全与合规工具沙箱对于执行代码、访问系统资源的工具必须在严格的沙箱环境中运行防止任意代码执行和系统破坏。输入输出过滤对用户输入和智能体输出进行内容安全过滤防止生成有害、偏见或敏感信息。权限控制为智能体设定清晰的权限边界。例如一个处理内部数据的智能体不应被允许调用外网搜索工具。数据隐私确保知识库中的内容符合数据隐私法规。对用户数据进行脱敏处理。7.5 提示词工程与智能体设计模块化提示词将系统指令、工具描述、示例Few-Shot分开管理便于维护和 A/B 测试。为工具提供高质量描述工具函数的docstring是 LLM 理解工具用途的关键务必清晰、准确并说明输入格式。设计明确的停止条件在提示词中明确告诉智能体何时应该停止并给出最终答案避免无意义循环。通过本文的拆解我们从零构建了一个具备基础 Agentic 能力的 RAG 系统并探讨了其进阶模式和生产化考量。Agentic AI 的核心在于将 LLM 从“答题者”转变为“思考者和执行者”这为构建真正智能、自动化的应用打开了大门。下一步你可以尝试集成更多真实工具如数据库、CRM/ERP API、邮件系统设计更复杂的多智能体协作流程并结合具体的业务场景如智能客服、自动化报告生成、内部知识问答进行深度定制。记住持续迭代、加强可观测性、关注安全与成本是让 AI 智能体在企业中成功落地的关键。 30款热门AI模型一站整合DeepSeek/GLM/Qwen 随心用限时 5 折。 点击领海量免费额度