AI 集成
Doggy 通过 Symfony AI Bundle 深度集成 AI 能力,支持多模型提供商和统一接口调用。
概述
AI 系统核心位于 src/Service/AI/:
src/Service/AI/
├── AiManager.php # AI 管理器(统一调用接口)
├── AgentManager.php # Agent 管理器(Facade)
├── Agent/
│ ├── CodingAgent.php # 编码助手
│ ├── NaturalLanguageQueryAgent.php # 自然语言查询
│ ├── VisionAgent.php # 视觉识别
│ └── PasswordPolicyAgent.php # 密码策略 Agent
└── Provider/
└── AbstractOpenAiProvider.php # OpenAI API 抽象模型提供商
AiManager 支持两个提供商,通过 AI_PROVIDER 环境变量切换:
| 提供商 | 平台服务 | 配置 |
|---|---|---|
| 阿里百炼 | ai.platform.generic.aliyun | ALIYUN_MODEL_ID |
| LM Studio | ai.platform.generic.lmstudio | LM_STUDIO_MODEL_ID |
yaml
# config/packages/ai.yaml
ai:
providers:
alibaba:
type: alibaba_bailian
api_key: '%env(ALIBABA_AI_KEY)%'配置
bash
# .env
AI_PROVIDER=aliyun
ALIYUN_MODEL_ID=qwq-32b
ALIYUN_FAST_MODEL_ID=qwen-plus
LM_STUDIO_MODEL_ID=deepseek/deepseek-r1-0528-qwen3-8b调用 AI
php
use App\Service\AI\AiManager;
class SomeService
{
public function __construct(private AiManager $aiManager) {}
public function ask(): string
{
return $this->aiManager->chat([
['role' => 'system', 'content' => 'You are a helpful assistant.'],
['role' => 'user', 'content' => 'Hello!'],
], [
'temperature' => 0.7,
'model' => 'qwen-plus', // 可选覆盖默认模型
]);
}
}AiManager 自动处理:
- 提供商选择(根据
AI_PROVIDER) - 流式响应(stream 模式,支持 qwq-32b 等推理模型)
- 模型配置合并
快速模型切换
NaturalLanguageQueryAgent 支持配置快速模型用于 NL 查询(避免使用推理模型导致慢响应):
php
if ($this->provider === 'aliyun' && $this->aliyunFastModelId) {
$options['model'] = $this->aliyunFastModelId;
}