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;