Back to "LLMApi: मॉड्यूलर वास्तुकला उदाहरण"

This is a viewer only at the moment see the article on how this works.

To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk

This is a preview from the server running through my markdig pipeline

AI AI-Article API ASP.NET Core LLM LLMApi mockllmapi Nuget

LLMApi: मॉड्यूलर वास्तुकला उदाहरण

Sunday, 02 November 2025

परिचय

LLMApi के साथ मैं चाहते थे एक प्रमुख चीजों में से एक यह करने के लिए सक्षमता है कि यह संभव रूप से कम वजन हो रहा था (तो सिर्फ api प्रकार आप चाहते हैं अनुकरण करना है।

आप मिल सकते हैं GitHub यहाँ परियोजना के लिए, सभी सार्वजनिक डोमेन आदि

नोट: यह जीटीहूब से प्रत्यक्ष है

न्यूगेटGenericName न्यूगेटGenericName

आप मिल सकते हैं GitHub यहाँ परियोजना के लिए, सभी सार्वजनिक डोमेन आदि

मॉड्यूलर वास्तुकला उदाहरण

में नया v1.2.0+: पूर्ण मॉड्यूलरिटी! प्रत्येक प्रोटोकॉल (RESTM SK2 स्ट्रिमिंग , ग्रैफक्यूएलMSC4 सिग्नलआरMsko5 जीआरपीसीMisko6 ओपन एपीआईMsco7 अब स्वतंत्र रूप से जोड़ा जा सकता है और मानचित्रित किया जा सकता हैं।

विषयसूची


बैकवर्ड संगत (एकीकृत दृष्टिकोण

मौजूदा कोड बिना किसी परिवर्तन के कार्य जारी रहता है

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();

यह creates:

  • /api/mock/** - रेस्ट अंतबिंदु
  • /api/mock/stream/** - एसईएस स्ट्रीमिंग अंतबिंदु
  • /api/mock/graphql - GraphQL अंतबिंदु
  • /hub/mock - सिग्नल आर हाब
  • /api/mock/contexts - SignalR प्रबंधन API

मॉड्यूलर दृष्टिकोण

सिर्फ रेस्ट

बिना अतिरिक्त ओवरहेड के सरल रेस्ट API मोकिंग के लिए पूर्ण

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();

यह creates:

  • /api/mock/** केवल - रेस्ट अंतबिंदु

लाभ

  • न्यूनतम स्मृति फुटप्रिंट
  • तेज स्टार्टअप समय
  • केवल RegularRequestHandler शामिल करता है

GraphQL सिर्फ

GraphQL के लिए पूर्ण

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();

यह creates:

  • /api/mock/graphql - GraphQL अंतबिंदु मात्र

लाभ

  • साफ GraphQL-केवल सेटअप
  • कोई अनावश्यक REST हैंडलर नहीं
  • GraphQL क्लाइंट परीक्षण के लिए पूर्ण

सिर्फ धारावाहिक

SSE स्ट्रीमिंग क्लाइंटों के परीक्षण के लिए पूर्ण

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();

यह creates:

  • /api/mock/stream/** - केवल एसईएस स्ट्रीमिंग अंतबिंदुएँ

लाभ

  • हल्का स्ट्रीमिंग
  • EventSource परीक्षण के लिए पूर्ण
  • No 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();

यह creates:

  • /hub/mock - सिग्नलआर हाब
  • /api/contexts - संदर्भ प्रबंधन API

लाभ

  • Real-time सिर्फ सेटअप
  • कोई एचटीटीपी अंतबिंदु ओवरहेड नहीं
  • वेब सकेट परीक्षण के लिए पूर्ण

सिर्फ जीआरपीसी

गतिशील प्रोटो परिभाषाओं के साथ जीआरपीसी क्लाइंट का परीक्षण करने के लिए पूर्ण

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();

यह creates:

  • /api/grpc-protos अपलोड करें
  • /api/grpc/{serviceName}/{methodName} - नमूना जीआरपीसी विधियों को आह्वान करें

लाभ

  • पुनर्संकलन के बिना गतिशील प्रोटो अपलोड
  • जीआरपीसी क्लाइंट परीक्षण के लिए पूर्ण
  • एलएलएम वास्तविक प्रोटोबॉफ प्रतिक्रियाएं उत्पन्न करता है

उपयोग उदाहरण:

# 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}'

सिर्फ ओपन एपीआई

मौजूदा OpenAPI मिटाने के लिए पूर्ण

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();

यह creates:

  • आपके ओपन एपीआई स्पेक्ट में परिभाषित सभी अंतबिंदुएँ (eM SK1g., /api/petstore/pet/{petId})
  • /api/specs अपलोड करें

लाभ

  • स्वचालित रूप से संपूर्ण ओपनएपीआई विशेषताओं को नकल करें
  • कोई हस्तचालित अंतबिंदु मानचित्रण आवश्यक नहीं
  • स्थिर (configured) और गतिशील (uploadedM SK3 स्पेक्ट दोनों को समर्थन करता है
  • API संविदा परीक्षण के लिए पूर्ण

संदर्भ प्रबंधन API

संदर्भ इतिहास दृश्य और संशोधन जोड़ें

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();

यह creates:

  • /api/mock/** - रेस्ट अंतबिंदु
  • /api/contexts/{contextId} - दृश्य

लाभ

  • डिबगिंग के लिए LLM वार्तालाप इतिहास देखें
  • प्रतिक्रियाओं को चलाने के लिए संदर्भ परिवर्धित करें
  • स्थिति रिसेट करने के लिए संदर्भ साफ करें
  • स्थिर परिदृश्यों का परीक्षण करने के लिए पूर्ण

मिलाएँ और मिलाएं

अपने उपयोग के लिए आवश्यकतानुसार प्रोटोकॉलों को जोड़ें

उदाहरण 1: REST + GraphQL (No Streaming)

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();

यह creates:

  • /api/mock/** - रेस्ट अंतबिंदु
  • /api/mock/graphql - GraphQL अंतबिंदु
  • कोई प्रवाह अंतबिन्दु नहीं

उदाहरण 2: ग्राफQL | + | SignalR |( | No REST

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();

यह creates:

  • /api/queries/graphql - GraphQL अंतबिंदु
  • /hub/realtime - सिग्नलआर हाब
  • /api/contexts - SignalR प्रबंधन API
  • कोई REST या SSE अंतबिंदु नहीं

उदाहरण 3: सभी भिन्न नमूने के साथ

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();

यह creates:

  • /api/rest/** - रेस्ट अंतबिंदु
  • /api/stream/stream/** - SSE प्रवाह
  • /api/graphql/graphql - GraphQL अंतबिंदु
  • /hub/live - सिग्नलआर हाब
  • /api/hub/contexts - सिग्नलआर प्रबंधन

उदाहरण 4: REST | + | OpenAPI |+| संदर्भ प्रबंधन

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();

यह creates:

  • /api/mock/** - रेस्ट अंतबिंदु
  • ओपन एपीआई स्पेक्ट अंतबिन्दुएँ (से कॉन्फ़िगर किए गए स्पेक्ट्स से
  • /api/contexts/{contextId} - संदर्भ प्रबंधन
  • कोई स्ट्रीमिंग नहीं

उदाहरण 5: gRPC | + | 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();

यह creates:

  • /api/grpc-protos - जीआरपीसी प्रोटो प्रबंधन
  • /api/grpc/{service}/{method} - जीआरपीसी कॉल
  • ओपन एपीआई विशेष अंतबिन्दु
  • प्रोटोकॉल ब्रिज के परीक्षण के लिए पूर्ण

उदाहरण 6: सब कुछ मॉड्यूलर

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();

यह creates:

  • /api/rest/** - रेस्ट अंतबिंदु
  • /api/stream/stream/** - SSE प्रवाह
  • /api/graphql/graphql - GraphQL अंतबिंदु
  • /hub/realtime - सिग्नलआर हाब
  • /api/hub/contexts - सिग्नलआर प्रबंधन
  • /api/external/** - ओपनएपीआई स्पेक्ट अंतबिंदु
  • /api/specs - ओपनAPI प्रबंधन
  • /api/grpc-protos - जीआरपीसी प्रोटो प्रबंधन
  • /api/grpc/{service}/{method} - जीआरपीसी कॉल
  • /api/contexts/{contextId} - संदर्भ प्रबंधन

के लिए आदर्श

  • व्यापक एकीकृत परीक्षण
  • माइक्रो-सेवा संरचनाओं का परीक्षण
  • बहु-- प्रोटोकॉल API गेटवे
  • विभिन्न क्लाइंट प्रकारों के साथ पूरा - स्टैक विकास

बहुविध अवस्थाएँ

विभिन्न कॉन्फ़िगरेशनों के साथ कई स्वतंत्र मॉक API चलाएँ

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. कम स्मृति फुटप्रिंट

सिर्फ आप वास्तव में उपयोग कर रहे हैंडर लोड करें:

  • केवल REST: ~30% कम स्मृति
  • GraphQL मात्र: ~40% कम स्मृति
  • सिर्फ स्ट्रीमिंग

2. तेज स्टार्टअप

पंजीकृत करने के लिए कम सेवाएँ = त्वरित एप्लिकेशन स्टार्टअप

3. स्पष्ट प्रयोजन

कोड स्पष्ट रूप से दिखाता है कि आपका अनुप्रयोग किस प्रोटोकॉल का उपयोग करता है

4. आसान परीक्षण

अलग से परीक्षण प्रोटोकॉल

// 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");

माइग्रेशन गाइड

से v1.1.0 के लिए v 1.2.0

कोई परिवर्तन आवश्यक नहीं है आपके मौजूदा कोड के रूप में काम करता है

वैकल्पिक: लाभ के लिए मॉड्यूलर दृष्टिकोण में स्थानांतरित करें

से पहले

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

के बाद (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");

दोनों दृष्टिकोण एक ही प्रकार से काम करते हैं, लेकिन मॉड्यूलर दृष्टिकोण अधिक स्पष्ट और प्रभावी है


सारांश

कोर प्रोटोकॉल सेवाएँ

दृष्टिकोण जोड़ने की विधि मानचित्र विधि
एकीकृत AddLLMockApi() MapLLMockApi() सब कुछ (REST
रेस्ट AddLLMockRest() MapLLMockRest() सरल रेस्ट मोकिंग
ग्राफQLGenericName AddLLMockGraphQL() MapLLMockGraphQL() GraphQL
स्ट्रीमिंग AddLLMockStreaming() MapLLMockStreaming() सिर्फ एसईएस स्ट्रीमिंग
सिग्नल आर AddLLMockSignalR() MapLLMockSignalR() वास्तविक
ओपन एपीआई AddLLMockOpenApi() MapLLMockOpenApi() ओपन एपीआई से मोक

अतिरिक्त विशेषताएँ (नहीं जोड़ने की विधि आवश्यक है

विशेषता मानचित्र विधि उपयोग केस
जीआरपीसी प्रबंधन MapLLMockGrpcManagement() अपलोड करें
जीआरपीसी कॉल्स MapLLMockGrpc() नमूना जीआरपीसी विधियों को आह्वान करें
ओपन एपीआई प्रबंधन MapLLMockOpenApiManagement() गतिशील रूप से ओपन एपीआई विशेषताओं को लोड करें
संदर्भ प्रबंधन MapLLMockApiContextManagement() दृश्य

नोट्स

  • जीआरपीसी सेवाओं में शामिल हैं AddLLMockApi() लेकिन अलग से नक्शा
  • ओपन एपीआई प्रबंधन रनटाइम पर गतिशील स्पेक्ट लोड करने की अनुमति देता है
  • संदर्भ प्रबंधन किसी भी प्रोटोकॉल के साथ काम करता है जो वार्तालाप स्थिति बनाए रखता है
  • सभी विशेषताओं को आवश्यकतानुसार मिश्रित और मिलाया जा सकता है

अपना दृष्टिकोण चुनें जो आपकी आवश्यकताओं के अनुकूल हो

logo

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