【AI Agent基础教学】《Agents》——Google智能体白皮书
从最基本的角度来看,生成式AI智能体是一种应用程序,它通过观察周围环境并运用各种可用工具来实现既定目标。智能体具有自主性,尤其是在明确目标后,能够独立于人类干预开展行动。在目标实现过程中,智能体表现出主动性特征。它能够自主推理下一步行动方案,即使没有人类的具体指令。虽然AI领域中智能体的概念已较为成熟且应用广泛,本白皮书将重点关注当前生成式AI模型能够构建的特定类型智能体。为了深入理解智能体的运作

刚刚开年,Google AI就火速发布了一篇名为《Agents》的智能体白皮书。本来他们去年年底推出了天然Agent形态的Gemini 2.0 Flash时,2025年的工作重心会放在Multimodal和Agent的态度已经很明显了。
去年年底的时候,大模型三巨头之一的Anthropic发布了一篇Agent的应用综述《Build Efficient Agents》,总结了他们2024年一年为客户开发Agent相关应用的经验,有挺强的实用性。
而Google的这篇白皮书相对更侧重基础理论一点,更适合对Agent这个形态感兴趣的初学者,我自己在翻译的过程也趁机再巩固了一下几个容易混淆的概念和相关应用场景。
白皮书最后在肯定自己去年对Agent强烈看好的同时,也顺便给自家的Vertex AI平台带了一把货。
引言
人类在处理复杂的模式识别任务时表现出色。不过在得出结论前,他们往往需要借助书籍、谷歌搜索或计算器等工具来补充已有知识。同样地,生成式AI模型也可以通过训练来使用工具,实现实时信息获取或现实世界行动建议。例如,模型可以通过数据库检索工具访问客户的购买历史等特定信息,从而生成个性化购物推荐。另外,模型还可以根据用户的查询发起API调用,完成发送邮件或执行金融交易等任务。
要实现这些功能,模型不仅需要获得外部工具的使用权限,还要具备自主规划和执行任务的能力。这种集成了推理能力、逻辑判断和外部信息获取的生成式AI模型,构成了智能体(Agent)的概念。
智能体是一种突破了传统生成式AI模型能力边界的程序,本白皮书将深入探讨这些相关内容。
智能体的定义与特征
从最基本的角度来看,生成式AI智能体是一种应用程序,它通过观察周围环境并运用各种可用工具来实现既定目标。智能体具有自主性,尤其是在明确目标后,能够独立于人类干预开展行动。在目标实现过程中,智能体表现出主动性特征。它能够自主推理下一步行动方案,即使没有人类的具体指令。
虽然AI领域中智能体的概念已较为成熟且应用广泛,本白皮书将重点关注当前生成式AI模型能够构建的特定类型智能体。为了深入理解智能体的运作机制,首先需要了解驱动其行为、行动和决策的基础组件。这些组件共同构成了认知架构,通过不同组件的组合可以实现多样化的架构设计。
如图1所示,智能体的认知架构主要包含三个核心组件:Model(模型)、Tools(工具)、Orchestration(编排层)。

图1:通用智能体架构及其组件构成
模型
在智能体框架中,模型特指作为中央决策单元的语言模型(LM)。
智能体可以使用一个或多个支持指令式推理和逻辑框架,如Reasoning and Action(ReAct)、Chain-of-Thought(CoT)或Tree-of-Thoughts(ToT)的语言模型,这些模型的规模可大可小。
根据需求,模型可以是通用型、多模态型,也可以是经过特定微调的专用模型。
为了达到最优的实际应用效果,应选择最适合目标应用场景的模型,并且该模型最好已经经过与计划使用的认知架构工具相关的数据训练。
值得注意的是,模型通常并未针对智能体的具体配置(如工具选择、编排/推理设置等)进行专门训练。但是,可以通过向模型展示智能体在不同场景下使用特定工具或推理步骤的示例,来进一步优化模型对智能体任务的适应性。
工具
尽管基础模型在文本和图像生成方面表现出色,但它们仍然无法直接与外部世界互动。工具的引入弥补了这一不足,使智能体能够与外部数据和服务进行交互,从而获得超越基础模型的更多能力。
工具可以有多种形式,复杂程度各异,但通常遵循常见的Web API方法规范,如GET、POST、PATCH和DELETE等。例如,工具可以用于更新数据库中的客户信息,或获取天气数据来优化智能体的旅行建议。
通过工具,智能体得以访问和处理现实世界的信息,支持包括检索增强生成(RAG)在内的专业系统,大幅提升了其功能范围。
接下来将详细介绍工具相关内容,但最关键的是要理解工具在连接智能体内部能力与外部世界方面发挥的重要作用,它为智能体开启了更广阔的应用空间。
编排层
编排层定义了一个循环过程,负责管理智能体的信息接收、内部推理以及后续行动决策。这个循环通常会持续到智能体达成目标或到达终止条件。
编排层的复杂程度会随着智能体类型和任务需求而变化。有些循环可能只包含简单的计算和决策规则,而其他循环则可能涉及链式逻辑、额外的机器学习算法或其他概率推理技术。关于智能体编排层的具体实现细节,将在认知架构部分进行详细讨论。

智能体 VS 模型
为了更清晰地理解智能体和模型的区别,我们可以从以下几个方面进行对比:
| 模型 | 智能体 | |
|---|---|---|
| 知识范围 | 仅限于训练数据中包含的内容 | 可通过工具接入外部系统获取扩展知识 |
| 推理能力 | 仅能进行单次查询响应,除非特别设计,否则无法维护会话历史和上下文连续性 | 能够维护完整会话历史,支持基于用户查询和编排层决策的多轮对话 |
| 工具使用 | 不具备内置工具调用能力 | 在架构层面直接支持工具集成 |
| 逻辑处理 | 无内置逻辑处理层,需要用户通过简单问询或利用CoT、ReAct等推理框架构建复杂提示来引导预测 | 具备完整的认知架构,能够集成CoT、ReAct或LangChain等预置智能体框架 |
*注:在智能体语境中,一轮对话指的是系统接收一个查询并生成一个响应的完整交互过程。
认知架构:智能体的运作机制
接下来我们用厨师在餐厅繁忙工作的场景来理解智能体的运作方式。厨师的目标是为顾客准备美味菜品,这个过程涉及持续的计划、执行和调整:
- 首先需要收集信息,包括顾客点单内容、储藏室和冰箱中的食材库存;
- 然后基于收集到的信息进行内部分析,思考可以制作的菜品类型和口味搭配;
- 最后付诸行动:切配食材、调配香料、煎炒烹饪。
在整个过程中,厨师会根据食材消耗情况和顾客反馈不断调整计划,并借鉴之前的经验来优化后续行动。这种信息获取、规划、执行和调整的循环过程,正是厨师为实现目标而采用的独特认知架构。
智能体与厨师类似,也通过认知架构来实现其目标。它通过迭代式的信息处理、决策制定和基于先前输出的行动优化来完成任务。智能体认知架构的核心是编排层,负责管理记忆(memory)、状态(state)、推理(reasoning)和规划(planning)等功能。它利用快速发展的提示词工程技术和相关框架来指导推理和规划,使智能体能够更有效地与环境交互并完成任务。
语言模型在提示词工程框架和任务规划领域的研究正在快速发展,已经产生了多种有前景的方法。虽然不是完整列表,以下是目前最受欢迎的几种框架和推理技术:
- ReAct是一个提示词工程框架,为语言模型提供一种思维过程策略,可以对用户查询进行推理和采取行动,不论是否有上下文示例。实践证明,ReAct提示方式的性能超过了多个目前最优的基准,并提高了LLM的人机交互能力和可信度。
- CoT是一个通过中间步骤实现推理能力的提示词工程框架。它包括多个子技术,如自我一致性(self-consistency)、主动提示(active-prompt)和多模态CoT,这些技术根据具体应用场景各有优势。
- ToT是一个特别适合探索和战略前瞻任务的提示词工程框架。它在CoT提示的基础上进行了扩展,允许模型探索多条思维路径,作为语言模型解决通用问题的中间步骤。
智能体可以使用上述某一种推理技术或其他技术来为用户请求选择最佳的下一步行动。例如,让我们看一个使用ReAct框架来为用户查询选择正确行动和工具的智能体。其事件序列可能如下:
- 用户向智能体发出查询
- 智能体启动ReAct序列
- 智能体向模型提供提示词,要求生成下一个ReAct步骤及其对应输出:
a. 问题:用户查询中的输入问题,与提示一起提供。
b. 思考:模型关于下一步行动的思考。
c. 行动:模型对下一步行动的决定 (i). 这里涉及工具选择 (ii). 例如,行动可以是[Flights, Search, Code, None]之一,前三个代表模型可选择的已知工具,最后一个表示“不使用工具”。
d. 行动输入:模型决定提供给工具的输入内容(如果需要)。
e. 观察:行动/行动输入序列的结果 (i). 这个思考/行动/行动输入/观察过程可能根据需要重复多次。
f. 最终答案:模型对原始用户查询的最终回答。 - ReAct循环结束,将最终答案返回给用户

图2. 编排层中使用ReAct推理的示例智能体
如图2所示,模型、工具和智能体配置协同工作,基于用户的原始查询提供有依据的简明回答。虽然模型可以基于已有知识推测答案(产生非真实信息),但它选择使用工具(Flights)来获取实时外部信息。这些额外信息被提供给模型,使其能够基于真实数据做出更明智的决定,并将这些信息总结反馈给用户。
智能体响应的质量与模型的推理和行动能力直接相关,包括选择正确工具的能力,以及工具定义的完善程度。就像厨师使用新鲜食材制作菜品并重视顾客反馈一样,智能体依靠合理的推理和可靠的信息来提供最佳结果。
接下来的章节,我们将深入探讨智能体连接新数据的各种方式。
工具:连接外部世界的关键
语言模型虽然在信息处理方面表现出色,但它们缺乏直接感知和影响现实世界的能力。这一限制降低了它们在需要与外部系统或数据交互场景下的实用性。这意味着从某种程度上说,语言模型的能力仅限于从其训练数据中获得的知识。无论输入多少训练数据,模型仍然缺乏与外部世界交互的基本能力。
那么,如何使模型能够与外部系统进行实时、具有上下文感知的交互呢?
函数、扩展、数据存储和插件都是为模型提供这种核心能力的方式。尽管这些工具有不同的名称,但它们都是连接基础模型与外部世界的桥梁。这种与外部系统和数据的连接使智能体能够执行更广泛的任务,并提供更高的准确性和可靠性。例如,通过工具,智能体可以调整智能家居设置、更新日历、从数据库获取用户信息或按照特定指令发送电子邮件。
目前,Google模型可以与三种主要工具类型交互:扩展(Extensions)、函数(Functions)和数据存储(Data Stores)。通过配备这些工具,智能体不仅能够理解世界,还能够对世界采取行动,从而开启了众多新的应用可能。
扩展(Extensions)
理解扩展最直观的方式是将其视为API和智能体之间的标准化桥梁,使智能体能够无缝调用API,而不受其具体实现方式的影响。假设您正在开发一个帮助用户订票的智能体。您计划使用Google Flights API获取航班信息,但需要确定如何让智能体调用这个API端点。

图3. 智能体与外部API的交互机制
一种实现方式是编写自定义代码,接收用户查询,解析相关信息,然后执行API调用。
例如,在航班预订场景中,用户可能会说“我想订从奥斯汀到苏黎世的机票。”此时,自定义代码需要先从用户查询中提取“奥斯汀”和“苏黎世”这两个关键信息,才能进行API调用。但如果用户只说“我想订去苏黎世的机票”而未提供出发城市,API调用就会因缺少必要数据而失败。为了处理这类边界情况,需要编写更多代码进行异常处理。这种方法缺乏可扩展性,在遇到预设场景之外的情况时容易失效。
相比之下,使用扩展是一种更具韧性的方法。扩展通过以下方式建立智能体和API之间的连接:
- 通过示例教导智能体如何使用API端点
- 指导智能体了解成功调用API所需的参数要求

图4. 扩展作为智能体和外部API的连接器
扩展可以独立于智能体开发,但需要作为智能体配置的组成部分。智能体在运行时基于模型和示例判断哪个扩展最适合处理用户查询。这体现了扩展的核心优势:其内置的示例类型使智能体能够动态选择最适合任务的工具。

图5. 智能体、扩展和API的一对多关系
这类似于软件开发者解决用户问题时选择API端点的过程。当用户需要订机票时,开发者会选用Google Flights API;当用户询问附近咖啡店位置时,则会使用Google Maps API。智能体/模型系统同样通过已知的扩展集合来选择最适合用户查询的工具。
如果您想体验扩展的实际应用,可以在Gemini应用中通过Settings > Extensions启用并测试这些功能。例如,启用Google Flights扩展后,您可以询问Gemini“显示下周五从奥斯汀到苏黎世的航班。”
扩展示例
为简化扩展的使用,Google提供了一系列预置扩展,这些扩展可以快速导入项目并通过最简配置即可使用。例如,代码片段1中展示的Code Interpreter扩展能够将自然语言描述转换为可执行的Python代码。
代码片段1. Code Interpreter扩展可生成并执行Python代码
import vertexai
import pprint
PROJECT_ID = "YOUR_PROJECT_ID"
REGION = "us-central1"
vertexai.init(project=PROJECT_ID, location=REGION)
from vertexai.preview.extensions import Extension
extension_code_interpreter = Extension.from_hub("code_interpreter")
CODE_QUERY = """Write a python method to invert a binary tree in O(n) time."""
response = extension_code_interpreter.execute(
operation_id = "generate_and_execute",
operation_params = {"query": CODE_QUERY}
)
print("Generated Code:")
pprint.pprint({response['generated_code']})
# The above snippet will generate the following code.
```
Generated Code:
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def invert_binary_tree(root):
"""
Inverts a binary tree.
Args:
root: The root of the binary tree.
Returns:
The root of the inverted binary tree.
"""
if not root:
return None
# Swap the left and right children recursively
root.left, root.right = invert_binary_tree(root.right), invert_binary_tree(root.left)
return root
# 例程:
# 构建一颗二叉树示例
root = TreeNode(4)
root.left = TreeNode(2)
root.right = TreeNode(7)
root.left.left = TreeNode(1)
root.left.right = TreeNode(3)
root.right.left = TreeNode(6)
root.right.right = TreeNode(9)
# 翻转二叉树
inverted_root = invert_binary_tree(root)
```
总之,扩展为智能体提供了多种感知、交互和影响外部世界的方式。扩展的选择和调用过程由配置中定义的示例来引导。
函数(Functions)
在软件工程中,函数是指完成特定任务且可重复使用的独立代码模块。软件开发人员在编程时通常会创建多个函数来执行不同任务。他们会明确定义何时调用function_a或function_b的逻辑,以及相应的输入输出规范。
在智能体领域,函数的工作机制与此类似,但由模型代替了软件开发人员的角色。模型可以基于一组预定义函数,根据具体规范决定使用哪个函数以及需要哪些参数。
函数与扩展的主要区别在于:
- 模型输出函数及其参数,但不直接执行API调用
- 函数在客户端执行,而扩展在智能体端执行
以Google Flights为例,函数的基本设置如图7所示。

图7. 函数与外部API的交互机制
需要注意的是,此处的关键区别在于函数和智能体都不直接与Google Flights API交互。
那么API调用是如何实现的呢?
在函数调用模式下,实际API端点的调用逻辑和执行过程从智能体转移到了客户端应用程序,如图8和图9所示。这使开发人员能够更精细地控制应用程序中的数据流。
开发人员选择使用函数而非扩展的常见原因包括:
- API调用需要在应用程序其他层级执行,如中间件系统或前端框架等
- 由于安全或认证限制,智能体无法直接调用API
- 时序或操作顺序限制导致智能体无法实时调用API
- API响应需要额外的数据转换处理,而智能体无法完成
- 开发人员希望在不部署额外基础设施的情况下进行智能体开发迭代
如图8所示,虽然两种方法在内部架构上的差异较小,但函数调用为开发人员提供了更多的控制权限,并降低了对外部基础设施的依赖。

图8. 扩展(A)和函数(B)调用在客户端与智能体端的控制边界
应用场景
模型可以用于调用函数,处理最终用户的复杂客户端执行流程。在这种情况下,智能体开发人员可能不希望由语言模型来管理API执行(这与扩展机制不同)。
让我们看一个示例:某智能体被训练成旅游顾问,负责与想要预订度假行程的用户互动。目标是让智能体生成城市列表,中间件应用程序可以使用这些信息为用户的旅行计划下载图片和相关数据。用户可能会这样询问:"我想带家人去滑雪,但不知道该去哪里。"在传统的模型提示词下,输出可能是这样的:
以下是适合家庭滑雪旅行的城市推荐:
- 美国科罗拉多州克雷斯特德比特
- 加拿大不列颠哥伦比亚省惠斯勒
- 瑞士采尔马特
虽然上述输出包含了所需的城市名称信息,但这种格式不便于系统解析。通过函数调用,我们可以训练模型生成结构化输出(如JSON格式),使其更易被其他系统处理。对于相同的用户输入,函数可能会输出如代码片段5所示的JSON数据。
代码片段5. 展示城市列表和用户偏好的函数调用数据示例
function_call {
name: "display_cities"
args: {
"cities": ["Crested Butte", "Whistler", "Zermatt"],
"preferences": "skiing"
}
}
模型生成的JSON数据会被发送到客户端服务器进行后续处理。在这个例子中,我们会调用Google Places API获取这些城市的图片,然后将格式化后的富媒体内容返回给用户。图9的序列图详细展示了这个交互过程。

图9. 函数调用的生命周期序列图
图9示例展示了模型如何为客户端UI提供调用Google Places API所需的参数。客户端UI使用模型在返回函数中提供的参数来执行实际的API调用。这只是函数调用的其中一个应用场景,还有其他值得考虑的场景:
- 当需要语言模型推荐代码中可用的函数,但不希望在代码中包含访问凭据时。由于函数调用不直接执行函数,因此无需在函数信息中包含凭据。
- 处理需要较长执行时间的异步操作时。函数调用的异步特性使其特别适合这类场景。
- 需要在不同于函数调用生成系统的设备上执行函数时。
关于函数机制,最重要的是要理解它们的设计目的是为开发人员提供更大的控制权限,不仅包括API调用的执行,还包括应用程序整体的数据流向。
在图9的示例中,开发人员选择不将API信息返回给智能体,因为这对智能体的后续行为并无影响。但根据具体的应用架构,有时将外部API调用的数据返回给智能体可能更有价值,因为这些数据可能会影响后续的推理、逻辑判断和行动选择。最终,应该由应用程序开发人员根据具体需求做出选择。
函数代码示例
为了在滑雪度假场景中实现上述输出,需要构建相关组件以配合gemini-1.5-flash-001模型工作。
首先,将display_cities函数实现为一个基本的Python方法。
代码片段6. 实现城市列表显示功能的Python方法示例
def display_cities(cities: list[str], preferences: Optional[str] = None):
"""Provides a list of cities based on the user's search query and preferences.
Args:
preferences (str): The user's preferences for the search, like skiing,
beach, restaurants, bbq, etc.
cities (list[str]): The list of cities being recommended to the user.
Returns:
list[str]: The list of cities being recommended to the user.
"""
return cities
然后我们需要初始化模型,构建工具,并将用户查询和工具传递给模型。执行下面的代码将生成如代码片段末尾所示的输出结果。
代码片段7. 构建工具,将用户查询发送至模型并执行函数调用
from vertexai.generative_models import GenerativeModel, Tool, FunctionDeclaration
model = GenerativeModel("gemini-1.5-flash-001")
display_cities_function = FunctionDeclaration.from_func(display_cities)
tool = Tool(function_declarations=[display_cities_function])
message = "I’d like to take a ski trip with my family but I’m not sure where to go."
res = model.generate_content(message, tools=[tool])
print(f"Function Name: {res.candidates[0].content.parts[0].function_call.name}")
print(f"Function Args: {res.candidates[0].content.parts[0].function_call.args}")
> Function Name: display_cities
> Function Args: {'preferences': 'skiing', 'cities': ['Aspen', 'Vail', 'Park City']}
总而言之,函数为应用程序开发人员提供了一个清晰的框架,既能精确控制数据流和系统执行,又能有效利用智能体/模型生成关键输入。开发人员可以根据应用程序架构的具体需求,灵活选择是否通过返回外部数据来维持智能体参与处理流程,或是将其排除在外。
数据存储(Data Stores)
语言模型可以类比为一个巨大的知识库,其中包含了训练数据积累的信息。但与持续更新的实体知识库不同,这个知识库是静态的,仅包含初始训练时获得的知识。这种局限性带来了挑战,因为现实世界的知识在不断演进。
数据存储通过提供对动态和最新信息的访问来克服这一限制,确保模型的响应始终建立在准确和相关的事实基础之上。例如,开发人员经常需要通过电子表格或PDF等形式向模型提供补充数据。

图10. 智能体与结构化和非结构化数据的交互机制
数据存储允许开发人员以原始格式向智能体提供额外数据,避免了繁琐的数据转换、模型重训练或微调过程。数据存储将输入文档转换为向量数据库中的向量集合,智能体可以利用这些向量提取所需信息,用于补充下一步行动或用户响应。

图11. 数据存储连接智能体与多种类型的实时数据源
实现与应用
在生成式AI智能体框架中,数据存储通常以向量数据库的形式实现,开发人员可以让智能体在运行时访问这些数据库。虽然本文不会深入讨论向量数据库的技术细节,但关键是要理解它们将数据以向量形式存储,这是对原始数据的高维数学表示。
近期,检索增强生成(RAG)应用是语言模型使用数据存储最典型的例子之一。这类应用通过使模型能够访问多种格式的数据来扩展其知识范围:
- 网站内容
- PDF、Word文档、CSV、电子表格等结构化数据
- HTML、PDF、TXT等非结构化数据

图12. 智能体与数据存储的一对多关系,展示各类预索引数据类型
用户请求和智能体响应的基本循环过程如图13所示:
- 将用户查询发送至向量模型生成查询向量
- 使用SCaNN等算法将查询向量与数据库内容匹配
- 以文本格式检索匹配内容并返回给智能体
- 智能体处理用户查询和检索内容,制定响应策略
- 向用户发送最终响应

图13. RAG应用中用户请求和智能体响应的完整流程
这种方式使智能体能够通过向量搜索将用户查询与数据存储中的信息匹配,获取原始内容,并将其提供给编排层和模型进行处理。后续步骤可能是直接向用户提供答案,或进行额外的向量搜索以优化结果。
图14展示了一个集成ReAct推理/规划的RAG应用示例交互过程。

图14. 结合ReAct推理/规划的RAG应用示例
工具总结
扩展、函数和数据存储是智能体在运行时可以使用的三种主要工具类型。每种工具都有其特定用途,开发人员可以根据具体需求选择组合使用或独立使用。
| 扩展 | 函数 | 数据存储 | |
|---|---|---|---|
| 执行位置 | 智能体端 | 客户端 | 智能体端 |
| 适用场景 | 1.开发人员需要智能体控制API端点交互; 2.使用原生预构建扩展(如Vertex Search、Code Interpreter); 3.需要连续API调用和规划(后续动作依赖前序API调用结果); 4.存在安全或认证限制的API调用。 |
1.存在时序或操作顺序限制,无法实时调用API(如批处理、人工审核流程); 2.API不对外开放或系统无法直接访问。 |
开发人员需要实现RAG,处理以下数据类型: 1.预索引域名和URL的网站内容; 2.结构化数据(PDF、Word、CSV、电子表格等); 3.关系型/非关系型数据库内容; 4.非结构化数据(HTML、PDF、TXT等)。 |
模型性能的目标学习优化
模型选择正确工具的能力对其有效使用至关重要,尤其是在生产环境中进行大规模工具应用时。虽然通用训练能够帮助模型培养这种能力,但现实场景往往需要超出训练数据范围的知识。这类似于基础烹饪技能和精通特定菜系之间的差异:两者都需要基本烹饪知识,但后者需要通过针对性学习才能掌握更精细的技巧。
为了帮助模型获取这类专门知识,我们有以下几种方法:
三种学习方法
- 上下文学习:在推理阶段为通用模型提供提示词、工具和少样本示例,使其能够实时学习特定任务中工具的使用时机和方式。ReAct框架就是这种方法在自然语言处理中的典型应用。
- 基于检索的上下文学习:这种技术通过从外部存储检索最相关的信息、工具和相关示例,动态构建模型提示词。例如Vertex AI扩展中的示例存储系统,以及前文提到的数据存储RAG架构。
- 基于微调的学习:在推理前使用更大规模的特定示例数据集训练模型,帮助模型在接收用户查询前就能理解工具的使用时机和方法。
通过烹饪类比理解学习方法
让我们通过烹饪场景来深入理解这些学习方法:
- 上下文学习类比: 厨师收到顾客提供的特定菜谱(提示词)、主要食材(工具)和参考菜品(少样本示例)。他需要基于这些有限信息和自身的烹饪基础,实时思考如何制作最符合要求的菜品。
- 基于检索的上下文学习类比: 厨师在一个配备完善的厨房工作,储藏室(外部数据存储)中有丰富的食材和菜谱书(示例和工具)。他可以根据需要选择合适的食材和参考资料,将现有经验与新知识结合,创造出更精致的菜品。
- 基于微调的学习类比: 厨师通过专门学习新的菜系(大规模特定数据集预训练),获得了更深入的专业知识。这使他能够更好地应对各种新的烹饪要求,尤其是在特定菜系(知识领域)方面表现出色。
这些方法在速度、成本和延迟等方面各有优劣。不过,通过在智能体框架中综合运用这些技术,我们可以扬长避短,构建更可靠和灵活的解决方案。
使用LangChain快速入门智能体开发
为了展示一个可实际运行的智能体示例,我们将使用LangChain和LangGraph库构建一个快速原型。
这两个广受欢迎的开源库允许用户通过串联逻辑序列、推理过程和工具调用来构建自定义智能体,以响应用户查询。我们将使用gemini-1.5-flash-001模型和一些基础工具来处理用户的多阶段查询,
如代码片段8所示,该示例中使用的工具包括SerpAPI(用于Google搜索)和Google Places API。
代码片段8:使用LangChain和LangGraph的智能体及其工具示例
from langgraph.prebuilt import create_react_agent
from langchain_core.tools import tool
from langchain_community.utilities import SerpAPIWrapper
from langchain_community.tools import GooglePlacesTool
os.environ["SERPAPI_API_KEY"] = "XXXXX"
os.environ["GPLACES_API_KEY"] = "XXXXX"
@tool
def search(query: str):
"""Use the SerpAPI to run a Google Search."""
search = SerpAPIWrapper()
return search.run(query)
@tool
def places(query: str):
"""Use the Google Places API to run a Google Places Query."""
places = GooglePlacesTool()
return places.run(query)
model = ChatVertexAI(model="gemini-1.5-flash-001")
tools = [search, places]
query = "Who did the Texas Longhorns play in football last week? What is the address of the other team's stadium?"
agent = create_react_agent(model, tools)
input = {"messages": [("human", query)]}
for s in agent.stream(input, stream_mode="values"):
message = s["messages"][-1]
if isinstance(message, tuple):
print(message)
else:
message.pretty_print()
代码片段9展示了代码片段8程序的运行结果。
代码片段9. 程序执行结果
=============================== Human Message ================================
Who did the Texas Longhorns play in football last week? What is the address of the other team's stadium?
================================= Ai Message =================================
Tool Calls:search
Args:
query: Texas Longhorns football schedule
================================ Tool Message ================================
Name:search
{...Results:"NCAA Division I Football, Georgia, Date..."}
================================= Ai Message =================================
The Texas Longhorns played the Georgia Bulldogs last week.
Tool Calls: places
Args:
query: Georgia Bulldogs stadium
================================ Tool Message ================================
Name:places
{...Sanford Stadium Address: 100 Sanford...}
================================= Ai Message =================================
The address of the Georgia Bulldogs stadium is 100 Sanford Dr, Athens, GA 30602, USA.
尽管这是一个相对简单的智能体示例,但它展示了模型、编排层和工具这三个基础组件如何协同工作以实现特定目标。
在最后一节中,我们将探讨这些组件在Vertex AI智能体和生成式操作手册等Google规模托管产品中的应用方式。
使用Vertex AI智能体的生产应用
虽然本白皮书讨论了智能体的核心组件,但构建企业级应用需要将它们与用户界面、评估框架和持续优化机制等额外工具整合。Google的Vertex AI平台通过提供包含前文介绍的所有基础要素的完整托管环境来简化这个过程。
通过自然语言界面,开发人员可以快速定义智能体的关键要素 - 目标、任务指令、工具、用于任务委派的子智能体和示例 - 以构建所需的系统行为。此外,该平台配备了完整的开发工具套件,支持测试、评估、性能度量、调试和质量提升。这使开发人员能够专注于智能体的构建和优化,而将基础设施、部署和维护等复杂工作交由平台处理。
图15展示了一个在Vertex AI平台上构建的智能体架构示例,其中使用了Vertex Agent Builder、Vertex Extensions、Vertex Function Calling和Vertex Example Store等多个平台功能。该架构包含了企业级应用所需的各项核心组件。

图15. Vertex AI平台上的端到端智能体架构示例
总结
本白皮书讨论了生成式AI智能体的基础构建模块、其组成部分以及如何通过认知架构来有效实现它们。
主要观点包括:
- 智能体通过工具的使用扩展了语言模型的能力,它们可以访问实时信息、提出实际行动建议,并能自主规划和执行复杂任务。智能体可以运用一个或多个语言模型来决定状态转换的时机和方式,并通过外部工具完成模型无法独立完成的复杂任务。
- 编排层是智能体运作的核心,这个认知架构负责构建推理过程、规划决策并指导行动。ReAct、CoT和ToT等推理技术为编排层提供了框架,使其能够接收信息、进行内部推理并作出合理的决策或响应。
- 工具(包括扩展、函数和数据存储)是智能体连接外部世界的关键,使其能够与外部系统交互并获取训练数据之外的知识。扩展在智能体和外部API之间搭建桥梁,实现API调用和实时信息获取。函数通过分工机制为开发人员提供更精细的控制,允许智能体生成可在客户端执行的函数参数。数据存储则使智能体能够访问结构化或非结构化数据,从而支持数据驱动型应用。
智能体的发展前景令人振奋,目前我们仅仅触及了其潜力的表面。随着工具日益完善和推理能力不断提升,智能体将能够应对更为复杂的挑战。
此外,智能体链式组合的策略方法将持续发展。通过组合专业智能体(每个智能体在特定领域或任务中各有所长),我们可以创建智能体专家组合模式,在不同行业和问题领域中实现卓越成果。
值得注意的是,构建复杂的智能体架构需要采用迭代方法。通过不断试验和优化来找到适合特定业务场景和组织需求的解决方案。
由于基础模型本身的生成特性,每个智能体都是独特的。不过,通过充分发挥这些基础组件的优势,我们可以开发出富有影响力的应用,既扩展了语言模型的能力,又创造了实际价值。

大模型&AI产品经理如何学习
求大家的点赞和收藏,我花2万买的大模型学习资料免费共享给你们,来看看有哪些东西。
1.学习路线图

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己整理的大模型视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。


(都打包成一块的了,不能一一展开,总共300多集)
因篇幅有限,仅展示部分资料,需要点击下方图片前往获取
3.技术文档和电子书
这里主要整理了大模型相关PDF书籍、行业报告、文档,有几百本,都是目前行业最新的。

4.LLM面试题和面经合集
这里主要整理了行业目前最新的大模型面试题和各种大厂offer面经合集。

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集***
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

更多推荐
所有评论(0)