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
Sunday, 02 November 2025
Однією з ключових речей з LLMapi була можливість для цього бути якомога легшою (так що просто імітувати тип api, який ви хочете) І бути дуже легкою для intp; отже, ви повинні мати змогу отримати все, що завгодно.
Пам'ятаючи про це, я спроектував його з модуляцією в думках (шепіння. у майбутньому, я хочу, щоб ви могли додати "plugins," які уможливлюють ще більше).Ось стаття про те, як працює тапітектура та ін'єкція.Ви можете знайти
GitHub тут
Він створений комп'ютером.NuGetNuGet
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();
- Коефіцієнт сигналу (якщо додано)
/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Швидкий час запускуВключити лише RegetRequestHandler
Користі:
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/**Немає зайвих рекомендаційЧудово для тестування клієнта 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();
Невибагливе налаштування потоку
/hub/mockЧудово для тестування подій/api/contextsБез перенавантаження REST/ GrraphQLЛише сигнал
Користі:
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}Ідеально для тестування Веб- сокетаЛише gRPC
- Висміювання методів 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}'
Динамічне прото- вивантаження без переобладнання
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/**Підтримка статичних (налаштованих) і динамічних (завантажених) специфікацій/api/contexts/{contextId}Чудово для тестування контрактів APIAPI керування контекстом
Переглянути історію розмов 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/**Досконало для тестування умовних сценаріїв/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- Еквівалентні кінцеві точки/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/**- Вуздечка сигнального зв'язку./api/stream/stream/**- API керування сигнальними R/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 потік
/api/mock/**- Кінцева точка GraphQL/api/contexts/{contextId}- Керування сигналізатором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();
- Еквівалентні кінцеві точки
/api/grpc-protosСпецифікації OpenAPI кінцеві точки (від налаштованих специфікацій)/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();
- Керування прото gRPC
/api/rest/**- Звонки gRPC/api/stream/stream/**Параметри OpenAPI кінцеві точки/api/graphql/graphqlЧудово для перевірки мостів/ gateways/hub/realtimeПриклад 6: все моденно (перевірка стека)/api/hub/contextsСтворено:/api/external/**- Еквівалентні кінцеві точки/api/specs- SSE потік/api/grpc-protos- Кінцева точка GraphQL/api/grpc/{service}/{method}- Вуздечка сигнального зв'язку./api/contexts/{contextId}- Керування сигналізатором- Специфічні точки 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()Служби Core ProtocolComment
| **** Інструменти/ д/ д/ д/ д + + +\ мапа +}Використовуйте її | AddLLMockGraphQL() | MapLLMockGraphQL()Універсальний
| **** речі (REST+Strorching+Graph+L+gRPC), } сумісні ♪** | AddLLMockStreaming() | MapLLMockStreaming()РИСТConstellation name (optional)
| ♪ Some R щік' s AND AND AND AND AND AND AND TO TH CAH AND AND AND AND ♪ | AddLLMockSignalR() | MapLLMockSignalR()GraphQL
| ♪ GraphQL- only apps ♪ | AddLLMockOpenApi() | MapLLMockOpenApi()Потік
OSDR
|---------|------------|----------|
| ♪ Real-time WebSocket data} | MapLLMockGrpcManagement()OpenAPI
| Дзвінок від OpenAPI/Swragues} | MapLLMockGrpc()Додаткові можливості (не потрібен додатковий метод)
| **** * ** Map -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | MapLLMockOpenApiManagement()Керування gRPC
| **** ..._________________________________________________________________________________________________________________________________//////** | MapLLMockApiContextManagement()Виклики gRPC
+Invoke глузувати з gRPCcics}
AddLLMockApi()♪------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------До програми включено служби gRPC
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.