> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xhuoapi.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenAI Chat Completion API Заявка и использование

> OpenAI generation 集成指南 - XHuoAPI

OpenAI ChatGPT — это очень мощная AI система диалога, которая может генерировать плавные и естественные ответы всего за несколько секунд, просто вводя подсказки. ChatGPT выделяется в отрасли благодаря своим выдающимся способностям к пониманию и генерации языка, и в настоящее время он широко используется в различных отраслях и сферах, его влияние становится все более значительным. Будь то повседневные беседы, креативное письмо или профессиональные консультации, программирование кода, ChatGPT может предоставить удивительную интеллектуальную помощь, значительно повышая эффективность и креативность человека.

Этот документ в основном описывает процесс использования OpenAI Chat Completion API, с помощью которого мы можем легко использовать функции диалога официального OpenAI ChatGPT.

## Процесс заявки

Чтобы использовать OpenAI Chat Completion API, сначала можно перейти на страницу [OpenAI Chat Completion API](https://api.xhuoapi.ai/documents/1bcf3bba-102b-495d-9bba-47cd96717e45) и нажать кнопку «Acquire», чтобы получить необходимые для запроса учетные данные:

![](https://cdn.xhuoapi.ai/nyq0xz.png)

Если вы еще не вошли в систему или не зарегистрированы, вас автоматически перенаправят на страницу входа, пригласив зарегистрироваться и войти в систему, после чего вы автоматически вернетесь на текущую страницу.

При первой подаче заявки будет предоставлен бесплатный лимит, который можно использовать для бесплатного использования этого API.

## Основное использование

Далее вы можете заполнить соответствующие поля на интерфейсе, как показано на изображении:

<p>
  <img src="https://cdn.xhuoapi.ai/jqgg1t.png" width="400" className="m-auto" />
</p>

При первом использовании этого интерфейса нам необходимо заполнить как минимум три поля: одно из них — `authorization`, которое можно выбрать прямо из выпадающего списка. Другой параметр — `model`, `model` — это категория модели, которую мы выбираем для использования на официальном сайте OpenAI ChatGPT, здесь у нас в основном есть 20 моделей, подробности можно посмотреть в предоставленных моделях. Последний параметр — `messages`, `messages` — это массив наших вопросов, который представляет собой массив, позволяющий одновременно загружать несколько вопросов, каждый из которых содержит `role` и `content`, где `role` обозначает роль задающего вопрос, мы предоставили три роли: `user`, `assistant`, `system`. Другой `content` — это конкретное содержание нашего вопроса.

Также вы можете заметить, что справа есть соответствующий сгенерированный код вызова, вы можете скопировать код и запустить его, или просто нажать кнопку «Try» для тестирования.

Распространенные дополнительные параметры:

* `max_tokens`: ограничивает максимальное количество токенов в одном ответе.
* `temperature`: генерирует случайность, от 0 до 2, чем больше значение, тем более разнообразным будет ответ.
* `n`: сколько вариантов ответа генерировать за раз.
* `response_format`: настройки формата ответа.

<p>
  <img src="https://cdn.xhuoapi.ai/mthuu2.png" width="400" className="m-auto" />
</p>

После вызова мы обнаруживаем, что возвращаемый результат выглядит следующим образом:

```json theme={null}
{
  "id": "chatcmpl-Cmd6uwSxN75F4PAdQSFEO8f2QPs4E",
  "object": "chat.completion",
  "created": 1765706120,
  "model": "gpt-5.2",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello! What can I help you with today?",
        "refusal": null,
        "annotations": []
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 7,
    "completion_tokens": 13,
    "total_tokens": 20,
    "prompt_tokens_details": {
      "cached_tokens": 0,
      "audio_tokens": 0
    },
    "completion_tokens_details": {
      "reasoning_tokens": 0,
      "audio_tokens": 0,
      "accepted_prediction_tokens": 0,
      "rejected_prediction_tokens": 0
    }
  },
  "service_tier": "default",
  "system_fingerprint": null
}
```

Возвращаемый результат содержит несколько полей, описание которых приведено ниже:

* `id`, ID задачи диалога, созданной для уникальной идентификации этой задачи.
* `model`, выбранная модель OpenAI ChatGPT.
* `choices`, информация о ответах ChatGPT на вопросы.
* `usage`: статистическая информация о токенах для этого вопроса и ответа.

Где `choices` содержит информацию о ответах ChatGPT, внутри которой можно увидеть, как показано на изображении.

<p>
  <img src="https://cdn.xhuoapi.ai/4t1ev7.png" width="400" className="m-auto" />
</p>

Можно увидеть, что поле `content` внутри `choices` содержит конкретное содержание ответа ChatGPT.

## Потоковый ответ

Этот интерфейс также поддерживает потоковые ответы, что очень полезно для веб-интеграции, позволяя веб-странице реализовать эффект отображения по буквам.

Если вы хотите получить потоковый ответ, вы можете изменить параметр `stream` в заголовке запроса на `true`.

Изменение показано на изображении, однако код вызова должен быть соответствующим образом изменен, чтобы поддерживать потоковые ответы.

<p>
  <img src="https://cdn.xhuoapi.ai/24scd4.png" width="400" className="m-auto" />
</p>

После изменения `stream` на `true`, API будет возвращать соответствующие JSON данные построчно, на уровне кода нам нужно внести соответствующие изменения, чтобы получить построчные результаты.

Пример кода вызова на Python:

```python theme={null}
import requests

url = "https://api.xhuoapi.ai/v1/openai/chat/completions"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "gpt-4",
    "messages": [{"role":"user","content":"hello"}],
    "stream": True
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Вывод будет следующим:

```json theme={null}
data: {"choices": [{"delta": {"role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": "Привет", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": " там", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": "!", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": " Как", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": " я", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": " могу", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": " помочь", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": " вам", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": " сегодня", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": "?", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"role": "assistant"}, "finish_reason": "stop", "index": 0}], "created": 1721007349, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: [DONE]

```

Можно увидеть, что в ответе много `data`, `data` внутри `choices` является последним ответом, который соответствует описанному выше содержимому. `choices` - это новая информация ответа, которую вы можете интегрировать в вашу систему. Также окончание потокового ответа определяется по содержимому `data`, если содержимое равно `[DONE]`, это означает, что потоковый ответ завершен. Возвращаемый результат `data` содержит несколько полей, описание которых приведено ниже:

* `id` - уникальный идентификатор для данной задачи диалога.
* `model` - выбранная модель OpenAI ChatGPT.
* `choices` - информация о ответах ChatGPT на заданные вопросы.

JavaScript также поддерживается, например, код для потокового вызова Node.js выглядит следующим образом:

```javascript theme={null}
const options = {
  method: "post",
  headers: {
    accept: "application/json",
    authorization: "Bearer {token}",
    "content-type": "application/json",
  },
  body: JSON.stringify({
    model: "gpt-4",
    messages: [{ role: "user", content: "привет" }],
    stream: true,
  }),
};

fetch("https://api.xhuoapi.ai/v1/openai/chat/completions", options)
  .then((response) => response.json())
  .then((response) => console.log(response))
  .catch((err) => console.error(err));
```

Пример кода на Java:

```java theme={null}
JSONObject jsonObject = new JSONObject();
jsonObject.put("model", "gpt-4");
jsonObject.put("messages", [{"role":"user","content":"привет"}]);
jsonObject.put("stream", true);
MediaType mediaType = "application/json; charset=utf-8".toMediaType();
RequestBody body = jsonObject.toString().toRequestBody(mediaType);
Request request = new Request.Builder()
  .url("https://api.xhuoapi.ai/v1/openai/chat/completions")
  .post(body)
  .addHeader("accept", "application/json")
  .addHeader("authorization", "Bearer {token}")
  .addHeader("content-type", "application/json")
  .build();

OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();
System.out.print(response.body!!.string())
```

Другие языки можно адаптировать самостоятельно, принцип остается тем же.

## Многоуровневый диалог

Если вы хотите интегрировать функцию многоуровневого диалога, вам нужно загрузить несколько вопросов в поле `messages`, конкретные примеры нескольких вопросов приведены на изображении ниже:

<p>
  <img src="https://cdn.xhuoapi.ai/oz4mar.png" width="400" className="m-auto" />
</p>

Пример кода вызова на Python:

```python theme={null}
import requests

url = "https://api.xhuoapi.ai/v1/openai/chat/completions"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "gpt-4",
    "messages": [{"role":"user","content":"Привет"},{"role":"assistant","content":"Здравствуйте! Как я могу помочь вам сегодня?"},{"role":"user","content":"Что я только что сказал?"}]
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Загрузив несколько вопросов, можно легко реализовать многократный диалог, и получить следующий ответ:

```json theme={null}
{
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Вы сказали: \"Привет.\""
      },
      "finish_reason": "stop"
    }
  ],
  "created": 1721323012,
  "id": "chatcmpl-NWZmOTA5MDlkZjBjNDRjNGEwMzRjYzA5NmM1MzQwMWY",
  "model": "gpt-4",
  "object": "chat.completion.chunk",
  "recipient": "all",
  "usage": {
    "prompt_tokens": 31,
    "completion_tokens": 6,
    "total_tokens": 37
  }
}
```

Как видно, информация, содержащаяся в `choices`, соответствует основному использованию, это включает в себя конкретное содержание ответов ChatGPT на несколько диалогов, что позволяет отвечать на соответствующие вопросы на основе нескольких диалогов.

## Интеграция с OpenAI-Python

Служба OpenAI Chat Completion API основана на официальной службе OpenAI, подробности можно найти в официальном [OpenAI-Python](https://github.com/openai/openai-python), в этой статье будет кратко описано, как использовать предоставляемую официальную службу.

1. Сначала необходимо настроить локальную среду `Python`, этот процесс можно найти в Google.
2. Установите и настройте среду разработки, например, установите редактор VSCode.
3. Настройте переменные окружения `OpenAI`.

* В папке проекта создайте файл с именем `.env` и сохраните его.
* Содержимое файла `.env`:

```json theme={null}
OPENAI_API_KEY="sk-xxx"
OPENAI_BASE_URL="https://api.xhuoapi.ai/v1/openai"  # Напоминаем: если вы используете ключ OpenAI с официального сайта, не используйте этот адрес.
```

Замените `sk-xxx` на свой ключ. `OPENAI_BASE_URL` — это прокси-интерфейс для доступа к OpenAI.

4. Установите зависимости проекта

```shell theme={null}
pip install openai
```

В Mac OS команда будет:

```shell theme={null}
pip3 install openai
```

5. Создайте файл исходного кода примера

Предположим, мы создали пример кода `index.py`, его содержимое следующее:

```python theme={null}
import os
from openai import OpenAI

client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))

response = client.chat.completions.create(
    messages=[
        {
            "role": "user",
            "content": "привет",
        }
    ],
    model="gpt-4",
)

print(response.text)
```

## Модель с подключением к интернету

Модели gpt-3.5-browsing и gpt-4-browsing отличаются от других моделей тем, что они могут выполнять поиск в интернете на основе вопросов и возвращать результаты поиска с соответствующими корректировками. В этой статье будет представлен конкретный пример демонстрации функции подключения к интернету, после чего можно будет заполнить соответствующее содержимое на интерфейсе OpenAI Chat Completion API, как показано на изображении:

<p>
  <img src="https://cdn.xhuoapi.ai/249829.png" width="400" className="m-auto" />
</p>

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

<p>
  <img src="https://cdn.xhuoapi.ai/s8gxoo.png" width="400" className="m-auto" />
</p>

После вызова мы обнаружили, что возвращаемый результат следующий:

```json theme={null}
{
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Для последних новостей в Китае сегодня вы можете проверить основные новостные сайты, такие как:\n\n- [BBC News China](https://www.bbc.com/news/world/asia/china)\n- [CNN China News](https://edition.cnn.com/china)\n- [Reuters China](https://www.reuters.com/news/archive/china-news)\n\nЭти источники будут содержать актуальную информацию о текущих событиях в Китае."
      },
      "finish_reason": "stop"
    }
  ],
  "created": 1721009347,
  "id": "chatcmpl-YzA0M2RjZDVkYThlNDkxNTkzOThmZWQ4OGMzNzdhNzA",
  "model": "gpt-4-browsing",
  "object": "chat.completion.chunk",
  "recipient": "all",
  "usage": {
    "prompt_tokens": 325,
    "completion_tokens": 82,
    "total_tokens": 407
  }
}
```

Как видно, информация ответов в `choices` основана на результатах интернет-запроса, и также предоставлены соответствующие ссылки. Информация ответов в `choices` должна быть отформатирована с использованием синтаксиса `markdown`, чтобы получить наилучший опыт, в конечном итоге это также подчеркивает мощные преимущества функции подключения к интернету нашей модели.

## Визуальная модель

gpt-4o — это многомодальная большая языковая модель, разработанная OpenAI, которая на основе GPT-4 добавила возможности визуального понимания. Эта модель может одновременно обрабатывать текстовые и графические входные данные, реализуя кросс-модальное понимание и генерацию.

Использование текстовой обработки модели gpt-4o аналогично основному использованию, описанному выше, ниже будет кратко описано, как использовать возможности обработки изображений модели.

Использование возможностей обработки изображений модели gpt-4o осуществляется путем добавления поля `type` к исходному содержимому `content`, с помощью которого можно определить, загружается ли текст или изображение, чтобы использовать возможности обработки изображений модели gpt-4o. Далее будет описано, как вызвать эту функцию с помощью Curl и Python.

* Способ с использованием Curl

```
curl -X POST 'https://api.xhuoapi.ai/v1/openai/chat/completions' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
    "model": "gpt-4o",
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "type": "text",
            "text": "Что на этом изображении?"
          },
          {
            "type": "image_url",
            "image_url": {
              "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
            }
          }
        ]
      }
    ]
  }'
```

* Способ с использованием Python

````
```python
import requests

url = "https://api.xhuoapi.ai/v1/openai/chat/completions"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "gpt-4o",
    "messages": [
        {
            "role": "user",
            "content": [
                {
                    "type": "text", "text": "Что на этом изображении?"
                },
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
                    }
                },
            ],
        }
    ]
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
````

Затем можно получить следующий результат, информация в результате соответствует вышеупомянутой, конкретно следующая:

```json theme={null}
{
  "id": "chatcmpl-123",
  "object": "chat.completion",
  "created": 1677652288,
  "model": "gpt-4-vision-preview",
  "system_fingerprint": "fp_44709d6fcb",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "\n\nЭто изображение показывает деревянную набережную, проходящую через зеленое болото."
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 9,
    "completion_tokens": 12,
    "total_tokens": 21
  }
}
```

Можно увидеть, что содержание ответа основано на изображении, поэтому с помощью вышеупомянутых двух способов можно легко использовать текстовые и визуальные возможности модели gpt-4-vision.

Кроме gpt-4o, есть еще одна более экономичная модель, называемая gpt-4o-mini. gpt-4o-mini — это последняя версия крупной языковой модели, разработанная OpenAI, которая не только быстро реагирует, но и стоит дешевле, также поддерживает мультимодальность. Использование функции vision можно посмотреть в содержании использования модели gpt-4o выше.

## Модель рисования GPT-4o

Пример запроса:

```json theme={null}
{
  "model": "gpt-4o-image",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Создайте изображение в стиле Гибли и добавьте шляпу"
        },
        {
          "type": "file_url",
          "file_url": {
            "url": "https://cdn.xhuoapi.ai/qzx2z1.png"
          }
        }
      ]
    }
  ],
  "stream": false
}
```

Пример результата:

```json theme={null}
{
  "id": "chatcmpl-89CXTr5EHi7WgiO3qSzWxvmqwfryP",
  "object": "chat.completion.chunk",
  "model": "gpt-4o-image",
  "created": 1744395060,
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "{\n  \"prompt\": \"Молодая женщина с длинными черными волосами в белом платье, стоящая на живописной открытой местности. Изображение в стиле анимации Studio Ghibli, с мягкими цветами и тонкими деталями. Она носит милую, стильную шляпу и тепло улыбается. На заднем плане видны зелёные насаждения и спокойная атмосфера, с солнечными лучами, пробивающимися сквозь деревья.\",\n  \"size\": \"1024x1024\"\n}\n\n\n![file-96TSnzJ6MipkZwCmmYEZSA](https://filesystem.site/cdn/20250412/s8EFrYVqeRWc5SfTmF1SbgBS2WFGXb.webp)\n[Скачать⏬](https://filesystem.site/cdn/download/20250412/s8EFrYVqeRWc5SfTmF1SbgBS2WFGXb.webp)\n\nВот изображение, созданное в стиле Studio Ghibli, на котором изображена молодая женщина в белом платье и стильной шляпе на живописной открытой местности. Мягкая, теплая атмосфера запечатлена с нежными деталями и яркими цветами."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 70,
    "completion_tokens": 17,
    "total_tokens": 87
  }
}
```

## Обработка ошибок

При вызове API, если возникнет ошибка, API вернет соответствующий код ошибки и информацию. Например:

* `400 token_mismatched`：Неверный запрос, возможно, из-за отсутствующих или недействительных параметров.
* `400 api_not_implemented`：Неверный запрос, возможно, из-за отсутствующих или недействительных параметров.
* `401 invalid_token`：Неавторизован, недействительный или отсутствующий токен авторизации.
* `429 too_many_requests`：Слишком много запросов, вы превысили лимит частоты.
* `500 api_error`：Внутренняя ошибка сервера, что-то пошло не так на сервере.

### Пример ответа об ошибке

```
{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "не удалось получить"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}
```

## Заключение

С помощью этого документа вы узнали, как использовать OpenAI Chat Completion API для легкой реализации функций диалога официального OpenAI ChatGPT. Надеемся, что этот документ поможет вам лучше интегрировать и использовать этот API. Если у вас есть какие-либо вопросы, пожалуйста, не стесняйтесь обращаться в нашу техническую поддержку.
