Help us shape the future of Go! Take the 2026 Go Developer Survey

obsx

package
v0.18.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 25, 2026 License: MIT Imports: 9 Imported by: 0

Documentation

Overview

Package obsx 可观测性扩展:对齐 eino callbacks 体系的 LLM 调用追踪。

核心组件 TracingHandler 是 eino callbacks.Handler 的实现——通过 callbacks.InitCallbacks(ctx, nil, handler) 注入后,eino 各组件 (ChatModel 等)在调用时自动触发 OnStart/OnEnd/OnError,无需侵入业务代码:

ctx = obsx.InitLLMObservability(ctx, log, obsx.Options{}) // 一行启用
msg, err := client.Generate(ctx, "R1", msgs)               // 自动产出结构化 trace

日志字段对齐可审计需求:stage(业务阶段)、component/model(哪个模型)、 duration、prompt/completion tokens(优先真实 usage)、慢调用告警。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DrainStreamUsage

func DrainStreamUsage(sr *schema.StreamReader[callbacks.CallbackOutput]) (usage *model.TokenUsage, modelName string)

DrainStreamUsage 排空回调副本流取末个非 nil usage 与末个非空模型名 (全仓单源——llm.NewUsageHandler 与本包 TracingHandler 共用;调用方负责 Close,本函数不关流。last-non-nil 语义:无 usage 的尾帧不清空已捕获值)。

func InitLLMObservability

func InitLLMObservability(ctx context.Context, log logx.Logger, opt Options) context.Context

InitLLMObservability 一步启用:注入 TracingHandler 到 ctx。 之后该 ctx 链上的所有 eino 组件调用(ChatModel Generate 等)自动产出 trace。

func NewTracingHandler

func NewTracingHandler(log logx.Logger, opt Options) callbacks.Handler

NewTracingHandler 创建 eino 追踪 handler(经 HandlerBuilder 组装)。 v0.12.1 起补 OnEndWithStreamOutput(第九轮审计 C 级:流式只触发该时机, 仅注册 OnEnd 的追踪在 agentrun 默认开流下 llm.call.end/slow 永不产出、 duration/tokens 全盲)——流式分支异步排空副本流取末帧 usage 后落 end (同步排空会把真流式阻塞成全量批出,与 llm.NewUsageHandler 同修法)。 组件过滤:非 ChatModel 组件(Tool/Lambda/Graph)的回调不产 llm.call.*—— 注入点在 run 边界时工具节点同样触发回调,此前混入 LLM 错误率与日志。

func StageFromContext

func StageFromContext(ctx context.Context) string

StageFromContext 读取业务阶段(未标记返回空串)。

func TokenUsageOf

func TokenUsageOf(out *model.CallbackOutput) *model.TokenUsage

TokenUsageOf 模型回调输出的真实 token 用量提取(全仓单源): 优先 out.TokenUsage;compose 图节点对裸 ChatModel 只透传 Message 时回退读 ResponseMeta.Usage(缺该回退会静默漏采——v0.10.11 前仅 llm/usage 侧有, obsx 侧漏采已修)。llm.NewUsageHandler 与 TracingHandler 共用本函数。

func WithStage

func WithStage(ctx context.Context, stage string) context.Context

WithStage 在 ctx 上标记业务阶段。

Types

type Options

type Options struct {
	// SlowThreshold 慢调用阈值:超过以 Warn 级落日志(默认 30s;0 = 不告警)。
	SlowThreshold time.Duration
	// PreviewLen 输入/输出消息内容预览长度(默认 0 = 不落内容,只落长度;
	// 生产建议 0——消息可能含用户代码/凭证)。
	PreviewLen int
}

Options TracingHandler 配置。

type TracingHandler

type TracingHandler struct {
	// contains filtered or unexported fields
}

TracingHandler eino 追踪 handler 的配置(经 NewTracingHandler 构建为 callbacks.Handler)。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL