openai-chat-completions

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 наших серверов хостинга
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
ВК49865