openai-responses

OpenAI Responses API через AI Studio

AI Studio предоставляет Responses API — современный endpoint для работы с моделями. В отличие от Chat Completions, Responses API предлагает встроенные инструменты (поиск в интернете, выполнение кода), гибкий формат ввода и удобное управление историей диалога.

Как получить API-ключ

  1. Войдите в личный кабинет на https://panel.netangels.ru/
  2. Перейдите в раздел AI Studio

  3. Нажмите «Создать ключ» для создания нового ключа, либо скопируйте существующий ключ из раздела Команды → название команды

Эндпоинт

Параметр Значение
URL https://ai.netangels.cloud/v1/responses
Метод POST
Аутентификация Authorization: Bearer ВАШ_API_КЛЮЧ

Базовый запрос

Python:

from openai import OpenAI

client = OpenAI(
    api_key="ВАШ_API_КЛЮЧ",
    base_url="https://ai.netangels.cloud/v1"
)

response = client.responses.create(
    model="qwen3.7-plus",
    input="Что ты умеешь?"
)
print(response.output_text)

Node.js:

import OpenAI from "openai";

const openai = new OpenAI({
    apiKey: "ВАШ_API_КЛЮЧ",
    baseURL: "https://ai.netangels.cloud/v1"
});

async function main() {
    const response = await openai.responses.create({
        model: "qwen3.7-plus",
        input: "Что ты умеешь?"
    });
    console.log(response.output_text);
}
main();

curl:

curl -X POST https://ai.netangels.cloud/v1/responses \
-H "Authorization: Bearer ВАШ_API_КЛЮЧ" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen3.7-plus",
    "input": "Что ты умеешь?"
}'

Потоковый вывод

Node.js:

async function main() {
    const stream = await openai.responses.create({
        model: "qwen3.7-plus",
        input: "Объясни искусственный интеллект.",
        stream: true
    });
    for await (const event of stream) {
        if (event.type === 'response.output_text.delta')
            process.stdout.write(event.delta);
        if (event.type === 'response.completed')
            console.log(`\nВсего токенов: ${event.response.usage.total_tokens}`);
    }
}
main();

Многотурные диалоги

Responses API позволяет сохранять контекст диалога через previous_response_id.

# Первый запрос
curl -X POST https://ai.netangels.cloud/v1/responses \
-H "Authorization: Bearer ВАШ_API_КЛЮЧ" \
-H "Content-Type: application/json" \
-d '{"model": "qwen3.7-plus", "input": "Запомни, что меня зовут Иван."}'

# Второй запрос — с историей из первого ответа
curl -X POST https://ai.netangels.cloud/v1/responses \
-H "Authorization: Bearer ВАШ_API_КЛЮЧ" \
-H "Content-Type: application/json" \
-d '{"model": "qwen3.7-plus", "input": "Как меня зовут?", "previous_response_id": "ID_ИЗ_ПЕРВОГО_ОТВЕТА"}'

previous_response_id действует в течение 7 дней.

Встроенные инструменты

Responses API поддерживает встроенные функции без дополнительной настройки:

Инструмент Описание
web_search Поиск в интернете
web_extractor Извлечение контента со страниц
code_interpreter Выполнение кода
web_search_image Поиск изображений
file_search Поиск по файлам
mcp MCP-интеграция

Python:

response = client.responses.create(
    model="qwen3.7-plus",
    input="Найди последние новости об ИИ на русском языке.",
    tools=[
        {"type": "web_search"},
        {"type": "code_interpreter"},
        {"type": "web_extractor"}
    ]
)
print(response.output_text)

Пользовательские функции (Function Calling)

Процесс function calling:

  1. Определите schema функции в массиве tools

  2. Вызовите модель с tools

  3. Если в ответе output есть элемент "function_call" — выполните функцию локально

  4. Добавьте "function_call" и "function_call_output" в контекст запроса

  5. Повторите запрос, пока не останется вызовов функций

Входные данные с медиа

# Изображение
response = client.responses.create(
    model="qwen-vl-plus",
    input=[{"role": "user", "content": [
        {"type": "input_image", "image_url": {"url": "https://example.com/image.jpg"}},
        {"type": "input_text", "text": "Что изображено на картинке?"}
    ]}]
)
print(response.output_text)

Параметры запроса

Параметр Тип Обязательный Описание
model string Да Имя модели
input string/array Да Текст или массив сообщений
instructions string Нет Системный промпт
stream boolean Нет Потоковый вывод (по умолчанию false)
previous_response_id string Нет ID предыдущего ответа для контекста
conversation string Нет ID диалога для автоматического управления историей
store boolean Нет Сохранить ответ (по умолчанию true)
tools array Нет Встроенные или пользовательские инструменты
tool_choice string Нет Управление выбором инструмента (auto, none, required)
temperature float Нет Случайность вывода (нельзя вместе с top_p)
top_p float Нет Ядро выборки (нельзя вместе с temperature)
enable_thinking boolean Нет Включить режим рассуждений
reasoning.effort string Нет Глубина рассуждений: none, minimal, medium, high

Ответ API

Стандартный ответ содержит:

{
  "id": "resp-xxxxx",
  "created_at": 1735120033,
  "status": "completed",
  "model": "qwen3.7-plus",
  "output": [
    {"type": "message", "role": "assistant", "content": [{"type": "output_text", "text": "Ответ модели."}]}
  ],
  "usage": {
    "input_tokens": 15,
    "output_tokens": 50,
    "total_tokens": 65
  }
}

При включённом enable_thinking в output也会出现 элемент "reasoning" с процессом размышлений модели.

События потокового вывода

Событие Описание
response.created Начало генерации
response.in_progress Генерация в процессе
response.output_text.delta Инкрементальный текст
response.reasoning_summary_text.delta Инкрементальный вывод рассуждений
response.completed Завершение (с итоговой статистикой токенов)
response.output_item.added Начало элемента вывода
response.output_item.done Завершение элемента вывода

Нам доверяют тысячи компаний и разработчиков

22 года
Предоставляем услуги профессионального хостинга
35 000+
Клиентов доверяют нам размещение своих сайтов
99.99%
Подтвержденный uptime наших серверов хостинга
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
ВК49865