フレームワーク
OpenAI 互換の chat.completions を話すフレームワークは、base URL と model id の 2 つで動きます。それぞれの設定と、ぶつかりやすい点。
LangChain
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="qwen3.8-flash-next-whitehacker", base_url="https://api.kotoba.cloud/v1",
api_key=os.environ["KOTOBA_API_TOKEN"], max_tokens=2048)
llm.invoke("Summarize the auth flow in this file: ...")
streaming=True でも動きます(1 チャンクで届く)。bind_tools はネイティブ tool_calls で動きます。
LlamaIndex
from llama_index.llms.openai_like import OpenAILike
llm = OpenAILike(model="qwen3.8-flash-next-whitehacker", api_base="https://api.kotoba.cloud/v1",
api_key=os.environ["KOTOBA_API_TOKEN"], is_chat_model=True, max_tokens=2048)
OpenAI クラスではなく OpenAILike を使う(未知の model id を拒否しない)。
Vercel AI SDK
import { createOpenAI } from "@ai-sdk/openai";
import { generateText } from "ai";
const kotoba = createOpenAI({ baseURL: "https://api.kotoba.cloud/v1", apiKey: process.env.KOTOBA_API_TOKEN });
const { text } = await generateText({ model: kotoba.chat("qwen3.8-flash-next-whitehacker"), maxTokens: 2048, prompt: "..." });
kotoba.chat(...) を使う: 既定の kotoba(...) は Responses API を選ぶことがあり、それは 405 です。
OpenAI Agents SDK
from agents import Agent, Runner, OpenAIChatCompletionsModel, set_tracing_disabled
from openai import AsyncOpenAI
client = AsyncOpenAI(base_url="https://api.kotoba.cloud/v1", api_key=os.environ["KOTOBA_API_TOKEN"])
set_tracing_disabled(True) # tracing posts to OpenAI, not here
agent = Agent(name="reviewer", model=OpenAIChatCompletionsModel(model="qwen3.8-flash-next-whitehacker", openai_client=client))
Runner.run_sync(agent, "Review src/auth.py")
OpenAIChatCompletionsModel を明示する(既定は Responses API)。
LiteLLM
import litellm
litellm.completion(model="openai/qwen3.8-flash-next-whitehacker", api_base="https://api.kotoba.cloud/v1",
api_key=os.environ["KOTOBA_API_TOKEN"], max_tokens=2048,
messages=[{"role": "user", "content": "..."}])
openai/ プレフィックスで chat.completions に固定。プロキシモードは Anthropic SDK の頁を参照。
共通の注意
- n > 1、logprobs、embeddings、画像入力は提供していません。
- max_tokens は明示する(既定 2,048 は reasoning を含む)。
- レッドチームのモデルは本人確認とスコープが要ります。最初の 403 は /v1/research/status で理由を読む。
- 同じリクエストの再送は同じジョブに再接続します(二重課金なし)— リトライは安全です。