Documentation
¶
Index ¶
- Variables
- func EmitToolUpdate(ctx context.Context, content string)
- func GetInterruptState[T any](ctx context.Context) (wasInterrupted bool, hasState bool, state T)
- func GetResumeContext[T any](ctx context.Context) (isResumeTarget bool, hasData bool, data T)
- func Interrupt(ctx context.Context, info any) error
- func StatefulInterrupt(ctx context.Context, info any, state any) error
- type Agent
- func (a *Agent) Abort()
- func (a *Agent) ClearAllQueues()
- func (a *Agent) ClearFollowUpQueue()
- func (a *Agent) ClearSteeringQueue()
- func (a *Agent) Close() error
- func (a *Agent) Continue(ctx context.Context) error
- func (a *Agent) FollowUp(content string)
- func (a *Agent) History() []*schema.Message
- func (a *Agent) Name() string
- func (a *Agent) Prompt(ctx context.Context, input string) error
- func (a *Agent) Reset()
- func (a *Agent) Resume(ctx context.Context, targets map[string]any) error
- func (a *Agent) Send(ctx context.Context, parts ...ContentPart) error
- func (a *Agent) SetFollowUpMode(mode QueueMode)
- func (a *Agent) SetHistory(history []*schema.Message)
- func (a *Agent) SetSteeringMode(mode QueueMode)
- func (a *Agent) State() *State
- func (a *Agent) Steer(content string)
- func (a *Agent) Subscribe(fn Subscriber) func()
- type BaseChatModelAgentMiddleware
- type ChatModel
- type ChatModelAgentMiddleware
- type Config
- type ContentPart
- func AudioBase64(data, mimeType string) ContentPart
- func AudioURL(url string) ContentPart
- func FileBase64(data, mimeType string, name ...string) ContentPart
- func FileURL(url string) ContentPart
- func ImageBase64(data, mimeType string, detail ...ImageURLDetail) ContentPart
- func ImageURL(url string, detail ...ImageURLDetail) ContentPart
- func Text(s string) ContentPart
- func VideoBase64(data, mimeType string) ContentPart
- func VideoURL(url string) ContentPart
- type Event
- type EventType
- type ImageURLDetail
- type InterruptPoint
- type Message
- type MockChatModel
- func (m *MockChatModel) AddResponses(responses ...MockModelResponse)
- func (m *MockChatModel) Calls() []MockModelCall
- func (m *MockChatModel) Generate(ctx context.Context, input []*schema.Message, opts ...model.Option) (*schema.Message, error)
- func (m *MockChatModel) LastCall() (MockModelCall, bool)
- func (m *MockChatModel) RemainingResponses() int
- func (m *MockChatModel) Stream(ctx context.Context, input []*schema.Message, opts ...model.Option) (*schema.StreamReader[*schema.Message], error)
- type MockModelCall
- type MockModelExpectation
- type MockModelResponse
- func MockExpect(response MockModelResponse, expect MockModelExpectation) MockModelResponse
- func MockModelAfterToolResult(callID string, response MockModelResponse) MockModelResponse
- func MockModelAfterToolResults(response MockModelResponse, callIDs ...string) MockModelResponse
- func MockModelCalls(invocations ...MockToolCallProvider) MockModelResponse
- func MockModelCallsAfter(wait MockToolCallProvider, calls ...MockToolCallProvider) MockModelResponse
- func MockModelCallsAfterAll(wait []MockToolCallProvider, calls ...MockToolCallProvider) MockModelResponse
- func MockModelError(err error) MockModelResponse
- func MockModelMessage(message *schema.Message) MockModelResponse
- func MockModelReasoning(content, reasoning string) MockModelResponse
- func MockModelRespondsAfter[D any](call *MockToolInvocation[D], reply func(D) MockModelResponse) MockModelResponse
- func MockModelRespondsAfterToolResult(callID string, reply func(result string) MockModelResponse) MockModelResponse
- func MockModelRespondsAfterToolResultAs[D any](callID string, reply func(D) MockModelResponse) MockModelResponse
- func MockModelStream(chunks ...string) MockModelResponse
- func MockModelStreamError(err error, chunks ...string) MockModelResponse
- func MockModelText(content string) MockModelResponse
- func MockModelTextAfter[D any](call *MockToolInvocation[D], reply func(D) string) MockModelResponse
- func MockModelTextAfterAll(content string, calls ...MockToolCallProvider) MockModelResponse
- func MockModelTextAfterToolResult(callID string) MockModelResponse
- func MockModelToolCall(name, arguments string) MockModelResponse
- func MockModelToolCallWithID(id, name, arguments string) MockModelResponse
- func MockModelToolCalls(calls ...schema.ToolCall) MockModelResponse
- type MockTool
- type MockToolCallProvider
- type MockToolInvocation
- type MockToolProvider
- type ModelFailoverConfig
- type ModelRetryConfig
- type QueueMode
- type ResponseMeta
- type RoleType
- type State
- type Subscriber
- type TokenUsage
- type Tool
- type ToolCall
Constants ¶
This section is empty.
Variables ¶
var ErrMockModelNoResponse = errors.New("mock chat model has no response configured")
ErrMockModelNoResponse 表示没有可消费的预设响应。
Functions ¶
func EmitToolUpdate ¶
EmitToolUpdate 在工具执行中发送进度更新事件。 工具通过 context 获取 Emitter 并发送 tool_update 事件:
func myTool(ctx context.Context, input string) (string, error) {
agentkit.EmitToolUpdate(ctx, "正在处理...")
return "done", nil
}
func GetInterruptState ¶
GetInterruptState 在工具中检查是否从中断恢复,并获取之前保存的状态。
返回值:
- wasInterrupted: 此工具是否曾被中断
- hasState: 是否有保存的状态且成功转换为类型 T
- state: 保存的状态(hasState 为 false 时为零值)
func GetResumeContext ¶
GetResumeContext 在工具中检查是否是 Resume 的显式目标,并获取恢复数据。
返回值:
- isResumeTarget: 此工具是否被显式指定为恢复目标
- hasData: 是否提供了恢复数据
- data: 恢复数据(hasData 为 false 时为零值)
用于区分:
- 作为恢复目标被调用(应继续执行)
- 因兄弟工具被恢复而重新执行(应再次中断)
用法:
func myTool(ctx context.Context, input string) (string, error) {
wasInterrupted, _, _ := agentkit.GetInterruptState[any](ctx)
if !wasInterrupted {
return "", agentkit.Interrupt(ctx, "需要用户输入")
}
isTarget, hasData, data := agentkit.GetResumeContext[string](ctx)
if !isTarget {
return "", agentkit.Interrupt(ctx, nil) // 非目标,重新中断
}
if hasData {
return "用户输入: " + data, nil
}
return "已确认", nil
}
func Interrupt ¶
Interrupt 在工具执行中触发 HITL 中断。 调用后工具应立即返回,Agent 将暂停执行并发出 EventInterrupted 事件。 用户可通过 Agent.Resume 恢复执行。
info 是面向用户的中断原因描述,会通过 InterruptPoint.Info 传递给订阅者。
用法:
func myTool(ctx context.Context, input string) (string, error) {
if needsConfirmation(input) {
return "", agentkit.Interrupt(ctx, "请确认是否继续")
}
return doWork(input), nil
}
func StatefulInterrupt ¶
StatefulInterrupt 在工具执行中触发带状态保存的 HITL 中断。 恢复时可通过 GetInterruptState 取回保存的状态。
state 必须是可通过 gob 序列化的类型。
用法:
type MyState struct { Step int }
func myTool(ctx context.Context, input string) (string, error) {
wasInterrupted, hasState, state := agentkit.GetInterruptState[MyState](ctx)
if !wasInterrupted {
return "", agentkit.StatefulInterrupt(ctx, "处理中", MyState{Step: 1})
}
if hasState {
return fmt.Sprintf("从步骤 %d 恢复", state.Step), nil
}
return "已恢复", nil
}
Types ¶
type Agent ¶
type Agent struct {
// contains filtered or unexported fields
}
Agent 提供事件流驱动的交互能力。
func (*Agent) Resume ¶
Resume 从 HITL 中断恢复执行。 targets 格式为 map[interruptID]data,interruptID 来自 Event.Interrupt[].ID。 如果 Agent 已在执行中,返回错误。
func (*Agent) Send ¶ added in v1.1.0
func (a *Agent) Send(ctx context.Context, parts ...ContentPart) error
Send 发送多模态内容并驱动 Agent 执行。 使用 Text、ImageURL、AudioURL 等构造函数创建 ContentPart。 如果 Agent 已在执行中,返回错误。
func (*Agent) SetFollowUpMode ¶
SetFollowUpMode 设置后续消息处理模式
func (*Agent) SetHistory ¶ added in v1.2.0
SetHistory 替换完整对话历史,并同步展示状态。
func (*Agent) SetSteeringMode ¶
SetSteeringMode 设置转向消息处理模式
type BaseChatModelAgentMiddleware ¶ added in v1.2.0
type BaseChatModelAgentMiddleware = adk.BaseChatModelAgentMiddleware
BaseChatModelAgentMiddleware 提供 ChatModelAgentMiddleware 的默认空实现。
type ChatModelAgentMiddleware ¶ added in v1.2.0
type ChatModelAgentMiddleware = adk.ChatModelAgentMiddleware
ChatModelAgentMiddleware 是 ChatModelAgent 扩展接口。
type Config ¶
type Config struct {
Name string
Description string
SystemPrompt string
Model ChatModel // 聊天模型(可直接使用 agentkit.ChatModel 别名)
Tools []Tool // 工具列表(可直接使用 agentkit.Tool 别名)
History []*schema.Message // 完整对话历史(可选)
Handlers []ChatModelAgentMiddleware // ChatModelAgent 扩展处理器
ModelRetryConfig *ModelRetryConfig // 模型调用重试配置(可选)
ModelFailoverConfig *ModelFailoverConfig // 模型失败转移配置(可选)
MaxIterations int // 默认 20
CheckPointStore compose.CheckPointStore // 自定义 CheckPoint 存储,默认使用内存存储
}
Config Agent 配置
type ContentPart ¶ added in v1.1.0
type ContentPart = schema.MessageInputPart
ContentPart 表示用户输入的一个内容片段(文本、图片、音频、视频、文件)。 通过 Text、ImageURL 等构造函数创建,用于 Agent.Send 多模态输入。
func AudioBase64 ¶ added in v1.1.0
func AudioBase64(data, mimeType string) ContentPart
AudioBase64 创建 Base64 编码音频内容片段。
func FileBase64 ¶ added in v1.1.0
func FileBase64(data, mimeType string, name ...string) ContentPart
FileBase64 创建 Base64 编码文件内容片段。name 为文件名(可选)。
func ImageBase64 ¶ added in v1.1.0
func ImageBase64(data, mimeType string, detail ...ImageURLDetail) ContentPart
ImageBase64 创建 Base64 编码图片内容片段。
func ImageURL ¶ added in v1.1.0
func ImageURL(url string, detail ...ImageURLDetail) ContentPart
ImageURL 创建图片 URL 内容片段。 detail 可选,控制图片识别质量(默认由模型决定)。
func VideoBase64 ¶ added in v1.1.0
func VideoBase64(data, mimeType string) ContentPart
VideoBase64 创建 Base64 编码视频内容片段。
type Event ¶
type Event struct {
Type EventType
Agent string // 产生事件的 Agent 名称
Role RoleType // 消息角色(message_start / message_end)
Content string // 文本内容(message_end / tool_end)
Delta string // 流式增量内容(message_delta / reasoning_delta)
ReasoningContent string // 完整推理内容(message_end,仅推理模型)
ResponseMeta *ResponseMeta // 响应元数据:token 用量、完成原因(message_end)
ToolCalls []ToolCall // 工具调用列表(tool_start)
ToolCallID string // 工具调用 ID(tool_update / tool_end)
ToolName string // 工具名称(tool_update / tool_end)
ToolArguments string // 工具调用参数(tool_update / tool_end)
Interrupt []InterruptPoint // 中断点列表(interrupted)
Error error // 错误信息(error)
}
Event 统一事件
type EventType ¶
type EventType string
EventType 事件类型
const ( EventAgentStart EventType = "agent_start" // Agent 开始处理 EventTurnStart EventType = "turn_start" // 新一轮开始,发生在模型请求前 EventMessageStart EventType = "message_start" // 消息开始(流式或非流式) EventReasoningDelta EventType = "reasoning_delta" // 推理模型思考过程增量(如 DeepSeek-R1、o1) EventMessageDelta EventType = "message_delta" // 流式增量文本 EventMessageEnd EventType = "message_end" // 消息结束 EventToolStart EventType = "tool_start" // 工具调用请求 EventToolUpdate EventType = "tool_update" // 工具执行进度更新 EventToolEnd EventType = "tool_end" // 工具调用结果 EventTurnEnd EventType = "turn_end" // 助手消息和工具结果处理完成 EventTransfer EventType = "transfer" // Agent 转移 EventInterrupted EventType = "interrupted" // HITL 中断(等待用户输入) EventAgentEnd EventType = "agent_end" // Agent 处理完成 EventError EventType = "error" // 错误 )
type ImageURLDetail ¶ added in v1.1.0
type ImageURLDetail = schema.ImageURLDetail
ImageURLDetail 控制图片识别质量。
const ( ImageDetailHigh ImageURLDetail = schema.ImageURLDetailHigh ImageDetailLow ImageURLDetail = schema.ImageURLDetailLow ImageDetailAuto ImageURLDetail = schema.ImageURLDetailAuto )
type InterruptPoint ¶
InterruptPoint HITL 中断点信息
type Message ¶
type Message struct {
Role RoleType
Agent string // 产生消息的 Agent 名称
Content string
ReasoningContent string // 推理模型的思考内容(如 DeepSeek-R1、o1),非推理模型为空
}
Message 消息记录
type MockChatModel ¶ added in v1.2.0
type MockChatModel struct {
// contains filtered or unexported fields
}
MockChatModel 按顺序返回预设响应,并记录每次调用。
func NewMockChatModel ¶ added in v1.2.0
func NewMockChatModel(responses ...MockModelResponse) *MockChatModel
NewMockChatModel 创建按顺序返回响应的模型。
func (*MockChatModel) AddResponses ¶ added in v1.2.0
func (m *MockChatModel) AddResponses(responses ...MockModelResponse)
AddResponses 追加后续响应。
func (*MockChatModel) Calls ¶ added in v1.2.0
func (m *MockChatModel) Calls() []MockModelCall
Calls 返回模型调用记录。
func (*MockChatModel) Generate ¶ added in v1.2.0
func (m *MockChatModel) Generate(ctx context.Context, input []*schema.Message, opts ...model.Option) (*schema.Message, error)
Generate 返回下一条完整响应。
func (*MockChatModel) LastCall ¶ added in v1.2.0
func (m *MockChatModel) LastCall() (MockModelCall, bool)
LastCall 返回最近一次模型调用记录。
func (*MockChatModel) RemainingResponses ¶ added in v1.2.0
func (m *MockChatModel) RemainingResponses() int
RemainingResponses 返回还未消费的响应数量。
type MockModelCall ¶ added in v1.2.0
MockModelCall 记录一次模型调用。
type MockModelExpectation ¶ added in v1.2.0
type MockModelExpectation func(call MockModelCall) error
MockModelExpectation 校验一次模型调用。
func MockExpectToolResults ¶ added in v1.2.0
func MockExpectToolResults(callIDs ...string) MockModelExpectation
MockExpectToolResults 校验输入中存在指定工具结果。
type MockModelResponse ¶ added in v1.2.0
type MockModelResponse struct {
Message *schema.Message
Chunks []*schema.Message
Err error
StreamErr error
Expect MockModelExpectation
Build func(call MockModelCall) MockModelResponse
}
MockModelResponse 描述一次模型返回。
func MockExpect ¶ added in v1.2.0
func MockExpect(response MockModelResponse, expect MockModelExpectation) MockModelResponse
MockExpect 为响应追加调用校验。
func MockModelAfterToolResult ¶ added in v1.2.0
func MockModelAfterToolResult(callID string, response MockModelResponse) MockModelResponse
MockModelAfterToolResult 要求输入中包含指定工具结果后再返回响应。
func MockModelAfterToolResults ¶ added in v1.2.0
func MockModelAfterToolResults(response MockModelResponse, callIDs ...string) MockModelResponse
MockModelAfterToolResults 要求输入中包含指定工具结果后再返回响应。
func MockModelCalls ¶ added in v1.2.0
func MockModelCalls(invocations ...MockToolCallProvider) MockModelResponse
MockModelCalls 创建一组工具调用回复。
func MockModelCallsAfter ¶ added in v1.2.0
func MockModelCallsAfter(wait MockToolCallProvider, calls ...MockToolCallProvider) MockModelResponse
MockModelCallsAfter 在指定工具结果返回后创建下一组工具调用回复。
func MockModelCallsAfterAll ¶ added in v1.2.0
func MockModelCallsAfterAll(wait []MockToolCallProvider, calls ...MockToolCallProvider) MockModelResponse
MockModelCallsAfterAll 在指定工具结果全部返回后创建下一组工具调用回复。
func MockModelError ¶ added in v1.2.0
func MockModelError(err error) MockModelResponse
MockModelError 创建调用错误。
func MockModelMessage ¶ added in v1.2.0
func MockModelMessage(message *schema.Message) MockModelResponse
MockModelMessage 创建完整消息回复。
func MockModelReasoning ¶ added in v1.2.0
func MockModelReasoning(content, reasoning string) MockModelResponse
MockModelReasoning 创建带推理内容的文本回复。
func MockModelRespondsAfter ¶ added in v1.2.0
func MockModelRespondsAfter[D any](call *MockToolInvocation[D], reply func(D) MockModelResponse) MockModelResponse
MockModelRespondsAfter 根据工具结果生成回复。
func MockModelRespondsAfterToolResult ¶ added in v1.2.0
func MockModelRespondsAfterToolResult(callID string, reply func(result string) MockModelResponse) MockModelResponse
MockModelRespondsAfterToolResult 根据工具结果生成响应。
func MockModelRespondsAfterToolResultAs ¶ added in v1.2.0
func MockModelRespondsAfterToolResultAs[D any](callID string, reply func(D) MockModelResponse) MockModelResponse
MockModelRespondsAfterToolResultAs 根据工具结果生成回复。
func MockModelStream ¶ added in v1.2.0
func MockModelStream(chunks ...string) MockModelResponse
MockModelStream 创建文本分片回复。
func MockModelStreamError ¶ added in v1.2.0
func MockModelStreamError(err error, chunks ...string) MockModelResponse
MockModelStreamError 创建分片后的流式错误。
func MockModelText ¶ added in v1.2.0
func MockModelText(content string) MockModelResponse
MockModelText 创建文本回复。
func MockModelTextAfter ¶ added in v1.2.0
func MockModelTextAfter[D any](call *MockToolInvocation[D], reply func(D) string) MockModelResponse
MockModelTextAfter 根据工具结果生成文本回复。
func MockModelTextAfterAll ¶ added in v1.2.0
func MockModelTextAfterAll(content string, calls ...MockToolCallProvider) MockModelResponse
MockModelTextAfterAll 在指定工具结果全部返回后创建文本回复。
func MockModelTextAfterToolResult ¶ added in v1.2.0
func MockModelTextAfterToolResult(callID string) MockModelResponse
MockModelTextAfterToolResult 使用工具结果作为文本回复。
func MockModelToolCall ¶ added in v1.2.0
func MockModelToolCall(name, arguments string) MockModelResponse
MockModelToolCall 创建单个工具调用回复。
func MockModelToolCallWithID ¶ added in v1.2.0
func MockModelToolCallWithID(id, name, arguments string) MockModelResponse
MockModelToolCallWithID 创建指定调用 ID 的工具调用回复。
func MockModelToolCalls ¶ added in v1.2.0
func MockModelToolCalls(calls ...schema.ToolCall) MockModelResponse
MockModelToolCalls 创建多个工具调用回复。
type MockTool ¶ added in v1.2.0
MockTool 描述一个可在测试中执行的工具。
func MustMockTool ¶ added in v1.2.0
func MustMockTool[T, D any](name, desc string, fn func(context.Context, T) (D, error)) *MockTool[T, D]
MustMockTool 创建可复用的工具。
func NewMockTool ¶ added in v1.2.0
func NewMockTool[T, D any](name, desc string, fn func(context.Context, T) (D, error)) (*MockTool[T, D], error)
NewMockTool 创建可复用的工具。
func (*MockTool[T, D]) Call ¶ added in v1.2.0
func (f *MockTool[T, D]) Call(callID string, input T) *MockToolInvocation[D]
Call 创建一次工具调用。
func (*MockTool[T, D]) Invocation ¶ added in v1.2.0
func (f *MockTool[T, D]) Invocation(callID string, input T) (*MockToolInvocation[D], error)
Invocation 创建一次工具调用。
func (*MockTool[T, D]) MustInvocation ¶ added in v1.2.0
func (f *MockTool[T, D]) MustInvocation(callID string, input T) *MockToolInvocation[D]
MustInvocation 创建一次工具调用。
type MockToolCallProvider ¶ added in v1.2.0
MockToolCallProvider 提供模型发起的工具调用。
type MockToolInvocation ¶ added in v1.2.0
MockToolInvocation 描述一次由模型发起并由工具执行的调用。
func MockToolCallFunc ¶ added in v1.2.0
func MockToolCallFunc[T, D any](name, desc string, input T, fn func(context.Context, T) (D, error)) (*MockToolInvocation[D], error)
MockToolCallFunc 创建带实际执行函数的工具调用。
func MustMockToolCallFunc ¶ added in v1.2.0
func MustMockToolCallFunc[T, D any](name, desc string, input T, fn func(context.Context, T) (D, error)) *MockToolInvocation[D]
MustMockToolCallFunc 创建带实际执行函数的工具调用。
func (*MockToolInvocation[D]) MockTool ¶ added in v1.2.0
func (i *MockToolInvocation[D]) MockTool() Tool
MockTool 返回工具调用对应的工具。
func (*MockToolInvocation[D]) MockToolCall ¶ added in v1.2.0
func (i *MockToolInvocation[D]) MockToolCall() schema.ToolCall
MockToolCall 返回模型发起的工具调用。
type MockToolProvider ¶ added in v1.2.0
type MockToolProvider interface {
MockTool() Tool
}
MockToolProvider 提供可加入 Agent 配置的工具。
type ModelFailoverConfig ¶ added in v1.2.0
type ModelFailoverConfig = adk.ModelFailoverConfig[*schema.Message]
ModelFailoverConfig 配置 ChatModel 失败转移策略。
type ModelRetryConfig ¶ added in v1.2.0
type ModelRetryConfig = adk.ModelRetryConfig
ModelRetryConfig 配置 ChatModel 调用重试策略。
type ResponseMeta ¶
type ResponseMeta = schema.ResponseMeta
ResponseMeta 聊天响应元数据,包含 token 用量、完成原因、log probabilities 等。 通常附着于 EventMessageEnd 事件,在流式场景下来自最后一个 chunk。