pidrio / services /OpenAIService.ts
Raiff1982's picture
Upload 12 files
e2ce418 verified
import OpenAI from 'openai';
interface ChatMessage {
role: 'system' | 'user' | 'assistant';
content: string;
}
class OpenAIService {
private openai: OpenAI;
private model: string = 'gpt-4';
constructor() {
const apiKey = import.meta.env.VITE_OPENAI_API_KEY;
if (!apiKey) {
throw new Error('OpenAI API key is required. Please add your API key to the .env file as VITE_OPENAI_API_KEY.');
}
this.openai = new OpenAI({
apiKey,
dangerouslyAllowBrowser: true // Note: In production, API calls should be made from a backend
});
}
async sendChatCompletion(messages: ChatMessage[]) {
try {
const completion = await this.openai.chat.completions.create({
model: this.model,
messages,
temperature: 0.7,
max_tokens: 1000,
frequency_penalty: 0,
presence_penalty: 0
});
return completion.choices[0].message;
} catch (error) {
console.error('Error in chat completion:', error);
throw error;
}
}
}
export default OpenAIService;