首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

谷歌ADKagent框架以及MCP协议

adk-python

代码地址:https://github.com/google/adk-python

说明地址: https://google.github.io/adk-docs/

智能体开发工具包(ADK)是一个灵活的模块化框架,用于开发和部署人工智能体。ADK 可与流行的大语言模型和开源生成式人工智能工具一起使用,并且设计重点在于与谷歌生态系统和 Gemini 模型紧密集成。ADK 使得使用由 Gemini 模型和谷歌人工智能工具驱动的简单智能体轻松上手,同时为更复杂的智能体架构和编排提供所需的控制和结构。

特点

灵活编排:使用工作流代理(Sequential、Parallel、Loop)为可预测的管道定义工作流,或利用LLM驱动的动态路由(LlmAgent传输)进行自适应行为。

多Agent框架:序列代理,循环代理,平行代理

大语言模型支持gemini和OpenAIAPi格式

集成了多种工具(内置了很多工具:Google搜索/代码执行,RAG检测):尤其在推理和工具选择准确率高

5. 工具使用的流程

a. 推理:代理的LLM分析其系统指令、对话历史和用户请求。

b. 选择:基于分析,LLM根据代理可用的工具和描述每个工具的文档字符串决定执行哪个工具

c.调用:LLM为所选工具生成所需的参数(输入)并触发其执行

d.观察:代理接收工具返回的输出

e.完成:代理将工具的输出合并到其正在进行的推理过程中,以制定下一个响应,决定后续步骤,或确定目标是否已实现.

安装

MCP需要Python 3.9或更高版本

$ pip install google-adk

支持MCP协议

定义:模型上下文协议(MCP)是一个开放的标准,旨在标准化大型语言模型(LLM管理上下文:服务)(如双子座和克劳德)如何与外部应用程序、数据源和工具通信。可以将其视为一种通用连接机制,简化LLM如何获取上下文、执行操作以及与各种系统交互。

MCP遵循客户端-服务器架构,定义了数据(资源)、交互式模板(提示)和可操作函数(工具)如何由MCP服务器公开并由MCP客户端(可以是LLM主机应用程序或AI代理)使用。

ADK如何使用mcp工具

两种主要集成模式:

在ADK中使用现有MCP服务器:ADK代理充当MCP客户端,利用外部MCP服务器提供的工具。

通过MCP服务器公开ADK工具:构建一个包装ADK工具的MCP服务器,使任何MCP客户端都可以访问它们。

会话,状态和内存管理

支持长时间的内存记忆

管理上下文:服务

管理对话线程

管理长期知识存储(Memory)

Artifacts

定义:工件本质上是一段二进制数据(如文件的内容),由特定范围(会话或用户)内唯一的filename字符串标识。每次保存具有相同文件名的工件时,都会创建一个新版本。

为什么需要Artifacts

虽然session state适用于存储小型配置或会话上下文(如字符串、数字、布尔值或小型字典/列表),但工件专为涉及二进制或大型数据的场景而设计.

处理非文本数据:轻松存储和检索图像、音频剪辑、视频片段、PDF、电子表格或与您的代理功能相关的任何其他文件格式。

持久化大数据:会话状态通常不会针对存储大量数据进行优化。工件提供了一种专用机制来持久化更大的blob而不会使会话状态混乱。

用户文件管理:为用户提供上传文件(可以保存为工件)和检索或下载代理生成的文件(从工件加载)的功能。

共享输出:允许工具或代理生成二进制输出(如PDF报告或生成的图像),这些输出可以通过save_artifact保存,然后由应用程序的其他部分甚至在后续会话中访问(如果使用用户命名空间)。

缓存二进制数据:将产生二进制数据(例如,渲染复杂的图表图像)的计算昂贵操作的结果存储为工件,以避免在后续请求中重新生成它们。

回调:观察、自定义和控制代理行为

回调是ADK的一个基础特性,它提供了一种强大的机制来连接代理的执行过程。它们允许您在特定的预定义点观察、自定义甚至控制代理的行为,而无需修改核心ADK框架代码。

它们是什么?本质上,回调是您定义的标准Python函数。然后,在创建代理时将这些函数与代理相关联。ADK框架会在代理生命周期的关键阶段自动调用您的函数.

为什么要使用它们?回调释放了显着的灵活性并启用了高级代理功能:

观察和调试:记录监控和故障排除关键步骤的详细信息。

自定义和控制:修改流经代理的数据(如LLM请求或工具结果),甚至完全根据您的逻辑绕过某些步骤。

实施护栏:执行安全规则、验证输入/输出或防止不允许的操作。

管理状态:在执行期间读取或动态更新代理的会话状态。

集成和增强:触发外部操作(API调用、通知)或添加缓存等功能

时间Events

事件是代理开发工具包(ADK)中信息流的基本单元。它们代表代理交互生命周期中的每一个重要事件,从初始用户输入到最终响应以及其间的所有步骤。理解事件至关重要,因为它们是组件通信、管理状态和指导控制流的主要方式。

ADK中的Event是表示代理执行中特定点的不可变记录。它捕获用户消息、代理回复、使用工具的请求(函数调用)、工具结果、状态更改、控制信号和错误。从技术上讲,它是google.adk.events.Event类的一个实例,它建立在基本的LlmResponse结构之上,通过添加基本的ADK特定元数据和actions有效负载。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OhYT2rVpZBs0u1rsyKkSsgCg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券