<НА ГЛАВНУЮ

GPT-5: Практическое руководство по Verbosity, функциям, CFG и Minimal Reasoning

'Краткое руководство для разработчиков по возможностям GPT-5: настройка verbosity, свободные вызовы функций, грамматики и режим минимального рассуждения с кодом.'

Установка библиотек

Установите необходимые Python-пакеты и задайте ключ API в переменных окружения.

!pip install pandas openai
import os
from getpass import getpass
os.environ['OPENAI_API_KEY'] = getpass('Enter OpenAI API Key: ')

Параметр Verbosity

Параметр Verbosity управляет длиной и детализацией ответов GPT-5 без изменения самого запроса.

  • low 1 короткие и емкие ответы.
  • medium (по умолчанию) 1 сбалансированная детализация и ясность.
  • high 1 подробные объяснения, полезно для обучения и аудита.

Пример ниже запускает один и тот же запрос с тремя значениями verbosity и собирает токен-метрики и ответы.

from openai import OpenAI
import pandas as pd
from IPython.display import display
 
client = OpenAI()
 
question = "Write a poem about a detective and his first solve"
 
data = []
 
for verbosity in ["low", "medium", "high"]:
    response = client.responses.create(
        model="gpt-5-mini",
        input=question,
        text={"verbosity": verbosity}
    )
 
    # Extract text
    output_text = ""
    for item in response.output:
        if hasattr(item, "content"):
            for content in item.content:
                if hasattr(content, "text"):
                    output_text += content.text
 
    usage = response.usage
    data.append({
        "Verbosity": verbosity,
        "Sample Output": output_text,
        "Output Tokens": usage.output_tokens
    })
 
# Create DataFrame
df = pd.DataFrame(data)
 
# Display nicely with centered headers
pd.set_option('display.max_colwidth', None)
styled_df = df.style.set_table_styles(
    [
        {'selector': 'th', 'props': [('text-align', 'center')]},  # Center column headers
        {'selector': 'td', 'props': [('text-align', 'left')]}     # Left-align table cells
    ]
)
 
display(styled_df)

В этом примере количество выходных токенов приблизительно линейно растет с увеличением verbosity: low (731) 1 medium (1017) 1 high (1263).

Free-form function calling

GPT-5 может генерировать «сырые» текстовые полезные нагрузки, например готовые Python-скрипты, SQL-запросы или команды оболочки. Это упрощает передачу результатов модели напрямую в среду выполнения без дополнительных обёрток.

Пример, где модель генерирует Python-код для подсчета гласных и вычисления куба:

from openai import OpenAI
 
client = OpenAI()
 
response = client.responses.create(
    model="gpt-5-mini",
    input="Please use the code_exec tool to calculate the cube of the number of vowels in the word 'pineapple'",
    text={"format": {"type": "text"}},
    tools=[
        {
            "type": "custom",
            "name": "code_exec",
            "description": "Executes arbitrary python code",
        }
    ]
)
 
print(response.output[1].input)

Такой выход можно напрямую запускать в целевой среде выполнения.

Контекстно-свободная грамматика (CFG)

CFG задаёт правила для допустимых строк языка. С её помощью можно жёстко ограничить вывод модели, чтобы он строго соответствовал нужному синтаксису (например, корректный SQL или JSON). GPT-5 демонстрирует лучшую точность в соблюдении таких ограничений.

Пример без грамматики (модель может добавить поясняющий текст):

from openai import OpenAI
import re
 
client = OpenAI()
 
email_regex = r"^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$"
 
prompt = "Give me a valid email address for John Doe. It can be a dummy email"
 
# No grammar constraints -- model might give prose or invalid format
response = client.responses.create(
    model="gpt-4o",  # or earlier
    input=prompt
)
 
output = response.output_text.strip()
print("GPT Output:", output)
print("Valid?", bool(re.match(email_regex, output)))

И пример с грамматикой для GPT-5, которая возвращает строгое соответствие регулярному выражению:

from openai import OpenAI
 
client = OpenAI()
 
email_regex = r"^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$"
 
prompt = "Give me a valid email address for John Doe. It can be a dummy email"
 
response = client.responses.create(
    model="gpt-5",  # grammar-constrained model
    input=prompt,
    text={"format": {"type": "text"}},
    tools=[
        {
            "type": "custom",
            "name": "email_grammar",
            "description": "Outputs a valid email address.",
            "format": {
                "type": "grammar",
                "syntax": "regex",
                "definition": email_regex
            }
        }
    ],
    parallel_tool_calls=False
)
 
print("GPT-5 Output:", response.output[1].input)

GPT-4-подобные ответы иногда добавляют окружающий текст, нарушающий строгую валидацию, в то время как GPT-5 может вывести точную строку, соответствующую грамматике.

Minimal reasoning

Режим minimal reasoning убирает большую часть внутренних шагов рассуждения модели, снижая задержку и ускоряя появление первого токена. Это полезно для простых, детерминированных задач: извлечение данных, форматирование, короткие перефразирования и простая классификация.

import time
from openai import OpenAI
 
client = OpenAI()
 
prompt = "Classify the given number as odd or even. Return one word only."
 
start_time = time.time()  # Start timer
 
response = client.responses.create(
    model="gpt-5",
    input=[
        { "role": "developer", "content": prompt },
        { "role": "user", "content": "57" }
    ],
    reasoning={
        "effort": "minimal"  # Faster time-to-first-token
    },
)
 
latency = time.time() - start_time  # End timer
 
# Extract model's text output
output_text = ""
for item in response.output:
    if hasattr(item, "content"):
        for content in item.content:
            if hasattr(content, "text"):
                output_text += content.text
 
print("--------------------------------")
print("Output:", output_text)
print(f"Latency: {latency:.3f} seconds")

Ресурсы

Используйте приведённые образцы как основу для интеграции GPT-5 в ваши пайплайны и окружения выполнения. Полные примеры и репозитории помогут протестировать и масштабировать эти подходы.

🇬🇧

Switch Language

Read this article in English

Switch to English