Ένα από τα βασικά πράγματα που ήθελα με LLMAPI ήταν η δυνατότητα να είναι όσο το δυνατόν ελαφρύ (οπότε απλά προσομοιώστε τον τύπο api που θέλετε) ΚΑΙ να είναι εξαιρετικά εύκολο να πάρετε intp? έτσι θα πρέπει να είστε σε θέση να πάρετε τα πάντα το ίδιο εύκολα.
Με αυτό στο μυαλό το σχεδίασα με την σπονδυλικότητα στο μυαλό (ψιθυρίζει... στο μέλλον θέλω να είστε σε θέση να προσθέσετε "plugins" που επιτρέπουν ακόμα περισσότερα).Εδώ είναι το άρθρο για το πώς λειτουργεί η αρχιτεκτονική και όλα είναι μέσα και έξω.Μπορείτε να βρείτε το
GitHub εδώ
Φτιάχνεται από τεχνητή νοημοσύνη.NuGetCity name (optional, probably does not need a translation)NuGetCity name (optional, probably does not need a translation)
GitHub εδώγια το έργο, όλος ο δημόσιος τομέας κ.λπ...
Πολλαπλά Περιστατικά
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Αυτό δημιουργεί: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 (αν προστεθεί)Προσαρμοζόμενη προσέγγιση
Παροχές:
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
Παροχές:
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
Παροχές:
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
Παροχές:
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}Ιδανικό για δοκιμές WebSocketgRPC μόνο
- Εισάγετε ψεύτικες μεθόδους 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
/api/petstore/pet/{petId})/api/specsΠαράδειγμα χρήσης:Μόνο OpenAPI
Αυτόματα χλευάζουν ολόκληρες προδιαγραφές 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
Προβολή ιστορικού συνομιλίας 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Αναμίξτε και ταίριασμα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Δεν υπάρχουν τελικά σημεία ροής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Αυτό δημιουργεί: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 τελικό σημείο/api/contexts/{contextId}- Διαχείριση Signerusing 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}- Διαχείριση πλαισίου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 ειδικά τελικά σημεία
Πλήρης δοκιμή ενσωμάτωσης
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();
Ανάπτυξη πλήρους στοίβας με διάφορους τύπους πελατών
Φορτώστε μόνο τους χειριστές που χρησιμοποιείτε:
GraphQL μόνο: ~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");
Καθαρότερη πρόθεση
// This still works exactly as before
builder.Services.AddLLMockApi(configuration);
app.MapLLMockApi("/api/mock");
Εύκολη δοκιμή
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()Ροή
Signer
|---------|------------|----------|
| Τα δεδομένα Real-time WebSocket | MapLLMockGrpcManagement()OpenAPI
| Mock από OpenAPI/Swagger specs | MapLLMockGrpc()Πρόσθετα χαρακτηριστικά (Δεν απαιτείται μέθοδος προσθήκης)
| ~ Χαρακτηριστικό ~ Μέθοδος χάρτη ~ Χρησιμοποίησε την υπόθεση ~ | MapLLMockOpenApiManagement()Διαχείριση gRPC
| Ανεβάστε/διαχειριστείτε αρχεία .proto | MapLLMockApiContextManagement()GRPC Κλήσεις
Εισάγετε εικονικές μεθόδους gRPC □
AddLLMockApi()Φόρτωση δυναμικά OpenAPI specsΟι υπηρεσίες gRPC περιλαμβάνονται σε
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.