## 新功能 - 提升为一级菜单"心思",使用心形图标 - 统一 API Key 管理界面,所有服务在同一页面管理 - 优化服务显示名称(ChatGPT、Claude、Gemini 等) ## Bug 修复 - 修复高级设置按钮无响应问题 - 修复 HTML 验证错误(label for 属性) - 修复样式丢失问题(hook suffix 更新) ## 技术改进 - 移除调试用 console.log 语句 - 为每个服务添加 display_name 字段 - 更新 hook suffix 从 settings_page_wpmind 到 toplevel_page_wpmind Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
65 lines
1.6 KiB
PHP
65 lines
1.6 KiB
PHP
<?php
|
||
/**
|
||
* OpenAI 兼容文本生成模型抽象基类
|
||
*
|
||
* @package WPMind
|
||
* @since 1.3.0
|
||
*/
|
||
|
||
declare(strict_types=1);
|
||
|
||
namespace WPMind\Providers;
|
||
|
||
use WordPress\AiClient\Providers\Http\DTO\Request;
|
||
use WordPress\AiClient\Providers\Http\Enums\HttpMethodEnum;
|
||
use WordPress\AiClient\Providers\OpenAiCompatibleImplementation\AbstractOpenAiCompatibleTextGenerationModel as BaseModel;
|
||
|
||
/**
|
||
* OpenAI 兼容文本生成模型抽象基类
|
||
*
|
||
* @since 1.3.0
|
||
*/
|
||
abstract class AbstractOpenAiCompatibleTextGenerationModel extends BaseModel
|
||
{
|
||
/**
|
||
* 获取 Provider 类名
|
||
*
|
||
* @return class-string<AbstractOpenAiCompatibleProvider>
|
||
*/
|
||
abstract protected static function providerClass(): string;
|
||
|
||
/**
|
||
* {@inheritDoc}
|
||
*/
|
||
protected function createRequest(
|
||
HttpMethodEnum $method,
|
||
string $path,
|
||
array $headers = [],
|
||
$data = null
|
||
): Request {
|
||
$providerClass = static::providerClass();
|
||
return new Request(
|
||
$method,
|
||
$providerClass::url($path),
|
||
$headers,
|
||
$data,
|
||
$this->getRequestOptions()
|
||
);
|
||
}
|
||
|
||
/**
|
||
* {@inheritDoc}
|
||
*
|
||
* 重写以强制 n=1,因为大多数国内 AI 服务不支持多候选
|
||
*/
|
||
protected function prepareGenerateTextParams(array $prompt): array
|
||
{
|
||
$params = parent::prepareGenerateTextParams($prompt);
|
||
|
||
// 强制 n=1,忽略 candidateCount 配置
|
||
// 大多数国内 AI 服务(DeepSeek、智谱等)只支持 n=1
|
||
$params['n'] = 1;
|
||
|
||
return $params;
|
||
}
|
||
}
|