mirror of
https://github.com/anomalyco/opencode.git
synced 2026-05-13 15:44:56 +00:00
chore: improve variant parsing for zen
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import type { APIEvent } from "@solidjs/start/server"
|
||||
import { handler } from "~/routes/zen/util/handler"
|
||||
import { parseOpenAiVariant } from "~/routes/zen/util/variant"
|
||||
|
||||
export function POST(input: APIEvent) {
|
||||
return handler(input, {
|
||||
@@ -7,7 +8,7 @@ export function POST(input: APIEvent) {
|
||||
modelList: "lite",
|
||||
parseApiKey: (headers: Headers) => headers.get("authorization")?.split(" ")[1],
|
||||
parseModel: (url: string, body: any) => body.model,
|
||||
parseVariant: (url: string, body: any) => body.reasoningEffort ?? body.reasoning_effort,
|
||||
parseVariant: (url: string, body: any) => parseOpenAiVariant(body),
|
||||
parseIsStream: (url: string, body: any) => !!body.stream,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import type { APIEvent } from "@solidjs/start/server"
|
||||
import { handler } from "~/routes/zen/util/handler"
|
||||
import { parseAnthropicVariant } from "~/routes/zen/util/variant"
|
||||
|
||||
export function POST(input: APIEvent) {
|
||||
return handler(input, {
|
||||
@@ -7,7 +8,7 @@ export function POST(input: APIEvent) {
|
||||
modelList: "lite",
|
||||
parseApiKey: (headers: Headers) => headers.get("x-api-key") ?? undefined,
|
||||
parseModel: (url: string, body: any) => body.model,
|
||||
parseVariant: (url: string, body: any) => body.effort,
|
||||
parseVariant: (url: string, body: any) => parseAnthropicVariant(body),
|
||||
parseIsStream: (url: string, body: any) => !!body.stream,
|
||||
})
|
||||
}
|
||||
|
||||
21
packages/console/app/src/routes/zen/util/variant.ts
Normal file
21
packages/console/app/src/routes/zen/util/variant.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
export function parseAnthropicVariant(body: any) {
|
||||
const effort = body.effort ?? body.output_config?.effort ?? body.outputConfig?.effort ?? body.thinking?.effort
|
||||
if (effort) return effort
|
||||
|
||||
const budget = body.thinking?.budget_tokens ?? body.thinking?.budgetTokens
|
||||
if (body.thinking?.type !== "enabled" || typeof budget !== "number") return undefined
|
||||
return budget > 16_000 ? "max" : "high"
|
||||
}
|
||||
|
||||
export function parseGoogleVariant(body: any) {
|
||||
const thinkingConfig = body.generationConfig?.thinkingConfig ?? body.thinkingConfig
|
||||
if (thinkingConfig?.thinkingLevel) return thinkingConfig.thinkingLevel
|
||||
|
||||
const budget = thinkingConfig?.thinkingBudget ?? thinkingConfig?.thinking_budget
|
||||
if (typeof budget !== "number" || budget <= 0) return undefined
|
||||
return budget > 16_000 ? "max" : "high"
|
||||
}
|
||||
|
||||
export function parseOpenAiVariant(body: any) {
|
||||
return body.reasoningEffort ?? body.reasoning_effort ?? body.reasoning?.effort
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
import type { APIEvent } from "@solidjs/start/server"
|
||||
import { handler } from "~/routes/zen/util/handler"
|
||||
import { parseOpenAiVariant } from "~/routes/zen/util/variant"
|
||||
|
||||
export function POST(input: APIEvent) {
|
||||
return handler(input, {
|
||||
@@ -7,7 +8,7 @@ export function POST(input: APIEvent) {
|
||||
modelList: "full",
|
||||
parseApiKey: (headers: Headers) => headers.get("authorization")?.split(" ")[1],
|
||||
parseModel: (url: string, body: any) => body.model,
|
||||
parseVariant: (url: string, body: any) => body.reasoningEffort ?? body.reasoning_effort,
|
||||
parseVariant: (url: string, body: any) => parseOpenAiVariant(body),
|
||||
parseIsStream: (url: string, body: any) => !!body.stream,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import type { APIEvent } from "@solidjs/start/server"
|
||||
import { handler } from "~/routes/zen/util/handler"
|
||||
import { parseAnthropicVariant } from "~/routes/zen/util/variant"
|
||||
|
||||
export function POST(input: APIEvent) {
|
||||
return handler(input, {
|
||||
@@ -7,7 +8,7 @@ export function POST(input: APIEvent) {
|
||||
modelList: "full",
|
||||
parseApiKey: (headers: Headers) => headers.get("x-api-key") ?? undefined,
|
||||
parseModel: (url: string, body: any) => body.model,
|
||||
parseVariant: (url: string, body: any) => body.effort,
|
||||
parseVariant: (url: string, body: any) => parseAnthropicVariant(body),
|
||||
parseIsStream: (url: string, body: any) => !!body.stream,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import type { APIEvent } from "@solidjs/start/server"
|
||||
import { handler } from "~/routes/zen/util/handler"
|
||||
import { parseGoogleVariant } from "~/routes/zen/util/variant"
|
||||
|
||||
export function POST(input: APIEvent) {
|
||||
return handler(input, {
|
||||
@@ -7,7 +8,7 @@ export function POST(input: APIEvent) {
|
||||
modelList: "full",
|
||||
parseApiKey: (headers: Headers) => headers.get("x-goog-api-key") ?? undefined,
|
||||
parseModel: (url: string, _body: any) => url.split("/").pop()?.split(":")?.[0] ?? "",
|
||||
parseVariant: (url: string, body: any) => body.thinkingLevel,
|
||||
parseVariant: (url: string, body: any) => parseGoogleVariant(body),
|
||||
parseIsStream: (url: string, _body: any) =>
|
||||
// ie. url: https://opencode.ai/zen/v1/models/gemini-3-pro:streamGenerateContent?alt=sse'
|
||||
url.split("/").pop()?.split(":")?.[1]?.startsWith("streamGenerateContent") ?? false,
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import type { APIEvent } from "@solidjs/start/server"
|
||||
import { handler } from "~/routes/zen/util/handler"
|
||||
import { parseOpenAiVariant } from "~/routes/zen/util/variant"
|
||||
|
||||
export function POST(input: APIEvent) {
|
||||
return handler(input, {
|
||||
@@ -7,7 +8,7 @@ export function POST(input: APIEvent) {
|
||||
modelList: "full",
|
||||
parseApiKey: (headers: Headers) => headers.get("authorization")?.split(" ")[1],
|
||||
parseModel: (url: string, body: any) => body.model,
|
||||
parseVariant: (url: string, body: any) => body.reasoning?.effort,
|
||||
parseVariant: (url: string, body: any) => parseOpenAiVariant(body),
|
||||
parseIsStream: (url: string, body: any) => !!body.stream,
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user