Workers AI は、Chat Completions(/v1/chat/completions)による テキスト生成 と、テキスト埋め込みモデル(/v1/embeddings)向けに OpenAI 互換エンドポイントを提供します。Responses API(/v1/responses)は GPT-OSS モデルでのみ利用できます。標準 OpenAI SDK の baseURL を差し替えるだけで、Workers AI を呼び出せます。
ほとんどの Workers AI テキスト生成モデルは、OpenAI Chat Completions API に対応しています。Embedding モデルは OpenAI Embeddings API に対応しています。
Workers AI のベース URL、API トークン、モデル名を設定し、OpenAI JavaScript SDK ↗ を使います。
import OpenAI from "openai";
const openai = new OpenAI({
apiKey: env.CLOUDFLARE_API_KEY,
baseURL: `https://api.cloudflare.com/client/v4/accounts/${env.CLOUDFLARE_ACCOUNT_ID}/ai/v1`,
});
const chatCompletion = await openai.chat.completions.create({
messages: [{ role: "user", content: "Make some robot noises" }],
model: "@cf/meta/llama-3.1-8b-instruct",
});
const embeddings = await openai.embeddings.create({
model: "@cf/baai/bge-large-en-v1.5",
input: "I love matcha",
});curl --request POST \
--url https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/v1/chat/completions \
--header "Authorization: Bearer {api_token}" \
--header "Content-Type: application/json" \
--data '
{
"model": "@cf/meta/llama-3.1-8b-instruct",
"messages": [
{
"role": "user",
"content": "how to build a wooden spoon in 3 short steps? give as short as answer as possible"
}
]
}
'同期の Chat Completions では、リクエスト本体のトップレベルに options.rejectIfBusy を設定します。容量キューで待たせず、リクエストを失敗させます。
カスタムフィールドを保持する OpenAI クライアントは、このオプションを送れます。未知のフィールドを削除するクライアントでは適用されないため、リクエストは通常どおり進みます。
例とエラーの動作は、ビジーリクエストの拒否 を参照してください。
Responses API に対応しているのは、@cf/openai/gpt-oss-120b と @cf/openai/gpt-oss-20b モデルのみです。Responses リクエストは非ストリーミングである必要があり、stream: false のみ対応します。
import OpenAI from "openai";
const openai = new OpenAI({
apiKey: env.CLOUDFLARE_API_KEY,
baseURL: `https://api.cloudflare.com/client/v4/accounts/${env.CLOUDFLARE_ACCOUNT_ID}/ai/v1`,
});
const response = await openai.responses.create({
model: "@cf/openai/gpt-oss-120b",
input: "Talk to me about open source",
});これらのエンドポイントは AI Gateway とも互換があります。