LLMApi: Μοναδική Αρχιτεκτονική Παραδείγματα (ελληνικά (Greek))

LLMApi: Μοναδική Αρχιτεκτονική Παραδείγματα

Sunday, 02 November 2025

//

10 minute read

Εισαγωγή

Ένα από τα βασικά πράγματα που ήθελα με LLMAPI ήταν η δυνατότητα να είναι όσο το δυνατόν ελαφρύ (οπότε απλά προσομοιώστε τον τύπο api που θέλετε) ΚΑΙ να είναι εξαιρετικά εύκολο να πάρετε intp? έτσι θα πρέπει να είστε σε θέση να πάρετε τα πάντα το ίδιο εύκολα.

Με αυτό στο μυαλό το σχεδίασα με την σπονδυλικότητα στο μυαλό (ψιθυρίζει... στο μέλλον θέλω να είστε σε θέση να προσθέσετε "plugins" που επιτρέπουν ακόμα περισσότερα).Εδώ είναι το άρθρο για το πώς λειτουργεί η αρχιτεκτονική και όλα είναι μέσα και έξω.Μπορείτε να βρείτε το

GitHub εδώ

για το έργο, όλος ο δημόσιος τομέας κ.λπ... ΣΗΜΕΙΩΣΗ: Αυτό είναι το ζωντανό από το gitHub.

Φτιάχνεται από τεχνητή νοημοσύνη.NuGetCity name (optional, probably does not need a translation)NuGetCity name (optional, probably does not need a translation)

Μπορείτε να βρείτε το

GitHub εδώγια το έργο, όλος ο δημόσιος τομέας κ.λπ...

Παραδείγματα Modular Architecture


Αναμίξτε και ταίριασμα

Πολλαπλά Περιστατικά

using mostlylucid.mockllmapi;

var builder = WebApplication.CreateBuilder(args);

// Registers ALL services (REST, Streaming, GraphQL)
builder.Services.AddLLMockApi(builder.Configuration);

// Optional: Add SignalR
builder.Services.AddLLMockSignalR(builder.Configuration);

builder.Services.AddRazorPages();

var app = builder.Build();

app.UseStaticFiles();
app.UseRouting();
app.MapRazorPages();

// Maps ALL endpoints (REST, Streaming, GraphQL) at /api/mock
app.MapLLMockApi("/api/mock", includeStreaming: true, includeGraphQL: true);

// Optional: Map SignalR
app.MapLLMockSignalR("/hub/mock", "/api/mock");

app.Run();

Οφέλη από την Προσαρμοσμένη Προσέγγιση

  • /api/mock/**Οδηγός μετανάστευσης
  • /api/mock/stream/**Περίληψη
  • /api/mock/graphqlΣυμβατό προς τα πίσω (ενοποιημένη προσέγγιση)
  • /hub/mockΟ υφιστάμενος κώδικας συνεχίζει να λειτουργεί χωρίς αλλαγές:
  • /api/mock/contextsΑυτό δημιουργεί:

- Τα τελικά σημεία REST

- SSE streaming terminals

  • GraphQL τελικό σημείο
using mostlylucid.mockllmapi;

var builder = WebApplication.CreateBuilder(args);

// Register ONLY REST services
builder.Services.AddLLMockRest(builder.Configuration);

var app = builder.Build();

app.UseRouting();

// Map ONLY REST endpoints
app.MapLLMockRest("/api/mock");

app.Run();

- SignalR hub (αν προστεθεί)

  • /api/mock/**- Διαχείριση σήματος API (αν προστεθεί)

Προσαρμοζόμενη προσέγγιση

  • Μόνο αναστρεψιμότητα
  • Ιδανικό για απλό χλευασμό REST API χωρίς επιπλέον από πάνω:
  • Αυτό δημιουργεί:

- Μόνο τελικά σημεία REST

Παροχές:

using mostlylucid.mockllmapi;

var builder = WebApplication.CreateBuilder(args);

// Register ONLY GraphQL services
builder.Services.AddLLMockGraphQL(builder.Configuration);

var app = builder.Build();

app.UseRouting();

// Map ONLY GraphQL endpoint
app.MapLLMockGraphQL("/api/mock");

app.Run();

Ελάχιστο αποτύπωμα μνήμης

  • /api/mock/graphqlΠιο γρήγορος χρόνος εκκίνησης

Το μόνο που περιλαμβάνει τακτική RequestHandler

  • ΓράφημαQL μόνο
  • Ιδανικό για εφαρμογές μόνο GraphQL:
  • Αυτό δημιουργεί:

- Το τελικό σημείο του GraphQL μόνο

Παροχές:

using mostlylucid.mockllmapi;

var builder = WebApplication.CreateBuilder(args);

// Register ONLY Streaming services
builder.Services.AddLLMockStreaming(builder.Configuration);

var app = builder.Build();

app.UseRouting();

// Map ONLY Streaming endpoints
app.MapLLMockStreaming("/api/mock");

app.Run();

Καθαρή ρύθμιση μόνο GraphQL

  • /api/mock/stream/**Δεν υπάρχουν περιττοί χειριστές REST

Ιδανικό για τη δοκιμή πελατών GraphQL

  • Streaming Only
  • Ιδανικό για τη δοκιμή SSE streaming πελάτες:
  • Αυτό δημιουργεί:

- μόνο τα τελικά σημεία ροής SSE

Παροχές:

using mostlylucid.mockllmapi;

var builder = WebApplication.CreateBuilder(args);

// Register ONLY SignalR services (includes core services automatically)
builder.Services.AddLLMockSignalR(options =>
{
    options.BaseUrl = "http://localhost:11434/v1/";
    options.ModelName = "llama3";
    options.SignalRPushIntervalMs = 5000;
});

var app = builder.Build();

app.UseRouting();

// Map ONLY SignalR endpoints
app.MapLLMockSignalR("/hub/mock", "/api/contexts");

app.Run();

Ελαφρύ streaming-μόνο ρύθμιση

  • /hub/mockΙδανικό για δοκιμές πηγαίου περιστατικού
  • /api/contextsΔεν υπάρχει REST/GraphQL από πάνω

Μόνο σήμαRName

  • Ιδανικό για την αναπαραγωγή ταμπλό σε πραγματικό χρόνο:
  • Αυτό δημιουργεί:
    • Signer hub

- Διαχείριση πλαισίου API

Παροχές:

using mostlylucid.mockllmapi;

var builder = WebApplication.CreateBuilder(args);

// Register services (gRPC included in AddLLMockApi)
builder.Services.AddLLMockApi(builder.Configuration);

var app = builder.Build();

app.UseRouting();

// Map ONLY gRPC endpoints
app.MapLLMockGrpcManagement("/api/grpc-protos");  // Proto file management
app.MapLLMockGrpc("/api/grpc");                   // gRPC service calls

app.Run();

Ρύθμιση μόνο σε πραγματικό χρόνο

  • /api/grpc-protosΔεν υπάρχει τελικό σημείο HTTP από πάνω
  • /api/grpc/{serviceName}/{methodName}Ιδανικό για δοκιμές WebSocket

gRPC μόνο

  • Ιδανικό για τη δοκιμή πελατών gRPC με δυναμικούς ορισμούς proto:
  • Αυτό δημιουργεί:
    • Ανεβάστε/διαχειριστείτε .proto αρχεία (POST, GET, DELETE)

- Εισάγετε ψεύτικες μεθόδους gRPC

# 1. Upload a proto definition
curl -X POST http://localhost:5116/api/grpc-protos \
  -H "Content-Type: text/plain" \
  --data 'syntax = "proto3"; service UserService { rpc GetUser(GetUserRequest) returns (User); }'

# 2. Call the gRPC method
curl -X POST http://localhost:5116/api/grpc/UserService/GetUser \
  -H "Content-Type: application/json" \
  -d '{"user_id": 123}'

Παροχές:

Δυναμική ανέβασμα proto χωρίς επαναφορά

using mostlylucid.mockllmapi;

var builder = WebApplication.CreateBuilder(args);

// Register ONLY OpenAPI services
builder.Services.AddLLMockOpenApi(options =>
{
    options.BaseUrl = "http://localhost:11434/v1/";
    options.ModelName = "llama3";
    options.OpenApiSpecs = new List<OpenApiSpecConfig>
    {
        new OpenApiSpecConfig
        {
            Name = "PetStore",
            Source = "https://petstore3.swagger.io/api/v3/openapi.json",
            BasePath = "/api/petstore"
        }
    };
});

var app = builder.Build();

app.UseRouting();

// Map ONLY OpenAPI endpoints
app.MapLLMockOpenApi();                      // Loads configured specs
app.MapLLMockOpenApiManagement("/api/specs"); // Dynamic spec management

app.Run();

Ιδανικό για δοκιμές πελατών gRPC

  • Η LLM παράγει ρεαλιστικές αντιδράσεις πρωτοβούφ/api/petstore/pet/{petId})
  • /api/specsΠαράδειγμα χρήσης:

Μόνο OpenAPI

  • Ιδανικό για χλευασμό υφιστάμενων προδιαγραφών OpenAPI/Swagger:
  • Αυτό δημιουργεί:
  • Όλα τα τελικά σημεία που ορίζονται στο OpenAPI spec σας (π.χ.,
    • Ανεβάστε/διαχειριστείτε τις προδιαγραφές OpenAPI δυναμικά (POST, GET, DELETE)

Παροχές:

Αυτόματα χλευάζουν ολόκληρες προδιαγραφές OpenAPI

using mostlylucid.mockllmapi;

var builder = WebApplication.CreateBuilder(args);

// Register REST services
builder.Services.AddLLMockRest(builder.Configuration);

var app = builder.Build();

app.UseRouting();

// Map REST endpoints
app.MapLLMockRest("/api/mock");

// Add context management API
app.MapLLMockApiContextManagement("/api/contexts");

app.Run();

Δεν απαιτείται χειροκίνητη χαρτογράφηση τελικού σημείου

  • /api/mock/**Υποστηρίζει τόσο στατικά (ρυθμισμένα) όσο και δυναμικά (uploaded) specs
  • /api/contexts/{contextId}Ιδανικό για δοκιμές σύμβασης API

Διαχείριση πλαισίου API

  • Προσθέστε την προβολή ιστορικού πλαισίου και την τροποποίηση:
  • Αυτό δημιουργεί:
    • Τα τελικά σημεία REST
    • Προβολή/τροποποίηση ιστορικού συζήτησης

Παροχές:

Προβολή ιστορικού συνομιλίας LLM για αποσφαλμάτωση

Τροποποίηση πλαισίου για την καθοδήγηση των απαντήσεων

using mostlylucid.mockllmapi;

var builder = WebApplication.CreateBuilder(args);

// Register REST and GraphQL services
builder.Services.AddLLMockRest(builder.Configuration);
builder.Services.AddLLMockGraphQL(builder.Configuration);

var app = builder.Build();

app.UseRouting();

// Map both protocols
app.MapLLMockRest("/api/mock");
app.MapLLMockGraphQL("/api/mock");

app.Run();

Καθαρό πλαίσιο για την κατάσταση επαναφοράς

  • /api/mock/**Ιδανικό για να δοκιμάσετε τα σενάρια stateful
  • /api/mock/graphqlΑναμίξτε και ταίριασμα
  • Συνδυάστε τα πρωτόκολλα όπως απαιτείται για την περίπτωση χρήσης σας:

Παράδειγμα 1: REST + GraphQL (No Streaming)

using mostlylucid.mockllmapi;

var builder = WebApplication.CreateBuilder(args);

// Register GraphQL and SignalR services
builder.Services.AddLLMockGraphQL(builder.Configuration);
builder.Services.AddLLMockSignalR(builder.Configuration);

var app = builder.Build();

app.UseRouting();

// Map both protocols
app.MapLLMockGraphQL("/api/queries");
app.MapLLMockSignalR("/hub/realtime", "/api/contexts");

app.Run();

Αυτό δημιουργεί:

  • /api/queries/graphql- Τα τελικά σημεία REST
  • /hub/realtime- GraphQL τελικό σημείο
  • /api/contextsΔεν υπάρχουν τελικά σημεία ροής
  • Παράδειγμα 2: GraphQL + SignalR (No Rest)

Αυτό δημιουργεί:

using mostlylucid.mockllmapi;

var builder = WebApplication.CreateBuilder(args);

// Register all services modularly
builder.Services.AddLLMockRest(builder.Configuration);
builder.Services.AddLLMockStreaming(builder.Configuration);
builder.Services.AddLLMockGraphQL(builder.Configuration);
builder.Services.AddLLMockSignalR(builder.Configuration);

var app = builder.Build();

app.UseRouting();

// Map each protocol with custom patterns
app.MapLLMockRest("/api/rest");           // /api/rest/**
app.MapLLMockStreaming("/api/stream");    // /api/stream/stream/**
app.MapLLMockGraphQL("/api/graphql");     // /api/graphql/graphql
app.MapLLMockSignalR("/hub/live", "/api/hub");

app.Run();

- GraphQL τελικό σημείο

  • /api/rest/**- Signer hub
  • /api/stream/stream/**- Διαχείριση σήματος API
  • /api/graphql/graphqlΔεν υπάρχουν τελικά σημεία REST ή SSE
  • /hub/liveΠαράδειγμα 3: Όλα με διαφορετικά πρότυπα
  • /api/hub/contextsΑυτό δημιουργεί:

- Τα τελικά σημεία REST

using mostlylucid.mockllmapi;

var builder = WebApplication.CreateBuilder(args);

// Register REST and OpenAPI services
builder.Services.AddLLMockRest(builder.Configuration);
builder.Services.AddLLMockOpenApi(builder.Configuration);

var app = builder.Build();

app.UseRouting();

// Map all three capabilities
app.MapLLMockRest("/api/mock");
app.MapLLMockOpenApi();
app.MapLLMockApiContextManagement("/api/contexts");

app.Run();

- SSE streaming

  • /api/mock/**- GraphQL τελικό σημείο
    • Signer hub
  • /api/contexts/{contextId}- Διαχείριση Signer
  • Παράδειγμα 4: REST + OpenAPI + Διαχείριση πλαισίου

Αυτό δημιουργεί:

using mostlylucid.mockllmapi;

var builder = WebApplication.CreateBuilder(args);

// Register services for both protocols
builder.Services.AddLLMockApi(builder.Configuration);  // Includes gRPC
builder.Services.AddLLMockOpenApi(builder.Configuration);

var app = builder.Build();

app.UseRouting();

// Map both protocols
app.MapLLMockGrpcManagement("/api/grpc-protos");
app.MapLLMockGrpc("/api/grpc");
app.MapLLMockOpenApi();

app.Run();

- Τα τελικά σημεία REST

  • /api/grpc-protosOpenAPI spec τελικό σημείο (από ρυθμισμένες προδιαγραφές)
  • /api/grpc/{service}/{method}- Διαχείριση πλαισίου
  • Δεν streaming, GraphQL, SignalR, ή gRPC
  • Παράδειγμα 5: gRPC + OpenAPI (Δοκιμή γέφυρας πρωτοκόλλου)

Αυτό δημιουργεί:

using mostlylucid.mockllmapi;

var builder = WebApplication.CreateBuilder(args);

// Register everything modularly
builder.Services.AddLLMockRest(builder.Configuration);
builder.Services.AddLLMockStreaming(builder.Configuration);
builder.Services.AddLLMockGraphQL(builder.Configuration);
builder.Services.AddLLMockSignalR(builder.Configuration);
builder.Services.AddLLMockOpenApi(options =>
{
    options.BaseUrl = "http://localhost:11434/v1/";
    options.ModelName = "llama3";
    options.OpenApiSpecs = new List<OpenApiSpecConfig>
    {
        new OpenApiSpecConfig
        {
            Name = "External API",
            Source = "https://api.example.com/openapi.json",
            BasePath = "/api/external"
        }
    };
});

var app = builder.Build();

app.UseRouting();

// Map everything at different paths
app.MapLLMockRest("/api/rest");
app.MapLLMockStreaming("/api/stream");
app.MapLLMockGraphQL("/api/graphql");
app.MapLLMockSignalR("/hub/realtime", "/api/hub");
app.MapLLMockOpenApi();
app.MapLLMockOpenApiManagement("/api/specs");
app.MapLLMockGrpcManagement("/api/grpc-protos");
app.MapLLMockGrpc("/api/grpc");
app.MapLLMockApiContextManagement("/api/contexts");

app.Run();

- διαχείριση proto gRPC

  • /api/rest/**- GRPC τηλεφωνεί
  • /api/stream/stream/**Προκαθορισμένα τελικά σημεία OpenAPI
  • /api/graphql/graphqlΙδανικό για τη δοκιμή γεφυρών/πυλώνων πρωτοκόλλου
  • /hub/realtimeΠαράδειγμα 6: Τα πάντα modular (Πλήρης δοκιμή στοίβας)
  • /api/hub/contextsΑυτό δημιουργεί:
  • /api/external/**- Τα τελικά σημεία REST
  • /api/specs- SSE streaming
  • /api/grpc-protos- GraphQL τελικό σημείο
  • /api/grpc/{service}/{method}- Signer hub
  • /api/contexts/{contextId}- Διαχείριση Signer

- OpenAPI ειδικά τελικά σημεία

    • Διαχείριση OpenAPI
    • διαχείριση proto gRPC
    • GRPC τηλεφωνεί
    • Διαχείριση πλαισίου

Ιδανικό για:

Πλήρης δοκιμή ενσωμάτωσης

using mostlylucid.mockllmapi;

var builder = WebApplication.CreateBuilder(args);

// Development endpoints - high randomness
builder.Services.AddLLMockRest(options =>
{
    options.BaseUrl = "http://localhost:11434/v1/";
    options.ModelName = "llama3";
    options.Temperature = 1.5;
});

builder.Services.AddLLMockGraphQL(options =>
{
    options.BaseUrl = "http://localhost:11434/v1/";
    options.ModelName = "llama3";
    options.Temperature = 1.5;
});

var app = builder.Build();

app.UseRouting();

// Development endpoints
app.MapLLMockRest("/api/dev");
app.MapLLMockGraphQL("/api/dev");

// Stable test endpoints (would need separate config)
app.MapLLMockRest("/api/test");
app.MapLLMockGraphQL("/api/test");

app.Run();

Δοκιμή αρχιτεκτονικής μικρουπηρεσίας

1. Πύλες API πολλαπλών πρωτοκόλλων

Ανάπτυξη πλήρους στοίβας με διάφορους τύπους πελατών

  • Πολλαπλά Περιστατικά
  • Εκτελέστε πολλαπλά ανεξάρτητα mock APIs με διαφορετικές διαμορφώσεις:
  • Οφέλη από την Προσαρμοσμένη Προσέγγιση

2. Μειωμένο αποτύπωμα μνήμης

Φορτώστε μόνο τους χειριστές που χρησιμοποιείτε:

3. Αναστήστε μόνο: ~30% λιγότερη μνήμη

GraphQL μόνο: ~40% λιγότερη μνήμη

4. Streaming only: ~40% λιγότερη μνήμη

Γρήγορη εκκίνηση

// Test file for REST only
builder.Services.AddLLMockRest(config);
app.MapLLMockRest("/api/mock");

// Test file for GraphQL only
builder.Services.AddLLMockGraphQL(config);
app.MapLLMockGraphQL("/api/mock");

5. Λιγότερες υπηρεσίες για εγγραφή = ταχύτερη εκκίνηση εφαρμογής

Καθαρότερη πρόθεση

// This still works exactly as before
builder.Services.AddLLMockApi(configuration);
app.MapLLMockApi("/api/mock");

6. Ο κώδικας δείχνει ρητά ποια πρωτόκολλα χρησιμοποιεί η εφαρμογή σας

Εύκολη δοκιμή

app.MapLLMockRest("/rest");
app.MapLLMockGraphQL("/gql");
app.MapLLMockStreaming("/events");
app.MapLLMockSignalR("/ws", "/manage");

Πρωτόκολλα δοκιμής σε απομόνωση:

Μη Σπάζοντας Αλλαγές

**Ο υφιστάμενος κώδικας συνεχίζει να λειτουργεί:**Εύκαμπτα μοτίβα

Προσάρτηση πρωτοκόλλων σε οποιαδήποτε διαδρομή:

Οδηγός μετανάστευσης

builder.Services.AddLLMockApi(builder.Configuration);
app.MapLLMockApi("/api/mock", includeStreaming: true, includeGraphQL: true);

Από v1.1.0 έως v1.2.0

// Only include what you need
builder.Services.AddLLMockRest(builder.Configuration);
builder.Services.AddLLMockGraphQL(builder.Configuration);

app.MapLLMockRest("/api/mock");
app.MapLLMockGraphQL("/api/mock");

Δεν απαιτούνται αλλαγές!


Ο υφιστάμενος σας κώδικας λειτουργεί ως-είναι.

Προαιρετική: Μετατροπή στη αρθρωτή προσέγγιση για τα οφέλη

Πριν από (v1. 1. 0): |----------|------------|------------|----------| | Μετά (v1. 2. 0 - Modular): | AddLLMockApi() | MapLLMockApi()Και οι δύο προσεγγίσεις λειτουργούν πανομοιότυπα, αλλά η αρθρωτή προσέγγιση είναι πιο σαφής και αποτελεσματική. | Περίληψη | AddLLMockRest() | MapLLMockRest()Υπηρεσίες βασικών πρωτοκόλλων | Μεθοδολογία Προσθήκη μεθόδου Χάρτης Μέθοδος Χρήση περίπτωσης | AddLLMockGraphQL() | MapLLMockGraphQL()Ενωμένη | Τα πάντα (REST+Streaming+GraphQL+gRPC), προς τα πίσω συμβατός | AddLLMockStreaming() | MapLLMockStreaming()REST | Απλή κοροϊδία REST ~ | AddLLMockSignalR() | MapLLMockSignalR()ΓράφημαQL | □ Εφαρμογές μόνο για το GraphQL | AddLLMockOpenApi() | MapLLMockOpenApi()Ροή

Μόνο SSE streaming

Signer |---------|------------|----------| | Τα δεδομένα Real-time WebSocket | MapLLMockGrpcManagement()OpenAPI | Mock από OpenAPI/Swagger specs | MapLLMockGrpc()Πρόσθετα χαρακτηριστικά (Δεν απαιτείται μέθοδος προσθήκης) | ~ Χαρακτηριστικό ~ Μέθοδος χάρτη ~ Χρησιμοποίησε την υπόθεση ~ | MapLLMockOpenApiManagement()Διαχείριση gRPC | Ανεβάστε/διαχειριστείτε αρχεία .proto | MapLLMockApiContextManagement()GRPC Κλήσεις

Εισάγετε εικονικές μεθόδους gRPC □

  • Διαχείριση OpenAPIAddLLMockApi()Φόρτωση δυναμικά OpenAPI specs
  • Διαχείριση πλαισίου
  • Εμφάνιση/τροποποίηση του ιστορικού συνομιλίας LLM
  • Σημειώσεις:

Οι υπηρεσίες gRPC περιλαμβάνονται σε

Finding related posts...
logo

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