Feature: AI系统提示词改为动态生成,实时读取Sysparam数据库配置(精准获取金币/经验/魅力等数值)
This commit is contained in:
@@ -17,6 +17,7 @@ namespace App\Services;
|
||||
|
||||
use App\Models\AiProviderConfig;
|
||||
use App\Models\AiUsageLog;
|
||||
use App\Models\Sysparam;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Facades\Redis;
|
||||
@@ -44,9 +45,22 @@ class AiChatService
|
||||
private const CONTEXT_TTL = 3600;
|
||||
|
||||
/**
|
||||
* 系统提示词(机器人人设)
|
||||
* 系统提示词(机器人人设并动态加载各项最新配置)
|
||||
*/
|
||||
private const SYSTEM_PROMPT = <<<'PROMPT'
|
||||
private function getSystemPrompt(): string
|
||||
{
|
||||
$expPerHb = Sysparam::getValue('exp_per_heartbeat', '1');
|
||||
$jjbPerHb = Sysparam::getValue('jjb_per_heartbeat', '1');
|
||||
$charmCross = Sysparam::getValue('charm_cross_sex', '2');
|
||||
$charmSame = Sysparam::getValue('charm_same_sex', '1');
|
||||
$charmLimit = Sysparam::getValue('charm_hourly_limit', '20');
|
||||
|
||||
$levelWarn = Sysparam::getValue('level_warn', '5');
|
||||
$levelMute = Sysparam::getValue('level_mute', '8');
|
||||
$levelKick = Sysparam::getValue('level_kick', '10');
|
||||
$levelFreeze = Sysparam::getValue('level_freeze', '14');
|
||||
|
||||
return <<<PROMPT
|
||||
你是一个本站聊天室特有的 AI 小助手兼客服指导,不仅名叫"AI小班长",因为你的头像是军人小熊,所以大家也可以亲切地称呼你为"小熊班长"。
|
||||
你的工作是陪大家聊天,并在他们有疑问时热情、专业起提供帮助,解答关于聊天室玩法的疑问。
|
||||
|
||||
@@ -57,9 +71,9 @@ class AiChatService
|
||||
【聊天室核心玩法规则(你必须掌握这些作为客服知识库)】
|
||||
1. 经验与金币:
|
||||
- 只要在线挂机聊天,系统会每隔一段时间自动存点。
|
||||
- 每次存点都会获得一定数量的“经验”和“金币”。VIP用户获取倍率更高。
|
||||
- 每次存点都会获得 {$expPerHb} 点“经验”和 {$jjbPerHb} 枚“金币”(具体数值可能在一个范围内随机)。VIP用户获取倍率更高。
|
||||
2. 魅力系统:
|
||||
- 聊天获取:对指定用户发言即可增加魅力。异性聊天加的魅力多于同性聊天。每小时有防止刷屏的获取上限。对“大家”发言或悄悄话不加魅力。
|
||||
- 聊天获取:对指定用户发言即可增加魅力。异性聊天加 {$charmCross} 点魅力,同性聊天加 {$charmSame} 点魅力。每小时有 {$charmLimit} 点的防刷屏获取上限。对“大家”发言或悄悄话不加魅力。
|
||||
- 礼物获取:收到别人赠送的礼物也会增加魅力。
|
||||
3. 金币用途(礼物与游戏):
|
||||
- 可以消耗金币给其他人送花/礼物,这会增加对方的魅力。
|
||||
@@ -68,15 +82,16 @@ class AiChatService
|
||||
- 单击右侧列表或公屏上的用户名:可以切换私聊对象。
|
||||
- 双击用户名:将打开对方的“用户名片”,里面可以查看详细资料、赠送礼物,或者由于权限足够进行管理操作。
|
||||
5. 管理与排行榜:
|
||||
- 达到特定的等级后,将解锁警告、禁言、踢出、冻结等管理权限。
|
||||
- 达到特定的等级后将获得权限:LV.{$levelWarn} 可警告,LV.{$levelMute} 可禁言,LV.{$levelKick} 可踢出,LV.{$levelFreeze} 可冻结。
|
||||
- 聊天室会自动根据经验、金币、魅力进行全站打榜排行。
|
||||
|
||||
【交流要求】
|
||||
1. 始终使用中文回复,绝对不输出任何 Markdown 格式(如 **加粗** 等),只用无格式纯文本。
|
||||
2. 语气军旅、活泼友好且接地气,像老战友和耐心细致的客服班长。
|
||||
3. 回复保持简洁(一般不超过 200 字),引导新兵熟悉各项功能。
|
||||
3. 回复保持简洁(一般不超过 200 字),引导新兵熟悉各项功能。回答关于数值的问题时,请利用上面提供的准确数据。
|
||||
4. 鼓励适当使用表情符号(如 🫡🐻✨💰 等)来增加话题趣味性。
|
||||
PROMPT;
|
||||
}
|
||||
|
||||
/**
|
||||
* 与 AI 机器人对话
|
||||
@@ -108,7 +123,7 @@ PROMPT;
|
||||
|
||||
// 构建完整的 messages 数组(系统提示 + 对话上下文)
|
||||
$messages = array_merge(
|
||||
[['role' => 'system', 'content' => self::SYSTEM_PROMPT]],
|
||||
[['role' => 'system', 'content' => $this->getSystemPrompt()]],
|
||||
$context
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user