PomogatorProxy / server.js
Rooni's picture
Update server.js
9c7d162 verified
raw
history blame
2.51 kB
app.post('/gen', async (req, res) => {
const prompt = req.body.prompt;
const img = req.body.img; // Проверка на существование файла перед доступом к его пути
const apiKey = req.body.api || openai_key;
let payload;
if (!prompt) {
return res.json({ content: '+ошибка+❌ Ошибка данных, повторите попытку.-ошибка-' });
}
if (prompt.replace(/[\s\n]/g, '').length > 250) {
return res.json({ content: '+ошибка+❌ Максимум символов: 250-ошибка-' });
}
// Создание тела запроса в зависимости от наличия изображения
if (img) {
// Если изображение предоставлено
// Обрезка строки base64 до 1 МБ
const trimmedBase64Image = base64Image && base64Image.substring(0, 1024000);
payload = {
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "system",
"content": start,
},
{
"role": "user",
"content": [
{
"type": "text",
"text": prompt,
},
{
"type": "image_url",
"image_url": { "url": `data:image/jpeg;base64,${trimmedBase64Image}` },
},
],
}
],
};
} else {
// Если изображение не предоставлено gpt-4-1106-preview
payload = {
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "system",
"content": start,
},
{
"role": "user",
"content": prompt,
}
],
};
}
try {
const response = await axios.post(base_url, payload, {
headers: {
'Authorization': `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
});
if (response.data.choices && response.data.choices.length > 0 && response.data.choices[0].message) {
const content = response.data.choices[0].message.content.trim();
console.log(content);
res.json({ content });
} else {
res.json({ content: '+ошибка+❌ Не удалось прочитать ответ.-ошибка-' });
}
} catch (error) {
console.error(error);
res.json({ content: '+ошибка+❌ Произошла ошибка сервера при генерации.-ошибка-' });
}
});