Задача: Необходимо разработать сервис для LLM-чата. Перед отправкой запроса в модель нужно собрать
список сообщений так, чтобы уложиться в лимит токенов. Реализуйте endpoint POST /prepare-context.
Нужно написать FastAPI-приложение с одним endpoint, который принимает системный промпт, историю сообщений и лимиты, а возвращает готовый список сообщений для LLM.
Входные данные
{
"system_prompt": "Ты HR-консультант.",
"messages": [
{"role": "user", "content": "Привет"},
{"role": "assistant", "content": "Здравствуйте!"},
{"role": "user", "content": "Что такое ИПР?"}
],
"max_tokens": 1000,
"reserve_for_answer": 200
}
Выходные данные
{
"messages": [
{"role": "system", "content": "Ты HR-консультант."},
{"role": "assistant", "content": "Здравствуйте!"},
{"role": "user", "content": "Что такое ИПР?"}
],
"total_tokens": 850,
"dropped_count": 1
}
Правила алгоритма:
max_tokens - reserve_for_answer - токены(system_prompt).Можно использовать tiktoken, либо для простоты len(text.split()).