schema: processPayloadSchema()

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]) {