В даній статті описується інтеграція телеграм бота з сервісом OpenAI
Для реалізації даної інтеграції потрібно виконати три кроки:
- Створити та підключитися до телеграм бота за допомогою Node-red - цей процес описано у статті Synchronization with three services via Node-red:
- Зареєструвати акаунт в сервсі OpenAI та отримати апі ключ.
- Створити потік в середовищі Node Red, який позволить працювати з ботом. Для створення даного потоку ми використувоєму наступні вузли:
-
Telegram reciever
; -
Telegram sender(3)
; -
Function (4)
; -
Http request
;
Вузли telegram reieve
r та telegram sender
відповідають лише за отримання та відправку даних в телеграм бот, в них потрібно як описано в статті вище вписати лише токен бота.
В вузлі Content validation
(function) ми здійснюмо перевірку вхідних даних, по наступним критеріям :
- чи повідомлення містить в собі команду '/start';
- чи тип повідомлення=='message';
- якщо попередні критерії не пройшли перевірку ми завжди вертаємо помилку;
У випадку якщо повідомлення містить в собі команду '/start' ми відправляємо короткий опис функціонала бота.
У випадку якщо тип повідомлення 'message' ми відправляємо дане повідомлення до серсвісу OpenAI, який у відповідь нам відправляє посилання на згенероване моделлю DALL·E зображення і ми відправляємо його у відповідь користувачу.
Вузол Content validation
(function)
if (msg.payload.content.includes('/start')) {
return [msg, null,null]
}
if (msg.payload.type == "message") {
return [null, msg,null]
}
else{
return[null,null,msg]
}
Вузол Send Instruction
(function)
msg.oldpayload=msg.payload;
msg.payload={};
msg.payload.type = "message";
msg.payload.content = `Напишіть будь ласка боту вашу історію текстовим повідомлення і насолоджуйтесь отриманим зображенням=)`;
msg.payload.chatId = `${msg.oldpayload.chatId}`;
return msg;
Вузол Request to OpenAI
(function)
msg.oldpayload=msg.payload;
msg.url=`https://api.openai.com/v1/images/generations`;
msg.method="POST";
msg.headers={
'Content-Type': 'application/json',
'Authorization': env.get("secret_key") /* Ваш Апі Ключ */
}
msg.payload={
"prompt": msg.oldpayload.content,
"n": 1,
"size": "1024x1024"
}
return msg;
Вузол Content Validation failed
(function)
msg.oldpayload=msg.payload;
msg.payload={};
msg.payload.type = "message";
msg.payload.content = `Error: you can send only text messages`;
msg.payload.chatId = `${msg.oldpayload.chatId}`;
return msg;
Вузол Send Response
(function)
if (msg.statusCode==200){
msg.payload.type = "message";
msg.payload.content = `<a href="${msg.payload.data[0].url}">image link</a>`;
msg.payload.chatId = `${msg.oldpayload.chatId}`;
msg.payload.options = { parse_mode: "HTML" };
}else{
msg.payload.type = "message";
msg.payload.content = `${msg.payload.error.message}`;
msg.payload.chatId = `${msg.oldpayload.chatId}`;
}
return msg;
Телеграм бота можна знайти в телеграмі за посиланням UBOS.OPEN AI
Top comments (1)
what about phrase: "running cat and dog"? could you please show us the result?