Хостинг
VDS
Аренда серверов
Домены
Почта
SSL
Хранилище
Сайты
Обзоры
Регламенты
AI Studio
Kubernetes
Архив
OpenAI Chat Completions API

OpenAI Chat Completions API через AI Studio

AI Studio предоставляет OpenAI-совместимый endpoint для работы с моделями через Chat Completions API. Это позволяет использовать стандартные SDK OpenAI в ваших проектах без изменения кода.

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

  1. Войдите в личный кабинет на https://panel.netangels.ru/
  2. Перейдите в раздел AI Studio
  3. Нажмите «Создать ключ» для создания нового ключа, либо скопируйте существующий ключ из раздела Команды → название команды

Эндпоинт

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

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

Python:

import os
from openai import OpenAI

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

completion = client.chat.completions.create(
    model="qwen-plus",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Who are you?"},
    ],
)
print(completion.model_dump_json())

Node.js:

import OpenAI from "openai";

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

async function main() {
    const completion = await openai.chat.completions.create({
        model: "qwen-plus",
        messages: [
            { role: "system", content: "You are a helpful assistant." },
            { role: "user", content: "Who are you?" }
        ],
    });
    console.log(JSON.stringify(completion));
}
main();

Go:

package main

import (
    "context"
    "github.com/openai/openai-go"
    "github.com/openai/openai-go/option"
)

func main() {
    client := openai.NewClient(
        option.WithAPIKey("ВАШ_API_КЛЮЧ"),
        option.WithBaseURL("https://ai.netangels.cloud/v1/"),
    )
    chatCompletion, err := client.Chat.Completions.New(
        context.TODO(), openai.ChatCompletionNewParams{
            Messages: openai.F([]openai.ChatCompletionMessageParamUnion{openai.UserMessage("Who are you?")}),
            Model: openai.F("qwen-plus"),
        },
    )
    if err != nil { panic(err.Error()) }
    println(chatCompletion.Choices[0].Message.Content)
}

curl:

curl -X POST https://ai.netangels.cloud/v1/chat/completions \
-H "Authorization: Bearer ВАШ_API_КЛЮЧ" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen-plus",
    "messages": [
        { "role": "system", "content": "You are a helpful assistant." },
        { "role": "user", "content": "Who are you?" }
    ]
}'

Потоковый вывод (Streaming)

Python:

completion = client.chat.completions.create(
    model="qwen-plus",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Who are you?"},
    ],
    stream=True,
    stream_options={"include_usage": True}
)
for chunk in completion:
    print(chunk.model_dump_json())

curl:

curl --location "https://ai.netangels.cloud/v1/chat/completions" \
--header "Authorization: Bearer ВАШ_API_КЛЮЧ" \
--header "Content-Type: application/json" \
--data '{
    "model": "qwen-plus",
    "messages": [
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Who are you?"}
    ],
    "stream": true
}'

Работ с изображениями

Python:

completion = client.chat.completions.create(
    model="qwen-vl-plus",
    messages=[{"role": "user", "content": [
        {"type": "image_url", "image_url": {"url": "https://example.com/image.jpg"}},
        {"type": "text", "text": "Что изображено на картинке?"},
    ]}]
)
print(completion.model_dump_json())

Функции (Tool Calling)

Python:

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_current_weather",
            "description": "Получить погоду в указанном городе",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {"type": "string", "description": "Город или район"}
                },
                "required": ["location"]
            }
        }
    }
]

completion = client.chat.completions.create(
    model="qwen-plus",
    messages=[{"role": "user", "content": "Какая погода в Москве?"}],
    tools=tools
)
print(completion.model_dump_json())

Асинхронный запрос

Python:

import asyncio
from openai import AsyncOpenAI

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

async def main():
    response = await client.chat.completions.create(
        messages=[{"role": "user", "content": "Who are you?"}],
        model="qwen-plus"
    )
    print(response.model_dump_json())

asyncio.run(main())

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

Параметр Тип Обязательный Описание
model string Да Имя модели (например, qwen-plus, qwen-max)
messages array Да История диалога (system, user, assistant)
stream boolean Нет Потоковый вывод (по умолчанию false)
temperature float Нет Случайность (0–2). Нельзя использовать вместе с top_p
top_p float Нет Ядро выборки (0–1). Нельзя использовать вместе с temperature
max_completion_tokens int Нет Лимит токенов в ответе (рекомендуется вместо max_tokens)
response_format object Нет Формат ответа: {"type": "json_object"} или {"type": "text"}
tools array Нет Определения вызываемых функций (JSON Schema)
tool_choice string/object Нет Управление выбором функции (auto, none, конкретная функция)
stop string/array Нет Остановить генерацию при совпадении
seed int Нет Фиксирует случайность для воспроизводимости (0–2³¹-1)
enable_thinking boolean Нет Включить режим рассуждений (не стандартный, передавайте через extra_body)
enable_search boolean Нет Включить поиск в интернете (не стандартный, передавайте через extra_body)
enable_code_interpreter boolean Нет Включить выполнение кода (не стандартный, передавайте через extra_body)

Ответ API

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

{
  "id": "chatcmpl-xxxxx",
  "object": "chat.completion",
  "created": 1735120033,
  "model": "qwen-plus",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "Ответ модели."
    },
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 10,
    "completion_tokens": 50,
    "total_tokens": 60
  }
}

При включенном потоковом выводе ответ приходит последовательными JSON-объектами с object: "chat.completion.chunk".

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

22 года
Предоставляем услуги профессионального хостинга
35 000+
Клиентов доверяют нам размещение своих сайтов
99.99%
Подтвержденный uptime наших серверов хостинга
Callibri
Крылья
Tele-Club
Linline
Премьер зал
УГМК-Здоровье
Магнум
Алатырь
Туристер
Callibri
Крылья
Tele-Club
Linline
Премьер зал
УГМК-Здоровье
Магнум
Алатырь
Туристер
ВК49865