feat(provider): add small model priorities
This commit is contained in:
parent
65ba1f6c13
commit
3ce6851472
2 changed files with 77 additions and 15 deletions
|
|
@ -28,6 +28,7 @@ import { withStatics } from "@/util/schema"
|
||||||
|
|
||||||
import * as ProviderTransform from "./transform"
|
import * as ProviderTransform from "./transform"
|
||||||
import { ModelID, ProviderID } from "./schema"
|
import { ModelID, ProviderID } from "./schema"
|
||||||
|
import { ProviderSmallModel } from "./small-model"
|
||||||
|
|
||||||
const log = Log.create({ service: "provider" })
|
const log = Log.create({ service: "provider" })
|
||||||
|
|
||||||
|
|
@ -1611,22 +1612,10 @@ const layer: Layer.Layer<
|
||||||
const provider = s.providers[providerID]
|
const provider = s.providers[providerID]
|
||||||
if (!provider) return undefined
|
if (!provider) return undefined
|
||||||
|
|
||||||
let priority = [
|
const priority = ProviderSmallModel.priority[providerID] ?? []
|
||||||
"claude-haiku-4-5",
|
|
||||||
"claude-haiku-4.5",
|
|
||||||
"3-5-haiku",
|
|
||||||
"3.5-haiku",
|
|
||||||
"gemini-3-flash",
|
|
||||||
"gemini-2.5-flash",
|
|
||||||
"gpt-5-nano",
|
|
||||||
]
|
|
||||||
if (providerID.startsWith("opencode")) {
|
|
||||||
priority = ["gpt-5-nano"]
|
|
||||||
}
|
|
||||||
if (providerID.startsWith("github-copilot")) {
|
|
||||||
priority = ["gpt-5-mini", "claude-haiku-4.5", ...priority]
|
|
||||||
}
|
|
||||||
for (const item of priority) {
|
for (const item of priority) {
|
||||||
|
if (provider.models[item]) return yield* getModel(providerID, ModelID.make(item))
|
||||||
|
|
||||||
if (providerID === ProviderID.amazonBedrock) {
|
if (providerID === ProviderID.amazonBedrock) {
|
||||||
const crossRegionPrefixes = ["global.", "us.", "eu."]
|
const crossRegionPrefixes = ["global.", "us.", "eu."]
|
||||||
const candidates = Object.keys(provider.models).filter((m) => m.includes(item))
|
const candidates = Object.keys(provider.models).filter((m) => m.includes(item))
|
||||||
|
|
|
||||||
73
packages/opencode/src/provider/small-model.ts
Normal file
73
packages/opencode/src/provider/small-model.ts
Normal file
|
|
@ -0,0 +1,73 @@
|
||||||
|
export * as ProviderSmallModel from "./small-model"
|
||||||
|
|
||||||
|
export const priority: Record<string, string[]> = {
|
||||||
|
opencode: [
|
||||||
|
"gpt-5.4-mini",
|
||||||
|
"gemini-3-flash",
|
||||||
|
"claude-haiku-4-5",
|
||||||
|
],
|
||||||
|
"opencode-go": ["minimax-m2.7", "minimax-m2.5"],
|
||||||
|
openai: [
|
||||||
|
"gpt-5.4-mini",
|
||||||
|
"gpt-5.4-nano",
|
||||||
|
"gpt-5.1-codex-mini",
|
||||||
|
"gpt-5-mini",
|
||||||
|
"gpt-5-nano",
|
||||||
|
"gpt-4.1-nano",
|
||||||
|
"gpt-4o-mini",
|
||||||
|
],
|
||||||
|
anthropic: ["claude-haiku-4-5", "claude-3-5-haiku", "claude-3-haiku"],
|
||||||
|
google: [
|
||||||
|
"gemini-3.1-flash-lite-preview",
|
||||||
|
"gemini-flash-lite-latest",
|
||||||
|
"gemini-3-flash-preview",
|
||||||
|
"gemini-2.5-flash",
|
||||||
|
"gemini-2.5-flash-lite",
|
||||||
|
"gemini-2.0-flash-lite",
|
||||||
|
],
|
||||||
|
"google-vertex": [
|
||||||
|
"gemini-3.1-flash-lite-preview",
|
||||||
|
"gemini-flash-lite-latest",
|
||||||
|
"gemini-3-flash-preview",
|
||||||
|
"gemini-2.5-flash",
|
||||||
|
"gemini-2.5-flash-lite",
|
||||||
|
"gemini-2.0-flash-lite",
|
||||||
|
],
|
||||||
|
"github-copilot": [
|
||||||
|
"gpt-5.4-mini",
|
||||||
|
"gemini-3-flash-preview",
|
||||||
|
"claude-haiku-4.5",
|
||||||
|
],
|
||||||
|
xai: [
|
||||||
|
"grok-4.20-0309-non-reasoning",
|
||||||
|
"grok-4-1-fast-non-reasoning",
|
||||||
|
"grok-4-fast-non-reasoning",
|
||||||
|
"grok-code-fast-1",
|
||||||
|
"grok-3-mini-fast-latest",
|
||||||
|
"grok-3-mini-fast",
|
||||||
|
"grok-3-mini-latest",
|
||||||
|
"grok-3-mini",
|
||||||
|
],
|
||||||
|
"amazon-bedrock": [
|
||||||
|
"anthropic.claude-haiku-4-5",
|
||||||
|
"openai.gpt-oss-20b",
|
||||||
|
"mistral.ministral-3-8b",
|
||||||
|
"mistral.ministral-3-3b",
|
||||||
|
"amazon.nova-2-lite",
|
||||||
|
"amazon.nova-lite",
|
||||||
|
"mistral.voxtral-mini-3b",
|
||||||
|
"meta.llama3-1-8b",
|
||||||
|
],
|
||||||
|
openrouter: [
|
||||||
|
"openai/gpt-5.4-mini",
|
||||||
|
"openai/gpt-5.4-nano",
|
||||||
|
"google/gemini-3.1-flash-lite-preview",
|
||||||
|
"anthropic/claude-haiku-4.5",
|
||||||
|
"x-ai/grok-4.20-beta",
|
||||||
|
"x-ai/grok-4-fast",
|
||||||
|
"mistralai/mistral-small-2603",
|
||||||
|
"openai/gpt-5.1-codex-mini",
|
||||||
|
"openai/gpt-5-mini",
|
||||||
|
"openai/gpt-5-nano",
|
||||||
|
],
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue