Files
chat/backend/database/migrate_add_penalty_fields.php
2026-07-22 10:18:59 +08:00

37 lines
1.2 KiB
PHP

<?php
/**
* 迁移脚本:为 ai_models 表添加 frequency_penalty / presence_penalty 字段(已存在则跳过)
* 用法: php database/migrate_add_penalty_fields.php
*/
$host = '127.0.0.1';
$user = 'root';
$pass = 'root';
$port = 3306;
$dbName = 'ai_chat';
try {
$pdo = new PDO("mysql:host={$host};port={$port};dbname={$dbName};charset=utf8mb4", $user, $pass, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
]);
$columns = [
'frequency_penalty' => "ALTER TABLE ai_models ADD COLUMN frequency_penalty DECIMAL(3,2) DEFAULT 0.00 COMMENT '频率惩罚,抑制模型重复输出' AFTER support_image",
'presence_penalty' => "ALTER TABLE ai_models ADD COLUMN presence_penalty DECIMAL(3,2) DEFAULT 0.00 COMMENT '存在惩罚,抑制模型重复话题' AFTER frequency_penalty",
];
foreach ($columns as $name => $sql) {
$exists = $pdo->query("SHOW COLUMNS FROM ai_models LIKE '{$name}'")->fetch();
if ($exists) {
echo "{$name} 字段已存在,跳过。\n";
continue;
}
$pdo->exec($sql);
echo "已添加 {$name} 字段。\n";
}
} catch (PDOException $e) {
echo "Error: " . $e->getMessage() . "\n";
exit(1);
}