LLMApi: Notes de diffusion (Français (French))

LLMApi: Notes de diffusion

Sunday, 02 November 2025

//

32 minute read

NOTE: Il s'agit des notes de diffusion en direct de gitHub.

Intorduction

Just the release notes from this nuget package. This is 'liveM SK2 from GitHub so will update frequently.

Notes de diffusion

v2.3.0 - Soutien du type de contenu complet

Remise en liberté: Décembre Concentration: Soutien complet du type de contenu HTTP - formulairesM SK2 téléchargement des fichiers , voies profondes

Cette version ajoute un support complet pour tous les types de contenu HTTP communs, rendant l'API-ébauche compatible avec les formulaires HTML, téléchargements de fichiers , et des chemins ensemblés complexesSSK3 Toutes les fonctionnalités utilisent la construction manuelle JSON pour M SK4NET 10 compatibilité

Principales caractéristiques

1. Forme de soutien du corps application/x-www-form-urlencoded) 🔥

Le problème est résolu: Aucun soutien pour les présentations de formulaire HTML - un type de contenu HTTP fondamental.

Solution: Conversion automatique des données du formulaire à JSON avec un évacuation approprié

Exemple d'utilisation:

curl -X POST http://localhost:5116/api/mock/users/register \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "username=john_doe&[email protected]&age=30"

Caractéristiques:

  • Valeurs simples et multiples (arrays)
  • Évacuation de caractères spéciaux (quotesM SK1backslashes,newlinesMSC3tabs )
  • Support de Unicode et d'emojis
  • Construction manuelle de JSON (sans réflexionM SK1
  • Traitement des valeurs vides

Valeurs multiples:

curl -X POST http://localhost:5116/api/mock/posts \
  -d "title=My Post&tags=tech&tags=programming&tags=llm"

Tag automatically converted to JSON array: ["tech", "programming", "llm"]

2. Soutien au téléchargement des fichiers multipart/form-data) 🔥

Le problème est résolu: Aucun support pour les téléchargements de fichiers - essentiel à l'essai du document/interfaces d'affichage des imagesM SK3

Solution: Memory-Safe streaming de fichiers avec extraction des métadonnées

Exemple d'utilisation:

curl -X POST http://localhost:5116/api/mock/photos/upload \
  -F "title=My Photo" \
  -F "description=Beautiful sunset" \
  -F "[email protected]"

Caractéristiques:

  • Memory-Safe Streaming: Les fichiers sont lus par le biais d’un tampon de 8KB et détournés.
  • Extraction de métadonnées: Nom du fichier , type de contenu M SK2 taille , lecture des octets
  • Plusieurs fichiers: charger plusieurs fichiers dans une seule demande
  • Contenu mixte: Champs de formulaire + fichiers ensemble
  • Soutien de fichiers importants: Étudié avec des fichiers 100MBM SK2
  • Variété du type de contenu: TexteM SK1 PDF, JPEGMSC3 binaire - tous supportés

Comment cela fonctionne:

  • Le contenu des fichiers est transmis et discardé (empêche le bloat de la mémoire)
  • Seuls les métadonnées sont conservés et transmis à LLM
  • LLM génère une réponse appropriée en fonction du contexte d'un téléchargement

Réponse par exemple:

{
  "message": "File uploaded successfully",
  "file": {
    "fieldName": "image",
    "fileName": "photo.jpg",
    "contentType": "image/jpeg",
    "size": 524288,
    "processed": true
  }
}

3. Longueurs arbitraires des voies de cheminement 🔥

Le problème est résolu: Soutien à la profondeur des voies limitées - Les APIs RESTful utilisent souvent le nidage de profondeur

Solution: Soutien complet pour les voies profondes via {**path} catch-all routing

Exemple d'utilisation:

# 9-segment deep path
curl "http://localhost:5116/api/mock/v1/api/products/electronics/computers/laptops/gaming/high-end/2024/details"

# RESTful resource structure
curl "http://localhost:5116/api/mock/v2/organizations/org-123/departments/dept-456/employees/emp-789/reviews"

# With complex query string
curl "http://localhost:5116/api/mock/products/search?category=electronics&brand=Dell&model=XPS15&price_min=1000&price_max=2500"

Caractéristiques:

  • Aucune limite pratique sur la profondeur du chemin (testée à 21 segmentsM SK2
  • Paramètres de la demande entièrement préservés
  • Fonctionne avec toutes les méthodes HTTP (GETM SK1 POST, PUTMSC3 DELETEMST4 PATCHMst5
  • Compatible avec les formulaires et les téléchargements de fichier
  • LLM incorpore les segments de cheminement dans des réponses réalistes

Mise en œuvre technique

.NET 10 Compatibilité

Utilisation de toutes les caractéristiques construction manuelle de JSON pour éviter les réflexions-sérialisation basée:

// Manual JSON escaping
private static string EscapeJsonString(string str)
{
    return "\"" + str
        .Replace("\\", "\\\\")
        .Replace("\"", "\\\"")
        .Replace("\n", "\\n")
        .Replace("\r", "\\r")
        .Replace("\t", "\\t")
        + "\"";
}

Pourquoi le manuel?:

Mémoire-Gestion de fichiers sécuritaire

// Stream and dump file content
var buffer = new byte[8192];
long totalRead = 0;
int bytesRead;

while ((bytesRead = await stream.ReadAsync(buffer)) > 0)
{
    totalRead += bytesRead;
    // Content is discarded - only track size
}

Résultat: Utilisation de l'O constante(1) mémoire indépendamment de la taille du fichierM SK2

Essais approfondis

Nouveaux essaisEssais : 60 unité Suite d'essai totaleEssais : 405 Taux de passage: 100%

Évaluer les fichiers:

  • FormBodyHandlingTests.cs - 12 Essais de partage des formulaires
  • JsonHandlingTests.cs - 25 essais d'évacuation et d'extraction de JSON
  • V2_3_0_FeatureTests.cs - 23 Essais d'intégration pour les flux de travail complets

Catégories:

  • Partage du corps de forme (valeurs uniquesM SK1arrées,cartes spéciales ,unicédodeMSC4mojieMST5
  • Données sur les formulaires multipartites (extraction de métadonnées , champs mixtesM SK2 fichiers, grands fichiers
  • Évacuation de JSON (tous les caractères spéciauxM SK1caisses à bord)
  • Voies profondes ( jusqu’à 21 segments, demandes complexesPSK3 structures résistantesM SK4
  • Systèmes combinés (route profonde + formulaires + fichiersMSC3

Rendement

Rendement de la mise à jour des fichiers:

  • Mémoire: Constante OM SK1 - seulement 8KiB de tampon dans la mémoire
  • Accroître la vitesse: Streaming permet d'extraire de grands fichiers sans bloquer
  • Sécurité: Contenu jamais entreposé, empêche les attaques DoS

Rendement de la construction JSON:

  • Évacuation manuelle 10-20% plus rapide que la réflexion
  • Moins de collections GC
  • Le comportement prévisible du temps d'exécution

Résilier les changements

✅ Aucune - Compatible entièrement à l'arrière

  • Toutes les fonctionnalités existantes fonctionnent sans changement
  • Aucun changement de surface API
  • Configuration compatible vers l'arrière
  • Régressions zéro (tous 345 Passé des essais existantsM SK2

Guide des migrations

Aucune migration n’est nécessaire! Tous les changements sont additifs:

// Existing code works as-is
builder.Services.AddLLMockApi(builder.Configuration);
app.MapLLMockApi("/api/mock");

// New content types automatically supported
// - JSON (existing)
// - Form bodies (new)
// - File uploads (new)
// - Deep paths (enhanced)

Documentation

Nouvelle documentation:

  • TEST_SUMMARY.md - Couplage complet des essais 60 nouveaux essais
  • IMPLEMENTATION_SUMMARY.md - Détails sur la mise en œuvre technique
  • V2_3_0_TESTS.md - Documentation d'essai de l'intégration

Documentation mise à jour:

  • README.md - Nouveaux exemples d'utilisation pour les formulairesFiches ,Préquences , voies profondes
  • Mise à jour de la section "Qu'est-ce queM SK1Nouveau"
  • Liste des caractéristiques mises à jour
  • Mise à jour de la section de couverture des essais

Limites connues

  1. Le contenu du fichier est détourné (sans accès à LLM pour l'analyse)
  2. Taille maximale de fichier limitée par les paramètres ASP.NET Core (~28MB)
  3. Forme de nom du champ d'arrimage convention: les noms de champ répétés deviennent des tableaux

Utiliser les cas

Forme de soutien du corps:

  • Examen des formulaires HTML (login,inscriptionM SK2 commentaires )
  • Applications Web traditionnelles
  • URL-clients API encodés

Soutien au téléchargement des fichiers:

  • Utilisations de mise à jour du document
  • Essais de mise à jour d'images
  • Mise à jour des photos du profil
  • Opérations de fichier en vrac
  • Traitement des pièces jointes

Voies profondes:

  • RESTful API structures
  • Applications multi-tenant
  • Accès hiérarchique aux ressources
  • Méthodes de routage complexes

Contributeurs

Toutes les fonctionnalités v2.3.0 développées et testées par l’équipe d’API LLMock.


v2.2.0 M SK1 Outils pluggables & Pré-APIs Configurés

Concentration: MCPM SK1 Système d'outils compatible, pré-- APIs REST configurés , et mémoire contextuelle intelligente

Cette version introduit un puissant système d'outils pluggables pour appeler des API externes et poursuivre les points de fin modèles, ainsi que des définitions préconfigurées de l'API REST qui éliminent la configuration répétitive . La mémoire contextuelle est maintenant autonome- gère avec expiration automatique et extraction complète du champM SK4

Principales caractéristiques

1. Outils pluggables & Système d'actions 🔥

Le problème est résolu: Il n’est pas possible d’appeler des API externes ou des points de fin modèles de chaîne pour créer des flux de travail et des arbres décisionnels réalistes.

Solution: MCP- Système d'outils compatible avec les exécutants HTTP et Mock

Types d'outils:

Outils HTTP - Demander des API REST externes

{
  "Name": "getUserData",
  "Type": "http",
  "HttpConfig": {
    "Endpoint": "https://api.example.com/users/{userId}",
    "Method": "GET",
    "AuthType": "bearer",
    "AuthToken": "${API_TOKEN}",  // Environment variable support
    "ResponsePath": "$.data"       // JSONPath extraction
  }
}

Outils de défectuosité - Modèles de chaîne pour les arbres décisionnels

{
  "Name": "getOrderHistory",
  "Type": "mock",
  "MockConfig": {
    "Endpoint": "/api/mock/users/{userId}/orders",
    "Method": "GET",
    "QueryParams": { "limit": "10" },
    "Shape": "{\"orders\":[{\"id\":\"string\",\"total\":0.0}]}"
  }
}

Faits clés:

  • Remplacement du modèle: {paramName} placeholders in URLs, headers, bodies
  • Variables environnementales: ${ENV_VAR_NAME} pour le stockage de renseignements confidentiels
  • Authentification: BearerM SK1 Basic, API Key support
  • Extraction de JSONPath: Extraire des champs spécifiques des réponses
  • Chaînement d'outils: Exécuter plusieurs outils en séquence
  • Limites de sécurité: MaxToolChainDepth et MaxConcurrentTools protègent l'exécution en fuite
  • Cache des résultats: Opérations de cache coûteuses par demande
  • MCP Compatible: Architecture prête à l'intégration du protocole de contexte modèle

Modes d'exécution:

  • Disabled: Outils non disponibles
  • Explicit: Demande par téléphone ?useTool=name ou X-Use-Tool en-tête (Phase
  • LlmDriven: LLM détermine les outils à appeler.

Exemple d'utilisation:

# Execute tool explicitly
GET /api/mock/user-profile?useTool=getUserData&userId=123

# Chain multiple tools
GET /api/mock/dashboard?useTool=getUserData,getOrderHistory&userId=123

# Tool results automatically merged into LLM context
Response: {
  "user": { /* enriched with real API data */ },
  "orders": [ /* from tool chain */ ]
}

Documentation: docs/TOOLS_ACTIONS.md (500+ lignesM SK1

2. Pré-APIs REST Configurés 🔥

Le problème est résolu: Configuration répétitive pour les patrons API communs - forme, contexteMSC3 outilsM SK4 limite de vitesseMska5 etcM Ska6

Solution: Définir toutes les configurations de l'API une fois qu'on a appelé , par nom

Exemple de configuration:

{
  "RestApis": [
    {
      "Name": "user-profile",
      "Method": "GET",
      "Path": "profile/{userId}",
      "Shape": "{\"user\":{},\"orders\":[],\"recommendations\":[]}",
      "ContextName": "user-session",
      "Tools": ["getUserData", "getOrderHistory"],
      "Tags": ["users", "composite"],
      "CacheCount": 5,
      "RateLimitDelay": "500-1000"
    }
  ]
}

Fonctions supportées:

  • Spécification de la forme: Forme JSON ou référence à la spécification OpenAPI
  • Intégration OpenAPI: OpenApiSpec + OpenApiOperationId pour la génération dirigée par schema-
  • Contexte partagé: Gestion automatique du contexte via ContextName
  • Intégration des outils: Pré-configure les outils à exécuter
  • Tags/Groupes: Organiser les API par catégorie
  • Limitation du taux: Configuration de retard d'API par - Per
  • N-Complétions: Gérer plusieurs variantes
  • Enregistrement: Enabler l'écoulement d'SSE
  • Simulation d'une erreur: Configuration de l'erreur de configuration
  • Paramètres par défaut: Params et titres de demande

Avantages:

  • Répétition zéro: Configurer une fois, utiliser partout
  • Essais cohérents: La même formeM SK1contexte à l’échelle de l’équipe
  • Prototypage rapide: appeler par nom au lieu des demandes de construction
  • Documentation: Les APIs sont auto-documentés dans la configuration

Utilisation ( par l’intermédiaire des points de gestion - venant en version vM SK2

# List all configured APIs
GET /api/configured

# Execute configured API
GET /api/configured/user-profile?userId=123

appsettings.FullM SK1json: 8 exemples complets incluant eM SK2 flux de travail commerciaux, , APIs de surveillance et , scénarios d'essai

3. Mémoire de contexte dynamique avec expiration automatique 🔥

Le problème est résolu: Mémoire de contexte précédemment accumulé à titre indéfini , nécessitant un nettoyage manuel et pouvant causer des fuites de mémoire dans les longues sessions d'essai ou les pipelines de CD

Solution: ASP.NET Core IMemoryCache avec l'expiration progressive

// NEW: Automatic expiration with sliding window
public class MemoryCacheContextStore : IContextStore
{
    private readonly IMemoryCache _cache;
    private readonly TimeSpan _slidingExpiration; // Default: 15 minutes

    // Contexts automatically expire after inactivity
    // Every access refreshes the expiration timer
    // Zero risk of memory leaks!
}

Principaux avantages:

  • Nettoyage manuel zéro: Les contextes disparaissent automatiquement après 15 minutes d'inactivité
  • L'expiration des Sliding: Le Timer se rétablit à chaque appel API - les contextes actifs n'expirent jamais
  • Efficacité de la mémoire: parfait pour les pipelines CIM SK1CD - aucune accumulation d'état entre les essais
  • Durée de configuration: Établir les heures de 5 minutes à 24 selon vos besoins

Configuration:

{
  "mostlylucid.mockllmapi": {
    "ContextExpirationMinutes": 15  // Default: 15 (range: 5-1440)
  }
}

Paramètres recommandés:

  • 5 minutes: Essais d'unités rapides , CIM SK2 Pipelines CD
  • 15 minutes: Défault - Essais de développement général CSM2 recommandésCMS3
  • 30 minutes: Processus de travail complexe à plusieurs étapes
  • 60+ minutes: Séances d'essais exploratoires longues

2. Extraction intelligente de données partagées

Le problème est résolu: Seulement les champs en code dur (id, userId, name, email) ont été suivisM SK1 limitant la cohérence pour le domaine - champs spécifiques tels que les numéros d'articles de l'SKU M SK3 numéros de compte , codes de référence MSC5 etc.

Solution: Extraction récursive de champs qui capte Toutes champs automatiquement

Avant (vM SK1:

// Only 4 hardcoded fields extracted
{"lastId": "123", "lastUserId": "456", "lastName": "Alice", "lastEmail": "[email protected]"}

Maintenant (vM SK1:

// ALL fields extracted up to 2 levels deep
{
  "orderId": "123",
  "sku": "WIDGET-01",
  "price": "49.99",
  "customer.customerId": "456",
  "customer.tier": "gold",
  "customer.address.city": "Seattle",  // Nested 2 levels
  "items.length": "1",
  "items[0].productId": "789",
  "items[0].quantity": "2",
  // Legacy keys still work:
  "lastId": "123"
}

Nouvelles capacités:

  • Objects nichés: Extraits address.city, payment.cardNumber avec la notation de points
  • Traçage de l'arrée: Longueurs des tableaux de stockage (items.length: 5)
  • Données sur le premier article: Captures items[0].productId Automatiquement
  • Champs personnalisés: Tout domaine - champ spécifique est maintenant suivi
  • Domaines non limités: Travaux pour l’e-commerceM SK1Commerce,FinanceMST3SantéMSC4Génématiques,, etc.
  • Compatible à l'arrière: Legacy lastId, lastUserId les clés fonctionnent encore

Real-Impact mondial:

### Create order with SKU and tier
POST /api/mock/orders?context=checkout
Response: {"orderId": 123, "sku": "WIDGET-01", "customer": {"tier": "gold"}}

### Apply discount - automatically uses same SKU and tier!
POST /api/mock/discounts?context=checkout
Response: {
  "discountId": 789,
  "sku": "WIDGET-01",      ← Same SKU from previous call
  "customerTier": "gold",  ← Same tier from previous call
  "discount": 0.15
}

Le LLM voit maintenant tous extrait des champs dans le prompt et maintient la cohérence entre les données spécifiques du domaine- sans aucune configuration

Détails techniques

Système d'outils pluggables:

Configuration de l'outil (Models/ToolConfig.cs):

  • Modèle de configuration détaillé pour tous les types d'outils
  • Soutien pour HTTP, Mock, et types d'outils extensibles
  • Systèmes de paramètre avec validation du type
  • Configuration de l'interruption et du cache

Exécuteur de l'outil Http (Services/Tools/HttpToolExecutor.cs):

  • Substitution de modèles dans les organes URLs, headers, en utilisant {paramName}
  • Résolution variable de l'environnement avec ${ENV_VAR_NAME}
  • Authentication: BearerM SK1 Basic, API Key
  • Extraction de la réponse JSONPath
  • Traitement des erreurs globales

MockToolExecutor (Services/Tools/MockToolExecutor.cs):

  • Demande d'autres paramètres finaux modèles pour les flux de travail de l'arbre décisionnel
  • Appuie toutes les fonctionnalités du point final de modèle (shape , contextM SK2 etc.)
  • Activer des simulations API complexes multi-step

Registre de l'outil (Services/Tools/ToolRegistry.cs):

  • Dévoiler et valider les outils configurés
  • Enregistrement de l'exécuteur extensible par IToolExecutor interface
  • Génie des définitions d'outils pour LLM (Phase

Instrument d'orchestre (Services/Tools/ToolOrchestrator.cs):

  • Coordonner l'exécution des outils avec les limites de sécurité
  • MaxToolChainDepth tracking per request (prevents infinite loops)
  • Limite de MaxConcurrentTools
  • Cache des résultats par demande
  • Formats des résultats de la fusion du contexte LLM

Pré-APIs REST Configurés:

RestApiConfig (Models/RestApiConfig.cs):

  • Modèle de définition API complet
  • Appui à la référence des spécifications OpenAPI
  • Intégration de l'outil, tags, paramètres par défaut
  • Toutes les fonctionnalités de modèle: forme, contexteM SK2 limitation du tauxMSC3 diffusion en direct , caching

RestApiRegistry (Services/RestApiRegistry.cs):

  • Charge et valide toutes les APIs configurées
  • Thread-recherche de sécurité avec ConcurrentDictionary
  • Auto-recharge les changements de configuration (IOptionsMonitor)
  • Tag-filtration et regroupement fondés sur
  • Validation: champs requis, méthodes HTTP valides , valeurs positives

Mémoire de contexte:

MemoryCacheContextStore (Services/MemoryCacheContextStore.cs):

  • Utilisations IMemoryCache avec SlidingExpiration option
  • Registres PostEvictionCallback pour l'enregistrement automatique de nettoyage
  • Thread-sécuritaire avec ConcurrentDictionary pour le suivi des noms
  • Détection et suppression des entrées en suspens lors de l'énumération

OpenApiContextManager (Services/OpenApiContextManager.cs):

  • Nouveau ExtractAllFields() méthode d'extraction récursive
  • Extraction récursive de champs avec une profondeur configurable (defaultM SK1 2 niveaux)
  • Applique les valeurs primitives et les tableaux , ,
  • Rétablissement de la retenue: Longes chaînes (>100 chars) maintenant tronquées dans SharedData pour éviter les bloats
  • Retour compatible avec l'extraction de champs anciens

Configuration (LLMockApiOptions.cs):

  • Nouveau Tools tableau de définitions d'outils pluggables
  • Nouveau ToolExecutionMode enum (Disabled /ExplicitM SK2LlmDriven)
  • Nouveau MaxConcurrentTools et MaxToolChainDepth les limites de sécurité;
  • Nouveau RestApis tableau pour les définitions de l'API préconfigurée -
  • Nouveau ContextExpirationMinutes propriété (défaultM SK1 15, étendue
  • Tous inscrits à DI via LLMockApiExtensions.RegisterCoreServices()

Évaluation

8 Nouveaux essais dans OpenApiContextManagerTests.cs:

  • ✅ Extraction dynamique de tous les champs primitives
  • ✅ Extraction d'objets nichés avec la notation de points
  • ✅ Traçage de la longueur de l'arrée
  • ✅ Extraction du champ de l'article premier tableau
  • ✅ Niveaux de nidification multiples (2 profond par défaut
  • ✅ Types de données mixtes (stringsM SK2 numbersMSC3 booleans)
  • ✅ Compatibilité à l'arrière avec les clés traditionnelles
  • ✅ Cases de bord (Objectifs vides, valeurs nullesM SK3 limite de nidification profondeMSC4

Mise à jour de la documentation

Nouvelle documentation:

  • docs/TOOLS_ACTIONS.md (500+ lignesM SK1 Guide complet sur le système d'outils pluggables

    • Aperçu et compatibilité MCP
    • Types d'outils (HTTP et Mock)
    • Référence de configuration avec toutes les options
    • Méthodes d'authentification (Bearer , BasicM SK2 API Key)
    • Exemples d'utilisation et modèles
    • Patterns d'arbre de décision avec outils de simulation
    • Systèmes avancés ( logique conditionnelle , points d'achèvement dynamiques
    • Phase 2/3 feuille de route (LLM-sélection d'outils pilotésM SK3 arbres décisionnels avancésMSC4
    • Référence API avec les schémas TypeScript
    • Troubleshooting et considérations relatives au rendement
  • docs/RATE_LIMITING_BATCHING.md: Guide global de limitation des taux

    • Options de configuration et stratégies
    • N-complissements avec le battage
    • Per- suivi des statistiques de point final
    • Exemples d'essais de performance

Les fichiers mis à jour:

  • README.md: Nouvelle section v2.2.0 avec outils et API préconfigurés
  • appsettings.Full.json: Exemples complets pour:
    • Configuration des outils 5 ( Outils HTTP et Mock
    • 8 pré-définitions de REST API configurées
    • Exemples d'authentification de l'outil
    • Patterns d'arbre de décision
  • LLMApi.http: 20+ nouveaux exemples de demande HTTP
    • Exécution de l'outil par le biais des paramètres et des titres de demande
    • Exemples de substitution des modèles
    • Méthodes de recherche d'outils
    • Exemples d'authentification
    • Extraction de JSONPath
    • Surveillance du rendement
  • docs/API-CONTEXTS.md: Réécriture complète de l’entreposage du contexte et d’extraction des données partagées
    • Architecture IMemoryCache
    • Le comportement d'expiration en cascade
    • Exemples d'extraction dynamique
    • Cases d'utilisation Real-world avec des données nested
  • CLAUDE.md: Mise à jour avec toutes les nouvelles options de configuration
    • Outils & Configuration des actions
    • Pre-APIs REST configurés
    • Paramètres d'expiration du contexte

Résilier les changements

Aucune - Compatible complètement à l'arrière avec v2.1.0:

  • Extraction de champs hérités (lastId, lastUserId, etc .) fonctionne toujours
  • Le code de contexte existant continue à fonctionner sans changement
  • Les nouvelles fonctionnalités sont automatiques - aucun changement de code n'est nécessaire

Guide des migrations

Aucune migration n’est nécessaire! Améliorer et profiter des avantages automatiques:

  1. Expiration du contexte: Les contextes automatisés - se nettoient maintenant eux-mêmes
  2. Extraction améliorée: Automatique - tous les champs sont maintenant suivis

Optionnel: Configurer le temps d'expiration si par défaut 15 minutes ne convient pas à votre flux de travail'

{
  "mostlylucid.mockllmapi": {
    "ContextExpirationMinutes": 30  // Increase for longer test sessions
  }
}

Impact sur le rendement

Utilisation de la mémoire: Réduction globale en raison de l'expiration automatique

  • Les contextes ne s'accumulent plus indéfiniment
  • CI/Les pipelines de CD restent en mémoire
  • Long-services d'exploitation autonomeM SK1clean

Frais d'extraction: Minimale (< 1ms par réponseM SK3

  • L'extraction récursive est hautement optimisée
  • Fonctionne seulement sur les réponses avec des contextes
  • Limite de profondeur empêche la récursion en train d'échouer

Utilisation des tokens: légèrement augmenté

  • Plus de champs dans les données partagées = prompts légèrement plus longs
  • Augmentation typique: M SK1 tokens par contexte
  • Offset par expiration automatique (moins de contextes globaux)

Compatibilité

  • Compatible intégralement à l'arrière avec v2.1.0
  • Toutes les fonctionnalités existantes continuent de fonctionner
  • Aucun changement de rupture
  • Mise à niveau-in-place recommandée

v2.1.0 M SK1 ≥- Qualité & Version de validation

Concentration: Amélioration de la fiabilité , essais complets M SK2 et meilleure expérience des développeurs

Cette version met l’accent sur l’amélioration de la fiabilité des chunks, fournissant un outil exhaustif de validation , et rationalisant la gestion de la configurationM SK2 Toutes les fonctionnalités de v2.0 demeurent pleinement compatiblesMSC4

Principales améliorations

1. Suite complète de validation HTTP

  • 70+ Cas d'essai: Protection complète de la validation dans LLMApi.http
    • Gestion de l'API Open (loadM SK1 list, getMSC3 unload , describeMST5
    • Gestion du contexte de l'API (créer, mettre à jour , pauseM SK3 renouveler
    • gRPC proto management (uploadMSC1 list, getM SK3 servicesMST4 callMSL5
    • Validation continue de l'écoulement SSE
    • Essais de cartographie avec des larges tableaux
    • Historique du contexte et descriptions personnalisées
    • Choix du backend (X-LLMM SK2Header de l'arrière-plan
    • Validation du schéma (includeSchema + XM SK2Response-SchemaMSC4
    • Validation des caractéristiques combinées
    • Simulation des erreurs (codes d'erreur HTTP compréhensifs)

2. Amélioration de la fiabilité du processus de fabrication

  • Formatage de l'arrée explicite: Des prompts améliorés avec des instructions explicites pour la génération d'arréaux JSON à l'aide d'un ultra-
    • Des règles de formattage critiques ont été ajoutées PromptBuilder.cs: " Votre premier caractère DOIT être ["
    • Formatage renforcé de l'arrée dans ChunkingCoordinator.cs Contexte de l'article
    • Prévient la comma- sortie d'un objet séparé (eM SK2g ., {...},{...} au lieu de [{...},{...}])
  • Amélioration de l'instruction suivante: Amélioration des directives pour les LLM lors de demandes multiples
  • Limites connues: Modèle documenté docs/OLLAMA_MODELS.md)

3. Simplification de la configuration

  • Nettoyage appsettings.json: Commentaires sur le modèle verbose retirés , structure plus propre
  • docs/OLLAMA_MODELS.md: Nouveau guide de référence complet (285 lignes
    • 10+ configurations de modèles avec des exigences matérielles
    • Lignes directrices sur la température pour différents cas d'utilisation
    • Recommandations en matière de taille des fenêtres contextuelles
    • Exemples de configuration multi-backend
    • Guide de troubleshooting pour la résolution des problèmes
    • Instructions d'installation du modèle

4. Amélioration de la documentation

  • Documentation complète de l'évacuateur: Tous les points de gestion 25+ ont maintenant des dossiers Swagger complets
    • Tag organisation (OpenAPI Management,Contextes APIM SK2gRPCMST3 etcMSC4
    • Résumés et descriptions détaillées
    • Demande/exemples de réponse
  • Référence à l'API de backend: Nouveau docs/BACKEND_API_REFERENCE.md (600+ lignesM SK1
    • Documentation finale complète
    • Paramètres de recherche et référence des titres
    • Formats de réponse d'erreurs
    • Documentation du centre SignalR

Fixes de bogues

  • Fixé problème d'encodage URL dans le test HTTP pour les descriptions des points de fin OpenAPI (:, /, {, } caractères)

Les fichiers sont modifiés

Changements de code:

  • mostlylucid.mockllmapi/Services/PromptBuilder.cs: Instructions de formattage des tableaux améliorés
  • mostlylucid.mockllmapi/Services/ChunkingCoordinator.cs: Formatage additionnel de tableaux dans le contexte du tronçon (line 447)
  • LLMApi/appsettings.json: Configuration simplifiée

Nouvelle documentation:

  • docs/OLLAMA_MODELS.md: Guide de configuration détaillé du modèle
  • docs/BACKEND_API_REFERENCE.md: Référence API de gestion complète

Dossiers mis à jour:

  • LLMApi/LLMApi.http: Étendue de la ligne 448 à la ligne 847

Limites connues

Concentration à haute température:

  • Les LLM peuvent générer des objets séparés par comma-au lieu de tableaux à température 1.2+
  • Méthodes de recours:
    1. Température inférieure à 0.8-1.0 pour les demandes ponctuelles
    2. Utiliser llama3.2:3b ou mistralM SK1nemo (instructions meilleures aprèsMSC3
    3. Réduire le nombre d'articles pour éviter la fragmentation
    4. Disable auto-chunking with ?autoChunk=false

Voir docs/OLLAMA_MODELS.md pour une solution détaillée des problèmes.

Compatibilité

  • Compatible intégralement à l'arrière avec v2.0.0
  • Toutes les fonctionnalités existantes continuent de fonctionner
  • Aucun changement de rupture

v2.0.0 M SK1 ≥- MAJOR RELEASE

Aucun changement important - En dépit de l’écrasement majeur des versions, tous les codes existants continuent à fonctionner.

Il s’agit d’un important jalon de lancement qui transforme l’API LLMock en une production complète, - plate-forme pour le moquage réalisteM SK2 Version 2.0 ajoute des modes d’écoulement SSE réalistesMST4 multiMSC5 balayage du chargement de la backendMSM6 sélection globale de la Backend MSM7 et documentation exhaustiveMMSC8

Principales caractéristiques

1. Modes réels d'écoulement de l'SSE MAJORM SK2

Trois modes distincts de diffusion SSE pour tester différents modèles API réels

Mode LlmTokens (Définition par défaut - Compatible à l'arrière

  • Token-by-token streaming pour les interfaces de chat AI
  • Format: {"chunk":"text","accumulated":"fulltext","done":false}
  • Case à utiliser: Utilisation d'interfaces de chatbot pour tester les applications LLM

Mode des objectifs complets (NEWM SK1

  • Remplir les objets JSON en tant que événements distincts de l'SSE
  • Format: {"data":{object},"index":0,"total":10,"done":false}
  • Case d'utilisation: TwitterM SK1X API, stock tickersMSC3 realMST4time feeds , IoT sensors

Mode d'ArrayItems (NEWM SK1

  • Éléments d'arrée avec des métadonnées riches
  • Format: {"item":{object},"index":0,"total":100,"arrayName":"users","hasMore":true,"done":false}
  • Case à utiliser: Résultats pagenésM SK1 exportations en vrac, résultats de recherche

Configuration:

{
  "MockLlmApi": {
    "SseMode": "CompleteObjects"  // LlmTokens | CompleteObjects | ArrayItems
  }
}

Per-Request Override:

GET /api/mock/stream/users?sseMode=CompleteObjects
GET /api/mock/stream/data?sseMode=ArrayItems
GET /api/mock/stream/chat?sseMode=LlmTokens

Exemple de client (Objects complets):

const eventSource = new EventSource('/api/mock/stream/users?sseMode=CompleteObjects');

eventSource.onmessage = (event) => {
    const response = JSON.parse(event.data);

    if (response.done) {
        console.log('Complete!');
        eventSource.close();
    } else {
        console.log(`User ${response.index + 1}/${response.total}:`, response.data);
        // response.data contains the complete user object
    }
};

Équilibrage des charges de l'arrière-plan (MAJOR

Distribuer les demandes à travers plusieurs backends de LLM pour un haut débit:

Configuration:

{
  "MockLlmApi": {
    "Backends": [
      {
        "Name": "ollama-llama3",
        "Provider": "ollama",
        "Weight": 3,
        "Enabled": true
      },
      {
        "Name": "ollama-mistral",
        "Provider": "ollama",
        "Weight": 2,
        "Enabled": true
      },
      {
        "Name": "lmstudio-default",
        "Provider": "lmstudio",
        "Weight": 1,
        "Enabled": true
      }
    ]
  }
}

SignalR Hub with Load Balancing:

{
  "HubContexts": [
    {
      "Name": "high-throughput-data",
      "BackendNames": ["ollama-llama3", "ollama-mistral", "lmstudio-default"]
    }
  ]
}

Caractéristiques:

  • Distribution pondérée derobin
  • Per-request de sélection du backend
  • Failover automatique par défaut si les backends ne sont pas disponibles
  • Travaille avec SignalR, SSE, RESTM SK2 et GraphQL

3. Selection globale de l'arrière-plan

Per-Request Selection (Methodologies multiples):

# Via query parameter
GET /api/mock/users?backend=openai-gpt4

# Via header
GET /api/mock/users
X-LLM-Backend: openai-gpt4

# SignalR hub context
{
  "HubContexts": [
    {
      "Name": "analytics",
      "BackendName": "openai-gpt4-turbo"
    }
  ]
}

Multiples fournisseurs simultanément:

  • Ollama (modèles locauxM SK1
  • OpenAI (cloud API)
  • LM Studio (server local)
  • Mistral-Nemo (128k contexteM SK2

4. MistralM SK1Nemo 128k Soutien du contexte

Configuration pour Mistral-Nemo avec massive 128k context windowM SK2

{
  "Backends": [
    {
      "Name": "ollama-mistral-nemo",
      "Provider": "ollama",
      "ModelName": "mistral-nemo",
      "MaxTokens": 128000,
      "Enabled": true
    }
  ]
}

Utiliser les cases:

  • Gérer des milliers de documents détaillés dans une seule demande
  • Structures de données ensemencées complexes avec des relations profondes
  • Opérations de gros lots (utiliser avec MaxItems=10000+)
  • Ensembles de données d'essai exhaustifs
  • Demandes de GraphQL avec des champs étenduement ensemblés

Exemple de SignalR:

{
  "HubContexts": [
    {
      "Name": "massive-dataset-128k",
      "Description": "Massive dataset generation with 128k context",
      "BackendName": "ollama-mistral-nemo"
    }
  ]
}

5. Swagger/OpenAPI UI

Interactive API documentation avec Swagger UI:

  • L'interface de Swagger: Disponible à /swagger
  • Spécification OpenAPI: AutoM SK1générée à partir de points finals
  • Essais interactifs: Essayez les points finals directement dans le navigateur
  • Descriptions détaillées: Documentation complète pour tous les points finals
  • Navigation: Lien vers le titre de la page de démonstration

Activer dans le programme.cs:

builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

app.UseSwagger();
app.UseSwaggerUI();

Révision de la documentation

Nouveaux fichiers de documentation

  • docs/SSE_STREAMING_MODES.md (2,500+ lignesM SK1 - Guide complet de l'SSE

    • Explication détaillée des trois modes
    • Exemples de code client pour chaque mode
    • Utiliser la matrice de décision des cas
    • Tableaux de comparaison
    • Guide des migrations
    • Section Troubleshooting
  • LLMApi/SSE_Streaming.http - 30+ Examples HTTP pour les modes SSE

    • Exemples pour les trois modes SSE
    • Exemples de fonctionnalités combinées (selection du backend,contexte
    • Usages pratiques (tickers de stockM SK1 exportations en vrac, registresMSC3
    • Exemples de code JavaScript du client

Documentation mise à jour

  • docs/CONFIGURATION_REFERENCE.md - Section des modes d'SSE ajoutée
  • docs/MULTIPLE_LLM_BACKENDS.md - Amélioré par balayage de la charge
  • appsettings.Full.json - Exemples de mode SSE ajoutés et Mistral

🧪 Amélioration des essais

Nouvelle couverture d'essai:

  • Essais de mode SSE 22 (tous les passagesM SK1
    • Validation de la valeur d'Enum
    • Analyse de la configuration
    • Supprimer le paramètre de la demande
    • Validation du format d'événement pour tous les modes
    • Case-parsage insensible

Suite d'essai totale:

  • Essais 218 (213 PassationM SK1 5 Essais gRPC ont été abandonnés)
  • Nulle erreur de compilation ou mises en garde
  • Compatibilité ultérieure complète vérifiée

🔧 Améliorations de configuration

Nouvelles options de configuration:

{
  "MockLlmApi": {
    // SSE Streaming Modes (NEW)
    "SseMode": "LlmTokens",  // LlmTokens | CompleteObjects | ArrayItems

    // Multiple LLM Backends with Load Balancing (v1.8.0)
    "Backends": [
      {
        "Name": "backend-name",
        "Provider": "ollama",  // ollama | openai | lmstudio
        "BaseUrl": "http://localhost:11434/v1/",
        "ModelName": "llama3",
        "ApiKey": null,
        "MaxTokens": 8192,
        "Enabled": true,
        "Weight": 3,  // For load balancing
        "Priority": 10
      }
    ],

    // Legacy Single Backend (Still Supported)
    "BaseUrl": "http://localhost:11434/v1/",
    "ModelName": "llama3",

    // Auto-Chunking (v1.8.0)
    "EnableAutoChunking": true,
    "MaxInputTokens": 4096,
    "MaxOutputTokens": 2048,
    "MaxItems": 1000,

    // Streaming Configuration
    "StreamingChunkDelayMinMs": 0,
    "StreamingChunkDelayMaxMs": 0,

    // Cache Configuration
    "CacheSlidingExpirationMinutes": 15,
    "CacheAbsoluteExpirationMinutes": 60,
    "MaxCachePerKey": 5
  }
}

🌍 Variables environnementales

Soutien global des variables environnementales avec une documentation complète:

# SSE Mode
export MockLlmApi__SseMode="CompleteObjects"

# Backend Selection
export MockLlmApi__Backends__0__Name="ollama-llama3"
export MockLlmApi__Backends__0__Provider="ollama"
export MockLlmApi__Backends__0__BaseUrl="http://localhost:11434/v1/"
export MockLlmApi__Backends__0__ModelName="llama3"
export MockLlmApi__Backends__0__Enabled="true"
export MockLlmApi__Backends__0__Weight="3"

# SignalR Hub Contexts with Backend Selection
export MockLlmApi__HubContexts__0__Name="analytics"
export MockLlmApi__HubContexts__0__BackendName="openai-gpt4-turbo"

# Or load balancing
export MockLlmApi__HubContexts__1__BackendNames__0="ollama-llama3"
export MockLlmApi__HubContexts__1__BackendNames__1="ollama-mistral"

📦 Nouveaux fichiers

Mise en œuvre de base:

  • mostlylucid.mockllmapi/Models/SseMode.cs - Enum du mode SSE
  • mostlylucid.mockllmapi/Services/Providers/ILlmProvider.cs - Interface des fournisseurs
  • mostlylucid.mockllmapi/Services/Providers/OllamaProvider.cs - Fournisseur Ollama
  • mostlylucid.mockllmapi/Services/Providers/OpenAIProvider.cs - Officier OpenAI
  • mostlylucid.mockllmapi/Services/Providers/LMStudioProvider.cs - Fournisseur de Studio LM
  • mostlylucid.mockllmapi/Services/Providers/LlmProviderFactory.cs - Fabrication de fournisseurs
  • mostlylucid.mockllmapi/Services/LlmBackendSelector.cs - Logique de sélection du backend

Essais:

  • LLMApi.Tests/SseModeTests.cs Essais de mode SSE

Documentation:

  • docs/SSE_STREAMING_MODES.md - Guide complet de l'SSE 2,500+ lignesM SK2
  • LLMApi/SSE_Streaming.http Exemples de SSE

📝 Dossiers mis à jour

Services de base:

  • mostlylucid.mockllmapi/LLMockApiOptions.cs - Ajouté SseMode propriété, LlmBackends Tableau 1
  • mostlylucid.mockllmapi/RequestHandlers/StreamingRequestHandler.cs - Routage du mode SSE ajouté
  • mostlylucid.mockllmapi/Services/LlmClient.cs - Surcharges supplémentaires de sélection du backend ajoutées
  • mostlylucid.mockllmapi/Services/MockDataBackgroundService.cs - Ajout de la sélection du backend SignalR
  • mostlylucid.mockllmapi/Models/HubContextConfig.cs - Ajouté BackendName et BackendNames

Documentation:

  • README.md - Mise à jour à v2.0, liste complète des fonctionnalités
  • docs/CONFIGURATION_REFERENCE.md - Modus SSE et sélection de backend ajoutés
  • docs/MULTIPLE_LLM_BACKENDS.md - Amélioré avec des exemples d'équilibre de la charge
  • appsettings.Full.json - Exemples détaillés ajoutés

Application de démonstration:

  • LLMApi/Program.cs - Configuration de Swagger ajoutée
  • LLMApi/Pages/_Layout.cshtml - Lien UI de Swagger ajouté

🎨 Exemples de cas d'utilisation

Stock Market Feed (Objects complets):

GET /api/mock/stream/stocks?sseMode=CompleteObjects&shape={"ticker":"AAPL","price":150.25,"change":2.5}

Exportation de marchandises en vrac (ArrayItems):

GET /api/mock/stream/export-customers?sseMode=ArrayItems&shape={"customers":[{"id":"string","name":"string"}]}

Interface de chat AI (LlmTokens):

GET /api/mock/stream/chat?sseMode=LlmTokens&shape={"message":"Hello!"}

High-Senseurs IoT à haut débit M SK1Load Balanced):

{
  "HubContexts": [
    {
      "Name": "iot-sensors",
      "BackendNames": ["ollama-llama3", "ollama-mistral", "lmstudio-default"]
    }
  ]
}

Ensemble de données massives avec 128k Contexte

GET /api/mock/stream/bulk-data?sseMode=ArrayItems&backend=ollama-mistral-nemo

Migration de v1.x

Aucun changement de code requis!

Version 2.0 est compatible 100% vers l'arrière avec vM SK2x:

// v1.x code - still works exactly the same
builder.Services.AddLLMockApi(builder.Configuration);
app.MapLLMockApi("/api/mock", includeStreaming: true);

// SSE streaming defaults to LlmTokens mode (original behavior)
// Legacy single backend config (BaseUrl/ModelName) still works

Opt-Introduction aux nouvelles fonctionnalités:

// Same setup, just update appsettings.json
{
  "MockLlmApi": {
    "SseMode": "CompleteObjects",  // Switch to realistic streaming
    "Backends": [...]  // Add multiple backends
  }
}

Résilier les changements

NONE!

En dépit de la version majeure de 2.0,, il n’y a aucune modification de rupture.

  • Le mode SSE par défaut est LlmTokens (conduite originaleM SK1
  • L'héritage BaseUrl/ModelName config encore supporté
  • Tous les points de fin existants fonctionnent sans changement
  • Tous les tests existants réussissent
  • La compatibilité ultérieure totale est maintenue

📈 Amélioration du rendement

  • Balancing des charges multi-Backend: Distribuer la charge sur plusieurs instances LLM
  • Tour pondéré-Robin: Distribution intelligente basée sur les fonctionnalités de backend
  • Backend-Limitations spécifiques des tokens: Optimiser les capacités de chaque modèle
  • Mode des objectifs complets: Moins d’événements SSE = moins de frais généraux que le token

Pourquoi la version 2.0?

Cette version représente une transformation fondamentale:

v1.xM SK1 Mock API avec génération à puissance LLM-

  • Un seul backend LLM
  • Un mode d'écoulement SSE
  • Configuration de base

v2.0: Production-Ready Mock Platform

  • Multiple LLM backends with load balancing
  • Trois modes d'écoulement SSE réalistes
  • Choix intégral du backend
  • Production-configuration à l'échelle M SK1k contextes)
  • Enterprise-documentation prête
  • Documentation API interactive (Swagger)

Version 2.0 positionne LLMock API comme une plate-forme de remorquement complète capable de traiter la production-exigences d'essai à grande échelle dans divers cas d'utilisationM SK2

Documentation complète

🙏 Merci

Merci à tous les utilisateurs et contributeurs qui ont aidé à transformer l’API LLMock en une plate-forme de montage complète. Votre rétroaction et vos cas d’utilisation ont conduit ces améliorations!


v1.8.0 M SK1

Voir les notes de mise à jour précédentes pour v1.8.0 fonctions M SK1Support multiple du backend LLM, Demande automatisée de saisie de fichiersMSC3 Configuration améliorée des caches ).


Publications antérieures

Voir l’historique complet de la mise à jour ci-dessous pour v1.7.xM SK1 v 1.6.x≥, v\1.5.x , et les versions antérieuresMSC6

Finding related posts...
logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.