> ## 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 はさまざまな業界や分野で広く利用されており、その影響力はますます顕著になっています。日常の対話、創造的な執筆、専門的な相談、コードプログラミングにおいて、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>

このインターフェースを初めて使用する際には、少なくとも3つの内容を入力する必要があります。一つは `authorization` で、ドロップダウンリストから選択するだけです。もう一つのパラメータは `model` で、`model` は OpenAI ChatGPT の公式モデルカテゴリを選択するものです。ここでは主に20種類のモデルがあり、詳細は提供されたモデルを参照できます。最後のパラメータは `messages` で、`messages` は入力する質問語の配列です。これは配列で、複数の質問語を同時にアップロードでき、各質問語には `role` と `content` が含まれています。`role` は質問者の役割を示し、私たちは `user`、`assistant`、`system` の3つの役割を提供しています。もう一つの `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": "こんにちは！今日は何をお手伝いできますか？",
        "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 の回答情報を含んでおり、`choices` の中には ChatGPT の情報が含まれています。以下の図のように確認できます。

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

`choices` の中の `content` フィールドには、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": {"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` は、今回の対話タスクを生成するための 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ニュース中国](https://www.bbc.com/news/world/asia/china)\n- [CNN中国ニュース](https://edition.cnn.com/china)\n- [ロイター中国](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 モデルの画像処理能力を使用するには、元の `content` 内容に `type` フィールドを追加します。このフィールドにより、アップロードされたのがテキストか画像かを知ることができ、gpt-4o モデルの画像処理能力を使用できます。以下では、Curl と Python の2つの方法でこの機能を呼び出す方法を説明します。

* 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
  }
}
```

回答の内容は画像に基づいているため、上記の2つの方法を使用することで、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\": \"長い黒髪の若い女性が白いドレスを着て、風光明媚な屋外の設定に立っています。この画像はスタジオジブリのアニメーションスタイルで、柔らかい色合いと繊細なディテールが特徴です。彼女はかわいくてスタイリッシュな帽子をかぶり、温かく明るい笑顔を見せています。背景には豊かな緑と穏やかな雰囲気があり、木々の間から日光が差し込んでいます。\",\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こちらがスタジオジブリのスタイルで作成された画像で、白いドレスとスタイリッシュな帽子をかぶった若い女性が風光明媚な屋外の設定に立っています。柔らかく温かい雰囲気が優しいディテールと鮮やかな色合いで表現されています。"
      },
      "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の接続と使用に役立つことを願っています。ご不明な点がございましたら、いつでも技術サポートチームにお問い合わせください。
