Scrydon

LLM

Implémenter la capacité LLM — chat, complétion, streaming, estimation des tokens, découverte dynamique de modèles.

Pour les fournisseurs de modèles d'IA (OpenAI, Anthropic, …). Implémente le chat / la complétion / le streaming et expose optionnellement un estimateur de tokens et un récupérateur de modèles dynamique.

Définir la capacité

import { defineCapabilityLLM } from "@scrydon/sdk-authoring/integrations/define";

const llmCapability = defineCapabilityLLM({
  models: [
    {
      id: "my-model-v1",
      pricing: { input: 3.0, output: 15.0 }, // par million de tokens
      contextWindow: 128000,
      capabilities: {
        temperature: { min: 0, max: 2 },
        toolUsageControl: true,
        nativeStructuredOutputs: true,
      },
    },
  ],
  runtime: {
    async executeRequest(request, executor, logger) {
      const response = await fetch("https://api.example.com/v1/chat", {
        method: "POST",
        headers: {
          Authorization: `Bearer ${request.apiKey}`,
          "Content-Type": "application/json",
        },
        body: JSON.stringify({
          model: request.model,
          messages: request.messages,
          temperature: request.temperature,
        }),
      });
      return await response.json();
    },
  },
  tokenEstimator: {
    avgCharsPerToken: 4,
    estimate(text) {
      return { count: Math.ceil(text.length / 4), confidence: "medium" };
    },
  },
  // Au niveau supérieur de LLMCapabilityConfig — pas imbriqué dans un wrapper.
  async fetchModels(config) {
    const response = await fetch("https://api.example.com/v1/models", {
      headers: { Authorization: `Bearer ${config.apiKey}` },
    });
    const data = await response.json();
    return data.models.map((m: any) => ({ id: m.id }));
  },
});

L'intégrer dans un produit

const myProduct = defineProduct({
  // ...
  capabilities: {
    tools: [/* ... */],
    runtimes: { llm: llmCapability },
  },
});

Les fournisseurs proposant des capacités LLM définissent également le champ llm de niveau supérieur pour le sélecteur de modèles de la plateforme :

export default defineVendor({
  // ...
  llm: {
    defaultModel: "my-model-v1",
    models: [
      {
        id: "my-model-v1",
        pricing: { input: 3.0, output: 15.0, updatedAt: "2026-01-15" },
        capabilities: { temperature: { min: 0, max: 2 } },
        contextWindow: 128000,
      },
    ],
  },
});

Benchmarks

BenchmarkDirection
MMLUplus élevé est meilleur
HumanEvalplus élevé est meilleur
GPQAplus élevé est meilleur

Ajoutez benchmarks à vos entrées de modèles et l'interface les affichera aux côtés du nom du modèle, de la fenêtre de contexte et des tarifs.

Sur cette page

Sur cette page