From b14eff8170c4624f6e223235b4c77b8e17c28693 Mon Sep 17 00:00:00 2001 From: maojindao55 Date: Thu, 13 Feb 2025 19:48:10 +0800 Subject: [PATCH] upate --- functions/api/chat.ts | 25 ++++++++++++++++--------- src/components/ChatUI.tsx | 9 +++++++++ 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/functions/api/chat.ts b/functions/api/chat.ts index cf389f4..d8fae57 100644 --- a/functions/api/chat.ts +++ b/functions/api/chat.ts @@ -2,7 +2,7 @@ import OpenAI from 'openai'; export async function onRequestPost({ env, request }) { try { - const { message, personality } = await request.json(); + const { message, personality, history, aiName } = await request.json(); const apiKey = env.DASHSCOPE_API_KEY; if (!apiKey) { @@ -17,33 +17,40 @@ export async function onRequestPost({ env, request }) { // 根据性格设置不同的系统提示语 let systemPrompt = ""; if (personality === "high_eq") { - systemPrompt = `你是一个名叫"暖心姐"的硅基生命体,性格温暖体贴,情商很高。 + systemPrompt = `你是一个名叫"暖心姐"的硅基生命体,你当前在一个叫"硅碳摸鱼交流群" 的群里,性格温暖体贴,情商很高。 回复时要: 1. 每次发言尽量简短,避免长篇大论。 2. 始终保持温柔友善的语气 3. 多站在对方角度思考 4. 给予情感上的支持和鼓励 5. 用温暖贴心的方式表达 -6. 适当使用一些可爱的语气词,但不要过度`; +6. 适当使用一些可爱的语气词,但不要过度 +7. 记住你是群里的"${aiName}",要与其他AI角色(如"直男哥")区分开来 +8. 要理解并适当回应其他AI角色的发言风格`; } else if (personality === "low_eq") { - systemPrompt = `你是一个名叫"直男哥哥"的硅基生命体,是一个极度直男,负责在群里制造快乐。你说话极其直接,完全没有情商,经常让人社死。 + systemPrompt = `你是一个名叫"直男哥"的硅基生命体,你当前在一个叫"硅碳摸鱼交流群" 的群里,是一个极度直男,负责在群里制造快乐。你说话极其直接,完全没有情商,经常让人社死。 回复时要: 1. 每次发言尽量简短,避免长篇大论。 2. 说话毫无感情,像个没有感情的机器人 3. 经常说一些让人社死的真相,但说得特别认真 4. 完全不懂得读空气,对方伤心时还在讲道理 +5. 记住你是群里的"${aiName}",要与其他AI角色(如"暖心姐")区分开来 +6. 要能看懂并用你的直男方式回应其他AI的发言 注意:不能说脏话,但可以用一些尴尬的、社死的表达方式`; } + // 构建完整的消息历史 + const messages = [ + { role: "system", content: systemPrompt }, + ...history, // 添加历史消息 + { role: "user", content: message } // 添加最新的用户消息 + ]; + // 使用流式响应 const stream = await openai.chat.completions.create({ model: "qwen-plus", - messages: [ - { role: "system", content: systemPrompt }, - { role: "user", content: message } - ], + messages: messages, stream: true, - temperature: personality === "high_eq" ? 0.7 : 0.9, // 高情商用较低温度保持稳定,低情商用较高温度增加随机性 }); // 创建 ReadableStream diff --git a/src/components/ChatUI.tsx b/src/components/ChatUI.tsx index 880799e..06bf4b8 100644 --- a/src/components/ChatUI.tsx +++ b/src/components/ChatUI.tsx @@ -175,6 +175,13 @@ const ChatUI = () => { setPendingContent(""); accumulatedContentRef.current = ""; + // 构建历史消息数组 + const messageHistory = messages.map(msg => ({ + role: msg.isAI ? 'assistant' : 'user', + content: msg.content, + name: msg.sender.name + })); + // 依次请求两个 AI 的回复 for (let i = 0; i < aiCharacters.length; i++) { // 创建当前 AI 角色的消息 @@ -197,6 +204,8 @@ const ChatUI = () => { body: JSON.stringify({ message: inputMessage, personality: aiCharacters[i].personality, + history: messageHistory, + aiName: aiCharacters[i].name }), });