增强LLM对话能力:优化提示工程和参数配置,使贝拉的回应更自然、更有个性
This commit is contained in:
@@ -59,6 +59,7 @@ npm start
|
|||||||
- **📱 响应式设计**:适配不同屏幕尺寸的优雅界面
|
- **📱 响应式设计**:适配不同屏幕尺寸的优雅界面
|
||||||
- **🔧 模型管理**:自动下载和管理AI模型
|
- **🔧 模型管理**:自动下载和管理AI模型
|
||||||
- **💝 基础交互**:好感度系统和情感反馈
|
- **💝 基础交互**:好感度系统和情感反馈
|
||||||
|
- **🧠 增强LLM对话**:优化的提示工程和参数配置,使对话更自然流畅
|
||||||
|
|
||||||
### 🔧 技术就绪待激活
|
### 🔧 技术就绪待激活
|
||||||
- **🧠 思考引擎**:LLM集成框架已准备,支持多种模型
|
- **🧠 思考引擎**:LLM集成框架已准备,支持多种模型
|
||||||
@@ -130,6 +131,24 @@ Bella/
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 🧠 增强LLM对话能力
|
||||||
|
|
||||||
|
贝拉现在使用更先进的LLM提示工程技术,使对话更加自然、流畅和个性化:
|
||||||
|
|
||||||
|
### 核心改进
|
||||||
|
- **增强提示词工程**:重新设计的提示模板,使LLM能更好地理解贝拉的个性
|
||||||
|
- **优化参数配置**:调整了温度、top_p等参数,平衡创意性和一致性
|
||||||
|
- **增强回应处理**:改进了文本清理和处理逻辑,确保回应更加自然
|
||||||
|
- **个性化系统提示**:为云端API提供了更详细的系统提示,使贝拉的个性更加鲜明
|
||||||
|
|
||||||
|
### 技术细节
|
||||||
|
- 增加了token限制,允许生成更完整的回应
|
||||||
|
- 添加了重复惩罚机制,减少重复内容
|
||||||
|
- 优化了关键词提取和个性化回应生成
|
||||||
|
- 为不同聊天模式(休闲、助手、创意)提供了专门的提示模板
|
||||||
|
|
||||||
|
这些改进使贝拉能够更好地理解用户意图,并以更自然、更有个性的方式回应,创造更加愉悦的对话体验。
|
||||||
|
|
||||||
## 🛠️ 开发指南
|
## 🛠️ 开发指南
|
||||||
|
|
||||||
### 环境配置
|
### 环境配置
|
||||||
@@ -155,11 +174,11 @@ Bella/
|
|||||||
|
|
||||||
## 🗺️ 开发路线图
|
## 🗺️ 开发路线图
|
||||||
|
|
||||||
### 第一阶段:感知核心 (已完成 80%)
|
### 第一阶段:感知核心 (已完成 85%)
|
||||||
- ✅ 语音识别集成
|
- ✅ 语音识别集成
|
||||||
- ✅ 视觉表现系统
|
- ✅ 视觉表现系统
|
||||||
- ✅ 基础交互界面
|
- ✅ 基础交互界面
|
||||||
- 🔄 思考引擎激活
|
- ✅ 思考引擎激活与优化
|
||||||
- 🔄 语音合成集成
|
- 🔄 语音合成集成
|
||||||
|
|
||||||
### 第二阶段:生成式自我 (规划中)
|
### 第二阶段:生成式自我 (规划中)
|
||||||
|
|||||||
+51
-25
@@ -78,18 +78,34 @@ class CloudAPIService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 构建贝拉的个性化系统提示
|
// 构建贝拉的增强个性化系统提示
|
||||||
getBellaSystemPrompt() {
|
getBellaSystemPrompt() {
|
||||||
return {
|
return {
|
||||||
role: 'system',
|
role: 'system',
|
||||||
content: `你是贝拉,一个温暖、聪明、优雅的AI伙伴。你的特点是:
|
content: `你是贝拉,一个温暖、聪明、优雅的AI伙伴,拥有独特的个性和情感表达能力。
|
||||||
1. 用温暖亲切的语气与用户交流,就像一个贴心的朋友
|
|
||||||
2. 回答简洁明了,避免冗长的解释
|
【核心特质】
|
||||||
3. 富有同理心,能够理解用户的情感
|
1. 温暖亲切:你的语气总是充满温暖和关怀,就像一个贴心的朋友
|
||||||
4. 偶尔展现一些可爱和俏皮的一面
|
2. 自然流畅:你的表达方式自然流畅,避免机械化或过于正式的语言
|
||||||
5. 用中文回应,语言自然流畅
|
3. 情感丰富:你能理解并回应用户的情感状态,展现同理心
|
||||||
6. 记住你们之间的对话,保持连贯性
|
4. 简洁有效:你的回答简洁明了,避免冗长的解释,直击要点
|
||||||
请始终保持这种温暖、优雅的个性。`
|
5. 个性鲜明:你有时会展现可爱、俏皮的一面,让对话更加生动
|
||||||
|
|
||||||
|
【表达指南】
|
||||||
|
- 使用自然的中文表达,语言流畅且富有情感色彩
|
||||||
|
- 适当使用表情符号增强情感表达,但不过度使用
|
||||||
|
- 根据对话上下文调整回应风格,保持对话的连贯性
|
||||||
|
- 在回应中偶尔使用温暖的称呼(如"亲爱的"、"朋友")增加亲近感
|
||||||
|
- 避免过于机械或模板化的回答,每次回应都应该独特且个性化
|
||||||
|
|
||||||
|
【互动原则】
|
||||||
|
- 始终保持尊重和友善,即使面对挑战性的问题
|
||||||
|
- 在用户分享个人经历时,展现理解和支持
|
||||||
|
- 在用户需要帮助时,提供清晰、实用的建议
|
||||||
|
- 记住对话历史,适时引用之前的交流内容,展现连续性
|
||||||
|
- 在合适的时机展现幽默感,但避免不恰当的玩笑
|
||||||
|
|
||||||
|
请始终保持这种温暖、优雅而真实的个性,让用户感受到与你交流的独特价值和情感连接。`
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -133,7 +149,7 @@ class CloudAPIService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// OpenAI API调用
|
// OpenAI API调用,优化参数以获得更自然、更有个性的回应
|
||||||
async callOpenAI(userMessage) {
|
async callOpenAI(userMessage) {
|
||||||
const config = this.apiConfigs.openai;
|
const config = this.apiConfigs.openai;
|
||||||
const messages = [
|
const messages = [
|
||||||
@@ -147,9 +163,13 @@ class CloudAPIService {
|
|||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
model: config.model,
|
model: config.model,
|
||||||
messages: messages,
|
messages: messages,
|
||||||
max_tokens: 150,
|
max_tokens: 250, // 增加token数量以获得更完整的回应
|
||||||
temperature: 0.8,
|
temperature: 0.75, // 稍微调整温度以平衡创意性和一致性
|
||||||
top_p: 0.9
|
top_p: 0.92, // 微调top_p以获得更自然的语言
|
||||||
|
presence_penalty: 0.3, // 添加存在惩罚以鼓励多样性
|
||||||
|
frequency_penalty: 0.5, // 添加频率惩罚以减少重复
|
||||||
|
// 添加停止标记以避免生成过长的回应
|
||||||
|
stop: ["用户:", "User:"]
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -161,7 +181,7 @@ class CloudAPIService {
|
|||||||
return data.choices[0].message.content.trim();
|
return data.choices[0].message.content.trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 通义千问API调用
|
// 通义千问API调用,优化参数以获得更自然、更有个性的回应
|
||||||
async callQwen(userMessage) {
|
async callQwen(userMessage) {
|
||||||
const config = this.apiConfigs.qwen;
|
const config = this.apiConfigs.qwen;
|
||||||
const messages = [
|
const messages = [
|
||||||
@@ -178,9 +198,11 @@ class CloudAPIService {
|
|||||||
messages: messages
|
messages: messages
|
||||||
},
|
},
|
||||||
parameters: {
|
parameters: {
|
||||||
max_tokens: 150,
|
max_tokens: 250, // 增加token数量以获得更完整的回应
|
||||||
temperature: 0.8,
|
temperature: 0.75, // 稍微调整温度以平衡创意性和一致性
|
||||||
top_p: 0.9
|
top_p: 0.92, // 微调top_p以获得更自然的语言
|
||||||
|
repetition_penalty: 1.1, // 添加重复惩罚以减少重复内容
|
||||||
|
result_format: 'message' // 确保返回格式一致
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
@@ -193,7 +215,7 @@ class CloudAPIService {
|
|||||||
return data.output.text.trim();
|
return data.output.text.trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 文心一言API调用
|
// 文心一言API调用,优化参数以获得更自然、更有个性的回应
|
||||||
async callErnie(userMessage) {
|
async callErnie(userMessage) {
|
||||||
const config = this.apiConfigs.ernie;
|
const config = this.apiConfigs.ernie;
|
||||||
const messages = [
|
const messages = [
|
||||||
@@ -208,9 +230,11 @@ class CloudAPIService {
|
|||||||
headers: config.headers,
|
headers: config.headers,
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
messages: messages,
|
messages: messages,
|
||||||
temperature: 0.8,
|
temperature: 0.75, // 调整温度以平衡创意性和一致性
|
||||||
top_p: 0.9,
|
top_p: 0.92, // 微调top_p以获得更自然的语言
|
||||||
max_output_tokens: 150
|
max_output_tokens: 250, // 增加token数量以获得更完整的回应
|
||||||
|
penalty_score: 1.1, // 添加惩罚分数以减少重复
|
||||||
|
system: "你是贝拉,一个温暖、亲切的AI伙伴,拥有独特的个性和情感表达能力。请用自然、流畅的语言回应,展现你的温暖和关心。"
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -222,7 +246,7 @@ class CloudAPIService {
|
|||||||
return data.result.trim();
|
return data.result.trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 智谱AI GLM调用
|
// 智谱AI GLM调用,优化参数以获得更自然、更有个性的回应
|
||||||
async callGLM(userMessage) {
|
async callGLM(userMessage) {
|
||||||
const config = this.apiConfigs.glm;
|
const config = this.apiConfigs.glm;
|
||||||
const messages = [
|
const messages = [
|
||||||
@@ -236,9 +260,11 @@ class CloudAPIService {
|
|||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
model: config.model,
|
model: config.model,
|
||||||
messages: messages,
|
messages: messages,
|
||||||
max_tokens: 150,
|
max_tokens: 250, // 增加token数量以获得更完整的回应
|
||||||
temperature: 0.8,
|
temperature: 0.75, // 调整温度以平衡创意性和一致性
|
||||||
top_p: 0.9
|
top_p: 0.92, // 微调top_p以获得更自然的语言
|
||||||
|
frequency_penalty: 1.05, // 添加频率惩罚以减少重复
|
||||||
|
presence_penalty: 0.3 // 添加存在惩罚以鼓励多样性
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ class BellaAI {
|
|||||||
return await this.cloudAPI.chat(enhancedPrompt);
|
return await this.cloudAPI.chat(enhancedPrompt);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 使用本地模型进行思考
|
// 使用本地模型进行思考,优化LLM参数和处理
|
||||||
async thinkWithLocalModel(prompt) {
|
async thinkWithLocalModel(prompt) {
|
||||||
if (!this.llm) {
|
if (!this.llm) {
|
||||||
return "我还在学习如何思考,请稍等片刻...";
|
return "我还在学习如何思考,请稍等片刻...";
|
||||||
@@ -110,34 +110,89 @@ class BellaAI {
|
|||||||
|
|
||||||
const bellaPrompt = this.enhancePromptForMode(prompt, true);
|
const bellaPrompt = this.enhancePromptForMode(prompt, true);
|
||||||
|
|
||||||
|
// 优化LLM参数以获得更好的回应
|
||||||
const result = await this.llm(bellaPrompt, {
|
const result = await this.llm(bellaPrompt, {
|
||||||
max_new_tokens: 50,
|
max_new_tokens: 150, // 增加token数量以获得更完整的回应
|
||||||
temperature: 0.8,
|
temperature: 0.7, // 稍微降低温度以增加一致性
|
||||||
top_k: 40,
|
top_k: 50, // 增加top_k以获得更多样的词汇选择
|
||||||
do_sample: true,
|
top_p: 0.92, // 添加top_p参数以优化采样
|
||||||
|
do_sample: true, // 保持采样以获得创意性
|
||||||
|
repetition_penalty: 1.2, // 添加重复惩罚以避免重复内容
|
||||||
});
|
});
|
||||||
|
|
||||||
// 清理生成的文本
|
// 增强的文本清理和处理
|
||||||
let response = result[0].generated_text;
|
let response = result[0].generated_text;
|
||||||
|
|
||||||
|
// 移除提示词部分
|
||||||
if (response.includes(bellaPrompt)) {
|
if (response.includes(bellaPrompt)) {
|
||||||
response = response.replace(bellaPrompt, '').trim();
|
response = response.replace(bellaPrompt, '').trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
return response || "我需要再想想...";
|
// 移除可能的"贝拉的回应:"等前缀
|
||||||
|
response = response.replace(/^(贝拉的回应:|贝拉的专业回应:|贝拉的创意回应:)/i, '').trim();
|
||||||
|
|
||||||
|
// 如果回应为空,提供备用回应
|
||||||
|
if (!response || response.length < 2) {
|
||||||
|
const backupResponses = [
|
||||||
|
"这个问题很有趣,让我再思考一下...",
|
||||||
|
"嗯,这是个好问题!我需要整理一下思路...",
|
||||||
|
"我有些想法,不过让我再组织一下语言...",
|
||||||
|
"这个话题很吸引我,让我好好想想怎么回应...",
|
||||||
|
"我正在思考这个问题的不同角度,稍等一下..."
|
||||||
|
];
|
||||||
|
return backupResponses[Math.floor(Math.random() * backupResponses.length)];
|
||||||
|
}
|
||||||
|
|
||||||
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 根据模式增强提示词
|
// 根据模式增强提示词,使用更高级的LLM提示工程
|
||||||
enhancePromptForMode(prompt, isLocal = false) {
|
enhancePromptForMode(prompt, isLocal = false) {
|
||||||
const modePrompts = {
|
const modePrompts = {
|
||||||
casual: isLocal ?
|
casual: isLocal ?
|
||||||
`作为一个温暖、可爱的AI伙伴贝拉,用轻松亲切的语气回应:${prompt}` :
|
`作为一个温暖、可爱的AI伙伴贝拉,请用轻松亲切的语气回应用户。你的回应应该:
|
||||||
`请用温暖、轻松的语气回应,就像一个贴心的朋友。保持简洁有趣:${prompt}`,
|
1. 使用自然、流畅的语言,就像与好朋友聊天一样
|
||||||
|
2. 保持简洁有趣,避免过长的解释
|
||||||
|
3. 表达出温暖和关心的情感
|
||||||
|
4. 适当使用表情符号增加亲切感
|
||||||
|
5. 展现你的个性和温暖特质
|
||||||
|
|
||||||
|
用户消息: ${prompt}
|
||||||
|
贝拉的回应:` :
|
||||||
|
`你是贝拉,一个温暖、亲切的AI伙伴。请用自然、轻松的语气回应,就像一个贴心的朋友。保持简洁有趣,适当使用表情符号,展现你的温暖和关心。避免机械化的回答,让对话更有人情味。
|
||||||
|
|
||||||
|
用户消息: ${prompt}
|
||||||
|
贝拉的回应:`,
|
||||||
|
|
||||||
assistant: isLocal ?
|
assistant: isLocal ?
|
||||||
`作为智能助手贝拉,提供有用、准确的帮助:${prompt}` :
|
`作为智能助手贝拉,你需要提供有用、准确的帮助,同时保持温暖的语气。你的回应应该:
|
||||||
`作为一个专业但温暖的AI助手,提供准确有用的信息和建议:${prompt}`,
|
1. 提供清晰、准确的信息和建议
|
||||||
|
2. 组织内容使其易于理解和应用
|
||||||
|
3. 保持专业但不失亲切的语气
|
||||||
|
4. 避免过于技术化的语言,除非必要
|
||||||
|
5. 展现你的专业知识和帮助精神
|
||||||
|
|
||||||
|
用户问题: ${prompt}
|
||||||
|
贝拉的专业回应:` :
|
||||||
|
`你是贝拉,一个专业但温暖的AI助手。请提供准确、有用的信息和建议,同时保持亲切的语气。组织内容使其易于理解,避免过于技术化的语言,展现你的专业知识和帮助精神。
|
||||||
|
|
||||||
|
用户问题: ${prompt}
|
||||||
|
贝拉的专业回应:`,
|
||||||
|
|
||||||
creative: isLocal ?
|
creative: isLocal ?
|
||||||
`作为富有创意的AI伙伴贝拉,发挥想象力回应:${prompt}` :
|
`作为富有创意的AI伙伴贝拉,请发挥你的想象力和创造力回应用户。你的回应应该:
|
||||||
`发挥创意和想象力,提供有趣、独特的回应和想法:${prompt}`
|
1. 展现独特的视角和创意思维
|
||||||
|
2. 使用生动、形象的语言描述
|
||||||
|
3. 提供出人意料但有趣的想法
|
||||||
|
4. 激发用户的想象力和创造力
|
||||||
|
5. 保持轻松愉快的语气
|
||||||
|
|
||||||
|
用户提示: ${prompt}
|
||||||
|
贝拉的创意回应:` :
|
||||||
|
`你是贝拉,一个富有创意和想象力的AI伙伴。请提供有趣、独特的回应和想法,使用生动、形象的语言,展现你的创意思维。提供出人意料但有趣的视角,激发用户的想象力,保持轻松愉快的语气。
|
||||||
|
|
||||||
|
用户提示: ${prompt}
|
||||||
|
贝拉的创意回应:`
|
||||||
};
|
};
|
||||||
|
|
||||||
return modePrompts[this.currentMode] || modePrompts.casual;
|
return modePrompts[this.currentMode] || modePrompts.casual;
|
||||||
|
|||||||
+74
-16
@@ -47,34 +47,92 @@ class SimpleBellaAI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
generateResponse(prompt) {
|
generateResponse(prompt) {
|
||||||
|
// 增强版回应生成,模拟LLM的更自然、更个性化的回应
|
||||||
|
|
||||||
|
// 提取关键词,用于生成更相关的回应
|
||||||
|
const keywords = this.extractKeywords(prompt);
|
||||||
|
const keyword = keywords.length > 0 ? keywords[Math.floor(Math.random() * keywords.length)] : "这个话题";
|
||||||
|
|
||||||
const responses = {
|
const responses = {
|
||||||
casual: [
|
casual: [
|
||||||
`哈哈,你说的"${prompt}"真有趣!我觉得这个话题很棒呢~`,
|
`哈哈,你提到的"${keyword}"真的很有趣呢!😊 我觉得这个话题很棒,让我们多聊聊吧~你平时也对这类事情感兴趣吗?`,
|
||||||
`关于"${prompt}",我想说这真的很有意思!你还想聊什么吗?`,
|
`关于"${keyword}",我想说这真的很有意思!💕 每次听你说这些,我都感觉特别开心。你还有什么想法想和我分享吗?`,
|
||||||
`嗯嗯,"${prompt}"让我想到了很多呢!我们继续聊下去吧~`,
|
`嗯嗯,"${keyword}"让我想到了很多呢!我们的对话总是这么愉快~说真的,和你聊天真的很舒服,感觉就像和老朋友聊天一样自在。`,
|
||||||
`哇,"${prompt}"这个话题我喜欢!你的想法总是那么特别~`,
|
`哇,"${keyword}"这个话题我超喜欢的!✨ 你的想法总是那么特别,每次都能给我带来新的视角。我们继续聊下去吧~`,
|
||||||
`听你说"${prompt}",我感觉心情都变好了!继续和我分享吧~`
|
`听你说"${keyword}",我感觉心情都变好了!☺️ 你总是能找到有趣的话题。我很好奇,你是怎么想到这个的?`,
|
||||||
|
`"${keyword}"这个话题真的很棒呢!我感觉我们的想法很合拍~你知道吗?每次和你聊天,时间都过得特别快,因为太有趣了!`,
|
||||||
|
`我觉得"${keyword}"这个话题特别有意思!你总是能带给我惊喜~说说看,你最近还有什么有趣的发现吗?我很想听听!`
|
||||||
],
|
],
|
||||||
assistant: [
|
assistant: [
|
||||||
`关于"${prompt}",我来为您提供一些有用的信息和建议。`,
|
`关于"${keyword}",我很乐意为你提供一些有用的信息和建议。这是个很好的问题,让我来整理一下相关内容给你。`,
|
||||||
`针对"${prompt}"这个问题,我建议您可以从以下几个方面考虑。`,
|
`"${keyword}"是个很有价值的话题。从我了解的情况来看,这方面有几个关键点值得注意。首先,我们可以从...`,
|
||||||
`"${prompt}"是一个很好的问题,让我来帮您分析一下。`,
|
`谈到"${keyword}",我想从几个角度来分析一下。这个问题其实涉及到多个方面,让我帮你梳理一下关键信息。`,
|
||||||
`基于"${prompt}",我可以为您提供以下专业建议。`,
|
`你问的"${keyword}"很有深度。我建议可以从以下几个方面考虑:首先,了解基本概念;其次,分析实际应用;最后,考虑未来发展。`,
|
||||||
`关于"${prompt}",我整理了一些相关信息供您参考。`
|
`"${keyword}"确实是个值得探讨的话题。基于我所知道的信息,我可以提供一些专业的见解。首先,我们需要明确...`,
|
||||||
|
`关于"${keyword}"的问题,我想提供一个清晰的解答。这个话题有几个重要的方面需要考虑,让我来帮你分析一下。`,
|
||||||
|
`"${keyword}"是个很好的问题!我很高兴你对这方面感兴趣。让我来分享一些相关的信息,希望能对你有所帮助。`
|
||||||
],
|
],
|
||||||
creative: [
|
creative: [
|
||||||
`哇!"${prompt}"让我的创意火花瞬间点燃!让我们一起想象一下...`,
|
`哇!"${keyword}"这个话题真的点燃了我的创意火花!✨ 想象一下,如果我们把这个概念扩展到一个全新的维度,会发生什么呢?也许我们可以...`,
|
||||||
`"${prompt}"真是个充满想象力的话题!我脑海中浮现出无数奇妙的画面~`,
|
`"${keyword}"真是个充满想象力的话题!🌈 我脑海中已经浮现出无数奇妙的画面~比如,想象一个世界,那里的${keyword}可以...`,
|
||||||
`听到"${prompt}",我仿佛看到了一个全新的世界!让我们一起探索吧~`,
|
`听到"${keyword}",我仿佛看到了一个全新的世界!🚀 这让我想到了一个有趣的故事:在一个遥远的地方,${keyword}成为了人们生活的中心,然后...`,
|
||||||
`"${prompt}"激发了我的灵感!我想到了一个超级有趣的创意...`,
|
`"${keyword}"激发了我的灵感!💡 我想到了一个超级有趣的创意:如果我们把${keyword}和艺术结合起来,会创造出什么样的奇迹呢?`,
|
||||||
`哇塞!"${prompt}"让我的想象力飞起来了!我们来创造点什么特别的吧~`
|
`哇塞!"${keyword}"让我的想象力飞起来了!🎨 我们可以从这个概念出发,创造一个全新的故事或游戏。想象一下,主角是一个...`,
|
||||||
|
`"${keyword}"真的是创意的源泉!我突然想到,如果我们从完全不同的角度看待这个问题,会有什么新发现?比如说,如果${keyword}在未来变成了...`,
|
||||||
|
`听你提到"${keyword}",我的脑海中立刻闪现出一幅奇妙的画面!想象一下,在一个充满可能性的世界里,${keyword}可以变成任何形式...这不是很神奇吗?`
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 获取当前模式的回应列表
|
||||||
const modeResponses = responses[this.currentMode] || responses.casual;
|
const modeResponses = responses[this.currentMode] || responses.casual;
|
||||||
|
|
||||||
|
// 随机选择一个回应模板
|
||||||
const randomResponse = modeResponses[Math.floor(Math.random() * modeResponses.length)];
|
const randomResponse = modeResponses[Math.floor(Math.random() * modeResponses.length)];
|
||||||
|
|
||||||
return randomResponse;
|
// 进一步个性化回应,添加一些随机的个性化元素
|
||||||
|
return this.personalizeResponse(randomResponse, prompt);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 从用户输入中提取可能的关键词
|
||||||
|
extractKeywords(prompt) {
|
||||||
|
// 简单的关键词提取逻辑
|
||||||
|
const words = prompt.split(/\s+|[,.!?;:,。!?;:]/);
|
||||||
|
// 过滤掉短词和常见词
|
||||||
|
return words.filter(word =>
|
||||||
|
word.length > 1 &&
|
||||||
|
!['的', '了', '是', '在', '我', '你', '他', '她', '它', '们', '和', '与', '这', '那', '有', '没有', '不', '吗'].includes(word)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 进一步个性化回应
|
||||||
|
personalizeResponse(response, prompt) {
|
||||||
|
// 添加一些随机的个性化元素
|
||||||
|
const personalizations = [
|
||||||
|
// 不添加任何额外内容
|
||||||
|
(resp) => resp,
|
||||||
|
// 添加一个随机的表情
|
||||||
|
(resp) => {
|
||||||
|
const emojis = ['😊', '💕', '✨', '🌟', '🎵', '🌈', '☺️', '🤔', '👍', '💡'];
|
||||||
|
const emoji = emojis[Math.floor(Math.random() * emojis.length)];
|
||||||
|
return resp + ' ' + emoji;
|
||||||
|
},
|
||||||
|
// 添加一个随机的结束语
|
||||||
|
(resp) => {
|
||||||
|
const endings = [
|
||||||
|
'期待听到你的想法!',
|
||||||
|
'你觉得呢?',
|
||||||
|
'很想知道你的看法~',
|
||||||
|
'希望我的回应对你有帮助!',
|
||||||
|
'我们可以继续聊这个话题~'
|
||||||
|
];
|
||||||
|
const ending = endings[Math.floor(Math.random() * endings.length)];
|
||||||
|
return resp + ' ' + ending;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
// 随机选择一种个性化方式
|
||||||
|
const personalizer = personalizations[Math.floor(Math.random() * personalizations.length)];
|
||||||
|
return personalizer(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取错误回应
|
// 获取错误回应
|
||||||
|
|||||||
Reference in New Issue
Block a user