Загрузка данных


TOOL_UNAVAILABLE_MESSAGE = (
    "Для этого запроса нужен инструмент, которого в приложении пока нет."
)
UNKNOWN_STEP_MESSAGE = "Модель выбрала неизвестный следующий шаг."

def route_decision(decision):
    # Верни результат для одной из трёх веток или неизвестной метки.
    if decision["next_step"].strip() == "final_answer":
        return decision["message"].strip()
    if decision["next_step"] == "need_user_data":
        return decision["message"]
    if decision["next_step"].strip() == "need_tool":
        return TOOL_UNAVAILABLE_MESSAGE
    else:
        return UNKNOWN_STEP_MESSAGE



def handle_request(client, model, user_message):
    # Свяжи подготовку сообщений, один шаг LLM и маршрутизацию.
    messages = build_messages(user_message)
    answer = request_decision(client, model, messages)
    if answer is None:
        return TECHNICAL_ERROR_MESSAGE
    return route_decision(answer)