为了避免「每个 Provider 都一大段文档」的复杂性, 本页只保留统一的使用方式和推荐组合, 其他细节仅在需要时参考。
无论是 OpenAI、Gemini、DeepSeek 还是其他 Provider, 使用方式都统一为一套 ModelConfig + MultiProviderFactory:
import (
"github.com/astercloud/aster/pkg/provider"
"github.com/astercloud/aster/pkg/types"
)
config := &types.ModelConfig{
Provider: "openai", // 统一使用 Provider 字符串切换
Model: "gpt-4o", // 模型名称
APIKey: "sk-xxx", // API Key
}
factory := provider.NewMultiProviderFactory()
p, err := factory.Create(config)
切换 Provider 只需要改 Provider/Model 字段, 代码基本不变:
config.Provider = "deepseek"
config.Model = "deepseek-chat"
为了让文档更简洁,我们只推荐几种常用组合,其他 Provider 视为兼容选项:
openai + gpt-4odeepseek + deepseek-reasonerglm/doubao/moonshot 之一ollama实现上, MultiProviderFactory 仍然支持更多 Provider, 但你可以只在项目中采用上述 3~4 种, 文档也只重点介绍这些。
如果你需要更细节的多模态/视频/Prompt Cache 说明:
出于简洁考虑,这些细节保存在独立页面中,但默认不在左侧导航中显示:
OpenAI Provider 细节 – docs/content/3.providers/openai.mdGemini Provider 细节 – docs/content/3.providers/gemini.md只有在你真正需要用到对应高级特性时,再去翻这两篇文档即可。
在 Agent 侧,不需要直接操作 Provider,只需在模板或配置中写好 ModelConfig:
templateRegistry.Register(&types.AgentTemplateDefinition{
ID: "assistant",
Model: "gpt-4o",
// 其他字段...
})
// 或在 AgentConfig 中显式指定:
config := &types.AgentConfig{
TemplateID: "assistant",
ModelConfig: &types.ModelConfig{
Provider: "openai",
Model: "gpt-4o",
APIKey: os.Getenv("OPENAI_API_KEY"),
},
}
这样既保留了多 Provider 兼容能力, 又不会在文档上堆积大量重复/冗长的说明。
aster 现在支持配置执行模式,优化不同场景的性能:
config := &types.ModelConfig{
Provider: "deepseek",
Model: "deepseek-chat",
APIKey: os.Getenv("DEEPSEEK_API_KEY"),
ExecutionMode: types.ExecutionModeNonStreaming, // 🆕 执行模式
}
| 模式 | 说明 | 适用场景 | 性能 |
|---|---|---|---|
ExecutionModeStreaming | 流式输出(默认) | 交互式对话、实时反馈 | 用户体验好 |
ExecutionModeNonStreaming | 非流式批处理 | 翻译、批量处理 | 速度快3-5倍 |
ExecutionModeAuto | 自动选择 | 通用场景 | 智能优化 |
// 场景1:交互式对话(默认,实时反馈)
chatConfig := &types.ModelConfig{
Provider: "openai",
Model: "gpt-4o",
ExecutionMode: types.ExecutionModeStreaming,
}
// 场景2:批量翻译(快速模式)
translateConfig := &types.ModelConfig{
Provider: "deepseek",
Model: "deepseek-chat",
ExecutionMode: types.ExecutionModeNonStreaming, // 3-5倍速度提升
}
| 任务 | Streaming | NonStreaming | 性能提升 |
|---|---|---|---|
| 翻译200行文档 | 30秒 | 5-10秒 | 3-5倍 |
| Token消耗 | 标准 | 降低20% | 更省钱 |
| 用户体验 | 实时反馈 | 快速完成 | 各有优势 |