Skip to content

Final Software Engineering project using the CharGPT3.5-Turbo API

Notifications You must be signed in to change notification settings

Lemeri02/ChatGPT3.5-Turbo

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Итоговой проект по программной инженерии: Телеграм бот + Fast API + OpenAI API

Проект состоит из двух микросервисов: телеграм бота и Fast API сервера.

Ссылка на проект: http://83.220.171.48:8080/docs

Ссылка на телеграм бот: https://t.me/urfus_bot

Оглавление

Оглавление

Цель проекта

Разработать Web или API приложение машинного обучения и развернуть его в облаке.

Описание проекта

Схема микросервисов:

json-answer

Команды бота и эндпоинты API сервера:

Команды бота:

/img - генерация изображения

любое сообщение - общение с ботом

Эндпоинты API сервера:

POST /chat
curl -X POST -H "Content-Type: application/json" -d '{"token": "123", "prompt": "Напиши пример fast api сервера"}' http://83.220.171.48:8080/chat

POST /image
curl -X POST -H "Content-Type: application/json" -d '{"token": "123", "prompt": "Бобер в беретке"}' http://83.220.171.48:8080/image

Настройка окружения

Требование к оркужению

  • Интерпретатор Python не ниже 3.8
  • подключение к интернету
  • OS Ubuntu 20+ или Windows(IDE: PyCharm)
  • Docker и docker-compose

Склонируйте репозиторий:

git clone https://github.com/vadim328/ChatGPT3.5-Turbo.git

Перейдите в директорию проекта:

cd ChatGPT3.5-Turbo

Настройка окружения телеграм бота

В директории /bot создать файл .env (для примера есть файл /bot/.env.example).

В файле .env прописать следующие переменные окружения:

BOT_TOKEN=12345:AbcdeqwertY
FASTAPI_ACCESS_TOKEN='123'
SERVER_URL='http://server:8080'

BOT_TOKEN - Создайте бота и получите токен от @BotFather

FASTAPI_ACCESS_TOKEN - токен для доступа в Fast API сервер

SERVER_URL - адрес Fast API сервера. При запуске через docker-compose, адрес http://server:8080, или http://127.0.0.1:8000 при запуске без докера.

Настройка окружения Fast API сервера

В директории /server создать файл .env (для примера есть файл /server/.env.example).

В файле .env прописать следующие переменные окружения:

OPENAI_ACCESS_TOKEN="my token"
OPENAI_COMPLETIONS_URL="https://api.openai.com/v1/chat/completions"
OPENAI_IMAGE_URL="https://api.openai.com/v1/images/generations"
OPENAI_TRANSLATE_URL="https://api.openai.com/v1/completions"
OPENAI_GPT_MODEL="gpt-3.5-turbo"

FASTAPI_ACCESS_TOKEN='123'

OPENAI_ACCESS_TOKEN - необходимо получить в OpenAI.com

FASTAPI_ACCESS_TOKEN - токен для доступа в Fast API сервер, должен быть таким же как в телеграм боте.

OPENAI_GPT_MODEL - модель openai

OPENAI_COMPLETIONS_URL - адрес API openai для генерации общения

OPENAI_IMAGE_URL - адрес API openai для генерации изображений

OPENAI_TRANSLATE_URL - адрес API openai для перевода текста на английский. Задействован внутри сервиса как посредник между пользовательским запросом и генератором изображений, так как генератор изображений не совсем понимает русский язык.

Запуск проекта

Запуск телеграм бота

Перейти в папку микросервиса /bot

Создать виртуальное окружение python и активировать:

python -m venv botenv

source botenv/bin/activate

Установите зависимости:

pip install -r requirements.txt

Запустить бота:

python bot.py

Запуск Fast API сервера

Перейти в папку микросервиса /server

Создать виртуальное окружение python и активировать:

python -m venv serverenv

source serverenv/bin/activate

Установите зависимости:

pip install -r requirements.txt

Запускаем проект командой

uvicorn app:app

Приложение будет доступно на порту 8000.

Запуск проекта в докер контейнере

Для удобства развертывания добавили Dockerfile для каждого микросервиса.

Можно запустить таким образом (примерчание: при запуске проекта в докер-контейнере отдельная установка зависимостей из requirements.txt не требуется):

docker-compose build

docker-compose up -d

Приложение FAST API будет доступно на порту 8080. Телеграм бот - по адресу бота.

Запуск тестов

Запуск тестов производится с помощью команды pytest в каталогах с микросервисами.

pytest

Работа с проектом

  1. Открываем в браузере адрес:
http://83.220.171.48:8080/docs 

В методы POST /chat и POST /image отправляем запросы в формате JSON:

{"token":  "123", "prompt":  "текст вопроса"}

POST /chat - принимает вопросы и отвечает

POST /image - необходимо отправить запрос на генерацию изображения, например, "Бобер в беретке" вернет такой результат:

json-answer

Ответ возвращается в виде json со ссылкой на сгенерированное изображение.

При разворачивании проекта на локальном ПК, fast api сервер обычно доступен по адресу http://127.0.0.1:8000

Пример как работает программа

Пример ответа бота:

json-answer

Пример генерации изображения:

json-answer

Issues

Мы используем GitHub issues для отслеживания ошибок. Пожалуйста, убедитесь, что ваше описание понятно и содержит достаточные инструкции для воспроизведения проблемы.

Глоссарий

  • OpenAI - исследовательско-разработческая компания, которая занимается разработкой искусственного интеллекта. Разработчик ChatGPT 3, 4 итд.
  • Telebot - библиотека Python для создания Telegram ботов. Она предоставляет простой и удобный интерфейс для взаимодействия с Telegram API и создания функциональных ботов.
  • Fast API - современный веб-фреймворк для создания REST API на Python. Он основан на стандарте OpenAPI и использует типизацию данных и асинхронное программирование, что делает его быстрым, эффективным и простым в использовании.

Ссылки

Авторы проекта

студенты 1 курса магистратуры "Инженерия машинного обучения" УрФУ.

Июнь, 2023 год.

About

Final Software Engineering project using the CharGPT3.5-Turbo API

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 95.8%
  • Dockerfile 4.2%