Интеграция модели GPT-4 Omni в телеграм бота на Python (2024)

13 мая 2024 года, OpenAI официально представила новую модель.По словам самих OpenAI, Omni соответствует производительности GPT-4 Turbo для текста на английском языке и кода, со значительным улучшением для текста на языках, отличных от английского, при этом он намного быстрее и на 50% дешевле в API.

Преимущества модели в том, что она умеет работать со всем контентом (текстом, звуком и изображениями) и знает 50 языков.

И сегодня мы интегрируем эту модель в небольшого бота на Python и задеплоим его на облачный сервис Amvera.

ПочемуAmvera:

  • Это наш блог. Странно, если мы будем разворачивать у конкурентов)

  • Полное бесплатное проксирование проектов до OpenAI. Больше не требуется использовать свой прокси в коде!

  • Простая подготовка проекта в “два клика” с помощью yaml инструкции.

  • Удобная доставка файлов и обновлений через git буквально за 3 команды.

  • После регистрации и подтверждения номера телефона начисляется бесплатный баланс в размере 111 рублей!

План проекта (как все будет работать?)

В проекте будем использовать следующие библиотеки:

Это будет самый обычный GPT-бот, который будет генерировать контент в ответ на сообщение. Пока что ограничимся текстовыми сообщениями, но после вы можете самостоятельно добавить работу с изображениями и аудио.

Создание бота и ключа OpenAI

Начнем с создания бота.

Для этого воспользуемся ботом@BotFather.

  1. Пишем команду /newbot

  2. Придумываем ему имя и юзернейм

  3. В ответ, если все прошло успешно, получаем сообщение о создании бота и сохраняем сгенерировавшийся токен.

Интеграция модели GPT-4 Omni в телеграм бота на Python (1)

Внимание! С помощью токена можно получить полный контроль над ботом, никому не присылайте его!

Как получить ключ OpenAI?

Для начала вам нужно иметь аккаунт в OpenAI с подключенным биллингом. Для создания вам понадобится любой зарубежный номер. Можно воспользоваться любым сервисом для получения SMS подтверждения.

После переходим настраницу ключейи создаем ключ с любым названием кнопкой сверху:

Интеграция модели GPT-4 Omni в телеграм бота на Python (2)

Все! Теперь можно переходить к написанию кода.

Код бота

Структура проекта будет выглядеть так:

  • Папка bot с файламиhandlers.pyдля обработчиков aiogram иgpt.pyдля генерации ответа нейросети.

  • Файлmain.pyс инициализацией бота

  • Также файлы, требуемые для деплоя (их нет на скрине)

Интеграция модели GPT-4 Omni в телеграм бота на Python (3)

Вmain.py, как и сказано выше, мы инициализируем и запускаем бота с подключенным логированием:

import osimport loggingimport asynciofrom aiogram import Bot, Dispatcherfrom aiogram.types import Messagefrom aiogram.filters import CommandStartfrom bot.handlers import routerbot = Bot(token=os.getenv("TOKEN"))dp = Dispatcher()logging.basicConfig(level=logging.INFO)@dp.message(CommandStart())async def start_cmd(message: Message): await message.reply("Добро пожаловать в бота!\nНапишите свой вопрос и бот с помощью GPT4 Omni сгенерирует ответ!")async def main(): dp.include_router(router) await bot.delete_webhook(drop_pending_updates=True) await dp.start_polling(bot)if __name__ == "__main__": asyncio.run(main())

Важно отметить, что токен следует хранить в переменных окружения, которые мы создадим позже на сайте облака.

Обязательно импортируем роутер из файлаhandlers.pyв папке bot. Вот, кстати, содержимое самого файла:

from aiogram import Router, Ffrom aiogram.types import Messagefrom aiogram.filters import CommandStartfrom aiogram.fsm.state import State, StatesGroupfrom aiogram.fsm.context import FSMContextfrom bot.gpt import gpt_requestrouter = Router()class StateGpt(StatesGroup): text = State()@router.message(StateGpt.text)async def state_answer(message: Message): await message.reply("Пожалуйста, дождитесь ответа!")@router.message(F.text)async def gpt_work(message: Message, state: FSMContext): await state.set_state(StateGpt.text) answer = await message.reply("Ответ генерируется...") response = await gpt_request(message.text) await answer.edit_text(response.choices[0].message.content) await state.clear()

Из интересного здесь можно ответить состояния, используемые в проекте. С их помощью мы не даем пользователю создавать новые запросы во время генерации текста нейросетью и просим дождаться ответа.

Генерация ответа (gpt.py):

import osimport httpxfrom openai import AsyncOpenAIgpt = AsyncOpenAI(api_key=os.getenv("AI_KEY"), http_client=httpx.AsyncClient())async def gpt_request(text): response = await gpt.chat.completions.create( messages=[{"role": "user", "content": str(text)}], model="gpt-4o" ) return response

Так как весь наш бот асинхронный, мы будем использовать модуль AsyncOpenAI.

И здесь также AI_KEY записан в переменные окружения.

Важно, чтобы к вашему аккаунту был подключен биллинг, иначе будет возникать ошибка квоты.

Деплой в облако

Подготовим файл зависимостей

Для деплоя в облакоAmvera, нам нужно создать файл зависимостей - requirements.txt. В нашем случае он будет небольшой, т.к. мы используем лишь 2 библиотеки, требуемые загрузки через pip.

requirements.txt:

aiogram==3.10.0openai==1.40.6

Зарегистрируемся поссылке, указав все требуемые данные.

После регистрации убеждаемся в получении бесплатного баланса исоздаем новый проект.

  1. В открывшемся окне вписываем данные о названии проекта и выбираем тариф. Желательно для рабочего проекта выбирать тариф не ниже Начального.

Интеграция модели GPT-4 Omni в телеграм бота на Python (4)
  1. Далее, открывается окно загрузки данных. Мы можем загрузить код прямо через интерфейс в этом окне, либо воспользоваться инструментом git. Пока пропустим загрузку данных и нажмем Далее

  2. Окно конфигурации. Именно здесь создается amvera.yml — инструкция для проекта. Выбираем окружение Python, инструмент pip. Теперь открываются дополнительные секции. Самое главное — версия Python (version), путь до главного файла (scriptName) и путь до файла зависимостей (requirements.txt)

После утверждения настроек мы можем завешать создание проекта.

Открываем страницу проекта и обязательно добавляем переменные окружения, используя кнопку “Создать секрет” во вкладке “Переменные”.

Интеграция модели GPT-4 Omni в телеграм бота на Python (5)

На этом завершается настройка проекта.

Доставка кода через Git

Как я уже сказал, можно воспользоваться загрузкой через сайт - это вкладка Репозиторий на странице проекта.

Но намного удобнее использовать git. С ним после небольшой настройки можно обновлять репозиторий, используя 3 команды.

Устанавливаем git и выполняем следующие команды в командной строке (убедитесь, что открыли cmd в директории с проектом):

  1. git init- инициализируем git (должна создаться папка .git)

  2. git remote add amvera https://git.amvera.ru/имя-пользователя/название-проекта- добавляем удаленный репозиторий (эту ссылку можно получить во вкладке “Репозиторий”.

  3. git add .- добавление всех файлов и папок в директории инициализированного git

  4. git commit -m "First commit"- первый коммит (обязательно с комментарием)

  5. git push amvera master- последнее действие - пуш файлов в репозиторий.

Сборка должна начаться автоматически.

Если вы все-таки решили загрузить все файлы вручную через интерфейс, после загрузки понадобится перейти во вкладку “Конфигурация” и нажать кнопку “Собрать”.

Теперь, если все пройдет успешно, бот заработает.

Итог

Теперь мы имеем доступ к относительно новой модели GPT-4 Omni прямо в телеграм!

Интеграция модели GPT-4 Omni в телеграм бота на Python (2024)

References

Top Articles
MDT to JST Converter - Savvy Time
Warne .22/11mm 30mm QD
Safety Jackpot Login
Regal Amc Near Me
Citibank Branch Locations In Orlando Florida
Unity Stuck Reload Script Assemblies
Teamexpress Login
O'reilly's In Monroe Georgia
Vocabulario A Level 2 Pp 36 40 Answers Key
Heska Ulite
Ap Chem Unit 8 Progress Check Mcq
New Mexico Craigslist Cars And Trucks - By Owner
Theycallmemissblue
Operation Cleanup Schedule Fresno Ca
Missed Connections Dayton Ohio
8664751911
Pay Boot Barn Credit Card
Gentle Dental Northpointe
Healthier Homes | Coronavirus Protocol | Stanley Steemer - Stanley Steemer | The Steem Team
Mail.zsthost Change Password
Understanding Genetics
Used Safari Condo Alto R1723 For Sale
LCS Saturday: Both Phillies and Astros one game from World Series
Craigslist Illinois Springfield
Walgreens 8 Mile Dequindre
Https E22 Ultipro Com Login Aspx
Top 20 scariest Roblox games
'Insidious: The Red Door': Release Date, Cast, Trailer, and What to Expect
Bolly2Tolly Maari 2
Craigslist Brandon Vt
Gesichtspflege & Gesichtscreme
Federal Express Drop Off Center Near Me
Dairy Queen Lobby Hours
Wheeling Matinee Results
Bernie Platt, former Cherry Hill mayor and funeral home magnate, has died at 90
Compress PDF - quick, online, free
Umiami Sorority Rankings
Fifty Shades Of Gray 123Movies
Metro Pcs Forest City Iowa
Craigs List Hartford
Nid Lcms
814-747-6702
Random Animal Hybrid Generator Wheel
How To Customise Mii QR Codes in Tomodachi Life?
Best Suv In 2010
Air Sculpt Houston
Benjamin Franklin - Printer, Junto, Experiments on Electricity
Mejores páginas para ver deportes gratis y online - VidaBytes
House For Sale On Trulia
About us | DELTA Fiber
Hkx File Compatibility Check Skyrim/Sse
Latest Posts
Article information

Author: Wyatt Volkman LLD

Last Updated:

Views: 5502

Rating: 4.6 / 5 (66 voted)

Reviews: 81% of readers found this page helpful

Author information

Name: Wyatt Volkman LLD

Birthday: 1992-02-16

Address: Suite 851 78549 Lubowitz Well, Wardside, TX 98080-8615

Phone: +67618977178100

Job: Manufacturing Director

Hobby: Running, Mountaineering, Inline skating, Writing, Baton twirling, Computer programming, Stone skipping

Introduction: My name is Wyatt Volkman LLD, I am a handsome, rich, comfortable, lively, zealous, graceful, gifted person who loves writing and wants to share my knowledge and understanding with you.