AI Studio предоставляет OpenAI-совместимый endpoint для работы с моделями через Chat Completions API. Это позволяет использовать стандартные SDK OpenAI в ваших проектах без изменения кода.
Перейдите в раздел AI Studio
Нажмите «Создать ключ» для создания нового ключа, либо скопируйте существующий ключ из раздела Команды → название команды
| Параметр | Значение |
|---|---|
| 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?" }
]
}'
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())
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) |
Стандартный ответ содержит:
{
"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".