|
|
import { OpenAI } from "openai"; |
|
|
|
|
|
const client = new OpenAI({ |
|
|
baseURL: "https://router.huggingface.co/novita/v3/openai", |
|
|
apiKey: process.env.NOVITA_API_KEY, |
|
|
}); |
|
|
|
|
|
export const chatCompletion = async (req, res) => { |
|
|
try { |
|
|
const { messages } = req.body; |
|
|
|
|
|
|
|
|
if (!messages.some(m => m.role === 'system')) { |
|
|
messages.unshift({ |
|
|
role: 'system', |
|
|
content: 'Anda adalah asisten AI yang ramah, baik hati, dan selalu membantu. Gunakan bahasa Indonesia yang santun dan mudah dimengerti.' |
|
|
}); |
|
|
} |
|
|
|
|
|
const stream = await client.chat.completions.create({ |
|
|
model: process.env.MODEL, |
|
|
messages, |
|
|
stream: true, |
|
|
}); |
|
|
|
|
|
res.setHeader('Content-Type', 'text/plain'); |
|
|
|
|
|
for await (const chunk of stream) { |
|
|
const content = chunk.choices[0]?.delta?.content || ''; |
|
|
res.write(content); |
|
|
} |
|
|
|
|
|
res.end(); |
|
|
} catch (error) { |
|
|
console.error('Error:', error); |
|
|
res.status(500).json({ error: 'Internal server error' }); |
|
|
} |
|
|
}; |