Go语言AI智能体开发套件(ADK) - 构建复杂AI代理的开源框架

news/2025/11/17 12:08:33/文章来源:https://www.cnblogs.com/qife122/p/19232019

Go语言AI智能体开发套件(ADK)

Agent Development Kit (ADK) 是一个灵活、模块化的框架,将软件开发原则应用于AI智能体创建。它旨在简化从简单任务到复杂系统的代理工作流程的构建、部署和编排。虽然针对Gemini进行了优化,但ADK是模型无关、部署无关的,并与其他框架兼容。

✨ 功能特性

  • 符合Go语言习惯:设计自然,充分利用Go语言的优势
  • 丰富的工具生态系统:利用预构建工具、自定义函数或集成现有工具,为代理提供多样化能力
  • 代码优先开发:直接在Go中定义代理逻辑、工具和编排,实现终极灵活性、可测试性和版本控制
  • 模块化多代理系统:通过组合多个专业代理来设计可扩展的应用程序
  • 随处部署:轻松容器化并部署代理,对Google Cloud Run等云原生环境提供强力支持

🚀 安装指南

要将ADK Go添加到您的项目中,请运行:

go get google.golang.org/adk

系统要求

  • Go 1.21 或更高版本
  • 支持的操作系统:Linux、macOS、Windows
  • 可选:Google Cloud账号(用于云部署)

📖 使用说明

基础代理创建

package mainimport ("context""iter""google.golang.org/adk/agent""google.golang.org/adk/session"
)// 自定义代理实现
type CustomAgent struct {name        stringdescription stringsubAgents   []agent.Agent
}func (a *CustomAgent) Name() string { return a.name }
func (a *CustomAgent) Description() string { return a.description }
func (a *CustomAgent) SubAgents() []agent.Agent { return a.subAgents }func (a *CustomAgent) Run(ctx agent.InvocationContext) iter.Seq2[*session.Event, error] {return func(yield func(*session.Event, error) bool) {// 代理执行逻辑event := &session.Event{Author: a.name,// 设置其他事件属性}yield(event, nil)}
}func main() {// 创建自定义代理customAgent := &CustomAgent{name:        "MyAgent",description: "我的自定义AI代理",}// 使用代理加载器loader := agent.NewSingleLoader(customAgent)// 运行代理逻辑...
}

LLM代理示例

package mainimport ("google.golang.org/adk/agent/llmagent""google.golang.org/adk/model""google.golang.org/genai"
)func createLLMAgent() (agent.Agent, error) {cfg := llmagent.Config{AgentConfig: agent.Config{Name:        "聊天代理",Description: "处理用户对话的LLM代理",},Model: &model.LLM{// 配置LLM模型},Instruction: "你是一个有用的助手,用中文回答用户问题。",}return llmagent.New(cfg)
}

工作流代理

package mainimport ("google.golang.org/adk/agent/workflowagents/loopagent""google.golang.org/adk/agent/workflowagents/parallelagent""google.golang.org/adk/agent/workflowagents/sequentialagent"
)func createWorkflowAgents() {// 顺序代理 - 按固定顺序执行子代理seqCfg := sequentialagent.Config{AgentConfig: agent.Config{Name: "顺序工作流",SubAgents: []agent.Agent{/* 子代理列表 */},},}sequentialAgent, _ := sequentialagent.New(seqCfg)// 并行代理 - 同时运行子代理parallelCfg := parallelagent.Config{AgentConfig: agent.Config{Name: "并行工作流", SubAgents: []agent.Agent{/* 子代理列表 */},},}parallelAgent, _ := parallelagent.New(parallelCfg)// 循环代理 - 重复执行直到条件满足loopCfg := loopagent.Config{AgentConfig: agent.Config{Name: "循环工作流",SubAgents: []agent.Agent{/* 子代理列表 */},},MaxIterations: 5, // 最大迭代次数}loopAgent, _ := loopagent.New(loopCfg)
}

:laptop: 核心代码解析

代理接口设计

// Agent是所有代理必须实现的基础接口
type Agent interface {Name() stringDescription() stringRun(InvocationContext) iter.Seq2[*session.Event, error]SubAgents() []Agentinternal() *agent
}// 调用上下文提供代理执行环境
type InvocationContext interface {context.ContextAgent() AgentArtifacts() ArtifactsMemory() MemorySession() session.SessionInvocationID() stringBranch() stringUserContent() *genai.ContentRunConfig() *RunConfigEndInvocation()Ended() bool
}

会话管理

// 会话服务接口
type Service interface {Create(context.Context, *CreateRequest) (*CreateResponse, error)Get(context.Context, *GetRequest) (*GetResponse, error)List(context.Context, *ListRequest) (*ListResponse, error)Delete(context.Context, *DeleteRequest) errorAppendEvent(context.Context, Session, *Event) error
}// 会话表示用户与代理的交互会话
type Session interface {AppName() stringUserID() stringID() stringState() StateEvents() EventsLastUpdateTime() time.Time
}

工具系统

// 工具接口定义代理可用的功能
type Tool interface {Name() stringDescription() stringRun(ctx Context, args any) (result map[string]any, err error)
}// 工具上下文提供工具执行环境
type Context interface {context.ContextArtifacts() ArtifactsFunctionCallID() stringActions() *EventActionsAgentName() stringSearchMemory(ctx context.Context, query string) (*memory.SearchResponse, error)
}

运行器实现

// 运行器配置
type Config struct {AppName         stringAgent           Agent          // 启动执行的根代理SessionService  session.ServiceArtifactService artifact.Service // 可选MemoryService   memory.Service   // 可选
}// 运行器执行代理工作流
type Runner struct {appName         stringrootAgent       AgentsessionService  session.ServiceartifactService artifact.ServicememoryService   memory.Serviceparents         parentmap.Map
}func (r *Runner) Run(ctx context.Context, session session.Session, userContent *genai.Content, runConfig *agent.RunConfig) iter.Seq2[*session.Event, error] {// 实现代理执行流水线// 包括会话管理、记忆检索、工具执行等
}

这个框架提供了完整的AI代理开发基础设施,支持复杂的多代理工作流、工具集成和云原生部署,是构建企业级AI应用的强大工具。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

公众号二维码

公众号二维码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/967815.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年比较好的卡通布箱包布厂家推荐及选择指南

2025年比较好的卡通布箱包布厂家推荐及选择指南 开篇:行业背景与市场趋势 近年来,随着消费者对个性化、轻量化箱包需求的增长,卡通布箱包市场迎来了快速发展。根据《2024年中国箱包行业白皮书》数据,2023年中国箱…

2025年靠谱的1680D单双股布牛津布品牌厂家排行榜

2025年靠谱的1680D单双股布牛津布品牌厂家排行榜行业背景与市场趋势牛津布作为一种多功能、耐用的纺织材料,近年来在箱包、帐篷、户外装备等领域的需求持续增长。根据中国纺织工业联合会最新发布的《2024-2025年中国产…

AD加工文件导出记录

加工文件包括:Gerber文件、NC钻孔文件、坐标文件、装配图文件和Bom文件。 常规导出方案 Gerber导出 由于Gerber有新版本,为兼容性两个版本都会记录,实际情况下只选择其中一个Gerber文件选项导出即可。 gerber导出文…

Ai元人文:新的期待——基于现状的共情协同架构

Ai元人文:新的期待——基于现状的共情协同架构 核心论点:在真正的“情感计算”成熟之前,Ai元人文倡导一种 “结构化共情”——通过制度设计、交互规则和价值原语框架,在缺乏直接情感感知的技术条件下,系统性地模拟…

2025年印刷固化灯优质厂家权威推荐榜单:紫外线灯板/曝光固化灯/生物成像紫光优质厂家精选

印刷固化灯作为现代印刷工业的核心设备,其性能直接影响印刷品的质量、生产效率和能源消耗。随着UV-LED技术的快速发展,全球印刷固化设备市场正经历着深刻变革。基于行业技术调研和市场数据分析,本文为您呈现2025年印…

戴尔PowerEdge R720服务器配置raid

1、服务器开机,当出现 Press <Ctrl> <R> to Run Configuration Utility 时,按键盘 Ctrl + R 快捷键进入RAID磁盘阵列配置 2、H700磁盘阵列卡配置界面,定位在阵列卡按F2,选择“Create New VD”创建新…

2025年热门的农药分散剂厂家最新热销排行

2025年热门的农药分散剂厂家最新热销排行行业背景与市场趋势农药分散剂作为农药制剂中不可或缺的功能性助剂,在提升农药利用率、降低环境污染方面发挥着关键作用。根据中国农药工业协会最新发布的《2024-2025年中国农…

LC1513 全1子串数

题面 LC1513 代码 class Solution:def numSub(self, s: str) -> int:subLens = []count = 0for i in range(len(s)):if s[i] == 1:count+=1elif s[i] == 0:subLens.append(count)count = 0subLens.append(count)# 计…

2025年优秀的321不锈钢带厂家推荐及采购指南

2025年优秀的321不锈钢带厂家推荐及采购指南行业背景与市场趋势不锈钢带作为工业制造领域的重要基础材料,广泛应用于机械制造、石油化工、电力设备、医疗器械等行业。根据中国特钢企业协会不锈钢分会最新数据显示,20…

基于LiveWire算法的MATLAB实现代码

一、算法原理与流程 1. 核心步骤 % 输入:灰度图像I,起点p0,终点p1 % 输出:分割路径points1. 图像预处理- 高斯滤波去噪- 计算梯度幅值G和方向θ- 计算拉普拉斯过零点Z2. 构建代价图- 定义邻域(8邻域或4邻域)- 计…

2025年雕花铝单板源头厂家权威推荐榜单:氟碳铝单板/阳极氧化铝单板/仿木纹铝单板源头厂家精选

雕花铝单板作为建筑装饰领域的重要材料,以其丰富的艺术表现力、卓越的耐久性和环保特性,在商业建筑、文化场馆、轨道交通等高端项目中应用日益广泛。为帮助行业用户精准选购,本文基于行业技术数据和企业实力评估,为…

LC2257 保卫格子

题面 LC2257 代码 class Solution { public:int countUnguarded(int m, int n, vector<vector<int>>& guards, vector<vector<int>>& walls) {// we define:// 0: non-guarded// 1: g…

2025年移动厕所定做厂家权威推荐榜单:垃圾分类屋/活动房/移动岗亭源头厂家精选

在城市化进程和环保需求的双重推动下,中国移动厕所市场规模正以年均12%的速度增长,预计2025年市场规模将突破48亿元。定制化、智能化与环保性能已成为行业核心竞争力。 01 行业趋势:定制化与智能化引领市场发展 移动…

2025江浙沪地区PLC控制柜制造企业综合实力榜:昆山华普拓电气蝉联技术创新与全球化服务双料标杆

工业自动化浪潮下,PLC控制柜作为产线的"神经中枢",其性能直接决定生产效率。华东作为中国制造业重镇,这里聚集着众多控制柜制造商,其中具备自主研发能力和国际资质认证的企业正迎来爆发式增长。 本次榜单…

【LVGL】加载器部件

引言 加载器部件(lv_spinner)一般不会修改手柄的样式。 加载器部件相关 api 函数示例程序 void my_gui(void) {lv_obj_t *spinner = lv_spinner_create(lv_scr_act(), 1000, 60); /* 入口参数:父对象,指示器旋转一…

2025年质量好的冷弯机组厂家选购指南与推荐

2025年质量好的冷弯机组厂家选购指南与推荐行业背景与市场趋势冷弯成型技术作为金属加工领域的重要组成部分,近年来随着建筑、交通、能源等行业的快速发展,市场需求持续增长。根据中国钢结构协会冷弯型钢分会最新统计…

Windows 11 下安装 Codex,利用 MegaLLM 的 API 体验 GPT-5

有Node环境的可以跳过, 首先安装 nvm for windows 可以从第三方网站下载 https://nvm.uihtm.com/nvm-1.2.2-setup.zip 接着 安装 node 22 set NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node/ nvm instal…

2025哪个出国留学机构好一点

2025哪个出国留学机构好一点一、2025年哪个出国留学机构好一点?准备在2025年申请留学的同学们,是不是已经开始为选择中介机构而烦恼了?打开搜索框,一连串的问题可能瞬间涌上心头:到底哪家留学中介更靠谱?网上口碑…

2025年浮筒推流曝气机定制厂家权威推荐榜单:自吸式推流曝气机/推流式曝气机/推流曝气机源头厂家精选

在环保要求日益严格和水治理需求不断增长的背景下,2024年中国水处理设备市场规模已突破千亿元,其中浮筒推流曝气机凭借其灵活、高效的特点,在河道治理、人工湖及污水处理等领域应用广泛。 01 行业趋势:浮筒推流曝气…

2025留学机构十强

2025留学机构十强一、2025年留学中介怎么选?这几类问题你想清楚了吗?作为一位从事国际教育规划工作超过十年的咨询师,每天都会遇到大量学生和家长提出类似的问题。2025年10月24日,当我们再次审视留学服务市场时,许…