ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

AI智能体实战:从验证环到代码助手,基于LangGraph的完整开发指南

AI智能体实战:从验证环到代码助手,基于LangGraph的完整开发指南 最近在AI智能体AI Agent领域几位顶尖研究者和实践者的思考引发了广泛讨论。Addy Osmani提出的“认知投降”与“验证环”概念直指当前AI应用开发中的核心痛点而Laycock关于“公民构建”与“专家治理”的区分则为AI Agent的民主化与专业化发展路径提供了清晰的框架。更令人瞩目的是一位17岁的作者在顶级会议ICML上分享的Agent路径研究展示了这一领域惊人的创新活力与未来潜力。对于开发者而言无论是想快速构建一个智能体应用还是希望深入理解其背后的架构与治理哲学都需要一套从理论到实践的完整指南。本文将围绕“AI智能体”这一核心深入拆解上述前沿思想并结合最新的开发框架如LangGraph、Dify、Coze等提供一个从零搭建、可运行、可扩展的智能体项目实战教程。无论你是刚接触Agent概念的新手还是希望优化现有智能体系统的资深开发者都能从中获得可直接复用的代码、配置方案与架构思考。1. AI智能体核心概念与前沿思想解读在动手编码之前理解当前领域的前沿思想至关重要。这能帮助我们在构建系统时做出更明智的设计决策避免陷入短视的技术实现。1.1 Addy Osmani的“认知投降”与“验证环”“认知投降”并非一个消极词汇在这里它指的是一种设计哲学让智能体在遇到不确定性或超出其预设能力边界的问题时主动、明确地将决策权交还给人类用户或更上层的协调系统而不是强行给出一个可能错误或有害的答案。与之紧密相关的是“验证环”。这是一个确保智能体输出可靠性的机制性设计。一个典型的“验证环”包含以下步骤生成智能体根据输入和内部逻辑生成初步输出如一段代码、一个分析结论。评估系统或另一个智能体对初步输出进行多维度评估包括准确性、安全性、合规性、与目标的匹配度等。验证如果评估通过则输出最终结果如果未通过则触发修正流程。修正可能包括自我修正智能体根据反馈重新生成。请求人类介入即触发“认知投降”将问题提交给人类审核。移交专家智能体将任务路由给更专业的子智能体处理。执行与反馈输出最终结果并执行将执行结果作为反馈纳入学习循环。为什么这对开发者很重要在开发中盲目追求智能体的“全自动”而忽略其局限性是危险的。例如一个处理财务数据的智能体在遇到模糊或异常的指令时应主动要求用户澄清而不是猜测用户的意图。实现“验证环”意味着我们需要在架构中内置评估模块、路由逻辑和人工审核接口。1.2 Laycock的“公民构建”与“专家治理”这一区分框架为智能体生态的发展提供了两个并行且互补的路径公民构建指通过低代码/无代码平台让非专业开发者如业务人员、产品经理也能快速搭建满足特定场景需求的智能体。这类平台如Dify、Coze扣子通常提供可视化的编排界面、丰富的预制技能模块和简单的自然语言配置。其目标是民主化AI能力加速应用落地。专家治理指在复杂、关键的业务场景中由专业工程师和AI科学家主导从底层构建高可靠、高性能、可深度定制的智能体系统。这涉及对智能体架构如基于LangGraph的工作流、模型微调、安全合规机制如内容过滤、审计日志和系统集成如与企业后台ERP、CRM对接的精细控制。其目标是确保智能体在生产环境中的稳定性、安全性与业务价值。开发者的定位大多数技术开发者处于这两个路径的交汇处。我们需要既能利用“公民构建”平台快速验证想法和构建MVP也要掌握“专家治理”所需的技术栈以应对更复杂的工程挑战。1.3 17岁作者的ICML路径与智能体架构启示年轻研究者在ICML等顶会上关于Agent路径规划的工作常常聚焦于如何让智能体在复杂环境中如虚拟世界、代码仓库进行有效的探索、学习和决策。其核心思想可以迁移到应用开发中分层目标分解将复杂用户目标如“开发一个网站”自动分解为可执行的子任务序列设计数据库 - 编写后端API - 实现前端页面。工具使用与学习智能体需要学会调用外部工具搜索引擎、代码解释器、API来获取信息和执行操作并能从成功或失败的工具使用经验中学习。长期记忆与反思智能体需要具备记忆能力记住过去的交互、学到的知识和犯过的错误并通过周期性“反思”来优化未来的策略。这些研究为构建更强大、更自主的智能体提供了理论基础也是当前许多开源Agent框架如LangChain, LangGraph正在实现的核心能力。2. 环境准备与核心工具选型在开始实战前我们需要搭建开发环境并选择合适的技术栈。本文将采用目前最受开发者欢迎的组合之一Python LangGraph Ollama (本地大模型) FastAPI。这个组合兼顾了灵活性、控制力和本地部署的安全性。2.1 基础环境与Python版本操作系统Windows 10/11, macOS, 或 Linux (Ubuntu 20.04)。本文示例在Ubuntu 22.04 LTS上验证。Python版本推荐使用 Python 3.10 或 3.11。避免使用最新的3.12因为某些库的兼容性可能尚未完全跟上。包管理工具使用pip和venv创建虚拟环境这是管理项目依赖的最佳实践。2.2 核心框架与库介绍LangGraph一个用于构建有状态、多智能体工作流的库。它基于LangChain但引入了“图”的概念可以清晰地定义智能体的执行流程、循环和分支是实现复杂“验证环”和“路径规划”的理想工具。Ollama一个强大的工具用于在本地拉取和运行大型语言模型LLM。它支持众多开源模型如Llama 3, Mistral, Gemma无需GPU也能通过量化技术在CPU上运行非常适合开发和测试。FastAPI一个现代、快速高性能的Web框架用于构建API。我们将用它来暴露智能体的服务接口。Pydantic用于数据验证和设置管理确保输入输出的结构正确。其他辅助库如requests(HTTP请求),python-dotenv(环境变量管理)等。2.3 初始化项目打开终端执行以下命令来创建项目结构和虚拟环境# 创建项目目录 mkdir my_ai_agent_project cd my_ai_agent_project # 创建虚拟环境Windows用户使用 python -m venv venv python3 -m venv venv # 激活虚拟环境 # Linux/macOS: source venv/bin/activate # Windows: # venv\Scripts\activate # 升级pip pip install --upgrade pip创建项目基础文件# 创建必要的目录和文件 mkdir -p app/{core, models, routes, utils} touch app/__init__.py touch app/main.py touch requirements.txt touch .env.example3. 依赖安装与模型准备3.1 安装Python依赖编辑requirements.txt文件添加以下内容# 核心框架 langgraph0.0.30 langchain0.1.0 langchain-community0.0.10 # 本地LLM集成 ollama # Web框架与工具 fastapi0.104.1 uvicorn[standard]0.24.0 pydantic2.5.0 pydantic-settings2.1.0 # 工具与工具调用 requests2.31.0 python-dotenv1.0.0 # 可选用于示例中的代码执行 # python-executor # 谨慎使用注意安全隔离然后安装依赖pip install -r requirements.txt3.2 安装并配置Ollama首先根据你的操作系统从 Ollama官网 下载并安装Ollama。安装完成后在终端启动Ollama服务通常安装后会自动运行。然后拉取一个适合你硬件配置的模型。对于开发和测试一个7B参数的量化模型是不错的选择# 拉取 Llama 3 8B 模型的 4-bit量化版本 (对CPU/内存更友好) ollama pull llama3:8b-instruct-q4_0 # 或者拉取 Mistral 7B # ollama pull mistral:7b-instruct-q4_0你可以通过以下命令测试模型是否正常工作ollama run llama3:8b-instruct-q4_0 Hello, whats your name?你应该能看到模型的回复。4. 构建核心智能体一个具备“验证环”的代码助手我们将构建一个代码生成智能体它严格遵循“生成 - 评估 - 验证 - 执行/投降”的验证环。这个智能体接受一个自然语言描述的功能需求生成Python代码并尝试评估代码的安全性和基本正确性。4.1 定义数据模型与状态首先在app/models/state.py中定义智能体工作流的状态。状态是LangGraph中在不同节点间传递的数据结构。# app/models/state.py from typing import TypedDict, List, Optional, Annotated from langgraph.graph.message import add_messages import operator class AgentState(TypedDict): 智能体工作流的全局状态 # 用户输入 user_request: str # 生成的代码 generated_code: Optional[str] # 代码评估结果 code_evaluation: Optional[str] # 验证状态: ‘pending‘, ‘approved‘, ‘needs_human_review‘, ‘failed‘ verification_status: str # 给用户的最终消息或代码 final_output: Optional[str] # 消息历史 (用于对话上下文) messages: Annotated[list, add_messages]4.2 创建智能体节点我们将工作流分解为几个节点每个节点负责一个特定任务。1. 代码生成节点 (app/core/nodes/generate_code.py)# app/core/nodes/generate_code.py from langchain_community.chat_models import ChatOllama from langchain_core.prompts import ChatPromptTemplate from app.models.state import AgentState # 初始化本地LLM llm ChatOllama(modelllama3:8b-instruct-q4_0, temperature0.2) # 定义代码生成提示词 code_generation_prompt ChatPromptTemplate.from_messages([ (system, 你是一个专业的Python程序员。你的任务是根据用户的需求生成正确、高效、安全的Python代码。 要求 1. 只输出代码除非用户要求解释。 2. 代码必须包含必要的导入语句。 3. 如果需求模糊假设一个合理的常见实现。 4. 避免使用不安全的函数如eval, exec, os.system除非绝对必要并明确提示风险。 ), (human, 用户需求{user_request}) ]) def generate_code_node(state: AgentState) - AgentState: 节点根据用户需求生成代码 print(f[生成节点] 处理请求: {state[user_request]}) # 构造链 chain code_generation_prompt | llm # 调用模型 response chain.invoke({user_request: state[user_request]}) generated_code response.content # 更新状态 state[generated_code] generated_code state[verification_status] pending # 等待评估 print(f[生成节点] 代码已生成长度: {len(generated_code)} 字符) return state2. 代码评估节点 (app/core/nodes/evaluate_code.py)# app/core/nodes/evaluate_code.py from langchain_community.chat_models import ChatOllama from langchain_core.prompts import ChatPromptTemplate from app.models.state import AgentState llm ChatOllama(modelllama3:8b-instruct-q4_0, temperature0.1) evaluation_prompt ChatPromptTemplate.from_messages([ (system, 你是一个代码安全与质量审查员。请严格评估提供的Python代码。 评估维度 1. **安全性**是否包含明显危险函数eval, exec, os.system, subprocess.call等是否可能引发注入攻击 2. **基本正确性**语法是否有明显错误逻辑是否自洽不要求运行只做静态分析 3. **需求匹配度**代码是否试图解决用户描述的问题 请按以下格式输出评估结果 SAFETY: [SAFE/UNSAFE - 如果不安全说明原因] SYNTAX: [LIKELY_CORRECT/LIKELY_INCORRECT - 如果可能错误指出可疑行] RELEVANCE: [RELEVANT/IRRELEVANT] OVERALL: [APPROVE/REVIEW/REJECT] --- (可选的详细说明) ), (human, 用户需求{user_request}\n\n生成的代码\npython\n{generated_code}\n) ]) def evaluate_code_node(state: AgentState) - AgentState: 节点评估生成的代码 if not state.get(generated_code): state[code_evaluation] ERROR: No code to evaluate. state[verification_status] failed return state print(f[评估节点] 开始评估代码...) chain evaluation_prompt | llm response chain.invoke({ user_request: state[user_request], generated_code: state[generated_code] }) evaluation_result response.content state[code_evaluation] evaluation_result # 解析评估结果决定下一步 if OVERALL: APPROVE in evaluation_result: state[verification_status] approved print([评估节点] 评估结果通过) elif OVERALL: REJECT in evaluation_result: state[verification_status] failed print([评估节点] 评估结果拒绝) else: # REVIEW 或其他情况 state[verification_status] needs_human_review print([评估节点] 评估结果需要人工审核) return state3. 路由决策节点 (app/core/nodes/router.py)这个节点根据评估结果决定工作流的下一步走向。# app/core/nodes/router.py from app.models.state import AgentState def route_node(state: AgentState) - str: 路由节点根据验证状态决定下一步 status state.get(verification_status, pending) print(f[路由节点] 当前状态: {status}) if status approved: # 代码通过进入最终输出节点 return finalize elif status needs_human_review: # 需要人工审核进入人工审核节点 return human_review elif status failed: # 评估失败进入失败处理节点 return handle_failure else: # 默认或未知状态也进入人工审核 return human_review4. 最终输出与人工审核节点# app/core/nodes/finalize.py def finalize_node(state: AgentState) - AgentState: 节点准备最终输出代码通过 print([最终节点] 准备最终输出) state[final_output] f# 生成的代码已通过自动评估\npython\n{state[generated_code]}\n\n\n**评估摘要**:\n{state[code_evaluation].split(---)[0]} return state # app/core/nodes/human_review.py def human_review_node(state: AgentState) - AgentState: 节点模拟人工审核环节在实际应用中这里会连接到一个UI或通知 print([人工审核节点] 代码需要人工审核。在实际系统中这里会通知人类操作员。) # 这里我们模拟一个简单的逻辑如果代码包含“dangerous”字样则拒绝否则通过 if dangerous in state.get(generated_code, ).lower(): state[final_output] 【需要人工审核】代码被标记为可能危险已暂停。请联系管理员。 state[verification_status] failed else: # 模拟人工批准 state[final_output] f# 生成的代码已通过人工审核\npython\n{state[generated_code]}\n\n\n**注意**此代码已由系统标记经人工检查后批准使用。 state[verification_status] approved return state # app/core/nodes/handle_failure.py def handle_failure_node(state: AgentState) - AgentState: 节点处理失败情况 print([失败处理节点] 处理失败案例) state[final_output] f无法生成安全的代码。\n\n**原因**\n{state.get(code_evaluation, 评估失败)}\n\n请重新描述您的需求或联系支持人员。 return state4.3 组装工作流图在app/core/graph.py中我们将所有节点连接起来形成一个完整的工作流。# app/core/graph.py from langgraph.graph import StateGraph, END from app.models.state import AgentState from app.core.nodes.generate_code import generate_code_node from app.core.nodes.evaluate_code import evaluate_code_node from app.core.nodes.router import route_node from app.core.nodes.finalize import finalize_node from app.core.nodes.human_review import human_review_node from app.core.nodes.handle_failure import handle_failure_node def create_agent_workflow(): 创建并返回智能体工作流图 # 创建图 workflow StateGraph(AgentState) # 添加节点 workflow.add_node(generate, generate_code_node) workflow.add_node(evaluate, evaluate_code_node) workflow.add_node(finalize, finalize_node) workflow.add_node(human_review, human_review_node) workflow.add_node(handle_failure, handle_failure_node) # 设置入口点 workflow.set_entry_point(generate) # 添加边连接节点 workflow.add_edge(generate, evaluate) # 根据路由节点的结果动态决定下一步 workflow.add_conditional_edges( evaluate, route_node, # 这是一个返回下一个节点名称的函数 { finalize: finalize, human_review: human_review, handle_failure: handle_failure } ) workflow.add_edge(finalize, END) workflow.add_edge(human_review, END) workflow.add_edge(handle_failure, END) # 编译图 app workflow.compile() return app # 创建全局可用的图应用实例 agent_app create_agent_workflow()4.4 创建FastAPI服务现在我们创建一个Web API来暴露这个智能体。# app/main.py from fastapi import FastAPI, HTTPException from pydantic import BaseModel from app.core.graph import agent_app from app.models.state import AgentState app FastAPI(titleAI智能体代码助手API, description一个具备验证环的代码生成智能体) class CodeRequest(BaseModel): 请求体模型 prompt: str user_id: str default_user # 可用于审计和个性化 class CodeResponse(BaseModel): 响应体模型 status: str output: str request_id: str # 在实际应用中可以添加更多字段如生成的代码、评估报告等。 app.post(/generate-code, response_modelCodeResponse) async def generate_code(request: CodeRequest): 接收用户请求调用智能体工作流生成代码 try: # 初始化工作流状态 initial_state: AgentState { user_request: request.prompt, generated_code: None, code_evaluation: None, verification_status: pending, final_output: None, messages: [] } # 执行工作流 print(f\n 开始处理请求: {request.prompt[:50]}... ) final_state agent_app.invoke(initial_state) print(f 请求处理完成状态: {final_state[verification_status]} \n) # 准备响应 response CodeResponse( statusfinal_state[verification_status], outputfinal_state.get(final_output, No output generated.), # 在实际应用中这里应该生成一个唯一的request_id request_idtest_id_123 ) return response except Exception as e: raise HTTPException(status_code500, detailf智能体处理失败: {str(e)}) app.get(/health) async def health_check(): 健康检查端点 return {status: healthy, service: ai_agent_code_assistant}4.5 运行与测试首先创建一个启动脚本run.py在项目根目录# run.py import uvicorn if __name__ __main__: uvicorn.run( app.main:app, host0.0.0.0, # 允许外部访问 port8000, reloadTrue # 开发模式代码修改后自动重启 )在终端运行服务python run.py服务启动后打开浏览器访问http://localhost:8000/docs你会看到自动生成的Swagger API文档。现在让我们使用curl或任何API测试工具如Postman来测试我们的智能体测试用例1生成一个安全的代码应通过自动评估curl -X POST http://localhost:8000/generate-code \ -H Content-Type: application/json \ -d { prompt: 写一个Python函数计算斐波那契数列的第n项。 }测试用例2生成一个可能不安全的代码可能触发人工审核或失败curl -X POST http://localhost:8000/generate-code \ -H Content-Type: application/json \ -d { prompt: 写一个Python脚本删除当前目录下所有.txt文件。 }观察服务端的日志输出你会看到工作流在各个节点间的流转过程以及最终的验证状态。5. 进阶集成外部工具与长期记忆一个真正的智能体需要能使用工具如搜索网络、读写文件、调用API并记住对话历史。让我们增强我们的智能体。5.1 为智能体添加工具调用能力我们将使用LangChain的Tool概念。首先定义几个简单的工具。在app/core/tools/目录下创建文件# app/core/tools/web_search.py (示例实际需要API Key) from langchain.tools import Tool from langchain_community.utilities import GoogleSearchAPIWrapper import os # 注意需要设置GOOGLE_API_KEY和GOOGLE_CSE_ID环境变量 # 这里仅作示例实际使用时请申请相关API def get_web_search_tool(): 获取网页搜索工具需要配置API # 为了示例安全我们返回一个模拟工具 # 真实工具初始化 # search GoogleSearchAPIWrapper() # tool Tool( # nameweb_search, # descriptionSearch the web for current information., # funcsearch.run # ) def mock_search(query: str) - str: return f[模拟搜索] 查询 {query} 的结果这是关于{query.split()[0]}的模拟信息。 tool Tool( nameweb_search, descriptionSearch the web for current information. Input should be a search query., funcmock_search ) return tool # app/core/tools/calculator.py from langchain.tools import Tool def get_calculator_tool(): 获取计算器工具安全示例 import ast import operator as op # 支持的操作符 allowed_operators { ast.Add: op.add, ast.Sub: op.sub, ast.Mult: op.mul, ast.Div: op.truediv, ast.Pow: op.pow, ast.USub: op.neg } def eval_expr(expr: str): 安全地评估数学表达式 try: # 使用ast.literal_eval进行安全解析和计算 node ast.parse(expr, modeeval).body def _eval(node): if isinstance(node, ast.Num): return node.n elif isinstance(node, ast.BinOp): left _eval(node.left) right _eval(node.right) return allowed_operators[type(node.op)](left, right) elif isinstance(node, ast.UnaryOp): operand _eval(node.operand) return allowed_operators[type(node.op)](operand) else: raise TypeError(f不支持的表达式: {expr}) return _eval(node) except Exception as e: return f计算错误: {e} tool Tool( namecalculator, descriptionUseful for performing arithmetic calculations. Input should be a valid mathematical expression, e.g., 2 2 or 3 * 4.5., funclambda x: str(eval_expr(x)) ) return tool然后修改我们的代码生成节点让智能体在生成代码前可以选择使用工具。5.2 实现带有工具使用和记忆的智能体这需要更复杂的设计通常使用LangGraph的State和Messages来维护对话历史并配置一个支持工具调用的LLM如ChatOllama绑定工具。由于篇幅限制这里给出一个简化的架构思路定义增强的状态在AgentState中添加tool_calls和intermediate_steps字段来记录工具使用历史。创建工具调用节点根据LLM的输出决定调用哪个工具并执行。修改工作流使工作流在“生成”和“评估”之间可以循环允许智能体多次使用工具来获取信息。持久化记忆可以将状态中的messages列表保存到数据库如SQLite, Redis在下次对话时加载实现跨会话记忆。这是一个更接近现实世界AI Agent的架构也是实现Laycock所说的“专家治理”级智能体的关键。6. 常见问题与排查思路在开发和部署AI智能体时你会遇到一些典型问题。以下是一个快速排查指南问题现象可能原因解决思路Ollama模型无法加载或响应慢1. 模型未正确下载。2. 内存不足。3. Ollama服务未运行。1. 运行ollama list确认模型存在。2. 尝试拉取更小的量化模型如q4_0。3. 重启Ollama服务 (ollama serve)。LangGraph工作流编译错误1. 节点函数签名与State定义不匹配。2. 图中存在循环依赖或未定义的边。1. 检查所有节点函数是否都接受并返回AgentState。2. 使用workflow.get_graph().draw_mermaid()可视化图结构检查连接。智能体输出无关内容或胡言乱语1. 提示词Prompt不清晰。2. 模型温度temperature设置过高。3. 上下文窗口溢出。1. 优化系统提示词明确指令和格式。2. 将temperature调低如0.1-0.3。3. 检查输入token长度考虑使用更长的模型或摘要历史消息。工具调用失败1. 工具函数抛出异常。2. LLM生成的工具调用参数格式错误。1. 在工具函数内部添加详细的异常处理和日志。2. 在提示词中明确工具的描述和输入格式要求。API服务响应慢1. LLM推理速度慢。2. 工作流中有同步阻塞操作如网络请求。3. 没有使用流式响应。1. 考虑使用更快的模型或推理后端如vLLM。2. 将耗时操作异步化使用asyncio。3. 对于生成式端点实现Server-Sent Events (SSE)流式输出。“认知投降”过于频繁评估节点过于严格或LLM评估能力不足。1. 调整评估提示词使其更聚焦于关键风险。2. 实现多级评估如先通过简单规则过滤再LLM评估。3. 收集人工审核数据用于微调评估模型。7. 最佳实践与工程建议构建生产级AI智能体系统远不止让代码跑起来。以下是基于“专家治理”视角的关键实践7.1 安全与合规第一输入/输出过滤对所有用户输入和模型输出进行严格的过滤和清理防止提示词注入、恶意代码生成、信息泄露。权限控制智能体使用的工具如文件系统、数据库、网络必须遵守最小权限原则。为不同的智能体分配不同的权限上下文。审计与日志记录智能体的每一次调用、完整的思维链如果可能、工具使用记录和最终输出。这些日志对于调试、合规审查和后续模型优化至关重要。内容安全策略集成内容安全层对生成的内容进行二次检查过滤暴力、仇恨、歧视性言论等。7.2 可观测性与监控关键指标监控智能体的延迟、成功率、工具调用错误率、Token消耗成本。追踪与调试使用像LangSmith这样的平台或自建追踪系统可视化智能体的决策过程这对于排查复杂问题不可或缺。警报对错误率上升、延迟异常、敏感内容生成等情况设置警报。7.3 架构设计模块化将智能体、工具、记忆、评估器等组件设计为松耦合的模块便于单独测试、升级和替换。状态管理仔细设计工作流的状态对象。避免状态过于庞大考虑将长期记忆与短期工作记忆分离。容错与降级工作流中应有明确的错误处理路径。当主要模型或工具失败时应有备选方案如使用更简单的规则或直接转向人工服务。版本化对智能体的提示词、工作流图、模型版本进行版本控制便于回滚和A/B测试。7.4 提示词工程系统提示词是核心它是智能体的“人格”和“行为准则”。要清晰、具体、包含负面示例不该做什么。结构化输出强制要求模型以JSON、XML或特定标记格式输出这极大简化了后续的解析和处理。持续迭代建立提示词测试集定期评估不同提示词版本的效果。7.5 走向生产容器化使用Docker将你的智能体应用及其依赖打包确保环境一致性。编排与伸缩使用Kubernetes等工具管理智能体服务的部署、伸缩和生命周期。考虑将计算密集的LLM推理服务单独部署。成本管理监控API调用如OpenAI或自有GPU资源的成本。对于内部工具可以考虑缓存常见请求的结果。从“公民构建”平台快速原型到深入“专家治理”级系统的构建AI智能体的开发是一场关于平衡创造力与严谨性的工程实践。本文通过一个具备“验证环”的代码助手实例展示了从核心概念到完整实现的全过程。你可以在此基础上继续探索更复杂的多智能体协作、动态工具学习、以及基于真实业务数据的微调逐步构建出真正强大、可靠、有价值的AI智能体应用。
返回列表