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)