Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions benchmarks/ai-gateway/providers-gemini.ts
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,21 @@ export const providers: AIGatewayProviderConfig[] = [
buf.match(/"provider"\s*:\s*"([^"]+)"/)?.[1] ??
buf.match(/"model"\s*:\s*"([^"/]+)\/[^"]*"/)?.[1],
},
{
// BlazeRail: OpenAI-compatible /v1/chat/completions surface, same shape
// as the llmgateway entry. google/gemini-3.6-flash is served by exactly
// one upstream on BlazeRail (Google AI Studio direct), so the route is
// deterministic without a provider-order pin.
name: 'blazerail',
requiredEnvVars: ['BLAZERAIL_API_KEY'],
wireFormat: 'openai',
model: 'google/gemini-3.6-flash',
host: 'api.blazerail.com',
path: '/v1/chat/completions',
buildHeaders: () => ({
Authorization: `Bearer ${process.env.BLAZERAIL_API_KEY}`,
}),
},
{
// No-gateway baseline/control. Gemini's native `streamGenerateContent`
// endpoint (not the OpenAI-compatibility shim Google also exposes) —
Expand Down
16 changes: 16 additions & 0 deletions benchmarks/ai-gateway/providers-kimi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,22 @@ export const providers: AIGatewayProviderConfig[] = [
},
reasoningCountsAsFirstToken: true,
},
{
// BlazeRail: OpenAI-compatible /v1/chat/completions. moonshotai/kimi-k3 is
// BlazeRail-s public id for the model; routing picks among its five live
// upstreams (CrofAI, DeepInfra, Wafer, Moonshot AI, Modal) by measured
// latency and price, which is the product behavior being benchmarked -
// same posture as the other multi-upstream gateways in this family.
name: 'blazerail',
requiredEnvVars: ['BLAZERAIL_API_KEY'],
wireFormat: 'openai',
model: 'moonshotai/kimi-k3',
host: 'api.blazerail.com',
path: '/v1/chat/completions',
buildHeaders: () => ({
Authorization: `Bearer ${process.env.BLAZERAIL_API_KEY}`,
}),
},
Comment on lines +216 to +225

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 BlazeRail Kimi requests send a rejected temperature

This entry omits extraBody, so the request keeps the default temperature: 0 from buildRequestBody (benchmarks/ai-gateway/phase-probe.ts:82). Every sibling Kimi entry strips it with temperature: undefined because kimi-k3 rejects any temperature but 1, so every BlazeRail Kimi iteration fails.

Suggested change
name: 'blazerail',
requiredEnvVars: ['BLAZERAIL_API_KEY'],
wireFormat: 'openai',
model: 'moonshotai/kimi-k3',
host: 'api.blazerail.com',
path: '/v1/chat/completions',
buildHeaders: () => ({
Authorization: `Bearer ${process.env.BLAZERAIL_API_KEY}`,
}),
},
name: 'blazerail',
requiredEnvVars: ['BLAZERAIL_API_KEY'],
wireFormat: 'openai',
model: 'moonshotai/kimi-k3',
host: 'api.blazerail.com',
path: '/v1/chat/completions',
buildHeaders: () => ({
Authorization: `Bearer ${process.env.BLAZERAIL_API_KEY}`,
}),
extraBody: {
temperature: undefined,
},
reasoningCountsAsFirstToken: true,
},
Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment on lines +216 to +225

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 BlazeRail Kimi TTFT measures first visible token, not reasoning

This entry omits reasoningCountsAsFirstToken: true that every other openai Kimi entry sets, so contentRegexFor uses the non-reasoning pattern (benchmarks/ai-gateway/phase-probe.ts:64). Because kimi-k3 reasons before answering, TTFT captures the whole reasoning phase and is inflated far above the other participants.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

{
name: 'novita',
requiredEnvVars: ['NOVITA_API_KEY'],
Expand Down
15 changes: 15 additions & 0 deletions benchmarks/ai-gateway/providers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,21 @@ export const providers: AIGatewayProviderConfig[] = [
...(process.env.CLOUDFLARE_AI_GATEWAY_TOKEN ? { 'cf-aig-authorization': `Bearer ${process.env.CLOUDFLARE_AI_GATEWAY_TOKEN}` } : {}),
}),
},
{
// BlazeRail: OpenAI-compatible /v1/chat/completions; the gateway translates
// Anthropic-'s native SSE to OpenAI chunks internally. anthropic/claude-haiku-4.5
// is BlazeRail-s public id; it is served by Anthropic direct and DeepInfra,
// routed by measured health/price - the product behavior being benchmarked.
name: 'blazerail',
requiredEnvVars: ['BLAZERAIL_API_KEY'],
wireFormat: 'openai',
model: 'anthropic/claude-haiku-4.5',
host: 'api.blazerail.com',
path: '/v1/chat/completions',
buildHeaders: () => ({
Authorization: `Bearer ${process.env.BLAZERAIL_API_KEY}`,
}),
},
{
// `anthropic/` here is LLM Gateway's provider-pinning syntax (provider/model),
// so requests route to Anthropic itself — the same underlying model and
Expand Down