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

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

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

✨ 功能特性

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

🚀 安装指南

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

bash 复制代码
go get google.golang.org/adk

系统要求

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

📖 使用说明

基础代理创建

go 复制代码
package main

import (
    "context"
    "iter"

    "google.golang.org/adk/agent"
    "google.golang.org/adk/session"
)

// 自定义代理实现
type CustomAgent struct {
    name        string
    description string
    subAgents   []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代理示例

go 复制代码
package main

import (
    "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)
}

工作流代理

go 复制代码
package main

import (
    "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)
}

💻 核心代码解析

代理接口设计

go 复制代码
// Agent是所有代理必须实现的基础接口
type Agent interface {
    Name() string
    Description() string
    Run(InvocationContext) iter.Seq2[*session.Event, error]
    SubAgents() []Agent
    internal() *agent
}

// 调用上下文提供代理执行环境
type InvocationContext interface {
    context.Context
    Agent() Agent
    Artifacts() Artifacts
    Memory() Memory
    Session() session.Session
    InvocationID() string
    Branch() string
    UserContent() *genai.Content
    RunConfig() *RunConfig
    EndInvocation()
    Ended() bool
}

会话管理

go 复制代码
// 会话服务接口
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) error
    AppendEvent(context.Context, Session, *Event) error
}

// 会话表示用户与代理的交互会话
type Session interface {
    AppName() string
    UserID() string
    ID() string
    State() State
    Events() Events
    LastUpdateTime() time.Time
}

工具系统

go 复制代码
// 工具接口定义代理可用的功能
type Tool interface {
    Name() string
    Description() string
    Run(ctx Context, args any) (result map[string]any, err error)
}

// 工具上下文提供工具执行环境
type Context interface {
    context.Context
    Artifacts() Artifacts
    FunctionCallID() string
    Actions() *EventActions
    AgentName() string
    SearchMemory(ctx context.Context, query string) (*memory.SearchResponse, error)
}

运行器实现

go 复制代码
// 运行器配置
type Config struct {
    AppName         string
    Agent           Agent          // 启动执行的根代理
    SessionService  session.Service
    ArtifactService artifact.Service // 可选
    MemoryService   memory.Service   // 可选
}

// 运行器执行代理工作流
type Runner struct {
    appName         string
    rootAgent       Agent
    sessionService  session.Service
    artifactService artifact.Service
    memoryService   memory.Service
    parents         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应用的强大工具。

相关推荐
Sagittarius_A*32 分钟前
边缘检测:基础算子到高级边缘提取【计算机视觉】
人工智能·python·opencv·计算机视觉
杜子不疼.37 分钟前
【Linux】基础IO(三):文件描述符与重定向
linux·c语言·开发语言·人工智能
盼小辉丶39 分钟前
PyTorch实战(25)——使用PyTorch构建DQN模型
人工智能·pytorch·深度学习·强化学习
时见先生8 小时前
Python库和conda搭建虚拟环境
开发语言·人工智能·python·自然语言处理·conda
昨夜见军贴061610 小时前
IACheck AI审核在生产型企业质量控制记录中的实践探索——全面赋能有关物质研究合规升级
大数据·人工智能
智星云算力10 小时前
智星云镜像共享全流程指南,附避坑手册(新手必看)
人工智能
盖雅工场10 小时前
驱动千店销售转化提升10%:3C零售门店的人效优化实战方案
大数据·人工智能·零售·数字化管理·智能排班·零售排班
Loo国昌10 小时前
深入理解 FastAPI:Python高性能API框架的完整指南
开发语言·人工智能·后端·python·langchain·fastapi
发哥来了10 小时前
【AI视频创作】【评测】【核心能力与成本效益】
大数据·人工智能
醉舞经阁半卷书111 小时前
Python机器学习常用库快速精通
人工智能·python·深度学习·机器学习·数据挖掘·数据分析·scikit-learn