ling-baseling-base

Event 事件

Agent 运行时事件模型与流式通信

在线 Playground

在浏览器中直接体验本页相关 API,无需本地安装 Go 环境。

Event

agentkit/event 定义 Agent 运行时的统一事件模型,所有 Agent.Run 通过 <-chan *event.Event 流式返回进度。

Event 结构

type Event struct {
    // 作者:user / assistant / tool / system
    Author string
    // 内容部分:文本、工具调用、工具结果、转移等
    Content Content
    // 元数据:request_id、trace_id、标签
    Metadata map[string]any
    // 是否最终事件
    IsFinal bool
}

事件类型

通过 Content 的多态类型区分:

  • 文本增量 — 模型流式输出
  • ToolCall — 模型请求调用工具
  • ToolResult — 工具执行结果
  • Transfer — Agent 间转移(TransferTag
  • CodeExecution — 代码执行状态(CodeExecutionTag

消费事件

events, err := agent.Run(ctx, invocation)
for ev := range events {
    switch {
    case ev.HasText():
        fmt.Print(ev.Text())
    case ev.HasToolCall():
        fmt.Println("tool:", ev.ToolCall().Name)
    case ev.IsFinal:
        return
    }
}

Server 协议转换

Server转换
server/openaiEvent → SSE ChatCompletionChunk
server/a2aEvent → A2A Message
server/aguiEvent → AG-UI 事件流

与 common/eventbus 区别

agentkit/eventcommon/eventbus
范围Agent 推理流应用内 pub/sub
消费者Runner、Server业务服务

两者可在应用层桥接:Agent 完成事件发布到 eventbus 触发下游业务。

On this page