OpenAI SDK
base_url を https://api.kotoba.cloud/v1 に、api_key を接続トークンにするだけです。chat.completions がそのまま動きます。
from openai import OpenAI
client = OpenAI(base_url="https://api.kotoba.cloud/v1", api_key=os.environ["KOTOBA_API_TOKEN"])
r = client.chat.completions.create(
model="qwen3.8-flash-next-whitehacker",
max_tokens=2048,
messages=[{"role": "user", "content": "Review this login handler for auth bypasses: ..."}],
)
print(r.choices[0].message.content)
print(r.model_extra["billing"], r.usage) # "free" or "paid"; usage on paid answers
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.kotoba.cloud/v1", apiKey: process.env.KOTOBA_API_TOKEN });
const r = await client.chat.completions.create({
model: "qwen3.8-flash-next-whitehacker",
max_tokens: 2048,
messages: [{ role: "user", content: "Review this login handler for auth bypasses: ..." }],
});
console.log(r.choices[0].message.content);
何が通るか
- messages(system は先頭 1 つ、user / assistant / tool の turn、最大 256 turn、入力合計 524,288 文字)
- max_tokens または max_completion_tokens(1..32,768)、stream(1 チャンク SSE)、n(1 のみ)
- tools(最大 128 個の function 定義)と tool_choice — ネイティブな tool_calls が返ります
- 受理して落とす: temperature, top_p, presence/frequency_penalty, stop, response_format, parallel_tool_calls, stream_options, user, seed, logit_bias, logprobs, top_logprobs, metadata, store, service_tier, reasoning_effort, reasoning, prompt_cache_key, safety_identifier, modalities
- それ以外の key は 400 invalid-research-request(message が key を名指し)
応答の追加フィールド
OpenAI の形に billing("free" / "paid")、receiptId、有料なら usage と chargedMicroUSD が加わります。SDK は未知のフィールドを model_extra(Python)/ そのまま(TypeScript)に残します。
他の wire(/v1/responses、/v1/embeddings、/v1/images)は提供していません(405)。Responses API を既定にする SDK 設定は chat.completions に戻してください。