Documentation
¶
Index ¶
- func StreamCollect(stream iter.Seq2[*session.Event, error]) ([]*session.Event, error)
- func StreamFilter(stream iter.Seq2[*session.Event, error], predicate func(*session.Event) bool) iter.Seq2[*session.Event, error]
- func StreamFirst(stream iter.Seq2[*session.Event, error]) (*session.Event, error)
- func StreamLast(stream iter.Seq2[*session.Event, error]) (*session.Event, error)
- type Agent
- func (a *Agent) Chat(ctx context.Context, text string) (*types.CompleteResult, error)
- func (a *Agent) Close() error
- func (a *Agent) ID() string
- func (a *Agent) Send(ctx context.Context, text string) error
- func (a *Agent) Status() *types.AgentStatus
- func (a *Agent) Stream(ctx context.Context, message string, opts ...Option) iter.Seq2[*session.Event, error]
- func (a *Agent) Subscribe(channels []types.AgentChannel, opts *types.SubscribeOptions) <-chan types.AgentEventEnvelope
- func (a *Agent) Unsubscribe(ch <-chan types.AgentEventEnvelope)
- type Dependencies
- type Option
- type StreamingAgent
- type TemplateNotFoundError
- type TemplateRegistry
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func StreamCollect ¶
StreamCollect 辅助函数 - 收集所有事件 用于向后兼容,将流式接口转换为批量结果
使用示例:
events, err := agent.StreamCollect(agent.Stream(ctx, "Hello"))
if err != nil {
return err
}
for _, event := range events {
fmt.Println(event)
}
func StreamFilter ¶
func StreamFilter(stream iter.Seq2[*session.Event, error], predicate func(*session.Event) bool) iter.Seq2[*session.Event, error]
StreamFilter 辅助函数 - 过滤事件
func StreamFirst ¶
StreamFirst 辅助函数 - 获取第一个事件
Types ¶
type Agent ¶
type Agent struct {
// contains filtered or unexported fields
}
Agent AI代理
func Create ¶
func Create(ctx context.Context, config *types.AgentConfig, deps *Dependencies) (*Agent, error)
Create 创建新Agent
func (*Agent) Stream ¶
func (a *Agent) Stream(ctx context.Context, message string, opts ...Option) iter.Seq2[*session.Event, error]
Stream 实现流式执行接口 返回 Go 1.23 的 iter.Seq2 迭代器,支持: - 流式生成事件 - 客户端控制的取消(yield 返回 false) - 与 LLM 流式 API 无缝集成
func (*Agent) Subscribe ¶
func (a *Agent) Subscribe(channels []types.AgentChannel, opts *types.SubscribeOptions) <-chan types.AgentEventEnvelope
Subscribe 订阅事件
func (*Agent) Unsubscribe ¶
func (a *Agent) Unsubscribe(ch <-chan types.AgentEventEnvelope)
Unsubscribe 取消事件订阅
type Dependencies ¶
type Dependencies struct {
Store store.Store
SandboxFactory *sandbox.Factory
ToolRegistry *tools.Registry
ProviderFactory provider.Factory
// Router 为可选依赖,如果为 nil,则沿用旧的静态 ModelConfig 行为。
Router router.Router
TemplateRegistry *TemplateRegistry
}
Dependencies Agent依赖
type StreamingAgent ¶
type StreamingAgent interface {
// Stream 流式执行,返回事件迭代器
// 相比 Chat 方法的优势:
// 1. 内存高效 - 按需生成事件,无需完整加载到内存
// 2. 背压控制 - 客户端可通过 yield 返回 false 中断执行
// 3. 实时响应 - 可以立即处理每个事件,而不是等待所有事件
Stream(ctx context.Context, message string, opts ...Option) iter.Seq2[*session.Event, error]
}
StreamingAgent 扩展接口 - 支持流式执行 参考 Google ADK-Go 的 Agent.Run() iter.Seq2 设计
使用示例:
for event, err := range agent.Stream(ctx, "Hello") {
if err != nil {
log.Printf("Error: %v", err)
break
}
fmt.Printf("Event: %+v\n", event)
}
type TemplateNotFoundError ¶
type TemplateNotFoundError struct {
ID string
}
TemplateNotFoundError 模板未找到错误
func (*TemplateNotFoundError) Error ¶
func (e *TemplateNotFoundError) Error() string
type TemplateRegistry ¶
type TemplateRegistry struct {
// contains filtered or unexported fields
}
TemplateRegistry 模板注册表
func (*TemplateRegistry) Get ¶
func (tr *TemplateRegistry) Get(id string) (*types.AgentTemplateDefinition, error)
Get 获取模板
func (*TemplateRegistry) List ¶
func (tr *TemplateRegistry) List() []*types.AgentTemplateDefinition
List 列出所有模板
func (*TemplateRegistry) Register ¶
func (tr *TemplateRegistry) Register(template *types.AgentTemplateDefinition)
Register 注册模板
Click to show internal directories.
Click to hide internal directories.