首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >tRPC-Agent-Go:让Go开发者轻松构建智能AI应用

tRPC-Agent-Go:让Go开发者轻松构建智能AI应用

作者头像
腾讯开源
发布2025-09-02 08:36:41
发布2025-09-02 08:36:41
10800
代码可运行
举报
运行总次数:0
代码可运行

1、项目简介

tRPC团队之前开源了A2A开发框架tRPC-A2A-Go和MCP开发框架tRPC-MCP-Go,尤其是tRPC-A2A-Go,在国内外都有不少用户进行应用和贡献。现在我们推出tRPC-Agent-Go(https://github.com/trpc-group/trpc-agent-go)开发框架,实现Go语言AI生态开发框架的闭环。

当前主流 Agent 框架(AutoGen、CrewAI 、Agno、ADK等)大部分都是基于 Python,而 Go在微服务、并发与部署方面有天然优势,Go在腾讯内部也有大规模应用,业界基于Go语言的Agent框架较少,大部分都是编排式的workflow框架,缺少真正的“去中心化、可协作、能涌现”的自主多 Agent 能力。tRPC-Agent-Go 直接利用 Go 的高并发与 tRPC 生态,把 LLM 的推理、协商和自适应性带到 Go 场景,满足复杂业务对“智能+性能”的双重需求。

2、架构设计

tRPC-Agent-Go 采用模块化架构设计,由多个核心组件组成,组件都可插拔,通过事件驱动机制实现组件间的解耦通信,支持callback插入自定义逻辑:

Agent: 核心执行单元,负责处理用户输入并生成响应

Runner: Agent 的执行器,负责管理执行流程,串联 Session/Memory Service 等能力

Model: 支持多种 LLM 模型(OpenAI、DeepSeek 等)

Tool: 提供各种工具能力(Function、MCP、DuckDuckGo 等)

Session: 管理用户会话状态和事件

Memory: 记录用户的长期记忆和个性化信息

Knowledge: 实现 RAG 知识检索能力

Planner: 提供 Agent 的计划和推理能力

CodeExecutor:提供Agent代码执行能力,支持Local,Container等模式

以下是各个组件的架构图

下面展示一个完整的用户和Agent对话的完整时序图

3、 核心特点

多样化 Agent 系统

● LLMAgent: 基于大语言模型,支持工具调用和推理

● ChainAgent: 链式执行,支持多步骤任务分解

● ParallelAgent: 并行处理,支持多专家协作

● CycleAgent: 循环迭代,支持自我优化

● GraphAgent: 图工作流,兼容现有编排习惯

丰富工具生态

● 内置常用工具

● 支持 Function、MCP 协议等多种扩展方式

● 灵活的工具组合和调用策略

智能会话管理

● 支持 Redis 和内存存储的会话持久化

● 长期记忆和个性化信息保持

● RAG 检索增强生成能力

● 实时事件驱动架构

全链路可观测性

● OpenTelemetry 全链路追踪和性能监控

● 可视化调试界面和实时监控

● 结构化日志和错误追踪

4、 快速开始

基本用法

代码语言:javascript
代码运行次数:0
运行
复制
package main

import (
    "context"
    "fmt"
    "log"

    "trpc.group/trpc-go/trpc-agent-go/agent/llmagent"
    "trpc.group/trpc-go/trpc-agent-go/model"
    "trpc.group/trpc-go/trpc-agent-go/model/openai"
    "trpc.group/trpc-go/trpc-agent-go/runner"
    "trpc.group/trpc-go/trpc-agent-go/tool"
    "trpc.group/trpc-go/trpc-agent-go/tool/function"
)

func main() {
    // 创建模型
    modelInstance := openai.New("deepseek-chat")

    // 创建工具
    calculatorTool := function.NewFunctionTool(
        calculator,
        function.WithName("calculator"),
        function.WithDescription("执行加减乘除。参数:a、b 为数值,op 取值 add/sub/mul/div;返回 result 为计算结果。"),
    )

    // 启用流式输出
    genConfig := model.GenerationConfig{
        Stream: true,
    }

    // 创建 Agent
    agent := llmagent.New("assistant",
        llmagent.WithModel(modelInstance),
        llmagent.WithTools([]tool.Tool{calculatorTool}),
        llmagent.WithGenerationConfig(genConfig),
    )

    // 创建 Runner
    runner := runner.NewRunner("calculator-app", agent)

    // 执行对话
    ctx := context.Background()
    events, err := runner.Run(ctx,
        "user-001",
        "session-001",
        model.NewUserMessage("计算 2+3 等于多少"),
    )
    if err != nil {
        log.Fatal(err)
    }

    // 处理事件流
    for event := range events {
        if event.Object == "chat.completion.chunk" {
            fmt.Print(event.Choices[0].Delta.Content)
        }
    }
    fmt.Println()
}

func calculator(ctx context.Context, req calculatorReq) (calculatorRsp, error) {
    var result float64
    switch req.Op {
    case "add", "+":
        result = req.A + req.B
    case "sub", "-":
        result = req.A - req.B
    case "mul", "*":
        result = req.A * req.B
    case "div", "/":
        result = req.A / req.B
    }
    return calculatorRsp{Result: result}, nil
}

type calculatorReq struct {
    A  float64 `json:"a"`
    B  float64 `json:"b"`
    Op string  `json:"op"`
}

type calculatorRsp struct {
    Result float64 `json:"result"`
}

多Agent协助

代码语言:javascript
代码运行次数:0
运行
复制
// 创建链式 Agent
chainAgent := chainagent.New("problem-solver",
    chainagent.WithSubAgents([]agent.Agent{
        analysisAgent,   // 分析 Agent
        executionAgent,  // 执行 Agent
    }))
 
// 使用 Runner 执行
runner := runner.NewRunner("multi-agent-app", chainAgent)
events, _ := runner.Run(ctx, userID, sessionID, message)

5、 致谢

感谢腾讯内部业务如腾讯元宝,腾讯视频,腾讯新闻,IMA、QQ音乐等等业务的支持,业务的场景打磨是对框架最好的验证。

感谢ADK,Agno,CrewAI,AutoGen等优秀开源框架的启发,为tRPC-Agent-Go开发提供灵感。

6、 项目地址

github:https://github.com/trpc-group/trpc-agent-go

关注腾讯开源公众号

获取更多最新腾讯官方开源信息!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯开源 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档