From dfd585409a793d748a22c6c3d322de1012202ce6 Mon Sep 17 00:00:00 2001 From: Jerryplusy Date: Sun, 30 Nov 2025 11:10:54 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(openaiChat):=20add=20support?= =?UTF-8?q?=20for=20multi-modal=20messages=20in=20AI=20chat=20function.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/openai/openaiChat.js | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/modules/openai/openaiChat.js b/modules/openai/openaiChat.js index 7bb2aa5..5977d04 100644 --- a/modules/openai/openaiChat.js +++ b/modules/openai/openaiChat.js @@ -22,34 +22,40 @@ class OpenaiChat { * @param model 模型 * @param temperature 温度 * @param customPrompt 提示词 + * @param messages 多模态消息数组 * @returns {Promise<{success: boolean, aiResponse: string}|{}>} */ - async callAi({ prompt, chatHistory = [], model, temperature, customPrompt }) { + async callAi({ prompt, chatHistory = [], model, temperature, customPrompt, messages }) { if (!this.openai) { logger.error('[crystelf-ai] ai未初始化..'); return { success: false }; } - let systemMessage = { - role: 'system', - content: customPrompt || '', - }; - const messages = [ - systemMessage, - ...chatHistory, - { - role: 'user', - content: prompt, - }, - ]; + let finalMessages; + if (messages && messages.length > 0) { + finalMessages = messages; + } else { + let systemMessage = { + role: 'system', + content: customPrompt || '', + }; + finalMessages = [ + systemMessage, + ...chatHistory, + { + role: 'user', + content: prompt, + }, + ]; + } try { // logger.info("[DEBUG] 请求体:", { //model: model, - // messages, + // messages: finalMessages, //}); const completion = await this.openai.chat.completions.create({ - messages: messages, + messages: finalMessages, model: model, temperature: temperature, frequency_penalty: 0.2,