Agent 示例

基础对话

创建 Agent 并进行简单对话

基础对话示例

最简单的 Agent 对话示例,展示如何快速开始。

完整代码

package main

import (
    "context"
    "fmt"
    "log"
    "os"

    "github.com/astercloud/aster/pkg/agent"
    "github.com/astercloud/aster/pkg/provider"
    "github.com/astercloud/aster/pkg/sandbox"
    "github.com/astercloud/aster/pkg/store"
    "github.com/astercloud/aster/pkg/tools"
    "github.com/astercloud/aster/pkg/types"
)

func main() {
    ctx := context.Background()

    // 1. 创建依赖
    deps := &agent.Dependencies{
        ToolRegistry:     tools.NewRegistry(),
        SandboxFactory:   sandbox.NewFactory(),
        ProviderFactory:  provider.NewMultiProviderFactory(),
        Store:            store.NewMemoryStore(),
        TemplateRegistry: agent.NewTemplateRegistry(),
    }

    // 2. 创建 Agent
    ag, err := agent.Create(ctx, &types.AgentConfig{
        TemplateID: "assistant",
        ModelConfig: &types.ModelConfig{
            Provider: "anthropic",
            Model:    "claude-sonnet-4-5",
            APIKey:   os.Getenv("ANTHROPIC_API_KEY"),
        },
    }, deps)
    if err != nil {
        log.Fatal(err)
    }
    defer ag.Close()

    // 3. 发送消息
    result, err := ag.Chat(ctx, "用一句话介绍 Go 语言的特点")
    if err != nil {
        log.Fatal(err)
    }

    // 4. 打印响应
    fmt.Printf("回复: %s\n", result.Message.Content)
    fmt.Printf("Token 使用: %d\n", result.Usage.TotalTokens)
}

运行示例

# 设置 API Key
export ANTHROPIC_API_KEY="sk-ant-xxx"

# 运行
go run main.go

输出示例

回复: Go 语言是一种简洁高效的编译型语言,具有强大的并发支持、内置垃圾回收和快速编译速度。
Token 使用: 156

关键点

  1. 依赖注入:创建所有必需的依赖组件
  2. 配置模型:指定 Provider 和模型名称
  3. 同步对话:使用 Chat() 方法等待完整响应
  4. 资源管理:使用 defer 确保资源释放

切换 Provider

只需修改配置即可切换到其他 Provider:

// OpenAI
ModelConfig: &types.ModelConfig{
    Provider: "openai",
    Model:    "gpt-4o",
    APIKey:   os.Getenv("OPENAI_API_KEY"),
}

// DeepSeek
ModelConfig: &types.ModelConfig{
    Provider: "deepseek",
    Model:    "deepseek-chat",
    APIKey:   os.Getenv("DEEPSEEK_API_KEY"),
}

相关资源