/
Вопросы и ответы
/
Промт-инжиниринг
/

Как контролировать длину ответа языковой модели?

Как контролировать длину ответа языковой модели?

17 дней назад

Никита Вихров

Ответы

0

Как контролировать длину ответа языковой модели

Модель не знает, сколько текста вам нужно, если не сказать явно. Одни задачи требуют одной строки, другие — подробного объяснения.

Два способа ограничения

1. Через параметр max_tokens

Жесткое ограничение: модель обрывается, когда достигает лимита. Используйте как защиту от аномально длинных ответов.

from openai import OpenAI

client = OpenAI()

resp = client.chat.completions.create(
    model="gpt-4.1",
    max_tokens=100,  # жесткий потолок
    messages=[
        {"role": "user", "content": "Объясни, что такое рекурсия"}
    ]
)

print(resp.choices[0].message.content)

2. Через явное указание в тексте запроса

Более надежный способ для большинства задач.

prompts = {
    "краткий": "Объясни, что такое рекурсия. Ответ — одно предложение.",
    "средний": "Объясни, что такое рекурсия. Ответ — три-четыре предложения.",
    "подробный": "Объясни, что такое рекурсия. Приведи пример кода на Python. Объясни, когда применять."
}

for режим, запрос in prompts.items():
    resp = client.chat.completions.create(
        model="gpt-4.1",
        max_tokens=512,
        messages=[{"role": "user", "content": запрос}]
    )
    print(f"--- {режим} ---")
    print(resp.choices[0].message.content)

Пример адаптации под контекст

def build_prompt(question: str, context: str) -> str:
    limits = {
        "chat": "Ответь кратко — не больше двух предложений.",
        "article": "Дай развернутый ответ с примером кода.",
        "hint": "Дай только подсказку, не раскрывай решение целиком."
    }
    limit = limits.get(context, "Ответь по делу.")
    return f"{question}\n\n{limit}"

Правила

  • max_tokens — это предохранитель, а не инструмент форматирования.
  • Точный формат ("одно предложение", "три абзаца") всегда надежнее числа токенов.
  • Для разных точек входа (чат, подсказка, статья) используйте разные правила длины.

17 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845