mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 05:10:44 +00:00
feat: declare fireworks model catalog
This commit is contained in:
@@ -23,6 +23,45 @@
|
||||
"cliDescription": "Fireworks API key"
|
||||
}
|
||||
],
|
||||
"modelCatalog": {
|
||||
"providers": {
|
||||
"fireworks": {
|
||||
"baseUrl": "https://api.fireworks.ai/inference/v1",
|
||||
"api": "openai-completions",
|
||||
"models": [
|
||||
{
|
||||
"id": "accounts/fireworks/models/kimi-k2p6",
|
||||
"name": "Kimi K2.6",
|
||||
"input": ["text", "image"],
|
||||
"contextWindow": 262144,
|
||||
"maxTokens": 262144,
|
||||
"cost": {
|
||||
"input": 0.95,
|
||||
"output": 4,
|
||||
"cacheRead": 0,
|
||||
"cacheWrite": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "accounts/fireworks/routers/kimi-k2p5-turbo",
|
||||
"name": "Kimi K2.5 Turbo (Fire Pass)",
|
||||
"input": ["text", "image"],
|
||||
"contextWindow": 256000,
|
||||
"maxTokens": 256000,
|
||||
"cost": {
|
||||
"input": 0,
|
||||
"output": 0,
|
||||
"cacheRead": 0,
|
||||
"cacheWrite": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"discovery": {
|
||||
"fireworks": "static"
|
||||
}
|
||||
},
|
||||
"configSchema": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
|
||||
@@ -1,57 +1,50 @@
|
||||
import { buildManifestModelProviderConfig } from "openclaw/plugin-sdk/provider-catalog-shared";
|
||||
import type {
|
||||
ModelDefinitionConfig,
|
||||
ModelProviderConfig,
|
||||
} from "openclaw/plugin-sdk/provider-model-shared";
|
||||
import manifest from "./openclaw.plugin.json" with { type: "json" };
|
||||
|
||||
export const FIREWORKS_BASE_URL = "https://api.fireworks.ai/inference/v1";
|
||||
const FIREWORKS_MANIFEST_PROVIDER = buildManifestModelProviderConfig({
|
||||
providerId: "fireworks",
|
||||
catalog: manifest.modelCatalog.providers.fireworks,
|
||||
});
|
||||
|
||||
export const FIREWORKS_BASE_URL = FIREWORKS_MANIFEST_PROVIDER.baseUrl;
|
||||
export const FIREWORKS_DEFAULT_MODEL_ID = "accounts/fireworks/routers/kimi-k2p5-turbo";
|
||||
export const FIREWORKS_K2_6_MODEL_ID = "accounts/fireworks/models/kimi-k2p6";
|
||||
export const FIREWORKS_DEFAULT_CONTEXT_WINDOW = 256000;
|
||||
export const FIREWORKS_DEFAULT_MAX_TOKENS = 256000;
|
||||
export const FIREWORKS_K2_6_CONTEXT_WINDOW = 262144;
|
||||
export const FIREWORKS_K2_6_MAX_TOKENS = 262144;
|
||||
|
||||
const ZERO_COST = {
|
||||
input: 0,
|
||||
output: 0,
|
||||
cacheRead: 0,
|
||||
cacheWrite: 0,
|
||||
} as const;
|
||||
function requireFireworksManifestModel(id: string): ModelDefinitionConfig {
|
||||
const model = FIREWORKS_MANIFEST_PROVIDER.models.find((entry) => entry.id === id);
|
||||
if (!model) {
|
||||
throw new Error(`Missing Fireworks modelCatalog row ${id}`);
|
||||
}
|
||||
return model;
|
||||
}
|
||||
|
||||
const FIREWORKS_K2_6_COST = {
|
||||
input: 0.95,
|
||||
output: 4,
|
||||
cacheRead: 0,
|
||||
cacheWrite: 0,
|
||||
} as const;
|
||||
const FIREWORKS_DEFAULT_MODEL = requireFireworksManifestModel(FIREWORKS_DEFAULT_MODEL_ID);
|
||||
const FIREWORKS_K2_6_MODEL = requireFireworksManifestModel(FIREWORKS_K2_6_MODEL_ID);
|
||||
|
||||
export const FIREWORKS_DEFAULT_CONTEXT_WINDOW = FIREWORKS_DEFAULT_MODEL.contextWindow;
|
||||
export const FIREWORKS_DEFAULT_MAX_TOKENS = FIREWORKS_DEFAULT_MODEL.maxTokens;
|
||||
export const FIREWORKS_K2_6_CONTEXT_WINDOW = FIREWORKS_K2_6_MODEL.contextWindow;
|
||||
export const FIREWORKS_K2_6_MAX_TOKENS = FIREWORKS_K2_6_MODEL.maxTokens;
|
||||
|
||||
function cloneFireworksCatalogModel(model: ModelDefinitionConfig): ModelDefinitionConfig {
|
||||
return {
|
||||
...model,
|
||||
input: [...model.input],
|
||||
cost: { ...model.cost },
|
||||
};
|
||||
}
|
||||
|
||||
export function buildFireworksCatalogModels(): ModelDefinitionConfig[] {
|
||||
return [
|
||||
{
|
||||
id: FIREWORKS_K2_6_MODEL_ID,
|
||||
name: "Kimi K2.6",
|
||||
reasoning: false,
|
||||
input: ["text", "image"],
|
||||
cost: FIREWORKS_K2_6_COST,
|
||||
contextWindow: FIREWORKS_K2_6_CONTEXT_WINDOW,
|
||||
maxTokens: FIREWORKS_K2_6_MAX_TOKENS,
|
||||
},
|
||||
{
|
||||
id: FIREWORKS_DEFAULT_MODEL_ID,
|
||||
name: "Kimi K2.5 Turbo (Fire Pass)",
|
||||
reasoning: false, // Kimi K2.5 can expose reasoning in visible content on FirePass.
|
||||
input: ["text", "image"],
|
||||
cost: ZERO_COST,
|
||||
contextWindow: FIREWORKS_DEFAULT_CONTEXT_WINDOW,
|
||||
maxTokens: FIREWORKS_DEFAULT_MAX_TOKENS,
|
||||
},
|
||||
];
|
||||
return FIREWORKS_MANIFEST_PROVIDER.models.map(cloneFireworksCatalogModel);
|
||||
}
|
||||
|
||||
export function buildFireworksProvider(): ModelProviderConfig {
|
||||
return {
|
||||
baseUrl: FIREWORKS_BASE_URL,
|
||||
api: "openai-completions",
|
||||
models: buildFireworksCatalogModels(),
|
||||
};
|
||||
return buildManifestModelProviderConfig({
|
||||
providerId: "fireworks",
|
||||
catalog: manifest.modelCatalog.providers.fireworks,
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user