From d37ce5033d6cdd0438ba74fe0d880b74fb04b86b Mon Sep 17 00:00:00 2001 From: Jerry Date: Thu, 24 Apr 2025 13:57:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9A=E4=B9=89ai=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- models/openai/chatTools.js | 44 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 models/openai/chatTools.js diff --git a/models/openai/chatTools.js b/models/openai/chatTools.js new file mode 100644 index 0000000..76afbe4 --- /dev/null +++ b/models/openai/chatTools.js @@ -0,0 +1,44 @@ +import OpenAI from 'openai'; + +class ChatTools { + constructor() { + this.openai = null; + } + + init(apiKey, baseUrl) { + this.openai = new OpenAI({ + apiKey: apiKey, + baseUrl: baseUrl, + }); + } + + async callAi({ prompt, chatHistory = [], model, temperature, customPrompt }) { + if (!this.openai) { + logger.err('ai未初始化..'); + return {}; + } + let systemMessage = { role: 'system', content: customPrompt || '' }; + const messages = [systemMessage, ...chatHistory, { role: 'user', content: prompt }]; + + try { + const completion = await this.openai.chat.completions.create({ + messages: messages, + model: model, + temperature: temperature, + frequency_penalty: 0.2, + presence_penalty: 0.2, + }); + + const aiResponse = completion.choices[0].message.content; + + return { + success: true, + aiResponse: aiResponse, + }; + } catch (err) { + logger.err(err); + return {}; + } + } +} +export default ChatTools;