Files

43 lines
3.7 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Тестовое задание: Определить товар по сообщению покупателя
Нужно сделать простого 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-репозиторий.