imaginar/services/OpenAIClient.js
2024-10-19 20:24:54 +09:00

45 lines
1.4 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const OpenAI = require('openai');
class OpenAIClient {
constructor(apiKey) {
this.api = new OpenAI({
apiKey
});
}
// 過去のメッセージとシステムプロンプトを使って回答を生成
async generateResponse(conversationHistory, systemPrompt) {
try {
const messages = [
{
role: 'system',
content: systemPrompt // システムプロンプトを最初に追加
},
...conversationHistory // その後に会話履歴を追加
];
const response = await this.api.chat.completions.create({
model: process.env.OPENAI_MODEL, // 使用するモデルは環境変数で定義
messages: messages // システムプロンプトと会話履歴を渡す
});
const reply = response.choices[0].message.content;
const interval = this.calculateInterval(reply);
return { reply, interval }; // 返答とインターバルを返す
} catch (error) {
console.error('Error generating response:', error);
throw new Error('Failed to generate response from OpenAI');
}
}
// インターバルの計算(例: 1文字につき100ミリ秒
calculateInterval(reply) {
const length = reply.length;
const baseInterval = 100; // 1文字あたり100ms
return Math.min(length * baseInterval, 5000); // 最大5秒までの遅延
}
}
module.exports = OpenAIClient;