Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 

Repository files navigation

PSB_hackaton

Хакатон AI Challenge

Запуск приложения:

Для корректной работы должны быть установлены переменные окружения, необходимые для работы с Yandex Cloud

pip install requirements.txt
cd ai_manager
python manage.py ruserver

Модули проекта:

  • ai_manager - основной Django-проект
  • mail_interactions - взаимодействие с электронной почтой (отправка и получение сообщений)
  • llm - взаимодействие с LLM моделями при помощи Yandex Cloud
  • web_app - веб-приложение, взаимодействие с запросами и БД

Модуль mail_interactions

imap.py

Функция take_massege()

  1. Заходит в ящик hacatontest@gmail.com
  2. Просматривает первое непрочитанное письмо на электронной почте hacatontest@gmail.com и берет оттуда:
  • Дату отправления письма(в формате: "Mon, year day Nov 23:59:59 -1100 PST")
  • Адрес ящика с которого было отправленно письмо на почту банка
  • Тему сообщения
  • Текст сообщения
  • Все приложенные файлы
  1. Собирает массив из этих данных и отправляет в базу данных
  2. Выходит из ящика

smpt.py

Функция send_mail(mail: str, subject: str, text: str, *args: str)

Входные данные:

  • mail - адрес электронной почты на которую нужно отправить сообщение
  • subject - тема сообщения
  • text - тело сообщения
  • *args - названия вложенных в письмо файлов
  1. Входит в ящик hacatontest@gmail.com
  2. Собирает письмо по отправленным в нее данным
  3. Отправляет письмо на выбранную почту
  4. Выходит из аккаунта

Модуль llm

Подмодуль llm_bank_employee

Генерация промптов для имитации поведеления сотрудника банка

bank_employee_base_prompt.txt, bank_employee_examples.txt, bank_employee_routing_examples.txt, bank_employee_constants.py

Файлы, хранящие тексты промптов (основной промпт, примеры, запись промпта в константы)

llm_bank_employee.py

Класс, содержащий функции - типы запросов (задач), которые обрабатывает сотрудник банка. Исходя из переданных аргументов и промпта создаётся запрос в LLM по API

get_type(self, author: str, letter: str) -> str:

Определеяеи категорию письма (запрос документов/жалоба/etc)

  • param: author: автор письма
  • param: letter: текст письма
  • return: ответ LLM (json с определённой категорией обращения)
make_routes(self, author: str, person_info: str, letter: str, category: str, is_correct: str, comment: str) -> str:

Определение отделов, в которые необходимо перенеправить письмо

  • param: author: автор письма
  • param: person_info: информация об авторе
  • param: letter: текст письма
  • param: category: категория письма
  • param: is_correct: корректность письма с юридической точки зрения
  • param: comment: комментарий по наличию противоречий с законодательством или их отсутствии
  • return: ответ LLM (json с перечнем отделов, в которые необходимо перенапрвить, объяснением причины, текстами писем для отделов)
make_answer(self, author: str, person_info: str, letter: str, category: str, is_correct: str, comment: str, routes: str, correspondence_context: str) -> str:

Написание ответа на письмо

  • param: author: автор письма
  • param: person_info: информация об авторе
  • param: letter: текст письма
  • param: category: категория письма
  • param: is_correct: корректность письма с юридической точки зрения
  • param: comment: комментарий по наличию противоречий с законодательством или их отсутствии
  • param: routes: информация о необходимости перенаправления в другие отделы
  • param: correspondence_context: информация о предыдущем контексте переписки с данным отправителем
  • return: ответ LLM (json с ответом на письмо)

Подмодуль llm_lawyer

Генерация промптов для имитации поведеления юриста

llm_lawyer_base_prompt.txt, llm_lawyer_examples.txt, llm_lawyer_constants.py

Файлы, хранящие тексты промптов (основной промпт, примеры, запись промпта в константы)

llm_lawyer.py

Класс, содержащий функции - типы запросов (задач), которые обрабатывает юрист. Исходя из переданных аргументов и промпта создаётся запрос в LLM по API

check_correctness(self, author: str, letter: str, category: str) -> str:

Функция, проверяющая письмо на корректность с юридической точки зрения

  • param: author: автор письма
  • param: letter: текст письма
  • param: category: категория письма
  • return: ответ LLM (json с вердиктом о корректности письма, комментарием насчёт наличия противоречий с законодательством, перечнем связанных законов, найденной информации об авторе письма)

Модуль web_app

Модуль веб-приложения, написанного на Django

views.py

Функции для обработки запросов

index(request)

Обработка запросов, поступающих на главную страницу

  1. Получает данные о письме
  • При GET-запросе получает данные о самом раннем непрочитанном письме в ящике. Если письмо найдено, получает данные об авторе и тексте письма. Если письмо не найдено, отображает форму для ручного ввода
  • При POST-запросе получает данные об авторе и тексте письма, введённые пользователем в форму
  1. Отправляет данные в LLM с помощью методов классов LlmBankEmployee и LlmLawyer: сначала определяется категория письма, после заключение юриста, после отделы, которым необходимо перенаправить письмо. Исходя из полученных сведений и данных о предыдущем контексте переписки с данным отправителем генерируется ответ на письмо. Письмо добавляется в БД.
  2. Результаты взаимодействия с LLM передаются в контекст, пользователь видит отображение с помощью html

mail_sending(request)

Обработка запросов, поступающих на url для автоматической отправки писем. Поддерживает отправку без перезагрузки предыдущей страницы, если в ней прописан AJAX-запрос.

  1. Из тела запроса получаются данные об адресе электронной почты, теме и тексте письма
  2. Отправляется письмо с полученными данными

forms.py

Классы форм

LetterForm(forms.Form)

Класс формы для ввода письма

  • author: автор письма
  • letter: текст письма

models.py

Классы моделей для БД

Sender(models.Model)

Отправитель письма

  • name: наименование организации
  • email: адрес электронной почты

Letter(models.Model)

Письмо

  • author: автор письма. ForeingKey к классу Sender
  • text: текст письма

About

Хакатон AI Challenge

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages