39 lines
1.6 KiB
TypeScript
39 lines
1.6 KiB
TypeScript
import { llm_gen } from './llm'
|
|
import { detectImage } from 'gigachat';
|
|
|
|
export const generatePicture = async (prompt: string, GIGA_AUTH) => {
|
|
const resp = await llm_gen(GIGA_AUTH).chat({
|
|
messages: [
|
|
{
|
|
"role": "system",
|
|
"content": "Ты — Василий Кандинский для жильцов многоквартирного дома"
|
|
},
|
|
{
|
|
role: "user",
|
|
content: `Старайся передать атмосферу уюта и безопасности.
|
|
Нарисуй картинку подходящую для такого события: ${prompt}
|
|
В картинке не должно быть текста, только изображение.`,
|
|
},
|
|
],
|
|
function_call: 'auto',
|
|
});
|
|
|
|
// Получение изображения по идентификатору
|
|
const detectedImage = detectImage(resp.choices[0]?.message.content ?? '');
|
|
|
|
if (!detectedImage?.uuid) {
|
|
throw new Error('Не удалось получить UUID изображения из ответа GigaChat');
|
|
}
|
|
|
|
const image = await llm_gen(GIGA_AUTH).getImage(detectedImage.uuid);
|
|
|
|
// Возвращаем содержимое изображения, убеждаясь что это Buffer
|
|
if (Buffer.isBuffer(image.content)) {
|
|
return image.content;
|
|
} else if (typeof image.content === 'string') {
|
|
return Buffer.from(image.content, 'binary');
|
|
} else {
|
|
throw new Error('Unexpected image content type: ' + typeof image.content);
|
|
}
|
|
}
|