Itinai.com it development details code screens blured futuris c6679a58 04d0 490e 917c d214103a6d65 2

Руководство для разработчиков: возможности модели GPT-5 от OpenAI

Itinai.com it development details code screens blured futuris c6679a58 04d0 490e 917c d214103a6d65 2

Возможности модели GPT-5 от OpenAI: Руководство для разработчиков

В этом руководстве мы рассмотрим новые возможности, которые предлагает последняя модель OpenAI — GPT-5. Обновление включает в себя несколько мощных функций, таких как параметр «Подробность», свободный вызов функций, контекстно-свободная грамматика (CFG) и минимальное рассуждение. Мы обсудим, что они делают и как их можно применять на практике.

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

Чтобы начать работу, установите необходимые библиотеки с помощью следующей команды:

!pip install pandas openai

Для получения ключа API OpenAI посетите страницу OpenAI API Keys и создайте новый ключ. Если вы новый пользователь, вам может понадобиться добавить данные для выставления счетов и внести минимальный платеж в размере $5 для активации доступа к API.

import os
from getpass import getpass
os.environ['OPENAI_API_KEY'] = getpass('Введите ключ API OpenAI: ')

Параметр «Подробность»

Параметр «Подробность» позволяет контролировать уровень детализации ответов модели без изменения вашего запроса:

  • низкий → Краткие и лаконичные ответы, минимум лишнего текста.
  • средний (по умолчанию) → Сбалансированное сочетание детализации и ясности.
  • высокий → Очень детализированные ответы, идеально подходящие для объяснений, аудитов или обучения.
from openai import OpenAI
import pandas as pd
from IPython.display import display

client = OpenAI()

question = "Напиши стихотворение о детективе и его первом расследовании"

data = []

for verbosity in ["low", "medium", "high"]:
    response = client.responses.create(
        model="gpt-5-mini",
        input=question,
        text={"verbosity": verbosity}
    )

    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,
        "Пример вывода": output_text,
        "Токены вывода": usage.output_tokens
    })

df = pd.DataFrame(data)

pd.set_option('display.max_colwidth', None)
styled_df = df.style.set_table_styles(
    [
        {'selector': 'th', 'props': [('text-align', 'center')]},
        {'selector': 'td', 'props': [('text-align', 'left')]}
    ]
)

display(styled_df)

Токены вывода увеличиваются примерно линейно с увеличением подробности: низкий (731) → средний (1017) → высокий (1263).

Свободный вызов функций

Свободный вызов функций позволяет GPT-5 отправлять необработанные текстовые данные — такие как Python-скрипты, SQL-запросы или команды оболочки — напрямую в ваш инструмент, без JSON-форматирования, используемого в GPT-4. Это упрощает подключение GPT-5 к внешним средам выполнения, таким как:

  • Песочницы кода (Python, C++, Java и т.д.)
  • SQL-базы данных (выводит необработанный SQL напрямую)
  • Оболочки (выводит готовые к выполнению команды Bash)
  • Генераторы конфигураций
from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-5-mini",
    input="Пожалуйста, используйте инструмент code_exec для вычисления куба количества гласных в слове 'ананас'",
    text={"format": {"type": "text"}},
    tools=[
        {
            "type": "custom",
            "name": "code_exec",
            "description": "Выполняет произвольный python код",
        }
    ]
)

print(response.output[1].input)

Этот вывод показывает, как GPT-5 генерирует необработанный код на Python, который считает гласные в слове «ананас», вычисляет куб этого количества и выводит оба значения. Вместо возврата структурированного JSON-объекта, GPT-5 предоставляет простой исполняемый код, что позволяет выполнять его напрямую в среде Python.

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

Контекстно-свободная грамматика (CFG) определяет допустимые строки в языке через правила продукции. CFG полезны для ограничения вывода модели, чтобы гарантировать, что он соответствует синтаксису языка программирования или формата данных, такого как SQL или JSON.

Для сравнения мы запустим один и тот же скрипт, используя GPT-4 и GPT-5 с идентичной CFG, чтобы увидеть, как обе модели соблюдают правила грамматики и как их выводы различаются по точности и скорости.

from openai import OpenAI
import re

client = OpenAI()

email_regex = r"^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$"

prompt = "Дайте мне действительный адрес электронной почты для Джона Доу. Это может быть фиктивный адрес."

response = client.responses.create(
    model="gpt-4o",
    input=prompt
)

output = response.output_text.strip()
print("Вывод GPT:", output)
print("Действителен?", bool(re.match(email_regex, output)))

response = client.responses.create(
    model="gpt-5",
    input=prompt,
    text={"format": {"type": "text"}},
    tools=[
        {
            "type": "custom",
            "name": "email_grammar",
            "description": "Выводит действительный адрес электронной почты.",
            "format": {
                "type": "grammar",
                "syntax": "regex",
                "definition": email_regex
            }
        }
    ],
    parallel_tool_calls=False
)

print("Вывод GPT-5:", response.output[1].input)

Этот пример демонстрирует, как GPT-5 может более точно следовать заданному формату при использовании контекстно-свободной грамматики. GPT-4 выдал лишний текст вокруг адреса электронной почты, что сделало его недействительным согласно строгим требованиям формата. В отличие от этого, GPT-5 вывел именно «john.doe@example.com», что соответствует грамматике и проходит проверку.

Минимальное рассуждение

Режим минимального рассуждения запускает GPT-5 с очень небольшим количеством или без токенов рассуждения, что снижает задержку и обеспечивает более быстрое время до первого токена. Это идеально подходит для детерминированных, легковесных задач, таких как:

  • Извлечение данных
  • Форматирование
  • Краткие переписывания
  • Простая классификация

Поскольку модель пропускает большинство промежуточных шагов рассуждения, ответы получаются быстрыми и лаконичными. Если не указано иное, усилие рассуждения по умолчанию составляет среднее.

import time
from openai import OpenAI

client = OpenAI()

prompt = "Классифицируйте данное число как четное или нечетное. Верните только одно слово."

start_time = time.time()

response = client.responses.create(
    model="gpt-5",
    input=[
        { "role": "developer", "content": prompt },
        { "role": "user", "content": "57" }
    ],
    reasoning={
        "effort": "minimal"
    },
)

latency = time.time() - start_time

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_text)
print(f"Задержка: {latency:.3f} секунд")

В этом примере модель быстро классифицирует число как четное или нечетное, демонстрируя эффективность минимального рассуждения.

Для дальнейшего изучения посетите нашу страницу на GitHub для руководств, кодов и ноутбуков. Подписывайтесь на нас в Twitter и присоединяйтесь к нашему сабреддиту по машинному обучению.

Новости в сфере искусственного интеллекта