Add FastAPI endpoint and catalog loader
This commit is contained in:
1 parent
033036db76
commit
daf107feed
10 files changed
+694
No files matched your search
@@ -0,0 +1,43 @@
|
||||
Тестовое задание: Определить товар по сообщению покупателя
|
||||
Нужно сделать простого AI-агента для продаж. Одна из его базовых задач - понять, о каком товаре из каталога магазина спрашивает покупатель, который пишет живым языком: с опечатками, сокращениями и лишними словами.
|
||||
|
||||
Ожидаемый объём: 4-6 часов чистой работы.
|
||||
|
||||
Дано
|
||||
catalog_exel.csv - каталог магазина (~500 позиций): sku, name, unit, price.
|
||||
messages.txt - ~40 реальных по духу сообщений покупателей «как есть».
|
||||
|
||||
Сделать
|
||||
HTTP-сервис на Python 3.12 + FastAPI с одним эндпоинтом POST /match.
|
||||
|
||||
Запрос:
|
||||
|
||||
{"messages": ["саморезы по дереву 4.2 на 75, пачку", ...]}
|
||||
|
||||
Ответ:
|
||||
|
||||
{"results": [{"message": "...", "status": "matched", "candidates": [{"sku": "SKU-123", "confidence": 0.87}]}]}
|
||||
Статусы: matched — уверен, candidates[0] и есть ответ; ambiguous — не уверен, 2-3 кандидата; not_found - товара нет в каталоге или запрос не про товар (candidates можно оставить пустым).
|
||||
|
||||
Формат запроса/ответа менять нельзя - мы проверяем сервис автоматически. Сервис должен подниматься одной командой - напиши её в README.
|
||||
|
||||
Важно: сервис должен работать полностью автономно - без интернета, без внешних API и без чьих-либо ключей (в том числе без вызовов LLM-API изнутри сервиса).
|
||||
Ключевое требование
|
||||
Ложных ответов должно быть по-минимому. Если система сомневается - ambiguous со списком кандидатов будет в разы лучше, чем уверенно выданный неправильный товар. Проверять будем в том числе на сообщениях, которых нет в messages.txt.
|
||||
|
||||
Обязательно
|
||||
README.md, три части:
|
||||
Как запустить (одной командой).
|
||||
Какие решения принял и ПОЧЕМУ: компромиссы, что попробовал и отбросил; что осознанно не сделал и что доделывал бы до продакшена.
|
||||
Раздел «Масштаб»: что изменится в твоём решении, если позиций в каталоге станет 2 миллиона (и жить он будет в PostgreSQL), а магазинов на одном сервисе - пятьдесят, у каждого свой каталог. Код под это писать не нужно - только инженерное рассуждение.
|
||||
Тесты (pytest), включая негативные сценарии.
|
||||
Git-репозиторий с осмысленной историей коммитов, а не одним коммитом «done».
|
||||
|
||||
Не нужно
|
||||
База данных (каталог можно держать в памяти), Docker, авторизация, фронтенд.
|
||||
|
||||
Про нейронки
|
||||
Для НАПИСАНИЯ кода пользоваться можно и нужно чем угодно (Claude, ChatGPT, Cursor, DeepSeek - что есть под рукой).
|
||||
|
||||
Сдача
|
||||
Ссылка на git-репозиторий.
|
||||
Reference in new issue
Block a user