Documentation
¶
Overview ¶
Package langfuse 提供 Langfuse 可观测平台集成
Langfuse 是开源的 LLM 可观测平台,用于追踪和监控 LLM 应用。 本包提供 Langfuse 旧版事件摄取 API 的手工客户端,支持 Trace、Span、Generation 事件与异步批量上报。新接入优先使用 observe/otel.NewLangfuseExporter,通过 OTLP 与 Hook Manager 统一采集;本包不会自动注册 Hexagon Hook。
使用示例:
client := NewClient(
WithPublicKey("pk-xxx"),
WithSecretKey("sk-xxx"),
WithHost("https://cloud.langfuse.com"),
)
defer client.Close()
client.TraceStart("trace-1", "agent.run", input, []string{"demo"})
client.GenerationStart("generation-1", "trace-1", "", "llm.call", "gpt-4o", input)
client.GenerationEnd("generation-1", "trace-1", output, &UsageBody{
Input: 100,
Output: 50,
Total: 150,
})
Index ¶
- type Client
- func (c *Client) Close()
- func (c *Client) Flush()
- func (c *Client) GenerationEnd(id, traceID string, output any, usage *UsageBody)
- func (c *Client) GenerationStart(id, traceID, parentID, name, model string, input any)
- func (c *Client) LLMHookFunc() (func(ctx context.Context, traceID, model string, input any), ...)
- func (c *Client) SpanEnd(id, traceID string, output any, level string)
- func (c *Client) SpanStart(id, traceID, parentID, name string, input any)
- func (c *Client) TraceStart(id, name string, input any, tags []string)
- type ClientOption
- type Event
- type EventType
- type GenerationBody
- type SpanBody
- type TraceBody
- type UsageBody
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client Langfuse 客户端 负责收集和上报追踪数据到 Langfuse 平台
func (*Client) GenerationEnd ¶
GenerationEnd 结束 LLM 调用记录
func (*Client) GenerationStart ¶
GenerationStart 开始 LLM 调用记录
func (*Client) LLMHookFunc ¶
func (c *Client) LLMHookFunc() (func(ctx context.Context, traceID, model string, input any), func(ctx context.Context, traceID string, output any, inputTokens, outputTokens int))
LLMHookFunc 返回可注册到 Hooks 系统的 LLM 钩子函数 返回 (onStart, onEnd) 两个函数
type ClientOption ¶
type ClientOption func(*Client)
ClientOption 客户端配置选项
func WithFlushInterval ¶
func WithFlushInterval(interval time.Duration) ClientOption
WithFlushInterval 设置上报间隔
type Event ¶
type Event struct {
// Type 事件类型
Type EventType `json:"type"`
// Body 事件数据
Body any `json:"body"`
// ID 事件 ID
ID string `json:"id"`
// Timestamp 时间戳
Timestamp time.Time `json:"timestamp"`
}
Event Langfuse 事件
type EventType ¶
type EventType string
EventType 事件类型
const ( // EventTypeTraceCreate 创建追踪 EventTypeTraceCreate EventType = "trace-create" // EventTypeSpanCreate 创建 Span EventTypeSpanCreate EventType = "span-create" // EventTypeSpanUpdate 更新 Span EventTypeSpanUpdate EventType = "span-update" // EventTypeGenerationCreate 创建 LLM 调用记录 EventTypeGenerationCreate EventType = "generation-create" // EventTypeGenerationUpdate 更新 LLM 调用记录 EventTypeGenerationUpdate EventType = "generation-update" )
type GenerationBody ¶
type GenerationBody struct {
ID string `json:"id"`
TraceID string `json:"traceId"`
ParentID string `json:"parentObservationId,omitempty"`
Name string `json:"name"`
StartTime time.Time `json:"startTime"`
EndTime *time.Time `json:"endTime,omitempty"`
Model string `json:"model,omitempty"`
ModelParameters map[string]any `json:"modelParameters,omitempty"`
Input any `json:"input,omitempty"`
Output any `json:"output,omitempty"`
Usage *UsageBody `json:"usage,omitempty"`
Metadata map[string]any `json:"metadata,omitempty"`
CompletionStart *time.Time `json:"completionStartTime,omitempty"`
Level string `json:"level,omitempty"`
}
GenerationBody LLM 调用数据
type SpanBody ¶
type SpanBody struct {
ID string `json:"id"`
TraceID string `json:"traceId"`
ParentID string `json:"parentObservationId,omitempty"`
Name string `json:"name"`
StartTime time.Time `json:"startTime"`
EndTime *time.Time `json:"endTime,omitempty"`
Input any `json:"input,omitempty"`
Output any `json:"output,omitempty"`
Metadata map[string]any `json:"metadata,omitempty"`
Level string `json:"level,omitempty"`
StatusMsg string `json:"statusMessage,omitempty"`
}
SpanBody Span 数据
Click to show internal directories.
Click to hide internal directories.