DigitalBase Docs

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/responsesResponses 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-keysAPIアクセスキーsk-)の発行・管理
/v1/bi-keys/v1/data/*BI キー(bk-)とデータ参照(APIアクセスキーダッシュボード

組み込み API リファレンス

稼働中のサーバは、実際に利用できる API のリファレンスを提供します。

URL内容認証
GET /v1/docsReDoc 形式の 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 系)GeminiGrok
temperature適用reasoning モデルでは無視思考オフ時のみ適用(Opus 4.7 以降の新世代は常に非対応)適用適用
top_p適用reasoning モデルでは無視temperature と排他(temperature 優先)。適用条件は同上適用適用
top_k適用無視適用条件は temperature と同じ適用無視
max_tokensコンテキストに収まるよう自動調整reasoning モデルでは max_completion_tokens に変換モデル上限内に丸め無視(モデル既定)適用
reasoning_effort下表参照下表参照下表参照下表参照無視
tools / tool_choicetool 対応モデルのみ適用無視適用適用
stream適用(SSE)適用適用適用適用

reasoning_effort(思考の深さ)

値は "none" / "low" / "medium" / "high" / "max" で、未指定はモデル既定です。互換のため metadata.xdb.thinking(bool も可。true=high / false=none)でも指定でき、両方ある場合は metadata 側が優先されます。旧称 metadata.digitalbase も引き続き受け付けます。思考機能のないモデルに指定してもエラーにはなりません。

モデル挙動
ローカル vLLM思考のオン/オフとして扱われます(none=オフ、それ以外=オン)。maxhigh として送信されます
ローカル Ollamanonehigh を適用(maxhigh)。思考非対応モデルでは指定を外して自動リトライし、モデル既定で応答します
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 以上=オン)
Gemininonehigh を適用(maxhigh
Grok未対応(モデル既定で動作)

アシスタント(Bot)を指定する

model にアシスタントの名前(または asst_ で始まる ID)を渡すと、そのアシスタントの設定(ナレッジ・プロンプト・ツール)で応答します。GET /v1/models にもアシスタントが名前で並びます。

model には GET /v1/models が返す ID(モデル名またはアシスタント名)かアシスタント ID を指定します(一覧はチャット用モデルのみで、埋め込みモデルは /v1/embeddings 専用のため並びません)。一覧に無いモデル名を指定した場合、または model を省略した場合は既定のチャットモデルで応答します(既存クライアントの固定モデル名でそのまま動く drop-in 互換。応答の model には実際に使ったモデル ID が入ります)。存在しない、または参照できないアシスタント ID(asst_...)は 404code: 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"}}
ステータス主な原因補足
401API キーが無効・失効済み・削除済み、またはセッションが失効WWW-Authenticate: Bearer ヘッダ付き
403ライセンス切れ(猶予期間後)、キーの権限外、IP 制限
404 model_not_found存在しない / 参照できないアシスタント(未知のモデル名は既定モデルで応答)
400 unsupported_parametern > 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)。

関連