in scripts/inference-providers/scripts/generate.ts [622:712]
schema: processPayloadSchema(specs.stream_output),
})
: undefined,
};
}),
);
// Render tips
TASKS.forEach((task) => {
DATA.tips.linksToTaskPage[task] = TIP_LINK_TO_TASK_PAGE_TEMPLATE({ task });
DATA.tips.listModelsLink[task] = TIP_LIST_MODELS_LINK_TEMPLATE({ task });
});
///////////////////////////////////////////////
//// Data for chat-completion special case ////
///////////////////////////////////////////////
async function fetchChatCompletion() {
// Conversational text-generation
console.log(
" ⚡ Prepare data for chat-completion (conversational text-generation)",
);
DATA.recommendedModels["chat-completion"] = DATA.recommendedModels[
"text-generation"
].filter((model) => model.tags?.includes("conversational"));
DATA.perProviderWarmModels["chat-completion"] = await fetchWarmModels(
"text-generation",
true,
);
const providersMappingChatCompletion = buildProviderMapping(
DATA.perProviderWarmModels["chat-completion"],
);
DATA.snippets["chat-completion"] = SNIPPETS_TEMPLATE({
task: "text-generation",
taskSnakeCase: "chat_completion",
taskAttached: "chatCompletion",
conversational: true,
hasSnippets: Object.keys(providersMappingChatCompletion).length > 0,
providersMappingAsStr: JSON.stringify(providersMappingChatCompletion),
});
// Conversational image-text-to-text
console.log(
" ⚡ Prepare data for chat-completion (conversational image-text-to-text)",
);
DATA.recommendedModels["conversational-image-text-to-text"] =
DATA.recommendedModels["image-text-to-text"].filter((model) =>
model.tags?.includes("conversational"),
);
DATA.perProviderWarmModels["image-text-to-text"] = await fetchWarmModels(
"image-text-to-text",
true,
);
const providersMappingImageTextToText = buildProviderMapping(
DATA.perProviderWarmModels["image-text-to-text"],
);
DATA.snippets["conversational-image-text-to-text"] = SNIPPETS_TEMPLATE({
task: "image-text-to-text",
taskSnakeCase: "chat_completion",
taskAttached: "chatCompletion",
conversational: true,
hasSnippets: Object.keys(providersMappingImageTextToText).length > 0,
providersMappingAsStr: JSON.stringify(providersMappingImageTextToText),
});
}
await fetchChatCompletion();
///////////////////////////////
//// Providers pages utils ////
///////////////////////////////
const PER_PROVIDER_TASKS: Record<
string, // provider
{
provider: string;
pipelineTag: string;
title: string;
linkAnchor: string;
modelId: string;
providerModelId: string;
conversational: boolean;
}[]
> = {};
// Populate PER_PROVIDER_TASKS based on DATA.perProviderWarmModels
Object.entries(DATA.perProviderWarmModels).forEach(([task, models]) => {
models.forEach((model) => {
if (!PER_PROVIDER_TASKS[model.provider]) {