Skip to content

Микросервис для генерации ответов на вопросы к базе знаний.

Notifications You must be signed in to change notification settings

philadelphia-rus/znayu-ai

Repository files navigation

"Знаю" - Микросервис и чатбот в телеграм для генерации ответов на вопросы

Этот проект использует OpenAI для генерации ответов на вопросы к базе знаний.

Навигация

Стек

Основной язык: Python 3.8+

  • openai - API для генерации текста
  • scikit - TF-IDF векторизация текста и подсчет косинусной близости
  • fastapi - API для сервиса
  • aiogram - API для бота в телеграм

Описание механизма генерации ответа

Подготовка базы знаний

  1. В базе знаний хранятся пары вопрос-ответ. Вопросы и ответы представлены в виде текста.
  2. Для удобства и в целях демонстрации имеется метод add_knowledge, позволяющий в рантайме добавить новую пару. Эта пара пропадает после перезапуска сервиса.

Генерация ответа на вопрос

  1. Пользователь задает вопрос
  2. Сервис ищет в базе знаний похожие вопросы (TOP_N вопросов). Поиск осуществляется по TF-IDF векторам вопросов.
  3. Сервис генерирует ответ на вопрос с помощью OpenAI API. В качестве входных данных используется вопрос и ответы на похожие вопросы.
  4. Сервис возвращает ответ пользователю.

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

echo "OPENAI_API_KEY='OPENAI_TOKEN_HERE'"  >> .env
echo "TELEGRAM_BOT_TOKEN='TELEGRAM_TOKEN_HERE'" > .env
make install

# Запуск сервиса
make start_bot               # Запуск бота в телеграм
make start_service           # Запуск сервиса
make start_docker_fastapi    # Запуск сервиса в докере

Фичи

  • Динамическое измнение базы данных
  • Возможность использования в качестве телеграм бота
  • Наглядный интерфейс API

Скриншоты

chat_demonstration bot_in_group_demonstration api

Авторы

Команда Филадельфия по-русски в рамках хакатона EESTECH Challenge 2023 от EESTEC LC Saint-Petersburg - hack link

Команда:

Команда Роль
Тампио Илья Python: ML, Backend
Свириденко Сергей Java: Backend
Мизюлин Егор Dart/Flutter: Mobile