Bagisto怎么配置阿里千问,自动生成描述文案

Bagisto 通义千问模型配置与错误解决方案

一、申请通义千问API密钥

准备工作

  • 阿里云账号(需完成实名认证)

  • 浏览器访问阿里云控制台

申请步骤

  1. 登录阿里云账号
  • 访问 阿里云官网

  • 登录您的账号

  1. 开通通义千问服务
  • 进入 DashScope模型服务灵积控制台

  • 点击开通服务(部分服务可能需要完成实名认证)

  1. 创建API密钥
  • 进入API-KEY管理页面

  • 点击「创建API密钥」按钮

  • 保存生成的API密钥(请妥善保管,密钥仅显示一次)

  1. 了解免费额度
  • 通义千问服务提供约100万tokens的免费额度

  • 超出免费额度后将按实际使用量计费

二、Bagisto后台配置

1. 访问Magic AI设置

  • 登录Bagisto管理后台

  • 导航至「系统设置」→「配置」→「Magic AI」

2. 基础配置

3. 模型选择

  • 在相关功能配置中选择Qwen系列模型

  • 推荐选项:qwen2.5-14b(对应qwen-max)

4. 启用功能模块

  • 根据需要启用内容生成、评论翻译等功能

  • 配置相应的提示词模板

三、解决常见错误

错误1: 401 Unauthorized (No API-key provided) 错误原因

API请求中缺少认证信息,通义千问API要求在请求头中提供API密钥。

解决方案

修改 `Ollama.php` 文件,添加API密钥认证:

复制代码
// 获取API密钥
$apiKey = core()->getConfigData('general.magic_ai.settings.api_key');

// 在请求头中添加Authorization
'headers' => [
    'Accept' => 'application/json',
    'Authorization' => 'Bearer ' . $apiKey,
]

错误2: 400 Bad Request (Model not exist) 错误原因

模型名称与通义千问API要求不匹配,请求格式不符合API规范。

解决方案

修改 `Ollama.php` 文件,添加通义千问模型特定处理:

复制代码
// 检查是否为通义千问模型
$isQwenModel = strpos(strtolower($this->model), 'qwen') !== false;

// 通义千问模型的特殊处理
if ($isQwenModel && strpos($endpoint, 'dashscope.aliyuncs.com') !== false) {
    // 映射正确的千问模型名称
    $modelMap = [
        'qwen2.5-0.5b' => 'qwen-turbo',
        'qwen2.5-1.5b' => 'qwen-turbo',
        'qwen2.5-3b' => 'qwen-plus',
        'qwen2.5-7b' => 'qwen-plus',
        'qwen2.5-14b' => 'qwen-max',
        'qwen-turbo' => 'qwen-turbo',
        'qwen-plus' => 'qwen-plus',
        'qwen-max' => 'qwen-max',
    ];
    
    $qwenModel = $modelMap[strtolower($this->model)] ?? 'qwen-turbo';
    
    // 通义千问API的请求格式
    $result = $httpClient->request('POST', $endpoint, [
        'headers' => [
            'Accept' => 'application/json',
            'Authorization' => 'Bearer ' . $apiKey,
            'Content-Type' => 'application/json',
        ],
        'json' => [
            'model' => $qwenModel,
            'input' => [
                'messages' => [
                    [
                        'role' => 'user',
                        'content' => $this->prompt
                    ]
                ]
            ],
            'parameters' => [
                'temperature' => $this->temperature,
                'top_p' => 0.95,
            ]
        ],
    ]);
    
    $resultData = json_decode($result->getBody()->getContents(), true);
    return $resultData['output']['text'] ?? $resultData['output']['choices'][0]['message']['content'] ?? 'No response';
}

四、完整代码修改

修改文件

  • `Ollama.php`

完整修改后代码

复制代码
<?php

namespace Webkul\MagicAI\Services;

use GuzzleHttp\Client;

class Ollama
{
    /**
     * New service instance.
     */
    public function __construct(
        protected string $model,
        protected string $prompt,
        protected float $temperature,
        protected bool $stream,
        protected bool $raw,
    ) {}

    /**
     * Set LLM prompt text.
     */
    public function ask(): string
    {
        $httpClient = new Client;
        $endpoint = core()->getConfigData('general.magic_ai.settings.api_domain');
        $apiKey = core()->getConfigData('general.magic_ai.settings.api_key');
        
        // 检查是否为通义千问模型
        $isQwenModel = strpos(strtolower($this->model), 'qwen') !== false;
        
        // 通义千问模型的特殊处理
        if ($isQwenModel && strpos($endpoint, 'dashscope.aliyuncs.com') !== false) {
            // 映射正确的千问模型名称
            $modelMap = [
                'qwen2.5-0.5b' => 'qwen-turbo',
                'qwen2.5-1.5b' => 'qwen-turbo',
                'qwen2.5-3b' => 'qwen-plus',
                'qwen2.5-7b' => 'qwen-plus',
                'qwen2.5-14b' => 'qwen-max',
                'qwen-turbo' => 'qwen-turbo',
                'qwen-plus' => 'qwen-plus',
                'qwen-max' => 'qwen-max',
            ];
            
            $qwenModel = $modelMap[strtolower($this->model)] ?? 'qwen-turbo';
            
            // 通义千问API的请求格式
            $result = $httpClient->request('POST', $endpoint, [
                'headers' => [
                    'Accept' => 'application/json',
                    'Authorization' => 'Bearer ' . $apiKey,
                    'Content-Type' => 'application/json',
                ],
                'json' => [
                    'model' => $qwenModel,
                    'input' => [
                        'messages' => [
                            [
                                'role' => 'user',
                                'content' => $this->prompt
                            ]
                        ]
                    ],
                    'parameters' => [
                        'temperature' => $this->temperature,
                        'top_p' => 0.95,
                    ]
                ],
            ]);
            
            $resultData = json_decode($result->getBody()->getContents(), true);
            return $resultData['output']['text'] ?? $resultData['output']['choices'][0]['message']['content'] ?? 'No response';
        }
        
        // 原始Ollama处理逻辑
        $result = $httpClient->request('POST', $endpoint, [
            'headers' => [
                'Accept' => 'application/json',
                'Authorization' => 'Bearer ' . $apiKey,
            ],
            'json' => [
                'model' => $this->model,
                'prompt' => $this->prompt,
                'raw' => $this->raw,
                'stream' => $this->stream,
            ],
        ]);

        $result = json_decode($result->getBody()->getContents(), true);
        return $result['response'] ?? 'No response';
    }
}

五、使用说明

  1. 配置验证
  • 完成上述配置后,可通过生成产品描述等功能测试API连接

  • 检查是否成功获取AI生成的内容

  1. 注意事项
  • 确保API密钥安全,不要在前端代码中暴露

  • 合理设置API请求频率,避免触发限流

  • 监控API使用量,及时了解计费情况

  1. 故障排除
  • 如果遇到其他错误,建议检查网络连接和API密钥有效性

  • 查看阿里云控制台的API调用日志获取详细错误信息

通过以上配置和修改,Bagisto系统将能够成功集成通义千问模型,实现AI内容生成、评论翻译等功能。

相关推荐
无名修道院9 小时前
DVWA 靶场搭建:Windows11(phpstudy 搭建)(步骤 + 截图 + 常见问题)
数据库·网络安全·渗透测试·靶场·php·dvwa·phpstudy
爱倒腾的老唐14 小时前
00、Altium Designer 23 使用问题记录
笔记·php
catchadmin15 小时前
PHP 8.5 垃圾回收改进
php
云和数据.ChenGuang19 小时前
`post_max_size`、`max_execution_time`、`max_input_time` 是 **PHP 核心配置参数**
开发语言·mysql·php·zabbix·mariadb
Evan芙20 小时前
php多版本编译安装
开发语言·php
JaguarJack20 小时前
PHP 8.6 即将支持部分函数应用
后端·php
云和数据.ChenGuang1 天前
PHP-FPM返回的File not found.”的本质
开发语言·php·运维工程师·运维技术
惜分飞1 天前
sql server 事务日志备份异常恢复案例---惜分飞
前端·数据库·php
qqssss121dfd1 天前
计算机网络(第8版,谢希仁)第三章习题解答
网络·计算机网络·php