Documentation
¶
Index ¶
- func CombineTools(args ...interface{}) []tool.BaseTool
- func NewLangfuseHandler(cfg *LangfuseConfig) (callbacks.Handler, func(), error)
- func NewLogHandler(client LogClient) callbacks.Handler
- func NewMCPTools(ctx context.Context, cfg MCPConfig) ([]tool.BaseTool, func() error, error)
- func NewModel(ctx context.Context, cfg ModelConfig) (model.ToolCallingChatModel, error)
- type Agent
- func (a *Agent) Close() error
- func (a *Agent) ExportGraph() (compose.AnyGraph, []compose.GraphAddNodeOpt)
- func (a *Agent) Generate(ctx context.Context, messages []*schema.Message, opts ...agent.AgentOption) (msg *schema.Message, err error)
- func (a *Agent) Stream(ctx context.Context, messages []*schema.Message, opts ...agent.AgentOption) (*schema.StreamReader[*schema.Message], error)
- type AgentConfig
- type AgentModelConfig
- type ExecutionConfig
- type ExecutionMode
- type InvokableTool
- type LangfuseConfig
- type LogClient
- type MCPConfig
- type MCPProtocol
- type MessageModifier
- type ModelConfig
- type ModelProtocol
- type ObservabilityConfig
- type PromptConfig
- type RuntimeExecutionSpec
- type RuntimeSpec
- type StreamingConfig
- type StructTool
- type StructuredLogConfig
- type ToolAdapter
- type ToolsConfig
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CombineTools ¶ added in v1.1.0
CombineTools 合并单个工具或工具列表。 支持 tool.BaseTool 和 []tool.BaseTool 类型。 对于不支持的类型,会打印警告并忽略。
func NewLangfuseHandler ¶ added in v1.1.0
func NewLangfuseHandler(cfg *LangfuseConfig) (callbacks.Handler, func(), error)
NewLangfuseHandler 创建一个 Langfuse 回调处理器。 返回的 flush 函数应该在程序退出前调用,确保所有 Trace 上报完成。
func NewLogHandler ¶ added in v1.1.0
NewLogHandler 创建一个基于 LogClient 的日志回调处理器。 它会记录组件的输入、输出和 Token 消耗(如果有),并沿用调用时的 ctx。
func NewMCPTools ¶ added in v1.1.0
NewMCPTools 创建 MCP Client 并加载工具。 返回工具列表和清理函数。清理函数用于关闭 Client。 注意:Client 的底层运行依赖于内部创建的 Context,该 Context 会在调用 cleanup 时取消。 传入的 ctx 仅用于初始化过程(握手超时控制)。
func NewModel ¶ added in v1.1.0
func NewModel(ctx context.Context, cfg ModelConfig) (model.ToolCallingChatModel, error)
NewModel 根据 Protocol 创建对应的 eino-ext ToolCallingChatModel。
Types ¶
type Agent ¶ added in v1.1.0
type Agent struct {
// contains filtered or unexported fields
}
Agent 封装 Eino ReactAgent,提供简化的高层 API。
func NewAgent ¶ added in v1.1.0
func NewAgent(ctx context.Context, cfg AgentConfig) (*Agent, error)
NewAgent 创建一个 Agent。 Mode 是推荐配置入口;如果 Mode 和 ToolChoice 同时设置,以 Mode 为准。
配置约束:
- Conversation 不允许同时配置工具、MaxRetries 或 DirectReturnTools
- Assistant 不允许配置 MaxRetries
- DirectReturnTools 只能引用已注册的工具名
使用示例:
// 场景 1: 纯对话
agent, _ := llm.NewAgent(ctx, llm.AgentConfig{Model: llm.AgentModelConfig{Config: cfg}})
msg, _ := agent.Generate(ctx, messages)
// 场景 2: 强制调工具 → 结果回模型 → 模型决策
agent, _ := llm.NewAgent(ctx, llm.AgentConfig{
Model: llm.AgentModelConfig{Config: cfg},
Tools: llm.ToolsConfig{Invokable: []llm.InvokableTool{myTool}},
Execution: llm.ExecutionConfig{Mode: llm.Extraction},
})
// 场景 3: 强制调工具 → 直接拿结果
agent, _ := llm.NewAgent(ctx, llm.AgentConfig{
Model: llm.AgentModelConfig{Config: cfg},
Tools: llm.ToolsConfig{Invokable: []llm.InvokableTool{myTool}},
Execution: llm.ExecutionConfig{
Mode: llm.Extraction,
DirectReturnTools: map[string]struct{}{"my_tool": {}},
},
})
func (*Agent) ExportGraph ¶ added in v1.1.0
func (a *Agent) ExportGraph() (compose.AnyGraph, []compose.GraphAddNodeOpt)
ExportGraph 导出底层 Graph,用于嵌入更大的编排图。
type AgentConfig ¶ added in v1.1.0
type AgentConfig struct {
Model AgentModelConfig
Prompt PromptConfig
Tools ToolsConfig
Execution ExecutionConfig
Streaming StreamingConfig
Observability ObservabilityConfig
}
type AgentModelConfig ¶ added in v1.4.1
type AgentModelConfig struct {
Config ModelConfig
Instance model.ToolCallingChatModel
}
type ExecutionConfig ¶ added in v1.4.1
type ExecutionConfig struct {
// Mode 是推荐配置入口,用于声明 Agent 的高层执行模式。
Mode ExecutionMode
// Deprecated: ToolChoice 仅保留给 legacy-only 兼容路径;新代码应优先使用 Mode。
ToolChoice *schema.ToolChoice
// MaxRetries 仅用于 Extraction;Conversation 和 Assistant 会拒绝该配置。
MaxRetries int
MaxStep int
// DirectReturnTools 仅允许引用已注册的工具名;Conversation 会拒绝该配置。
DirectReturnTools map[string]struct{}
}
type ExecutionMode ¶ added in v1.4.1
type ExecutionMode string
const ( // Conversation 表示纯对话,不启用工具。 Conversation ExecutionMode = "conversation" // Assistant 表示工具可用,由模型自行决定是否调用。 Assistant ExecutionMode = "assistant" // Extraction 表示先完成工具任务,再决定是否继续总结。 Extraction ExecutionMode = "extraction" )
type InvokableTool ¶ added in v1.1.0
type InvokableTool interface {
Info() *schema.ToolInfo
Invoke(ctx context.Context, args string) (string, error)
}
InvokableTool 代表一个可执行工具(定义 + 执行能力)。 这是一个简化接口,可通过 ToolAdapter 适配到 Eino 标准 tool.InvokableTool。
type LangfuseConfig ¶ added in v1.1.0
LangfuseConfig 是 Langfuse 的配置。
type MCPConfig ¶ added in v1.1.0
type MCPConfig struct {
Name string // 此客户端的标识符
Version string // 客户端版本,默认为 1.0.0
Protocol MCPProtocol
// Stdio 特定配置
Command string
Args []string
Env []string
// SSE 特定配置
BaseURL string
// 可选:过滤要包含的工具
// 若为空,则加载所有工具
ToolWhitelist []string
}
MCPConfig 定义单个 MCP 服务器连接的配置。
type MCPProtocol ¶ added in v1.1.0
type MCPProtocol string
MCPProtocol 定义 MCP 的传输协议。
const ( MCPProtocolStdio MCPProtocol = "stdio" MCPProtocolSSE MCPProtocol = "sse" )
type MessageModifier ¶ added in v1.1.0
type MessageModifier = react.MessageModifier
MessageModifier 在每轮调用模型前修改消息列表。 常用于注入 system prompt 或上下文压缩。
type ModelConfig ¶ added in v1.1.0
type ModelConfig struct {
Protocol ModelProtocol
BaseURL string
APIKey string
Model string
Timeout time.Duration
MaxTokens *int
Temperature *float32
TopP *float32
Stop []string
}
ModelConfig 是创建模型的统一配置。
type ModelProtocol ¶ added in v1.1.0
type ModelProtocol string
ModelProtocol 定义模型厂商协议。
const ( OPENAI ModelProtocol = "OPENAI" OPENAI_COMPAT ModelProtocol = "OPENAI_COMPAT" CLAUDE ModelProtocol = "CLAUDE" CLAUDE_COMPAT ModelProtocol = "CLAUDE_COMPAT" ARK ModelProtocol = "ARK" ARKBOT ModelProtocol = "ARKBOT" DEEPSEEK ModelProtocol = "DEEPSEEK" GEMINI ModelProtocol = "GEMINI" OLLAMA ModelProtocol = "OLLAMA" QIANFAN ModelProtocol = "QIANFAN" QWEN ModelProtocol = "QWEN" KIMI ModelProtocol = "KIMI" )
type ObservabilityConfig ¶ added in v1.4.1
type ObservabilityConfig struct {
Callbacks []callbacks.Handler
StructuredLogs *StructuredLogConfig
}
type PromptConfig ¶ added in v1.4.1
type PromptConfig struct {
System string
PrepareMessages MessageModifier
RewriteHistory MessageModifier
}
type RuntimeExecutionSpec ¶ added in v1.4.1
type RuntimeExecutionSpec struct {
Mode ExecutionMode
DisableTools bool
ToolChoice schema.ToolChoice
RepairMaxAttempts int
MaxStep int
DirectReturnTools map[string]struct{}
}
type RuntimeSpec ¶ added in v1.4.1
type RuntimeSpec struct {
Model AgentModelConfig
Prompt PromptConfig
Tools ToolsConfig
Execution RuntimeExecutionSpec
Streaming StreamingConfig
Observability ObservabilityConfig
}
type StreamingConfig ¶ added in v1.4.1
type StructTool ¶ added in v1.1.0
type StructTool[T any] struct { // contains filtered or unexported fields }
StructTool 是一个泛型工具,用于让模型生成指定结构体。
它利用 Tool Call 的 JSON Schema 约束模型输出格式:
- 模型按 Schema 生成 JSON 参数
- Invoke 内部做 json.Unmarshal 校验
- 成功 → 返回合法 JSON
- 失败 → 返回 error,触发自动重试
配合 Extraction 模式和 DirectReturnTools 使用,实现「结构化输出提取」:
type JD struct {
Title string `json:"title"`
Requirements []string `json:"requirements"`
}
tool := llm.NewStructTool[JD]("generate_jd", "生成职位描述")
agent, _ := llm.NewAgent(ctx, llm.AgentConfig{
Model: llm.AgentModelConfig{Config: cfg},
Tools: llm.ToolsConfig{Invokable: []llm.InvokableTool{tool}},
Execution: llm.ExecutionConfig{
Mode: llm.Extraction,
DirectReturnTools: map[string]struct{}{"generate_jd": {}},
},
Prompt: llm.PromptConfig{
System: "根据用户需求生成职位描述。",
},
})
msg, _ := agent.Generate(ctx, messages)
var jd JD
json.Unmarshal([]byte(msg.Content), &jd)
func NewStructTool ¶ added in v1.1.0
func NewStructTool[T any](name, desc string) *StructTool[T]
NewStructTool 创建一个结构化输出提取工具。 自动从 T 的 json tag 生成 ToolInfo 的参数定义。
func (*StructTool[T]) Info ¶ added in v1.1.0
func (s *StructTool[T]) Info() *schema.ToolInfo
type StructuredLogConfig ¶ added in v1.4.1
type ToolAdapter ¶ added in v1.1.0
type ToolAdapter struct {
// contains filtered or unexported fields
}
ToolAdapter 将 llm.InvokableTool 适配为 Eino tool.InvokableTool。 用于桥接简化接口与 Eino 标准接口。
func NewToolAdapter ¶ added in v1.1.0
func NewToolAdapter(t InvokableTool) *ToolAdapter
NewToolAdapter 创建一个工具适配器。
func (*ToolAdapter) InvokableRun ¶ added in v1.1.0
type ToolsConfig ¶ added in v1.4.1
type ToolsConfig struct {
Standard []tool.BaseTool
Invokable []InvokableTool
MCPServers []MCPConfig
}