Developer guide

APIキーで認証する

APIキーを設定するヘッダーとSDKに設定するbase URL

CLEVIゲートウェイは、OpenAI互換パスとAnthropic互換パスを1つのAPIキーで認証します。
クライアントで設定する値は、キーを格納する認証ヘッダーとSDKのbase URLの2つです。使用できるヘッダー形式とbase URLは、規格ごとに異なります。
設定後にモデル一覧を取得すると、認証の成否をすぐに確認できます。
認証に失敗した場合は401を、認証後に権限や上限の条件を満たしていない場合は403を返します。

APIキーはコンソールのAPIキー画面で発行してください。同じ画面でキーの失効と使用範囲を管理できます。

認証ヘッダー

どちらの規格も、1つのリクエストヘッダーにAPIキーを格納します。X-API-KeyヘッダーまたはAuthorizationヘッダーのいずれかを使用し、使用できる形式は規格によって異なります。

ヘッダーOpenAI互換Anthropic互換
X-API-Key: <キー>使用可能使用可能
Authorization: Bearer <キー>使用可能使用可能
Authorization: <キー> (Bearerなし)拒否使用可能

OpenAI互換パスでAuthorizationヘッダーを使用する場合は、Bearerプレフィックスが必要です。プレフィックスなしでキーだけを送信すると、ゲートウェイはリクエストを拒否します。

ヘッダー名では大文字と小文字が区別されないため、Anthropic SDKが送信するx-api-keyヘッダーもそのまま動作します。両方のヘッダーを指定した場合は、X-API-Keyの値が優先されます。

base URL

既存のSDKは、base URLを以下のアドレスに変更するだけでそのまま使用できます。2つのアドレスは/v1を含むかどうかが異なるため、規格に合ったアドレスをそのまま指定してください。

規格base URLパスのルール
OpenAI互換https://platform.clevi.net/api/v2/aiservice/openai/v1/v1までをbase URLに含めます。
Anthropic互換https://platform.clevi.net/api/v2/aiservice/anthropicAnthropic SDKがリクエストパスに/v1を直接追加するため、/v1の前で終わります。

認証の確認

キーと base URL を設定した後、モデル一覧を取得すると認証の有無を確認できます。以下の例では、同じ取得処理を curl、OpenAI SDK、Anthropic SDK で実行します。sk-... の部分には、API キー画面で発行したキーを入力してください。

curl で取得する場合は、どちらの仕様でも /v1/models までの完全なパスを指定します。最初のコマンドでは OpenAI 互換パスに X-API-Key ヘッダーを、2 番目のコマンドでは Anthropic 互換パスに Authorization ヘッダーを使用します。

curl https://platform.clevi.net/api/v2/aiservice/openai/v1/models \
  -H "X-API-Key: sk-..."

curl https://platform.clevi.net/api/v2/aiservice/anthropic/v1/models \
  -H "Authorization: Bearer sk-..." \
  -H "anthropic-version: 2023-06-01"

OpenAI SDK では、base_url に /v1 まで含めたアドレスを指定します。

from openai import OpenAI

client = OpenAI(
    api_key="sk-...",
    base_url="https://platform.clevi.net/api/v2/aiservice/openai/v1",
)

for model in client.models.list():
    print(model.id)

Anthropic SDK では、base_url を /v1 の手前で終わるアドレスに指定します。
認証には SDK が送信する x-api-key ヘッダーをそのまま使用します。

from anthropic import Anthropic

client = Anthropic(
    api_key="sk-...",
    base_url="https://platform.clevi.net/api/v2/aiservice/anthropic",
)

for model in client.models.list(limit=20).data:
    print(model.id)

どの例でもレスポンスが 200 であれば認証に成功しており、レスポンスの data にこのキーで呼び出せるモデル一覧が含まれます。401 の場合は、次のセクションの手順で原因を確認してください。

認証失敗

キーがない、または期限切れ・無効化されたキーを送信すると 401 を返します。OpenAI 互換パスでキーを指定せずに呼び出すと以下の本文を返し、Anthropic 互換パスでは error.type が authentication_error になります。

{
  "error": {
    "message": "API key is required.",
    "type": "invalid_request_error"
  }
}

401 を受け取った場合は、次の順序で確認してください。

  1. API キー画面でキーの状態を確認してください。期限切れまたは無効化されたキーの場合は、新しく発行してください。
  2. ヘッダー名が X-API-Key または Authorization であることを確認してください。
  3. OpenAI 互換パスで Authorization ヘッダーを使用する場合は、Bearer プレフィックスがあることを確認してください。

修正後、認証確認セクションのモデル一覧取得を再度実行し、200 が返ることを確認してください。

併用するヘッダー

次のヘッダーはすべて任意です。問題を追跡できるよう、X-Request-Id は指定することを推奨します。

ヘッダー用途省略した場合
X-Request-Idリクエスト追跡用の識別子です。Anthropic互換パスでは、レスポンスのrequest-idヘッダーとして同じ値を返します。サーバーが発行します。
X-Region-Code呼び出しリージョンを指定します。globalです。
X-Product-Sku (クエリ product_skuでも指定可能)課金に使用するProduct SKUを直接指定します。ヘッダーがクエリより優先され、主に音声・ボイスパスで使用します。ボイスパスでは省略できません。audio/speechとaudio/transcriptionsでは、リクエスト本文のmodelでProductを選択します。
anthropic-version / anthropic-betaAnthropic互換パスでそのまま転送します。バージョンは2023-06-01です。

5xxが繰り返し発生する場合は、ヘルプとお問い合わせからX-Request-Idとともにお知らせください。直接指定した値であれば、クライアントの記録とすぐに照合できます。

言語と地域

機械翻訳された言語は clevi/cip-5.5-im によって翻訳され、その旨が表示されます。これは、公開済みのサイトバンドルがある言語に適用されます。

137の言語

おすすめ

1

東アジア

7

東南アジア

11

南アジア

18

中央アジア

5

中東・コーカサス

10

西ヨーロッパ、南ヨーロッパ

17

イギリス、アイルランド

4

北ヨーロッパ

10

中央ヨーロッパ・バルカン

14

東ヨーロッパ

5

東アフリカ

8

西アフリカ、中部アフリカ

9

南部アフリカ

8

アメリカ大陸

5

オセアニア

5