电子商务网站开发价格,企业网站策划流程,苏州 规划建设局网站,ui培训机构推荐当你看到一个 AI 代理编辑多个文件、运行命令、处理错误并迭代解决问题时#xff0c;可能会觉得这像魔法一样复杂。但其实不然。构建代理的秘诀在于#xff1a;它根本没有秘密。
一个 Agent 的核心原理非常简单#xff1a;它是一个大型语言模型#xff08;LLM#xff09;在…当你看到一个 AI 代理编辑多个文件、运行命令、处理错误并迭代解决问题时可能会觉得这像魔法一样复杂。但其实不然。构建代理的秘诀在于它根本没有秘密。一个 Agent 的核心原理非常简单它是一个大型语言模型LLM在一个循环中运行并配备了它可以选择使用的工具。只要你会用 Python 编写循环你就能构建一个 Agent。本指南将带你一步步完成整个过程从简单的 API 调用到功能完备的命令行接口CLI代理。Agent 的真正定义是什么传统的软件工作流是预设的遵循预定义的路径步骤 A - 步骤 B - 步骤 C。而Agent是一个系统它利用 LLM动态地决定应用程序的控制流程以达成用户的目标。一个 Agent 通常由以下核心组件构成模型大脑推理引擎在本例中是 Gemini 模型。它负责处理歧义、规划步骤并决定何时需要外部帮助。工具手和眼代理可以执行的功能用于与外部世界/环境交互例如搜索网页、读取文件、调用 API。上下文/记忆工作区代理在任何时刻都能获取的信息。有效地管理这些信息也就是所谓的“上下文工程Context Engineering”。循环生命一个while循环允许模型观察 → 思考 → 行动 → 再次观察直到任务完成。“循环”的工作流程几乎所有 Agent 的“循环”都是一个迭代过程定义工具你使用结构化的 JSON 格式向模型描述你可用的工具例如get_weather。调用 LLM你将用户的提示词和工具定义发送给模型。模型决策模型分析请求。如果需要工具它会返回一个结构化的工具调用请求其中包含工具名称和参数。执行工具客户端责任客户端/应用程序代码拦截这个工具调用请求执行实际的代码或 API 调用并捕获结果。响应与迭代你将结果工具响应发回给模型。模型利用这一新信息来决定下一步可能是调用另一个工具也可能是生成最终的回答。构建 Agent让我们使用 Gemini 3 Pro 和 Python SDK 一步步构建一个 Agent从基本的文本生成逐步过渡到功能完备的 CLI 代理。先决条件安装 SDK (pip install google-genai) 并设置你的GEMINI_API_KEY环境变量可在 AI Studio 中获取。步骤 1基础文本生成和抽象第一步是创建与 LLM即 Gemini 3 Pro交互的基线。我们将创建一个简单的Agent类抽象来组织代码并在后续步骤中对其进行扩展。首先从一个维护会话历史的简单聊天机器人开始。from google import genaifrom google.genai import typesclass Agent: def __init__(self, model: str): self.model model self.client genai.Client() self.contents [] # 用于存储会话历史 def run(self, contents: str): # 1. 将用户输入添加到历史记录 self.contents.append({role: user, parts: [{text: contents}]}) # 2. 调用模型生成内容 response self.client.models.generate_content(modelself.model, contentsself.contents) # 3. 将模型的响应添加到历史记录 self.contents.append(response.candidates[0].content) return responseagent Agent(modelgemini-3-pro-preview)response1 agent.run( contentsHello, What are top 3 cities in Germany to visit? Only return the names of the cities.)print(fModel: {response1.text})# 输出: Berlin, Munich, Cologne response2 agent.run( contentsTell me something about the second city.)print(fModel: {response2.text})# 输出: Munich is the capital of Bavaria and is known for its Oktoberfest.请注意这还不是一个 Agent。它是一个标准的聊天机器人。它能保持状态记忆但不能采取行动没有“手和眼”。步骤 2赋予它手和眼工具使用要开始将它转变为 Agent我们需要工具使用或函数调用能力。我们为 Agent 提供工具。这需要定义实现Python 代码和定义LLM 看见的 Schema。如果 LLM 认为某个工具将有助于解决用户的提示它将返回一个结构化的请求来调用该函数而不是仅仅返回文本。我们将创建 3 个工具read_file、write_file和list_dir。工具定义是一个 JSON Schema它定义了工具的name、description和parameters。最佳实践使用description字段来解释何时以及如何使用该工具。模型高度依赖这些描述来理解工具的使用时机和方法。务必清晰明了。import osimport json# --- 工具定义Schema ---read_file_definition { name: read_file, description: Reads a file and returns its contents., # ... 省略其余参数定义 ...}list_dir_definition { name: list_dir, description: Lists the contents of a directory., # ... 省略其余参数定义 ...}write_file_definition { name: write_file, description: Writes a file with the given contents., # ... 省略其余参数定义 ...}# --- 工具实现Python 函数 ---def read_file(file_path: str) - dict: with open(file_path, r) as f: return f.read()def write_file(file_path: str, contents: str) - bool: Writes a file with the given contents. with open(file_path, w) as f: f.write(contents) returnTruedef list_dir(directory_path: str) - list[str]: Lists the contents of a directory. full_path os.path.expanduser(directory_path) return os.listdir(full_path)# 将定义和实现函数组合file_tools { read_file: {definition: read_file_definition, function: read_file}, write_file: {definition: write_file_definition, function: write_file}, list_dir: {definition: list_dir_definition, function: list_dir},}# --- Agent 类集成工具 ---from google import genaifrom google.genai import typesclass Agent: def __init__(self, model: str, tools: dict): self.model model self.client genai.Client() self.contents [] self.tools tools # 存储工具 def run(self, contents: str): self.contents.append({role: user, parts: [{text: contents}]}) # 配置工具声明 config types.GenerateContentConfig( tools[types.Tool(function_declarations[tool[definition] for tool in self.tools.values()])], ) response self.client.models.generate_content(modelself.model, contentsself.contents, configconfig) self.contents.append(response.candidates[0].content) return responseagent Agent(modelgemini-3-pro-preview, toolsfile_tools)response agent.run( contentsCan you list my files in the current directory?)print(response.function_calls)# 输出: [FunctionCall(namelist_dir, arguments{directory_path: .})]太棒了模型成功调用了工具。现在我们需要将工具执行逻辑添加到Agent类中并让循环将结果返回给模型。3闭合循环Agent 的诞生一个 Agent 的意义不仅在于生成一个工具调用而在于生成一系列工具调用将结果返回给模型然后模型再生成下一个工具调用如此循环直到任务完成。Agent类将处理核心循环拦截FunctionCall在客户端执行工具然后将FunctionResponse发回。我们还添加了SystemInstruction来指导模型的行为。注意Gemini 3 使用思维签名Thought signatures来在 API 调用中维护推理上下文。你必须将这些签名原封不动地在请求中返回给模型。# ... 此处省略了步骤 2 的工具和工具定义代码 ... from google import genaifrom google.genai import typesclass Agent: def __init__(self, model: str, tools: dict, system_instruction: str You are a helpful assistant.): # ... 初始化代码与步骤 2 相同 ... self.system_instruction system_instruction def run(self, contents: str | list[dict[str, str]]): # 处理用户输入或函数响应的 parts 列表 if isinstance(contents, list): self.contents.append({role: user, parts: contents}) else: self.contents.append({role: user, parts: [{text: contents}]}) config types.GenerateContentConfig( system_instructionself.system_instruction, tools[types.Tool(function_declarations[tool[definition] for tool in self.tools.values()])], ) response self.client.models.generate_content(modelself.model, contentsself.contents, configconfig) self.contents.append(response.candidates[0].content) # --- 核心循环逻辑检查工具调用 --- if response.function_calls: functions_response_parts [] for tool_call in response.function_calls: print(f[Function Call] {tool_call}) # 客户端执行工具 if tool_call.name in self.tools: result {result: self.tools[tool_call.name][function](**tool_call.args)} else: result {error: Tool not found} print(f[Function Response] {result}) # 准备函数响应部分 functions_response_parts.append({ functionResponse: {name: tool_call.name, response: result} }) # 递归调用 run()将结果返回给模型进行下一步推理 return self.run(functions_response_parts) return responseagent Agent( modelgemini-3-pro-preview, toolsfile_tools, system_instructionYou are a helpful Coding Assistant. Respond like you are Linus Torvalds.)response agent.run( contentsCan you list my files in the current directory?)print(response.text)# 输出: [Function Call] idNone args{directory_path: .} namelist_dir# [Function Response] {result: [.venv, ... ]}# Linus: There. Your current directory contains: LICENSE, ...刚刚我们成功地构建了第一个功能完备的 Agent。4多轮 CLI 代理现在我们可以将 Agent 运行在一个简单的命令行接口CLI循环中。只需很少的代码就能创建出高度智能的行为。# ... 此处省略了 Agent、工具和工具定义代码 ... agent Agent( modelgemini-3-pro-preview, toolsfile_tools, system_instructionYou are a helpful Coding Assistant. Respond like you are Linus Torvalds.)print(Agent ready. Ask it to check files in this directory.)whileTrue: user_input input(You: ) if user_input.lower() in [exit, quit]: break response agent.run(user_input) print(fLinus: {response.text}\n)Agent 工程的最佳实践构建循环很容易但让它可靠、透明和可控却很难。以下是源自顶尖行业实践的关键工程原则按功能区域分组。1. 工具定义与人体工程学你的工具是模型的接口。不要仅仅包装你现有的内部 API。如果一个工具对人类来说很复杂那么对模型来说也一样清晰命名使用一目了然的名称例如search_customer_database而不是cust_db_v2_query。精确描述Gemini 会阅读函数的文档字符串docstrings来理解何时以及如何使用工具。花时间仔细编写这些内容这本质上是工具的“提示工程”。返回有意义的错误不要返回 50 行的 Java 堆栈跟踪。如果工具失败返回一个清晰的字符串如错误文件未找到。您想找 data.csv 吗这样能让 Agent 进行自我修正。容忍模糊输入如果模型经常猜错文件路径请更新你的工具来处理相对路径或模糊输入而不是仅仅报错。2. 上下文工程模型有一个有限的“注意力预算”。管理哪些信息进入上下文对于性能和成本至关重要。不要“倾倒”数据不要让工具返回整个 10MB 的数据库表。与其创建get_all_users()不如创建search_users(query: str)。即时加载不要预加载所有数据传统的 RAG而是使用即时策略。Agent 应该维护轻量级的标识符文件路径、ID并仅在需要时使用工具动态加载内容。压缩对于运行时间很长的 Agent可以总结历史记录移除旧的上下文或开启新会话。Agent 记忆允许 Agent 维护一个存储在上下文窗口之外的笔记或便签本仅在相关时才将它们拉回。3. 不要过度工程化构建复杂的多代理系统是很诱人的。但请不要这样做。首先最大化单个 Agent 的能力不要立即构建复杂的系统。Gemini 具备很强的能力可以在一个提示中处理数十个工具。逃逸舱口确保循环可以被停止例如设置max_iterations中断比如 15 轮。护栏和系统指令使用system_instruction来为模型设定硬性规则例如“您被严格禁止提供超过 50 美元的退款”或者使用外部分类器。人机协作Human-in-the-loop对于敏感操作如send_email或execute_code暂停循环并要求用户确认后才能实际执行工具。优先考虑透明度和调试记录工具调用及其参数。分析模型的推理过程有助于发现问题并随着时间推移改进 Agent。构建 Agent 不再是魔法而是一个实用的工程任务。正如我们所示你可以在不到 100 行代码内构建出一个可工作的原型。虽然理解这些基本原理很关键但不要拘泥于一遍又一遍地重复编写相同的模式。AI 社区已经创建了优秀的开源库可以帮助你更快地构建更复杂、更健壮的 Agent。想入门 AI 大模型却找不到清晰方向备考大厂 AI 岗还在四处搜集零散资料别再浪费时间啦2025 年AI 大模型全套学习资料已整理完毕从学习路线到面试真题从工具教程到行业报告一站式覆盖你的所有需求现在全部免费分享扫码免费领取全部内容一、学习必备100本大模型电子书26 份行业报告 600 套技术PPT帮你看透 AI 趋势想了解大模型的行业动态、商业落地案例大模型电子书这份资料帮你站在 “行业高度” 学 AI1. 100本大模型方向电子书2. 26 份行业研究报告覆盖多领域实践与趋势报告包含阿里、DeepSeek 等权威机构发布的核心内容涵盖职业趋势《AI 职业趋势报告》《中国 AI 人才粮仓模型解析》商业落地《生成式 AI 商业落地白皮书》《AI Agent 应用落地技术白皮书》领域细分《AGI 在金融领域的应用报告》《AI GC 实践案例集》行业监测《2024 年中国大模型季度监测报告》《2025 年中国技术市场发展趋势》。3. 600套技术大会 PPT听行业大咖讲实战PPT 整理自 2024-2025 年热门技术大会包含百度、腾讯、字节等企业的一线实践安全方向《端侧大模型的安全建设》《大模型驱动安全升级腾讯代码安全实践》产品与创新《大模型产品如何创新与创收》《AI 时代的新范式构建 AI 产品》多模态与 Agent《Step-Video 开源模型视频生成进展》《Agentic RAG 的现在与未来》工程落地《从原型到生产AgentOps 加速字节 AI 应用落地》《智能代码助手 CodeFuse 的架构设计》。二、求职必看大厂 AI 岗面试 “弹药库”300 真题 107 道面经直接抱走想冲字节、腾讯、阿里、蔚来等大厂 AI 岗这份面试资料帮你提前 “押题”拒绝临场慌1. 107 道大厂面经覆盖 Prompt、RAG、大模型应用工程师等热门岗位面经整理自 2021-2025 年真实面试场景包含 TPlink、字节、腾讯、蔚来、虾皮、中兴、科大讯飞、京东等企业的高频考题每道题都附带思路解析2. 102 道 AI 大模型真题直击大模型核心考点针对大模型专属考题从概念到实践全面覆盖帮你理清底层逻辑3. 97 道 LLMs 真题聚焦大型语言模型高频问题专门拆解 LLMs 的核心痛点与解决方案比如让很多人头疼的 “复读机问题”三、路线必明 AI 大模型学习路线图1 张图理清核心内容刚接触 AI 大模型不知道该从哪学起这份「AI大模型 学习路线图」直接帮你划重点不用再盲目摸索路线图涵盖 5 大核心板块从基础到进阶层层递进一步步带你从入门到进阶从理论到实战。L1阶段:启航篇丨极速破界AI新时代L1阶段了解大模型的基础知识以及大模型在各个行业的应用和分析学习理解大模型的核心原理、关键技术以及大模型应用场景。L2阶段攻坚篇丨RAG开发实战工坊L2阶段AI大模型RAG应用开发工程主要学习RAG检索增强生成包括Naive RAG、Advanced-RAG以及RAG性能评估还有GraphRAG在内的多个RAG热门项目的分析。L3阶段跃迁篇丨Agent智能体架构设计L3阶段大模型Agent应用架构进阶实现主要学习LangChain、 LIamaIndex框架也会学习到AutoGPT、 MetaGPT等多Agent系统打造Agent智能体。L4阶段精进篇丨模型微调与私有化部署L4阶段大模型的微调和私有化部署更加深入的探讨Transformer架构学习大模型的微调技术利用DeepSpeed、Lamam Factory等工具快速进行模型微调并通过Ollama、vLLM等推理部署框架实现模型的快速部署。L5阶段专题集丨特训篇 【录播课】四、资料领取全套内容免费抱走学 AI 不用再找第二份不管你是 0 基础想入门 AI 大模型还是有基础想冲刺大厂、了解行业趋势这份资料都能满足你现在只需按照提示操作就能免费领取扫码免费领取全部内容2025 年想抓住 AI 大模型的风口别犹豫这份免费资料就是你的 “起跑线”