Skip to content

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.aliyunALIYUN_MODEL_ID
LM Studioai.platform.generic.lmstudioLM_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;
}

基于 MIT 协议开源 | Copyright © 2026 Doggy