本記事では、AI APIを使用してOB CloudのAIサービスにアクセスする方法について説明します。AI APIはOpenAI、Anthropic、Vertex AIと互換性のある呼び出し方式を提供しており、既存のアプリケーションで使用されているインターフェースプロトコル、リクエストフォーマット、アクセス習慣に基づいて対応するインターフェースを選択し、既存の呼び出しロジックを再利用することで、モデルのアクセスと連携テストを迅速に完了できます。
前提条件
AIサービスが有効になっていること。
使用可能な
API Keyが作成されていること。詳細については、AI API Keyの管理を参照してください。
呼び出し方式
AI APIはHTTPリクエストによる呼び出しをサポートしています。選択した互換プロトコルに応じて、以下のBase URLとリクエストヘッダーを使用します:
OpenAI互換
- Base URL:
https://ai-api-g.oceanbase.com/api/v1 - 認証方式:リクエストヘッダー
Authorization: Bearer YOUR_API_KEY
curl -X POST https://ai-api-g.oceanbase.com/api/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "gpt-5.4", "messages": [{"role": "user", "content": "Hello"}]}'
from openai import OpenAI
client = OpenAI(
base_url="https://ai-api-g.oceanbase.com/api/v1",
api_key="YOUR_API_KEY",
)
Anthropic互換
- Base URL:
https://ai-api-g.oceanbase.com/api/anthropic - 認証方式:リクエストヘッダー
x-api-key: YOUR_API_KEYとanthropic-version: 2023-06-01
curl -sS -X POST "https://ai-api-g.oceanbase.com/api/anthropic/v1/messages" \
-H "x-api-key: YOUR_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Hello"}]
}'
import anthropic
client = anthropic.Anthropic(
base_url="https://ai-api-g.oceanbase.com/api/anthropic",
api_key="YOUR_API_KEY",
)
Vertex AI互換
- Base URL:
https://ai-api-g.oceanbase.com/api/v1 - 認証方式:リクエストヘッダー
Authorization: Bearer YOUR_API_KEY
curl -X POST "https://ai-api-g.oceanbase.com/api/v1/publishers/{provider}/models/{model}:generateContent" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{"role": "user", "parts": [{"text": "Hello"}]}]
}'
戻り値の例
- 呼び出しが成功した場合
{
"id": "req_xxx",
"object": "chat.completion",
"created": 1710000000,
"model": "gpt-5.4",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello, OceanBase Cloud AI."
}
}
]
}
- 呼び出しが失敗した場合
{
"error": {
"code": "unauthorized",
"message": "Invalid API key."
}
}