最简单的 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
Chat() 方法等待完整响应defer 确保资源释放只需修改配置即可切换到其他 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"),
}