OpenAI 互換 API
DigitalBase は OpenAI 互換のエンドポイント(/v1/*)を提供します。既存の OpenAI SDK / ツールから、接続先(base URL)と API キーを差し替えるだけで利用できます。Anthropic 互換の /v1/messages にも対応します。
エンドポイント一覧
OpenAI / Anthropic 互換
標準 SDK / ツールからそのまま利用できる、互換エンドポイントです。
| エンドポイント | 説明 |
|---|---|
POST /v1/chat/completions | チャット補完(OpenAI 互換・ストリーミング対応) |
POST /v1/embeddings | 埋め込みベクトルの生成(OpenAI 互換) |
POST /v1/messages | メッセージ API(Anthropic 互換) |
POST /v1/messages/count_tokens | 入力トークン数の計測(Anthropic 互換。{"input_tokens": N} を返す) |
POST /v1/responses | Responses API(OpenAI 互換・Codex 等向け。text / function ツール / ストリーミングに対応) |
GET /v1/models | 利用可能なモデル一覧(OpenAI 互換) |
GET /v1/tools | この API キーに提示されるツール一覧 |
GET/POST/DELETE /v1/assistants | アシスタント管理(OpenAI Assistants 形式。DigitalBase の Bot にマップ) |
GET /v1/vector_stores | ナレッジ参照(OpenAI Vector Stores 形式。RAG にマップ) |
GET /v1/health | 認証不要の事前確認(ライセンス状態・推論サーバーの到達性。ライセンス) |
DigitalBase 独自(管理系)
OpenAI / Anthropic の標準仕様にはない、DigitalBase 独自のエンドポイントです。詳細は各ページを参照してください。
| エンドポイント | 説明 |
|---|---|
POST/GET/PATCH/DELETE /v1/api-keys | APIアクセスキー(sk-)の発行・管理 |
/v1/bi-keys・/v1/data/* | BI キー(bk-)とデータ参照(APIアクセスキー・ダッシュボード) |
組み込み API リファレンス
稼働中のサーバは、実際に利用できる API のリファレンスを提供します。
| URL | 内容 | 認証 |
|---|---|---|
GET /v1/docs | ReDoc 形式の API リファレンス | 不要 |
GET /v1/openapi.json | /v1/* と /mcp の OpenAPI 定義 | 不要 |
ReDoc の表示に必要なファイルは製品に同梱されているため、インターネットに接続できない環境でも表示できます。[API キー] 画面の [API リファレンス] からも開けます。API の仕様を公開しない場合は、GATEWAY_DOCS_ENABLED=false を設定すると両方の URL を非表示にできます。
リファレンスの Tools セクションには、組み込みツールごとの権限レベル、提示に必要なスコープ、引数が表示されます。GET /v1/tools は、API キーに紐づくアシスタントのスコープと maxLevel から、そのキーに実際に提示するツールだけを OpenAI function 形式で返します。結果は MCP の tools/list と同じ基準で決まります。アシスタントに紐づかないキーでは空の一覧を返します。
利用例
curl http://<HOST>:8000/v1/chat/completions \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"model": "<model>",
"messages": [{"role": "user", "content": "こんにちは"}],
"stream": true
}'
OpenAI Python SDK からは base_url を差し替えるだけで利用できます。
from openai import OpenAI
client = OpenAI(base_url="http://<HOST>:8000/v1", api_key="<API_KEY>")
res = client.chat.completions.create(
model="<model>",
messages=[{"role": "user", "content": "こんにちは"}],
)
リクエストパラメータとモデル別の挙動
/v1/chat/completions の主なパラメータは、接続先のモデル(バックエンド)によって扱いが異なります。表にない標準パラメータ(stop / seed / response_format / penalties / logprobs など)はローカルモデルにそのまま転送され、クラウドモデルでは無視されます。n は 1 のみ対応し、2 以上は 400 になります。
| パラメータ | ローカル (vLLM / Ollama) | OpenAI (gpt 系) | Anthropic (claude 系) | Gemini | Grok |
|---|---|---|---|---|---|
temperature | 適用 | reasoning モデルでは無視 | 思考オフ時のみ適用(Opus 4.7 以降の新世代は常に非対応) | 適用 | 適用 |
top_p | 適用 | reasoning モデルでは無視 | temperature と排他(temperature 優先)。適用条件は同上 | 適用 | 適用 |
top_k | 適用 | 無視 | 適用条件は temperature と同じ | 適用 | 無視 |
max_tokens | コンテキストに収まるよう自動調整 | reasoning モデルでは max_completion_tokens に変換 | モデル上限内に丸め | 無視(モデル既定) | 適用 |
reasoning_effort | 下表参照 | 下表参照 | 下表参照 | 下表参照 | 無視 |
tools / tool_choice | tool 対応モデルのみ | 適用 | 無視 | 適用 | 適用 |
stream | 適用(SSE) | 適用 | 適用 | 適用 | 適用 |
reasoning_effort(思考の深さ)
値は "none" / "low" / "medium" / "high" / "max" で、未指定はモデル既定です。互換のため metadata.xdb.thinking(bool も可。true=high / false=none)でも指定でき、両方ある場合は metadata 側が優先されます。旧称 metadata.digitalbase も引き続き受け付けます。思考機能のないモデルに指定してもエラーにはなりません。
| モデル | 挙動 |
|---|---|
| ローカル vLLM | 思考のオン/オフとして扱われます(none=オフ、それ以外=オン)。max は high として送信されます |
| ローカル Ollama | none〜high を適用(max は high)。思考非対応モデルでは指定を外して自動リトライし、モデル既定で応答します |
| OpenAI(gpt-5 系 / o 系の reasoning モデル) | そのまま適用されます(none は gpt-5.1 以降)。tools 併用時は送信されません(サーバ既定で動作) |
| Anthropic(Opus 4.6 以降 / Sonnet 4.6 以降) | adaptive thinking + effort として適用されます。none は思考オフ(Fable / Mythos 5 は常時思考のため、モデル既定と同じ動作) |
| Anthropic(Haiku 4.5 等の旧世代) | オン/オフとして扱われます(low 以上=オン) |
| Gemini | none〜high を適用(max は high) |
| Grok | 未対応(モデル既定で動作) |
アシスタント(Bot)を指定する
model にアシスタントの名前(または asst_ で始まる ID)を渡すと、そのアシスタントの設定(ナレッジ・プロンプト・ツール)で応答します。GET /v1/models にもアシスタントが名前で並びます。
model には GET /v1/models が返す ID(モデル名またはアシスタント名)かアシスタント ID を指定します(一覧はチャット用モデルのみで、埋め込みモデルは /v1/embeddings 専用のため並びません)。一覧に無いモデル名を指定した場合、または model を省略した場合は既定のチャットモデルで応答します(既存クライアントの固定モデル名でそのまま動く drop-in 互換。応答の model には実際に使ったモデル ID が入ります)。存在しない、または参照できないアシスタント ID(asst_...)は 404(code: model_not_found)を返します。
エラー応答
エラーは OpenAI と同じ形の JSON で返します(/v1/messages* は Anthropic 形式 {"type":"error","error":{"type","message"}})。SDK はこの code / type を読んで理由を判別できます。
{"error": {"message": "The model 'asst_xxxx' does not exist or you do not have access to it", "type": "invalid_request_error", "param": "model", "code": "model_not_found"}}
| ステータス | 主な原因 | 補足 |
|---|---|---|
401 | API キーが無効・失効済み・削除済み、またはセッションが失効 | WWW-Authenticate: Bearer ヘッダ付き |
403 | ライセンス切れ(猶予期間後)、キーの権限外、IP 制限 | |
404 model_not_found | 存在しない / 参照できないアシスタント(未知のモデル名は既定モデルで応答) | |
400 unsupported_parameter | n > 1、アシスタント以外への metadata.xdb.tools_scope など | |
413 | 入力の上限超過(AIエージェント) | |
429 | レート制限(rpm)・月次上限 | Retry-After ヘッダに再試行までの秒数 |
/v1/* は API キー(sk-)のほか、画面ログインのセッション(JWT)でも呼び出せます。セッションで呼ぶ場合、ログアウト・パスワード変更後の古いトークンは 401、初回パスワード変更が未完了のユーザーは 403 になります(画面と同じ判定です)。
RAG の出典
RAG を使う応答では、レスポンスの拡張フィールド xdb.sources に参照した社内文書(出典)が含まれます。
Anthropic 互換(/v1/messages)
Anthropic Messages API 形式のリクエストにも対応します。Claude 向けの SDK やツールから、接続先と API キーを差し替えるだけで利用できます。
- 認証は OpenAI 互換と同じ API キー(
sk-)を使います。 system/messages(content ブロック)・tools/tool_choice・ストリーミング(SSE)に対応します。- 受信時に内部で OpenAI 形式へ変換して処理し、応答を Anthropic 形式(
message_start/content_block_delta/message_stopなど)で返します。 modelはそのまま渡され、クラウド振り分け/ローカルモデルで解決されます。thinking({"type":"adaptive"}/{"type":"disabled"}など)とoutput_config.effortは、上記のreasoning_effortと同じ思考制御に変換されます(disabled=none、adaptive/enabled=effort 指定または high)。