agent

package
v0.12.1 Latest Latest
Warning

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

Go to latest
Published: Nov 20, 2025 License: MIT Imports: 22 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func StreamCollect

func StreamCollect(stream iter.Seq2[*session.Event, error]) ([]*session.Event, error)

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

func StreamFirst(stream iter.Seq2[*session.Event, error]) (*session.Event, error)

StreamFirst 辅助函数 - 获取第一个事件

func StreamLast

func StreamLast(stream iter.Seq2[*session.Event, error]) (*session.Event, error)

StreamLast 辅助函数 - 获取最后一个事件

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) Chat

func (a *Agent) Chat(ctx context.Context, text string) (*types.CompleteResult, error)

Chat 同步对话(阻塞式)

func (*Agent) Close

func (a *Agent) Close() error

Close 关闭Agent

func (*Agent) ID

func (a *Agent) ID() string

ID 返回AgentID

func (*Agent) Send

func (a *Agent) Send(ctx context.Context, text string) error

Send 发送消息

func (*Agent) Status

func (a *Agent) Status() *types.AgentStatus

Status 获取状态

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 Option

type Option func(*streamConfig)

Option 流式执行选项

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 NewTemplateRegistry

func NewTemplateRegistry() *TemplateRegistry

NewTemplateRegistry 创建模板注册表

func (*TemplateRegistry) Get

Get 获取模板

func (*TemplateRegistry) List

List 列出所有模板

func (*TemplateRegistry) Register

func (tr *TemplateRegistry) Register(template *types.AgentTemplateDefinition)

Register 注册模板

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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