Как-то я делал Телеграм бота на 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 и решил поделиться здесь.