AI 服务商配置
本文介绍如何配置不同的 AI 服务商,用于 AI 内容生成功能。
支持的服务商
CarefreeCMS 支持以下 AI 服务商:
- OpenAI - GPT-3.5/GPT-4 系列模型
- 通义千问(Qwen) - 阿里云大模型
- 文心一言(Wenxin) - 百度大模型
- Gemini - Google 大模型
- Claude - Anthropic 大模型
配置方式
OpenAI
获取 API Key
- 访问 OpenAI Platform
- 注册并登录账号
- 进入 API Keys 页面
- 创建新的 API Key
配置
编辑 .env 文件:
AI_PROVIDER=openai
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_MODEL=gpt-3.5-turbo
参数说明
AI_PROVIDER: 服务商标识OPENAI_API_KEY: API 密钥OPENAI_BASE_URL: API 基础地址(可选,使用代理时修改)OPENAI_MODEL: 默认模型
使用代理
如果需要使用代理服务:
OPENAI_BASE_URL=https://your-proxy-domain.com/v1
通义千问(Qwen)
获取 API Key
- 访问 阿里云百炼平台
- 开通模型服务
- 创建 API Key
配置
AI_PROVIDER=qwen
QWEN_API_KEY=sk-xxxxxxxxxxxxxxxx
QWEN_MODEL=qwen-plus
可用模型
qwen-turbo: 通用模型,速度快qwen-plus: 增强模型,效果更好qwen-max: 旗舰模型,最强性能
文心一言(Wenxin)
获取 API Key
- 访问 百度智能云
- 开通千帆大模型服务
- 创建应用获取 API Key 和 Secret Key
配置
AI_PROVIDER=wenxin
WENXIN_API_KEY=xxxxxxxxxxxxxxxx
WENXIN_SECRET_KEY=xxxxxxxxxxxxxxxx
WENXIN_MODEL=ernie-bot
可用模型
ernie-bot: ERNIE-Boternie-bot-turbo: ERNIE-Bot-turboernie-bot-4: ERNIE-Bot 4.0
Gemini
获取 API Key
- 访问 Google AI Studio
- 创建 API Key
配置
AI_PROVIDER=gemini
GEMINI_API_KEY=xxxxxxxxxxxxxxxx
GEMINI_MODEL=gemini-pro
可用模型
gemini-pro: 文本生成模型gemini-pro-vision: 多模态模型
Claude
获取 API Key
- 访问 Anthropic Console
- 创建 API Key
配置
AI_PROVIDER=claude
CLAUDE_API_KEY=sk-ant-xxxxxxxxxxxxxxxx
CLAUDE_MODEL=claude-3-sonnet-20240229
可用模型
claude-3-opus-20240229: 最强模型claude-3-sonnet-20240229: 平衡模型claude-3-haiku-20240307: 快速模型
多服务商配置
支持配置多个服务商,在使用时选择:
// config/ai.php
return [
'default' => 'openai',
'providers' => [
'openai' => [
'api_key' => env('OPENAI_API_KEY'),
'base_url' => env('OPENAI_BASE_URL', 'https://api.openai.com/v1'),
'model' => env('OPENAI_MODEL', 'gpt-3.5-turbo'),
],
'qwen' => [
'api_key' => env('QWEN_API_KEY'),
'model' => env('QWEN_MODEL', 'qwen-plus'),
],
'wenxin' => [
'api_key' => env('WENXIN_API_KEY'),
'secret_key' => env('WENXIN_SECRET_KEY'),
'model' => env('WENXIN_MODEL', 'ernie-bot'),
],
],
];
使用示例
后台选择服务商
在文章编辑页面:
- 点击 "AI 生成" 按钮
- 选择服务商
- 选择模型
- 输入提示词
- 生成内容
代码调用
use app\service\AIService;
$ai = new AIService('openai');
$content = $ai->generate([
'prompt' => '写一篇关于人工智能的文章',
'max_tokens' => 2000,
]);
切换服务商
// 使用通义千问
$ai = new AIService('qwen');
$content = $ai->generate(['prompt' => '...']);
// 使用文心一言
$ai = new AIService('wenxin');
$content = $ai->generate(['prompt' => '...']);
高级配置
请求参数
$content = $ai->generate([
'prompt' => '提示词',
'max_tokens' => 2000, // 最大生成长度
'temperature' => 0.7, // 创造性(0-1)
'top_p' => 0.9, // 采样阈值
'frequency_penalty' => 0, // 频率惩罚
'presence_penalty' => 0, // 存在惩罚
]);
超时设置
'timeout' => 60, // 请求超时时间(秒)
'retry' => 3, // 失败重试次数
日志记录
启用 AI 请求日志:
'log_enabled' => true,
'log_level' => 'info',
费用管理
监控用量
后台 系统管理 → AI 用量统计 查看:
- 总请求次数
- Token 使用量
- 预估费用
设置限额
'quota' => [
'daily_requests' => 1000, // 每日请求限制
'monthly_tokens' => 1000000, // 每月 Token 限制
],
费用告警
'alert' => [
'enabled' => true,
'threshold' => 100, // 告警阈值(元)
'emails' => ['admin@example.com'],
],
最佳实践
安全建议
- 不要在代码中硬编码 API Key
- 定期轮换 API Key
- 使用环境变量管理密钥
- 限制 API Key 权限
性能优化
- 合理设置
max_tokens避免浪费 - 使用缓存减少重复请求
- 选择合适的模型平衡性能和成本
容错处理
try {
$content = $ai->generate(['prompt' => '...']);
} catch (AIException $e) {
Log::error('AI 生成失败', [
'provider' => 'openai',
'error' => $e->getMessage(),
]);
// 降级处理
return '内容生成失败,请稍后重试';
}
故障排查
API Key 无效
检查:
- Key 是否正确复制
- Key 是否已激活
- 账户是否有余额
请求超时
解决方案:
- 增加超时时间
- 使用更稳定的网络
- 切换到其他服务商
配额超限
解决方案:
- 升级服务套餐
- 优化提示词减少 Token 消耗
- 启用请求限流
