Skip to content
paNikitinPublic

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Агентные системы в бизнесе: проект desk

Код к семинарам курса «Агентные системы в бизнесе», ВШЭ, 2026.

За семестр мы строим одну систему: службу поддержки платёжного сервиса «Лира». Клиенты пишут в поддержку, а система разбирает обращения, ищет ответы в регламентах, проверяет платежи и передаёт сложные случаи человеку. На каждом семинаре в проекте появляется новая часть: сначала выкладывается заготовка, после занятия решение.

Как запустить

Нужен Python 3.9 или новее.

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env

В .env впишите свой ключ в строку LLM_API_KEY=. Ключ выдаёт преподаватель, у каждого он свой и с дневным лимитом. Не выкладывайте его: файл .env уже в .gitignore.

У ключа есть и лимит 10 запросов в минуту. Клиент сам выдерживает паузы по строке LLM_RPM=10 в .env, поэтому замер трёх кандидатов на 30 обращениях идёт около девяти минут, а задержка в таблице считается без ожидания.

Тесты работают без ключа и без сети:

python -m pytest tests

Как получить новый семинар

Работайте в своём форке этого репозитория. Заготовка каждого нового семинара появляется здесь перед занятием, и её подтягивают в форк так:

git remote add upstream https://github.com/paNikitin/asbiz.git   # один раз
git pull upstream main

Если вы меняли в форке те же строки, что изменились в заготовке, git попросит разрешить конфликт вручную.

Что где лежит

  • desk/: код проекта.
  • tests/: тесты.
  • data/: обращения клиентов с правильной разметкой и правила разметки.
  • runs/: сюда скрипты сохраняют результаты замеров.

Семинары

Семинар 1. Клиент к модели и замер кандидатов

  • Отправили запрос к модели вручную и посмотрели, из чего состоит ответ: блоки, причина остановки, счёт токенов (1_raw_request.py).
  • Написали клиент desk/llm.py. Через него идут все вызовы модели: он повторяет запрос при сбоях, считает токены и деньги, хранит кэш ответов.
  • Добавили потоковую выдачу (desk/stream.py) и научились мерить время до первого токена.
  • Проверили, как положение даты в постановке влияет на кэш у провайдера (3_prefix_cache.py).
  • Сравнили на 30 обращениях три способа поставить модели задачу: короткую постановку, постановку с правилами и те же правила с рассуждением (desk/bench.py). Выбор кандидата записывается по шаблону выбор_шаблон.md.
python 1_raw_request.py
python 3_prefix_cache.py
python -m desk.bench --n 30

Домашнее задание: дз_1.md.

Семинар 2. Разбор обращения по схеме

Собираем функцию triage(text): она разбирает обращение и возвращает объект Ticket с категорией, срочностью, цитатой, номерами платежей, суммой и пометкой, нужен ли человек. Схема проверяет, что модель ничего не выдумала. Задание: задание.md.

Домашнее задание: дз_2.md.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages