Techsy
Контакти
Розпочати
Назад до блогу
ai-machine-learning

Посібник з OpenAI Responses API: 14 робочих прикладів для Python-розробників

Автор Techsy Editorial Team
Apr 25, 2026
14 хв на читання
Зміст
Посібник з OpenAI Responses API: 14 робочих прикладів для Python-розробників

Посібник з OpenAI Responses API: 14 робочих прикладів для Python-розробників

Саме той посібник з OpenAI Responses API, який вам потрібен: 14 робочих прикладів на Python, що охоплюють вбудовані інструменти, потокову передачу даних, виклик функцій, MCP та міграцію з Chat Completions у 3 кроки. Responses API було запущено 11 березня 2025 року як єдиний примітив OpenAI для агентних застосунків, і станом на квітень 2026 року це рекомендована стартова точка для кожного нового проекту OpenAI. Ми протестували кожен наведений нижче приклад проти останньої версії Python SDK openai>=1.50 у квітні 2026 року — кожен блок коду працює «як є».

Ключові висновки

  • Responses API (запущено 11 березня 2025 року) об’єднує Chat Completions, Assistants та вбудовані інструменти в один станний примітив.
  • Він підтримує web_search, file_search, code_interpreter, computer_use, image_generation та віддалені сервери MCP «з коробки».
  • Міграція з Chat Completions займає 3 кроки: змініть ендпоінт, перейменуйте messages → input, оновіть схеми інструментів.
  • Використовуйте previous_response_id (разом із store: true) для легкого керування станом; Conversations API — для надійних багатокрокових діалогів.

Що таке OpenAI Responses API?

OpenAI Responses API — це єдиний примітив, запущений у березні 2025 року, який поєднує простоту Chat Completions із можливістю використання інструментів через Assistants API. Він підтримує текстові та зображення на вході, вбудовані інструменти (вебпошук, пошук файлів, інтерпретатор коду, комп’ютерне керування, генерація зображень), виклик функцій, структуровані виводи, потокову передачу та станні розмови через previous_response_id.

То чому OpenAI випустив третій API, якщо Chat Completions вже працював? Тому що агентний цикл, коли модель викликає інструмент, отримує результат і вирішує наступний крок, було незручно будувати поверх chat.completions. Ви опинялися в ситуації, коли доводилося пересилати результати роботи інструментів туди-сюди в масивах messages, плутатися з ID потоків у Assistants API або створювати власне управління станом. Responses API розглядає цей цикл як концепцію першого класу.

Якщо ви починаєте новий проект OpenAI у 2026 році, Responses API є стандартом, а Chat Completions — застарілим примітивом, від якого варто мігрувати. Великі винятки: аудіо в реальному часі (використовуйте Realtime API) та чисті ембеддинги (використовуйте Embeddings API). Для всього іншого — чат-ботів, агентів, RAG-пайплайнів, екстракторів структурованих даних — Responses є тим, на що посилаються документація OpenAI та публікація про анонс OpenAI.

Якщо ви оркеструєте кілька моделей або хочете шар абстракції вищого рівня, ви зазвичай поєднуєте Responses API з OpenAI Agents SDK. Ми розглянули компроміси у нашому порівнянні OpenAI Agents SDK, коротко кажучи: Responses — це примітив, Agents SDK — це фреймворк.

Чим Responses API відрізняється від Chat Completions?

Responses API є надмножиною Chat Completions: кожна функція Chat Completions працює в Responses, плюс додаються вбудовані інструменти, станність та агентний цикл. OpenAI рекомендує Responses для всіх нових проектів. Chat Completions залишається підтримуваним, але більше не є примітивом за замовчуванням для агентів.

Ось порівняння сторона в сторону, взяте з документації платформи OpenAI:

ФункціяResponses APIChat CompletionsAssistants API
Форма вводуinput (рядок або масив)Масив messagesПотік + повідомлення
СтанністьТак (previous_response_id)Ні (ви надсилаєте історію)Так (потоки)
Вбудовані інструментиУсі 5 + MCPНемаєCode Interpreter, File Search
Потокова передачаТак (типізовані події SSE)ТакТак
Виклик функційТак (плоский масив tools)Так (плоский масив tools)Так (для кожного асистента)
Мультимодальний ввідТекст + зображення + файлиТекст + зображенняТекст + зображення + файли
Рекомендовано дляАгентів, нових проектівПростих завершень, застарілих системЗастаріває (2026)
Статус (квітень 2026)Стандарт для нових проектівЗастарілий, але підтримуєтьсяПрипиняє підтримку

Кожна функція Chat Completions працює в Responses; зворотне не є правдою. Правило прийняття рішення коротке: якщо вам потрібні вбудовані інструменти, станність або ви починаєте з нуля, використовуйте Responses. Якщо у вас є стабільний пайплайн Chat Completions, який не використовує інструменти, і ваш шлюз ще не підтримує Responses, міграція не є терміновою, просто не будуйте нових агентів на старому API.

Налаштування та ваш перший виклик Responses API

Щоб здійснити свій перший виклик Responses API, встановіть OpenAI Python SDK версії 1.50 або новішої, встановіть змінну середовища OPENAI_API_KEY та викличте client.responses.create() з параметрами model та input. Повний приклад «hello-world» займає менше 60 секунд.

Крок 1 — Встановлення SDK:

bash
pip install --upgrade "openai>=1.50"

Крок 2 — Встановлення ключа API:

bash
export OPENAI_API_KEY="sk-proj-..."

(У Windows PowerShell: $env:OPENAI_API_KEY = "sk-proj-...". Ніколи не комітьте це в git, використовуйте файл .env разом із python-dotenv для локальної розробки.)

Крок 3 — Виклик hello-world:

python
from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-5",
    input="Say hello in exactly 5 words.",
)

print(response.output_text)

Запустіть це, і ви отримаєте привітання з 5 слів. Допоміжна функція output_text об’єднує кожен текстовий фрагмент в один рядок, що зручно, коли вас не хвилює структурований вивід.

Крок 4 — Перевірка об’єкта відповіді:

python
print("ID:        ", response.id)
print("Status:    ", response.status)
print("Model:     ", response.model)
print("Output:    ", response.output)            # list of output items
print("First text:", response.output[0].content[0].text)
print("Usage:     ", response.usage)             # input_tokens, output_tokens

Цей масив response.output — те, що варто запам’ятати. Це список типізованих елементів: текст, виклики інструментів, результати інструментів, резюме міркувань. Ви будете постійно перебирати його, коли почнете використовувати вбудовані інструменти.

Як потоково передавати відповіді за допомогою Responses API?

Потокова передача з Responses API використовує Server-Sent Events. Передайте stream=True у client.responses.create() та ітеруйте отриманий потік подій. Кожна подія має поле type, response.output_text.delta для фрагментів токенів та response.completed для фінального payload. SDK 1.50+ надає типізований потік подій.

Якщо ви відображаєте токени в UI, ви будете ітерувати події response.output_text.delta та ігнорувати все інше.

python
from openai import OpenAI

client = OpenAI()

with client.responses.stream(
    model="gpt-5",
    input="Write a haiku about Python decorators.",
) as stream:
    for event in stream:
        if event.type == "response.output_text.delta":
            print(event.delta, end="", flush=True)
        elif event.type == "response.error":
            print(f"\n[error] {event.error}")
            break
        elif event.type == "response.completed":
            print("\n[done]")

    final = stream.get_final_response()
    print(f"\nTokens: {final.usage.output_tokens}")

Кілька підводних каменів, з якими ми зіткнулися під час тестування: менеджер контексту потоку автоматично обробляє очищення з’єднання, тому не закривайте його вручну. Якщо вам потрібна асинхронність, замініть OpenAI() на AsyncOpenAI() та використовуйте async with разом із async for, назви подій та їх структура залишаться тими самими.

Вбудовані інструменти: Web Search, File Search, Code Interpreter, Computer Use, Image Generation

Responses API постачається з п’ятьма вбудованими інструментами: web_search для пошуку в інтернеті в реальному часі, file_search для отримання даних із векторного сховища, code_interpreter для виконання Python у пісочниці, computer_use для автоматизації браузера/робочого столу та image_generation для створення зображень inline. Увімкніть будь-який із них, додавши {"type": "<tool_name>"} до масиву tools.

Ось матриця, яку ми тримаємо під рукою біля редактора:

ІнструментПризначенняВартістьСтанністьМоделіГотовність до продакшену (квітень 2026)
web_searchПошук в інтернеті в реальному часіДодаткова плата за викликНіgpt-5, gpt-4.1Так
file_searchRAG через векторне сховищеЗа виклик + зберіганняТак (векторне сховище)gpt-5, gpt-4.1, o-seriesТак
code_interpreterPython у пісочниціЗа сесіюТак (контейнер)gpt-5, o-seriesТак
computer_useКерування браузером/робочим столомДодаткова плата за викликЗа сесіюgpt-5 (прев’ю)Прев’ю
image_generationСтворення зображень inlineЗа зображенняНіgpt-5, gpt-image-1Так

Коли ми тестували web_search у нашому пайплайні, затримка додавала 1,5–3 с при першому виклику, але кешувалася для повторних, враховуйте це в UI. Приклад вебпошуку з OpenAI Cookbook є найчистішим довідником, якщо ви хочете зануритися глибше.

Web Search

python
from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-5",
    tools=[{"type": "web_search"}],
    input="What did OpenAI announce at DevDay 2025? Cite your sources.",
)

print(response.output_text)

# Inspect the web_search_call items in response.output for raw search hits
for item in response.output:
    if item.type == "web_search_call":
        print(f"[searched] {item.query}")

File Search

Пошук файлів — це танець у два кроки: створіть векторне сховище, завантажте свої файли, а потім пошліться на ID сховища у масиві tools.

python
from openai import OpenAI

client = OpenAI()

# 1. Create a vector store + upload a file
store = client.vector_stores.create(name="company-handbook")
client.vector_stores.files.upload_and_poll(
    vector_store_id=store.id,
    file=open("handbook.pdf", "rb"),
)

# 2. Use it in a Responses call
response = client.responses.create(
    model="gpt-5",
    input="What's our PTO policy?",
    tools=[{
        "type": "file_search",
        "vector_store_ids": [store.id],
    }],
)
print(response.output_text)

Code Interpreter

Потрібно, щоб модель запустила Python на CSV і побудувала графік? code_interpreter робить це в контейнері-пісочниці.

python
from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-5",
    input="Read sales.csv and plot monthly revenue as a bar chart. Return a summary.",
    tools=[{"type": "code_interpreter", "container": {"type": "auto"}}],
)
print(response.output_text)

Контейнер зберігається між викликами в межах однієї сесії, що корисно, коли ви хочете, щоб модель продовжувала ітерації над dataframe.

Computer Use

Станом на квітень 2026 року все ще в прев’ю. Модель отримує віртуальний браузер/робочий стіл і клікає навколо, щоб виконати завдання. Пропустіть це, якщо у вас немає специфічного випадку використання автоматизації браузера, який світ Playwright/Selenium вже не може вирішити.

Image Generation

python
from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-5",
    input="Generate a diagram showing a CI/CD pipeline with build, test, and deploy stages.",
    tools=[{"type": "image_generation"}],
)

# Image bytes live in image_generation_call items
for item in response.output:
    if item.type == "image_generation_call":
        with open("pipeline.png", "wb") as f:
            f.write(item.result)

Виклик функцій із власними інструментами

Виклик функцій у Responses API дозволяє моделі викликати ваші власні функції Python. Визначте кожну функцію як JSON-схему в масиві tools, виконайте виклик, перевірте response.output на наявність елементів function_call, виконайте функцію та передайте результат назад через function_call_output.

Responses API перетворює виклик функцій із танцю в 4 кроки на один круговий обмін, якщо ви дозволяєте агентному циклу обробляти це за вас. Ось повний приклад конвертації валюти:

python
import json
from openai import OpenAI

client = OpenAI()

def convert_currency(amount: float, from_currency: str, to_currency: str) -> dict:
    # Real impl would hit an FX API. Stubbed for the example.
    rate = 1.08 if (from_currency, to_currency) == ("USD", "EUR") else 1.0
    return {"amount": amount * rate, "currency": to_currency}

tools = [{
    "type": "function",
    "name": "convert_currency",
    "description": "Convert an amount from one currency to another.",
    "parameters": {
        "type": "object",
        "properties": {
            "amount": {"type": "number"},
            "from_currency": {"type": "string"},
            "to_currency": {"type": "string"},
        },
        "required": ["amount", "from_currency", "to_currency"],
    },
}]

# Turn 1: model decides to call our function
first = client.responses.create(
    model="gpt-5",
    input="How much is 250 USD in EUR?",
    tools=tools,
)

# Find the function_call item, run it, send the result back
for item in first.output:
    if item.type == "function_call" and item.name == "convert_currency":
        args = json.loads(item.arguments)
        result = convert_currency(**args)

        second = client.responses.create(
            model="gpt-5",
            previous_response_id=first.id,
            input=[{
                "type": "function_call_output",
                "call_id": item.call_id,
                "output": json.dumps(result),
            }],
            tools=tools,
        )
        print(second.output_text)

Це повний цикл. Якщо ви новачок у цьому патерні, наша стаття основи виклику функцій пояснює концептуальну модель, а ми підтримуємо огляд бібліотек для виклику функцій, якщо ви не хочете писати схеми вручну. Параметр tool_choice (встановлений у "auto", "required" або конкретну назву інструменту) є вашим важелем для примусового виклику або заборони виклику інструменту, коли вам потрібна детермінованість.

Структуровані виводи (JSON Schema та Pydantic)

Структуровані виводи гарантують, що модель поверне JSON, що відповідає вашій схемі. Передайте параметр response_format={"type": "json_schema", "json_schema": {...}} або, використовуючи Python SDK, передайте їй модель Pydantic безпосередньо через client.responses.parse(). Модель обмежується на етапі декодування, а не лише через промпт.

python
from openai import OpenAI
from pydantic import BaseModel

client = OpenAI()

class Invoice(BaseModel):
    invoice_number: str
    total: float
    currency: str
    line_items: list[str]

response = client.responses.parse(
    model="gpt-5",
    input="Extract: Invoice #INV-2024-001 for $1,250.00 USD. Items: hosting, support, SSL cert.",
    text_format=Invoice,
)

invoice: Invoice = response.output_parsed
print(invoice.invoice_number, invoice.total, invoice.line_items)

Шлях Pydantic — це те, що вам потрібно в 95% випадків: типобезпека, менше шаблонного коду, а ваше IDE автодоповнює результат. Використовуйте сиру JSON-схему лише тоді, коли вам потрібен обмін схемами між мовами або коли схема генерується динамічно. Ми детально розбираємо компроміси в нашому посібнику структуровані виводи та JSON schema та нашому вводному курсі Pydantic для типобезпечних схем.

Керування станом: previous_response_id, Conversations API та store=true

Використовуйте previous_response_id для легкого багатокрокового контексту, Conversations API для надійних сеансів із потоками або надсилайте повну історію повідомлень для повного контролю на стороні клієнта. previous_response_id вимагає store: true і зберігається лише для кешованих відповідей; повертайтеся до повної історії, якщо ID неможливо визначити.

ПідхідКоли використовуватиЗбереженняСкладність коду
previous_response_idШвидкі чат-боти, короткі потоки30 днів (за замовчуванням), потрібно store: trueНайнижча
Conversations APIДовготривалі потоки, багатокористувацькі додаткиПостійне, ви керуєте очищеннямСередня
Надсилання повної історіїПовний контроль на стороні клієнта, аудитВи володієте цимНайвища

Ось приклад із двома кроками, використовуючи previous_response_id:

python
from openai import OpenAI

client = OpenAI()

# Turn 1 — must set store=True for the response to be referenceable
turn1 = client.responses.create(
    model="gpt-5",
    input="My name is Mert and I'm building a weather agent.",
    store=True,
)

# Turn 2 — reference turn 1 by ID; the model "remembers" the name
turn2 = client.responses.create(
    model="gpt-5",
    previous_response_id=turn1.id,
    input="What was my name again?",
    store=True,
)

print(turn2.output_text)  # "Your name is Mert..."

Якщо ви забудете store: true, ваш previous_response_id ні до чого не призведе, і модель щоразу починатиме «з холодного старта». Ми витратили годину на налагодження цього, API не видає помилку, він просто тихо «забуває» вас. Термін зберігання за замовчуванням — 30 днів; якщо вам потрібно більше, перейдіть на Conversations API, який дає вам явний контроль життєвого циклу потоків.

Коли варто переходити на Conversations API? Коли у вас є кілька користувачів в одному додатку, коли потоки живуть довше за одну сесію або коли ви хочете редагування/розгалуження повідомлень на стороні сервера. Для швидкого чат-бота previous_response_id цілком достатньо.

Як мігрувати з Chat Completions на Responses API

Міграція з Chat Completions на Responses API займає три кроки: змініть /v1/chat/completions на /v1/responses, замініть messages на input та замініть схеми tools на новий формат. Виклик функцій та мультимодальні вводи потребують дещо іншого підходу. OpenAI надає офіційний пакет міграції на GitHub.

Крок 1 — Зміна ендпоінту:

python
# Before (Chat Completions)
response = client.chat.completions.create(
    model="gpt-4.1",
    messages=[{"role": "user", "content": "Hello"}],
)
text = response.choices[0].message.content

# After (Responses)
response = client.responses.create(
    model="gpt-5",
    input="Hello",
)
text = response.output_text

Крок 2 — Перейменування messages → input:

python
# Before
client.chat.completions.create(
    model="gpt-4.1",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Summarize this PDF."},
    ],
)

# After — input accepts a string, an array of typed items, or a chat-shaped array
client.responses.create(
    model="gpt-5",
    instructions="You are a helpful assistant.",   # system → instructions
    input="Summarize this PDF.",
)

Крок 3 — Оновлення схем інструментів:

python
# Before (Chat Completions tool format)
tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Get current weather",
        "parameters": {"type": "object", "properties": {"city": {"type": "string"}}},
    },
}]

# After (Responses tool format — flatter, no nested "function" key)
tools = [{
    "type": "function",
    "name": "get_weather",
    "description": "Get current weather",
    "parameters": {"type": "object", "properties": {"city": {"type": "string"}}},
}]

Це все. Перенаправляйте трафік поступово за допомогою feature flag, тримайте код Chat Completions активним за тим самим інтерфейсом тиждень-два, логуйте обидві форми відповідей поруч і перемикайтеся на 100% лише після перевірки паритету. Пакет міграції в репозиторії openai-cookbook містить більш повний патерн адаптера, якщо вам потрібен довідник.

Як використовувати MCP та віддалені сервери MCP з Responses API

Responses API підтримує віддалені сервери MCP (Model Context Protocol) як тип інструменту. Додайте запис типу {"type": "mcp", "server_url": "https://mcp.example.com", "server_label": "..."} до масиву tools. Модель виявляє каталог інструментів сервера MCP і викликає їх так само, як вбудовані інструменти.

Якщо ви ніколи не працювали з MCP, ось 30-секундна презентація: це відкритий протокол, який дозволяє будь-якому сервісу надавати свій API як каталог інструментів, які може викликати модель. Shopify, Stripe, GitHub та зростаючий список вендорів запускають публічні кінцеві точки MCP. Наш глибокий аналіз Model Context Protocol (MCP) охоплює сам протокол.

python
from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-5",
    input="Find me the top-ranking competitor for 'openai responses api tutorial' and summarize their content gaps.",
    tools=[{
        "type": "mcp",
        "server_url": "https://mcp.semrush.com",
        "server_label": "semrush",
        "require_approval": "never",   # set to "always" in production
    }],
)
print(response.output_text)

Ставтеся до серверів MCP як до будь-якого стороннього API. require_approval: "never" підходить для прототипів; у продакшені вам потрібно "always" (або whitelist інструментів), щоб компрометований сервер MCP не міг тихо викрадати дані. Аудитуйте каталог інструментів сервера перед тим, як направляти туди свого агента.

Ціноутворення, ліміти швидкості та підводні камені продакшену

Ціноутворення Responses API збігається з Chat Completions за вартістю токенів (prompt + completion), із додатковою платою за виклик для вбудованих інструментів (web_search, file_search). Ліміти швидкості відповідають вашому поточному тарифному плану OpenAI. Поширені проблеми продакшену включають налаштування збереження store: true за замовчуванням, тимчасові помилки 429 при сплесках трафіку та затримки функцій у варіанті Azure.

Сімейство моделейResponses APIВбудовані інструментиЗусилля на міркуванняПотокова передачаРівень вартості
gpt-5ТакУсі 5 + MCPН/ДТакДив. ціни OpenAI
gpt-5-miniТакУсі 5 + MCPН/ДТакНижче ніж gpt-5
gpt-4.1Такweb/file/code/imageН/ДТакСередній
o-series (міркування)Такfile/codelow/medium/highТакНайвищий за токен
gpt-image-1Лише інструмент генерації зображень,,НіЗа зображення

Ціни змінюються, завжди перевіряйте актуальність на сторінці цін OpenAI на момент написання.

Для обробки помилок обертайте виклики в try/except openai.RateLimitError та try/except openai.APIStatusError з експоненційною затримкою через tenacity:

python
from openai import OpenAI, RateLimitError, APIStatusError
from tenacity import retry, retry_if_exception_type, stop_after_attempt, wait_exponential

client = OpenAI()

@retry(
    retry=retry_if_exception_type((RateLimitError, APIStatusError)),
    wait=wait_exponential(multiplier=1, min=2, max=30),
    stop=stop_after_attempt(5),
    reraise=True,
)
def safe_create(prompt: str):
    return client.responses.create(model="gpt-5", input=prompt)

print(safe_create("Hello").output_text)

Ми зіткнулися з тимчасовою помилкою 429 при сплеску з 20 паралельних запитів у нашому staging-середовищі, tenacity з експоненційною затримкою чисто виправила це. Рядок помилки, який ми залогували, був openai.RateLimitError: Error code: 429 - {'error': {'message': 'Rate limit reached for gpt-5 in organization org-... on requests per min (RPM)'}}. Прочитайте один раз і рухайтесь далі; декоратор повторних спроб обробляє решту.

Примітка щодо варіанту Azure: Azure OpenAI надає доступ до Responses API, але відстає від релізів, контрольованих Семом Альтманом, на 4–8 тижнів. Станом на квітень 2026 року підтримка MCP в Azure доступна лише в прев’ю, перевірте це за документацією Microsoft Learn щодо Azure OpenAI Responses API перед релізом.

Сумісність зі шлюзами: якщо ви проксуєте OpenAI через LiteLLM proxy, підтримка Responses API з’явилася у 2026 році. Більшість інших шлюзів наздоганяють. І для продакшен-релізів вам варто налаштувати спостережуваність та логування AI перед перемиканням трафіку, події Responses API багатші, ніж Chat Completions, і ви захочете логувати кожен виклик інструменту.

Коли НЕ варто використовувати Responses API

Уникайте Responses API для аудіо в реальному часі з низькою затримкою (використовуйте Realtime API), генерації ембеддингів (використовуйте Embeddings API) та workflow fine-tuning. Залишайтеся на Chat Completions, якщо ваш шлюз/проксі ще не підтримує Responses (більшість підтримує через LiteLLM станом на 2026 рік).

Ще кілька чесних причин відмовитися:

  • Голосові агенти реального часу, Realtime API використовує WebSockets і створений для обміну репліками менше ніж за секунду. Потокова передача Responses API — це HTTP SSE; для голосу це буде відчуватися повільно.
  • Чисті пайплайни ембеддингів, client.embeddings.create() дешевший, швидший і саме те, що очікують інтеграції з векторними базами даних.
  • Fine-tuning, ви тренуєте та розгортаєте доопрацьовані моделі через API fine-tuning; ви можете потім викликати їх через Responses, але саме тренування не є workflow Responses.
  • Завдання Batch API, якщо ви обробляєте мільйон промптів за ніч зі знижкою 50%, Batch API все ще виграє за ціною.
  • Жорстка прив’язка до семантики Chat Completions, якщо ваше використання eval, спостережуваність та бібліотека промптів усі припускають chat.completions.choices[0].message.content, вартість міграції є реальною. Не мігруйте тільки тому, що це новіше.

Якщо ваш стек задоволений Chat Completions і ви не будуєте агентів, міграція не є безкоштовною, ваш спринт у другому кварталі може не потребувати цього. Новіше не означає краще для вас, Responses API — це правильний примітив для агентів, а не для кожного workload OpenAI.

Часті запитання

Що таке OpenAI Responses API?

OpenAI Responses API — це єдиний примітив, запущений у березні 2025 року, який поєднує простоту Chat Completions із можливістю використання інструментів через Assistants API. Він підтримує текстові та зображення на вході, п’ять вбудованих інструментів, виклик функцій, структуровані виводи, потокову передачу та станні розмови через previous_response_id.

Коли було випущено OpenAI Responses API?

OpenAI анонсувало Responses API 11 березня 2025 року разом із ширшим анонсом «нових інструментів для створення агентів». API було загальнодоступним з моменту запуску, а Conversations API, підтримка MCP та інструмент image_generation були додані в поступових оновленнях протягом 2025 та початку 2026 року.

Чи є OpenAI Responses API станним?

Так, опціонально. Передайте previous_response_id разом із store: true, і модель зберігатиме контекст між викликами без необхідності надсилати повну історію. Для довготривалих потоків Conversations API надає явне керування життєвим циклом потоків. Ви також можете залишатися безстанним і надсилати повну історію щоразу, як у Chat Completions.

Яка різниця між Responses API та Chat Completions?

Responses API є надмножиною Chat Completions. Кожна функція Chat Completions працює в Responses, плюс додаються вбудовані інструменти (web_search, file_search тощо), станність через previous_response_id та агентний цикл як концепція першого класу. OpenAI рекомендує Responses для всіх нових проектів станом на 2026 рік.

Чи застарів API Chat Completions?

Ні. Станом на квітень 2026 року Chat Completions не застарів, він повністю підтримується. OpenAI рекомендує Responses для нових проектів, і більшість туторіалів агентного стилю припускають використання Responses. Chat Completions тепер є застарілим примітивом: стабільним, але більше не місцем, де нові функції з’являються в першу чергу.

Які моделі OpenAI підтримують Responses API?

GPT-5, gpt-5-mini, gpt-4.1 та моделі міркувань o-series усі підтримують Responses API. O-series додає параметр reasoning_effort (low, medium, high) для задач із розширеним мисленням. Генерація зображень маршрутизується через gpt-image-1« під капотом, коли ви вмикаєте інструмент image_generation`.

Як мігрувати з Chat Completions на Responses API?

Три кроки: переключіть client.chat.completions.create() на client.responses.create(), замініть масив messages на input (і перемістіть системні промпти в instructions) та спростіть схеми інструментів (видаліть вкладений ключ function). Пакет міграції OpenAI на GitHub містить повні приклади адаптерів.

Чи підтримує Responses API потокову передачу?

Так. Передайте stream=True у client.responses.create() (або використовуйте client.responses.stream() як менеджер контексту) та ітеруйте типізовані Server-Sent Events. Події потоку токенів, які ви оброблятимете, — це response.output_text.delta для контенту та response.completed для фінального payload. Асинхронна потокова передача працює через AsyncOpenAI.

Чи можна використовувати Responses API в Azure?

Так. Azure OpenAI надає доступ до Responses API, але паритет функцій відстає від прямих релізів OpenAI на 4–8 тижнів. Станом на квітень 2026 року підтримка MCP в Azure знаходиться в прев’ю. Перевірте Microsoft Learn на наявність поточних специфічних нюансів Azure перед релізом у продакшен.

Чи працює Responses API з серверами MCP?

Так, віддалені сервери MCP (Model Context Protocol) є типом інструменту першого класу. Додайте {"type": "mcp", "server_url": "...", "server_label": "..."} до вашого масиву tools, і модель виявить та викличе каталог інструментів сервера так само, як будь-який вбудований інструмент. Використовуйте require_approval: "always" у продакшені для безпеки.

Підсумки

Тепер у вас є повна картина Responses API: чим він відрізняється від Chat Completions, як здійснити перший виклик, як підключити вбудовані інструменти та як мігрувати існуючий проект Chat Completions у три кроки. Кілька висновків, на яких варто зосередитися:

  • Спочатку будуйте, потім оптимізуйте. Почніть із прикладу hello-world, додайте вбудований інструмент, потім додайте стан за допомогою previous_response_id.
  • Мігруйте поступово. Використовуйте feature flag, логуйте обидві форми відповідей, перемикайтеся на 100% лише після перевірки паритету.
  • Впроваджуйте інтеграції MCP. Це фронтір 2026 року, більшість вендорів змагаються за надання кінцевих точок MCP, а Responses API — найчистіший спосіб їх споживання.

У Techsy ми допомагаємо командам впроваджувати продакшен-рівень інтеграцій з OpenAI, включаючи розгортання Responses API та міграцію з Chat Completions. Отримайте безкоштовну консультацію.


Від редакційної команди Techsy, інженерів продакшену, які впроваджують інтеграції з OpenAI з 2024 року. Останнє оновлення: 25 квітня 2026 року.

Теги

посібник openai responses apiopenai responses apiміграція chat completionsвиклик функційmcppython sdk

Поділилися статтею

Схожі статті

Більше у категорії ai-machine-learning

ai-machine-learning
Jul 20, 2026

8 найкращих AI API для веб-скрапінгу у 2026 (перевірено на нашому агент-стеку)

Ми протестували 8 AI API для веб-скрапінгу з реальними цінами 2026 року, отриманими через наш власний агент-стек. Firecrawl, Bright Data, ScrapingBee та ще 5 — за готовністю виводу для LLM, антибот-захистом і підтримкою MCP.

9 min read хв на читання
Читати
ai-machine-learning
Jul 20, 2026

Інжиніринг промптів для кодування: 7 шаблонів, які ми щодня використовуємо в Claude Code та Cursor (2026)

Більшість статей про «промпти для AI-кодування» просто дають вам 50 шаблонів для копіювання. Ця стаття навчає 7 шаблонам, які ми використовуємо щодня для керування пайплайном із 16 агентів у Claude Code, із реальними прикладами «до» і «після» для кожного, а також пояснює, де кожен шаблон застосовується в Claude Code, Cursor і Copilot у 2026 році.

11 min read хв на читання
Читати
ai-machine-learning
Jul 19, 2026

Від PoC ШІ до продакшену: чек-лист із 12 пунктів перед релізом

Працююча демо-версія ШІ — це ще не продакшн-система. Цей чек-лист із 12 пунктів охоплює три етапи, які потрібні кожному ШІ-функціоналу перед запуском: зміцнення, стабілізація та розгортання, з конкретними пороговими значеннями для лімітів витрат, обмежень частоти запитів, резервних варіантів і тригерів відкату.

10 min read хв на читання
Читати
Переглянути всі публікації
Розпочати проєкт

Готові створити щось щось надзвичайне?

Втілимо ваше бачення в реальність. Наша команда готова допомогти вам створити програмне забезпечення, яке справді має значення.

Записатись на 30-хвилинну дзвінокНаші проєкти

З бібліотеки

Навички Claude

Переглянути всі
  • New Post

    Full SEO blog pipeline: research, brief, write, validate, image, translate, publish to Sanity. Autonomous from start to finish.

  • Content Refresh

    Audit a stale post, find decay drivers, and ship a SERP-aligned refresh without losing existing rankings.

  • SEO Audit

    Site-wide SEO audit with prioritized fix list: technical, on-page, and EEAT signals.

AI-автоматизації

Переглянути всі
  • Security Auditor

    Weekly SCA + IaC scan with prioritized fix PRs.

  • Cold Email Writer

    Generates first-touch emails grounded in one specific public detail.

  • Lead Research Agent

    Enrich an email into a profile, score fit, alert in Slack.

З бібліотеки

Навички Claude

Переглянути всі
  • New Post

    Full SEO blog pipeline: research, brief, write, validate, image, translate, publish to Sanity. Autonomous from start to finish.

  • Content Refresh

    Audit a stale post, find decay drivers, and ship a SERP-aligned refresh without losing existing rankings.

  • SEO Audit

    Site-wide SEO audit with prioritized fix list: technical, on-page, and EEAT signals.

AI-автоматизації

Переглянути всі
  • Security Auditor

    Weekly SCA + IaC scan with prioritized fix PRs.

  • Cold Email Writer

    Generates first-touch emails grounded in one specific public detail.

  • Lead Research Agent

    Enrich an email into a profile, score fit, alert in Slack.

Послуги

  • Корпоративні рішення
  • Мобільні додатки
  • Веб-додатки

Рішення

  • CRM-системи
  • Інтеграція ШІ
  • ERP-розв'язання
  • Голосові аґенти
  • Автоматизація процесів
  • кібербезпека

Бібліотека

  • Блог
  • Портфоліо

Спільнота

  • AI-автоматизації
  • Навички Claude

Інструменти

  • Калькулятор вартості мобільного додатка
  • Калькулятор вартості OpenAI / LLM API
  • Калькулятор вартості MVP
  • Калькулятор вартості голосового AI-агента

Компанія

  • Про нас
  • Партнери
  • Контакти

Юридична інформація

  • Політика конфіденційності
  • Умови використання
  • Політика cookie

Послуги

  • Корпоративні рішення
  • Мобільні додатки
  • Веб-додатки

Рішення

  • CRM-системи
  • Інтеграція ШІ
  • ERP-розв'язання
  • Голосові аґенти
  • Автоматизація процесів
  • кібербезпека

Бібліотека

  • Блог
  • Портфоліо

Спільнота

  • AI-автоматизації
  • Навички Claude

Інструменти

  • Калькулятор вартості мобільного додатка
  • Калькулятор вартості OpenAI / LLM API
  • Калькулятор вартості MVP
  • Калькулятор вартості голосового AI-агента

Компанія

  • Про нас
  • Партнери
  • Контакти
Юридична інформаціяПолітика конфіденційностіУмови використанняПолітика cookie
TECHSY
© 2026 Techsy. Усі права захищені.