Pull to refresh

Как-то я делал Телеграм бота на Wolfram Language (WL) для выполнения кода. Взаимодействие с ботом получается интереснее, если его добавить в групповой чат. Теперь я хочу поделиться тем, как сделать бота для обращения к OpenAI.

Установка Wolfram Engine:

winget install WolframEngine

Запускаем ядро и выполняем:

PacletInstall["CristopherWolfram/OpenAILink"]; 
PacletInstall["KirillBelov/Objects"]; 
PacletInstall["KirillBelov/TelegramBot"]; 

Импортируем пакеты:

<<KirillBelov`TelegramBot`
<<ChristopherWolfram`OpenAILink`

Теперь реализуем доступ к gpt-3.5-turbo от OpenAI:

chatGPT[chatId_, text_String] := 
Module[{userMsg, botMsg, chat}, 
 If[Not[KeyExistsQ[$chats, chatId]], $chats[chatId] = {}]; 
 chat = $chats[chatId]; 
 AppendTo[chat,  userMsg = OpenAIChatMessageObject["user", text]];   
 botMsg = Check[
  OpenAIChatComplete[chat], 
  chat = {userMsg}; 
  OpenAIChatComplete[chat]
 ]; 
 $chats[chatId] = Append[chat, botMsg]; 
 botMsg[[-1, "Text"]]
]

Обработчик сообщений из Telegram:

handler[bot_TelegramBot, update_Association] := 
Module[{user, chatId, text, result}, 
 chatId = update["message", "chat", "id"]; 
 text = update["message", "text"]; 
 sendMessage[bot, chatId, chatGPT[chatId, text]]; 
]

Осталось только запустить нашего бота:

$chats = <||>; 
$OpenAIKey = "your_key"; 
wlgptbot = TelegramBot["your_token"]; 
task = CreateBotSession[wlgptbot, handler, {5, 100000}]; 

Готово! Изначально я сделал этого бота для группы по Mathematica и решил поделиться здесь.

Total votes 4: ↑4 and ↓0+4
Comments2

Articles