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
LLMApi:释放便笺
Sunday, 02 November 2025
这是GitHub.的现场发布记录
诱引
这是来自 GitHub 的 @'@live_'}, 因此将会经常更新@.}
单元说明
v2.3.0 -完整内容型態支援
已释放@:_12月#13, 2025# 焦点: 完整 HTTP 内容类型支持 @ MS K1 窗体@ , 文件上传 @ MPK3 深路
此发布增加了对所有常见 HTTP 内容类型的全面支持@, @}使模拟 API 与 HTML 窗体@ ,} 文件上传@MS K2和复杂的嵌套路径兼容.}所有功能都使用手动 JSON 构建,用于 @.NET {10}兼容=.}
主要特点
1.-表格机构支持application/x-www-form-urlencoded) 🔥
已解决问题: 不支持 HTML 表单提交@- 一种基本的 HTTP 内容类型 @.
解决方案: 将表单数据自动转换为 JSON, 并正常逃跑
使用率示例:
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"
特点:
- 单值和多个值 @ ( @ arrays@ MS K1 @
- 正在跳出特殊字符@( @ quotes @ , @ 反斜@ MS K2 @ newlines @ I,_ tabs @ )}
- Unicode 和 Demoji 支持
- JSON 手工制造JSON
- 空值处理
多重值:
curl -X POST http://localhost:5116/api/mock/posts \
-d "title=My Post&tags=tech&tags=programming&tags=llm"
自动转换为 JSON 阵列的标记@: @% ["tech", "programming", "llm"]
2. 檔案上傳支援 @ MS K1multipart/form-data) 🔥
已解决问题& :% 没有支持文件上传@-}对于测试文档来说关键 *\ MS K2 image 上传 UIs.}
解决方案: memory-安全文件流,包含元数据提取
使用率示例:
curl -X POST http://localhost:5116/api/mock/photos/upload \
-F "title=My Photo" \
-F "description=Beautiful sunset" \
-F "[email protected]"
特点:
- Memory - 安全流@:}檔案讀取過{8}{KB 缓冲区,並被丟棄}(沒有儲存@)
- 抽取元数据: filename@,内容类型 @,}大小 @MS K3字节已读
- 多个文件\ : 上传多个文件
- 混合内容: 表单字段 @+}文件组合
- 大型文件支持“: 测试” 用“ @100 mB +" 文件测试
- 内容类型: Text, PDF, JEGMS K3二進位@- 全部支援
如何运作:
- 文件内容流出并丢弃了 @ ( 防止内存 bloat)\
- 只保留元数据并转给LLM
- LLM 生成基于上传内容的适当响应
回应实例:
{
"message": "File uploaded successfully",
"file": {
"fieldName": "image",
"fileName": "photo.jpg",
"contentType": "image/jpeg",
"size": 524288,
"processed": true
}
}
@3.任意道路的长度#🔥
已解决问题: 有限路径深度支持 @- 重新更新的APIs经常使用深巢@.
解决方案“:充分支持通过深路” {**path} 所有的路线
使用率示例:
# 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"
特点:
- 路径深度没有实际限制@( @ tested to @21}片段 @MS K2
- 查询参数已完全保存
- 使用所有 HTTP 方法“ (GET, POSTMS K2PUT,DELETE},PATCHMSKO5”
- 与表格和文件上传兼容
- LLMLM 将路径部分纳入现实的应对措施
技术实施
@.NET {10} 兼容性
所有功能都使用 人工建造JSON 以避免反射@-}基于序列的序列化 @:
// Manual JSON escaping
private static string EscapeJsonString(string str)
{
return "\"" + str
.Replace("\\", "\\\\")
.Replace("\"", "\\\"")
.Replace("\n", "\\n")
.Replace("\r", "\\r")
.Replace("\t", "\\t")
+ "\"";
}
为什么手动#?:NET10}在使用性能和安全性能的TrimmedMSKO4AOT应用程序中,
内存@- @Safe 文件处理
// 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
}
结果结果成果@ :} Constant O(1)}不论文件大小的内存用量@ MS K2
全面测试
新测试23集成=) 测试套件总数-=YTET -伊甸园字幕组=- 翻译: 及通过率: 100%
测试文件:
FormBodyHandlingTests.cs- 12 窗体解析测试JsonHandlingTests.csJSON逃跑和抽取的测试V2_3_0_FeatureTests.cs- 23 完整工作流程集成测试
覆盖面覆盖率:
- 窗体正文解析@( @single value @,}数列 @ , 特殊字符=,_ unicode{,emoji)}
- 多窗体数据 {(}%metatadata diplication\ ,混合字段 @+}files@,}大文件_)}
- JSON逃脱了 (所有特殊字符 MS K1Q 边缘病例
- 深度路径@( @% 上至 < 21 participle\ MS K2} 复杂查询,+Restful 结构=){
- 组合假想 ( @deep path #+}窗体:#+}文件=)}*
业绩表现 实绩
文件上传性能:
- 内存@ : @ Constant OZ(1) @ *-}只有@ MS K3QKB 在记忆中缓冲
- 速度速度:串流允许大文件不屏蔽
- 安全安全安全@: 内容从未存储@, 防止 doS 攻击
JSON 建筑绩效:
- 手动解脱 @ 10-20%# 速度快于反射
- 减少GC收集量
- 可预见运行时间行为
断开更改
✅ 无无 完全后退兼容
- 所有现有功能的工作没有变化
- 无 API表面变化
- 配置后向兼容
- 零回归 = ( = 所有 = 345 现有测试通过 =)
《移徙指南指南》
没有需要的迁移@!}所有更改都是添加的 @:
// 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)
文件文件文件文件文档文件文件的文件文件文件会议文件文件文件,文件文件文献文件文件/文件文件资料文件文件文文件文件归档文件文件:文件文件记录文件文件、文件文件提供文件文件文号文件文件(文件文件 Do文件文件存档文件文件 文件文件文件和文件文件证件文件文件文件中文件文件Do文件文件档案文件文件
新文件新文件:
TEST_SUMMARY.md@- 完全测试覆盖 #(60新的检测%)IMPLEMENTATION_SUMMARY.md技术实施细节V2_3_0_TESTS.md集成测试文件
更新文件:
README.md-窗体的新使用示例@,}文件 @,深路- 更新的“"”区域
- 最新特征一览表
- 更新测试覆盖率科
已知限制
- 文件内容被倾弃 @ ( @ {% 无法为LLM 访问, 以便分析@ MS K1} *
- 最大文件大小受 ASP.NET 核心默认值限制
- 窗体阵列命名字段常规@: @% 重复的战地名称变为数组
使用案例
机构支助表格:
- HTML 窗体测试@( @login},}注册 ,}备注)}
- 传统网络应用
- URL - @encoded API 客户端
文件上传支持:
- 文档上传 UIS
- 图像上传测试
- 概况图片更新
- 散装文件操作
- 附件处理
深路徑:
- 更新的APIP结构
- 多@ - @% 启动应用程序
- 等级资源获取
- 复杂的路由模式
捐款者
LLMock API团队开发和测试的所有 v2.3.0}功能
@ 2.2.0 @ @ MPK1 @ 插件工具@ MS K2 @ pre- @ 配置的APIs
焦点: MCP-兼容的工具系统@,预置-Configed REST APISMS K4和智能上下文内存
此版本引入了一个强大的插件工具系统, 用于调用外部API和连锁模拟端点@,}以及前“ -” 配置的REST API定义, 消除重复配置@MS K2 内容内存现已自动“-” 管理并自动到期和全面外出提取@.
主要特点
1. 插件工具 @& 动作系统@🔥
已解决问题无法调用外部API或连锁模拟端点来创造现实的工作流程和决策树*.}
解决方案与 HTTP 和 Mock 工具执行器兼容的工具系统
工具类型:
HTTP 工具 呼叫外部 AST APIS :
{
"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
}
}
Mock 工具 “-”链条决定树的模拟端点“:”
{
"Name": "getOrderHistory",
"Type": "mock",
"MockConfig": {
"Endpoint": "/api/mock/users/{userId}/orders",
"Method": "GET",
"QueryParams": { "limit": "10" },
"Shape": "{\"orders\":[{\"id\":\"string\",\"total\":0.0}]}"
}
}
密钥特征:
- 模板替代:
{paramName}URLs @,}标题{,}机构中的占位符 - 环境变量:
${ENV_VAR_NAME}用于安全保存证书 - 验证:Bailer_BARBasic,API 关键支持
- JSONPath 采掘公司: 从回复中提取特定字段
- 工具链链\ : 执行多个工具的序列
- 安全安全限额: Max Tool Chain Depth 和 Max ConcontomTools 防止逃跑处决
- 结果缓存:按要求进行昂贵的缓存操作
- MCP 兼容准备用于示范背景议定书一体化的架构
执行模式:
Disabled: 工具不可用 @ MS K1 默认@ )Explicit呼叫通过?useTool=name或X-Use-Tool@(_ 阶段@1} @ -_ 当前=)LlmDriven“:LLM”决定使用哪些工具来调用“(阶段”、“2 -未来”、“MS K4”。
使用率示例:
# 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 */ ]
}
文件文件文件文件文档文件文件的文件文件文件会议文件文件文件,文件文件文献文件文件/文件文件资料文件文件文文件文件归档文件文件:文件文件记录文件文件、文件文件提供文件文件文号文件文件(文件文件 Do文件文件存档文件文件 文件文件文件和文件文件证件文件文件文件中文件文件Do文件文件档案文件文件: docs/TOOLS_ACTIONS.md (500+线)
2.+Pre@-+AST AIPS=🔥_BARBAR
已解决问题“:”+“重复配置,用于常见的API模式 ” @“-”形状 @,环境@,}工具 @MS K4 限制速率%,等#.
解决方案: 定义完整 API 配置
配置示例:
{
"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"
}
]
}
支持的特性:
- 形状指定: JSON 形状或 OpenAPI 引用
- O开放APIPI 一体化:
OpenApiSpec+OpenApiOperationId用于 schema @ - @% 驱动生成 - 共享背景: 通过自动环境管理
ContextName - 工具集成工具工具:pre-config 执行工具
- Tags=/}组:按类别组织API
- 利率限制:Per-API 延迟配置
- N- 完成: 生成多个变量
- 串流: 启用 SSE 流
- 模拟错误: 内建{-} 错误配置
- 默认参数:查询参数和页眉
福利福利福利:
- 零重复: 配置
- 统一测试@ :} 相同的形状 @ I/ @ context 横跨团队
- 快速蛋白设计:_
- 文件文件文件文件文档文件文件的文件文件文件会议文件文件文件,文件文件文献文件文件/文件文件资料文件文件文文件文件归档文件文件:文件文件记录文件文件、文件文件提供文件文件文号文件文件(文件文件 Do文件文件存档文件文件 文件文件文件和文件文件证件文件文件文件中文件文件Do文件文件档案文件文件: APIs 在配置中自定义@-文档
用法 管理端点 - 进入v2.2.1):
# List all configured APIs
GET /api/configured
# Execute configured API
GET /api/configured/user-profile?userId=123
apperings .Full.json 组合键完整的例子包括e @-}商业工作流程=,}监控APIS,}和测试假想
3. 自动过期的动态上下文内存 @🔥
已解决问题:- 背景内存先前累积的无限期@,- 需要人工清理, 并可能导致长期-_ 正在运行的测试会话或 CI/CD管道中的内存泄漏 @.
解决方案ASP.NET核心 IMemoryCache 滑动到期
// 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!
}
关键惠益:
- 零手动清理@ : 上下文在无活动时间后自动消失@ 15 分钟
- 滑落过期: Timer resets 在每次 API 呼叫 @-}活动环境永远不会过期
- 内存高效“: 完美用于 CI/CD输油管 ” @- 在运行之间没有状态累积
- 可配置期限由 @5@ minutes 到 @ 24_ 小时根据您的需要设定
配置配置:
{
"mostlylucid.mockllmapi": {
"ContextExpirationMinutes": 15 // Default: 15 (range: 5-1440)
}
}
推荐设置:
- 分钟“:快速测试”“, CI/CD管道
- 分钟“: 默认”“- 常规开发测试”“(”建议“MSC3”
- 分钟:Complical multiple @-_step工作流程
- 分钟:长探索性试验课程
智能共享数据提取
已解决问题: 唯有硬码字段 @(id, userId, name, email) 被追蹤@, 限制域域@MS K2 特定字段的一致性, 如 SKUs, 帐号 @, 參考編碼}, 等.
解决方案:捕捉的递归性实地提取 全部所有 自动自动字段
在“(”之前:
// Only 4 hardcoded fields extracted
{"lastId": "123", "lastUserId": "456", "lastName": "Alice", "lastEmail": "[email protected]"}
现在"(#V}2.2.0)\i":
// 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"
}
新能力:
- 嵌套对象:摘录
address.city,payment.cardNumber带有点符号 - 阵列跟踪: 仓储阵列长度 @(
items.length: 5) - 第一个项目数据:捕捉
items[0].productId自动自动 - 自定义字段@ : @ 任何域@ MS K1} 特定字段现已被跟踪
- 无限制域域“:”为e @-}商业=,融资 ,}医疗保健$,a gaming@,等
- 后向兼容*: 遗产*
lastId,lastUserId关键键仍然工作
世界影响:
### 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
}
法学硕士现在看到 全部 在快速提取的字段中提取并保持域间的一致性{-} 特定数据在没有任何配置}.
技术细节
可排除工具系统:
工具控制器 (Models/ToolConfig.cs):
- 所有工具类型的综合配置模型
- 支持 HTTPMSMK0 mock,和可扩展的工具类型
- 带有类型验证的参数模型
- 超时和缓存配置
HttpPTool 工具提示执行器 (Services/Tools/HttpToolExecutor.cs):
- 使用 URLs @ ,}标题{,}代理机构的模板替换
{paramName} - 环境变量分辨率
${ENV_VAR_NAME} - 身份验证 <: beer , Basic> _, API 键
- JSONPAT 响应提取
- 全面错误处理
MockTool 执行器 (Services/Tools/MockToolExecutor.cs):
- 要求决策树工作流程的其他模拟端点
- 支持所有模拟端点功能 @(shape,}上下文@,等
- 启用复杂的多@ - step API 模拟
工具注册 (Services/Tools/ToolRegistry.cs):
- 发现和验证配置的工具
- 通过互联网进行可扩展的执行程序登记
IToolExecutor接口界面 - 为 LLM 生成工具定义@ ( 阶段 @ MS K1 已就绪 @ MPK2
工具条纹器 (Services/Tools/ToolOrchestrator.cs):
- 协调具有安全限制的工具执行
- MaxTool Chain Depeh 每个请求跟踪@ ( 防止无限循环 @ MS K1\ {
- 最大当前工具限制
- 每项请求的结果缓存
- LLM 上下文合并格式结果
Preáñó- 配置的REST APIs:
恢复功能Apiconfig (Models/RestApiConfig.cs):
- 完全的API定义模式
- OpenAPI 样本参考支持
- 工具集成@,标签 @,}默认参数
- 所有模拟功能@ : @ 形状 @ MS K1 @ 上下文 @ IMK2 @ 限制速率 @ MPK3}\ 流化@ MASK4 缓存
恢复登记 (Services/RestApiRegistry.cs):
- 装入并验证所有已配置的 API
- Tread\ -}安全查找
ConcurrentDictionary - 配置变化上的自动-reload @ (
IOptionsMonitor) - 基于 Tag- 的过滤和分组
- 有效 HTTP 方法@,正值
上下文内存:
内存缓存文本存储器 (Services/MemoryCacheContextStore.cs):
- 用途
IMemoryCache与SlidingExpiration选项 - 登记登记册
PostEvictionCallback自动清理记录 - Tread=-}安全带
ConcurrentDictionary用于名称跟踪 - 查点时发现和清除静态进入记录
OpenApicon Text 管理器 (Services/OpenApiContextManager.cs):
- 新建新设新
ExtractAllFields()具有递回提取法的方法 - 具有可配置深度的递归字段提取@ (default @ MS K1 @\ 2 level=)
- 嵌套对象@,数列 @,和原始值
- 短时补丁固定@ :_ 长字符串 @ I(>100 @ chars)# 现在在共享数据中截断, 以防止浮肿
- 后向与遗留的实地开采兼容
配置配置 (LLMockApiOptions.cs):
- 新建新设新
Tools用于插入工具定义的工具 - 新建新设新
ToolExecutionMode(Disabled/明确}/LlmDriven) - 新建新设新
MaxConcurrentTools和MaxToolChainDepth安全限值 - 新建新设新
RestApisAPI 配置定义的数组 - 新建新设新
ContextExpirationMinutes范围@:} @5-1440) - 所有通过互联网在DI注册的所有登记
LLMockApiExtensions.RegisterCoreServices()
测试
8#新测试 内 OpenApiContextManagerTests.cs:
- 对所有原始田地的动态提取
- ✅ 带有点符号的内嵌天体提取
- ✅ 阵列长跟踪
- @ ✅_ 第一阵列项目实地提取
- @ ✅_ 多层嵌套级别@ MS K1# 默认深处@ I) @
- ✅混合数据类型 @(strings,}数字@,booleans)
- ✅ 后向兼容到遗留键
- ✅ 边框情况 @ MS K1 空天体@ , 无值 *, 深巢限制=)
文件更新
新文件新文件:
docs/TOOLS_ACTIONS.md@ (500+_ line {):} 插入工具系统完整指南- 概览和MCP兼容性
- 工具类型 @(_HTTP 和 Mok)
- 所有选项的配置引用
- 身份鉴别失败 !
- 使用实例和模式
- 带有模拟工具的决策树模式
- 高级假设情景@(条件逻辑 @,动态端点 @MS K2 POST 模板_)
- 阶段 #2/3# 路线图 ( LLLM-}驱动工具选择@,# 高级决策树_ MS K4 @
- 使用类型Script schemas 的 API 参考
- 解决问题和绩效考虑
docs/RATE_LIMITING_BATCHING.md:全面税率限制指南- 配置选项和战略
- N- 批量完成
- Per- endpoint 统计跟踪
- 绩效测试实例
更新文件:
README.md@ :_ 新建 v2.2.0} 配有工具及预置的-}configed APIs 部分appsettings.Full.json:的完整示例- 5 工具配置 * @(_HTTP 和 Moock 工具*)
- “8”前称“-”后称“AST API”定义
- 工具认证示例
- 决定树型
LLMApi.http新的 HTTP 请求示例- 通过查询参数和信头执行工具
- 模板替代示例
- 工具链链模式
- 验证示例
- JSONPath 提取
- 业绩监测
docs/API-CONTEXTS.md:《内存和共享数据提取》完整改写- Imemory缓存结构
- 滑落到期行为
- 动态提取实例
- Real-世界使用有嵌套数据的案例
CLAUDE.md\ : 更新了所有新的配置选项- 工具 @ &% 动作配置
- Pre- 配置的 REST APIs
- 上下文到期设置
断开更改
无无 与 v2.1.0: 兼容的完全后退
- 遗留字段提取@( @%
lastId,lastUserId@,等#.)}仍在工作 - 现有环境守则继续工作,没有变化
- 新建功能为自动 & @ - 不需要更改代码
《移徙指南指南》
无需移民@! @ 提升并享受自动福利
- 上下文过期: 自动- 语境现在可以清理了
- 强化采掘: 自动- 所有字段现在都被跟踪
任择: 配置过期时间( 如果默认) @ MS K1 分钟 doesn't access your problem=:}
{
"mostlylucid.mockllmapi": {
"ContextExpirationMinutes": 30 // Increase for longer test sessions
}
}
绩效影响
内存使用由于自动到期,总数减少
- 环境不再无限期累积
- CD输油管仍保持记忆力=-}有效
- LongM- 运行服务自我@ - @ clean
采掘权@:_Minimal\ (<}#1%ms per response@)
- 循环提取是高度优化的
- 仅运行带有上下文的响应
- 深度限值防止失控循环
Tok 用法略微增加
- 在共享数据中的更多字段 @ = 稍长的提示
- 每个上下文的典型增加@ : @ MS K1 @ signs
- 被自动过期 {(}\ ffewer 上下文所抵消\ )*
兼容性
- 完全后退兼容 和 v2.1.0
- 所有现有功能继续运作
- 无中断更改
- 升级@-_in @-}推荐地点
质量 @&}校验释放
焦点提高可靠性#,}全面测试>,}改善开发者的经验
本版的重点是改进块状可靠性@, 提供全面的验证工具 @, 和简化配置管理}#. 所有来自 v2.0的所有功能都保持完全兼容.
主要重大改进
1.集成 HTTP 校验套件
- 70+测试案例*: 全面验证覆盖
LLMApi.http- OpenAPI 管理@(load @, list,得到%,卸载@MS K4描述 @)
- API 上下文管理@(accreate @,}更新 ,暂停,续会{,删除)
- gRPC 方案管理@( @upload_,}列表 @ ,}获得服务 @,{
- SSE 连续流动验证
- 用大数组进行弹头测试
- 背景历史和自定义描述
- 后端选择 @ (@ X% MS K1 LLLM @ MPK2 Backend header_ )}
- 校对:Portnoy
- 合并功能验证
- 错误模拟@( 全面 HTTP 错误代码@ )
“2. 增强弹簧可靠性”
- 清晰的排列格式用于 JSON 阵列生成的 Explicate 指令
- 添加关键格式化规则
PromptBuilder.cs: NSK1 你的第一个字符 必须是□: [" - 加固阵列格式化
ChunkingCoordinator.cs圆块上下文 - 防止逗号@ - @ 分隔对象输出 * MS K1 @ e @ .} @ g.,}
{...},{...}代替[{...},{...}])
- 添加关键格式化规则
- 改进后的指示“: ”在多“-”申请期间更好地指导LLMs
- 已知限制:有文件的模型{/$tempertiature 推荐最佳块积}(se
docs/OLLAMA_MODELS.md)
3.配置精简
- 清洁清洁
appsettings.json: 移除的动画模型批注@, 更清洁的结构 docs/OLLAMA_MODELS.md:+#新的综合参考指南 @(285_BARBAR_线条@)}- 具有硬件要求的模型配置
- 不同用途个案的温度准则
- 上下文窗口对建议的缩放建议
- 多@ - @% 后端配置示例
- 模拟排除故障指南
- 示范安装指示
4.文件改进
- 全部交换器文档:所有25+管理端点现在都有完整的 Swagger docs
- 标记组织 @(_OpenAPI 管理@,} API 背景 @ ,} gRPC,等
- 摘要和详细说明
- 请求回复示例
- 后端 API 引用: 新建
docs/BACKEND_API_REFERENCE.md(600+线)- 完整的终点文件
- 查询参数和页眉参考
- 错误反应格式
- 信号R枢中文件
错误修正
- 用于 OpenAPI 端点描述的 HTTP 测试中的固定 URL 编码问题@ (
:,/,{,}字符@) @%
修改后的文件
代码更改@: @%
mostlylucid.mockllmapi/Services/PromptBuilder.cs: 增强的阵列格式指示 @(lines @MS K2mostlylucid.mockllmapi/Services/ChunkingCoordinator.cs: 添加的数组格式LLMApi/appsettings.json: 简化配置
新建文档@:
docs/OLLAMA_MODELS.md:综合模型配置指南docs/BACKEND_API_REFERENCE.md完整的管理API参考
更新文件@: @%
LLMApi/LLMApi.http“:”从“448”扩展至“MS K2”线条:“(70+”新验证测试 ‘)’
已知限制
高温赛车:
- LLM 可能会生成逗号@ - 分隔对象, 而不是在温度下生成数组@ MPK1\
- 工作变通办法:
- 以块状请求将温度降低到 @ 0.8-1.0@ label
- 使用 lama3.2:3b 或 mistral-nemo @ (更好的指令
- 为避免块积而减少项目计数
- 禁用自动@ - @ chunking 使用
?autoChunk=false
见见 docs/OLLAMA_MODELS.md 详细排除故障@. @%
兼容性
- 完全后退兼容 和 v2.0.0
- 所有现有功能继续运作
- 无中断更改
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}万岁!
没有任何改变 @-尽管有大版本的大调 {,}所有现有的代码都在继续工作
这是将LLMock API 转换成一个全面的“,” Producting @-ready 模拟平台@.+#版本 @MS K3}添加现实的 SSE流模式,+% moto-}后端负载平衡Q,+全面后端选择_,}和广泛的文档=.}
主要特点
@1.# 现实的 SSE流模式 @MS K1 @MAJOR@) @
用于测试不同真实的 SSE 流模式的三个不同的 SES 串流模式@- @world API type_:
LlmTokets 模式 (Default-向后兼容})
- 用于 AI 聊天界面的 Token@- @by @ - @token 串流
- 格式化@: @%
{"chunk":"text","accumulated":"fulltext","done":false} - 使用 case:测试聊天室UIsMS K1LLM应用程序
完整对象模式 (NEW)
- JSO 完整 JSON 作为单独的 SSE 事件作为单独对象
- 格式化@: @%
{"data":{object},"index":0,"total":10,"done":false} - 使用 case @:}Twitter@/_X API,}存储滴答机 @ ,} real -时间 feed, IoT 传感器
数组项目模式 (NEW)
- 具有丰富元数据的排列项目
- 格式化@: @%
{"item":{object},"index":0,"total":100,"arrayName":"users","hasMore":true,"done":false} - 使用 case @ : @ pagged 结果@ MS K1 @ 散装出口 @ I,搜索结果
設定@: @% 1
{
"MockLlmApi": {
"SseMode": "CompleteObjects" // LlmTokens | CompleteObjects | ArrayItems
}
}
请求覆写@: @
GET /api/mock/stream/users?sseMode=CompleteObjects
GET /api/mock/stream/data?sseMode=ArrayItems
GET /api/mock/stream/chat?sseMode=LlmTokens
客戶端範例 @ ( @ completeObjects@ MS K1
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
}
};
2. 多- 后端加载平衡 *(MAJOR})
在多个 LLM 后端中分配高通量请求@ :
設定@: @% 1
{
"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
}
]
}
}
加载平衡的信号枢纽@: @
{
"HubContexts": [
{
"Name": "high-throughput-data",
"BackendNames": ["ollama-llama3", "ollama-mistral", "lmstudio-default"]
}
]
}
功能@: @%
- 圆四重量-罗滨分布
- 请求选择后端@ option: check
- 如果后端不可用, 自动失败默认
- 使用信号R,SSEMS K1REST},和图解QL
3. 全面后端选择
请求选择 (=多方法=):=
# 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"
}
]
}
多提供商同时:
- Ollama @(#当地模型_)
- {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}
- LM 演播室 @ ( @ 本地服务器@ MS K1
- Mistral-Nemo @ (128k 背景@)
4.Mistral-Nemo @128k背景支援
Mistral-Nemo 的配置, 其大为 @ 128k 上下文窗口@:}
{
"Backends": [
{
"Name": "ollama-mistral-nemo",
"Provider": "ollama",
"ModelName": "mistral-nemo",
"MaxTokens": 128000,
"Enabled": true
}
]
}
使用案例@:
- 在一次请求中生成数千份详细记录
- 具有深层关系的复杂嵌套数据结构
- 大型批量作业
MaxItems=10000+) - 综合测试数据集
- 具有广泛嵌套字段的图形QL查询
信号号示例@:
{
"HubContexts": [
{
"Name": "massive-dataset-128k",
"Description": "Massive dataset generation with 128k context",
"BackendName": "ollama-mistral-nemo"
}
]
}
5.Swagger/开放API UI
与 Swagger UI: 的交互式 API 文件
- 交换界面UI*:* 可在
/swagger - OpenAPP 指定:Auto-由端点生成
- 交互式测试: 在浏览器中直接尝试端点@ info/ plain
- 全面说明: 所有端点的完整文档
- 导航导航: 连接自演示页面页眉
启用于程序@.}%cs @:}
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
app.UseSwagger();
app.UseSwaggerUI();
文件翻版
新建文件文件文件
docs/SSE_STREAMING_MODES.md完整的 SSE 指南- 详细解释所有三种模式
- 每个模式的客户端代码示例
- 使用个案决定总表
- 比较图表
- 移徙指南
- 排除故障区域
LLMApi/SSE_Streaming.httpSSE 模式的 HTTP 示例- 所有三个 SSE 模式的示例
- 合并功能示例 @(}后端选择@,}上下文 @MS K2}错误_)}%
- 实际使用案例 @(stock tickers@,散装出口}%,logs)
- 客户端 JavaScript 代码示例
更新文件
docs/CONFIGURATION_REFERENCE.md- 添加 SSE 模式区域docs/MULTIPLE_LLM_BACKENDS.md*- 以负载平衡增强appsettings.Full.json- 添加 SSE 模式示例和 Mistral}-Nemo
🧪测试改进
新建测试范围@: @%
- 22SSE模式测试 万岁,万岁
- 批次值验证
- 配置解析
- 查询参数覆盖
- 所有模式的事件格式验证
- Case - 敏感解析
全部测试套件@: @% 1
- 218_BARBAR_测试 GRPC测试跳过 ) *
- 无汇编错误或警告
- 检查了完全后向兼容性
{🔧} 配置增强
新建配置选项@: @%
{
"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
}
}
🌍 环境变量
带有完整文档的全环境变量支持@: @%
# 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"
📦新文件
核心执行=:
mostlylucid.mockllmapi/Models/SseMode.cs- SSE 模式元件mostlylucid.mockllmapi/Services/Providers/ILlmProvider.cs-}提供方界面mostlylucid.mockllmapi/Services/Providers/OllamaProvider.csOllama 提供商mostlylucid.mockllmapi/Services/Providers/OpenAIProvider.csOpenAI 提供商mostlylucid.mockllmapi/Services/Providers/LMStudioProvider.csLM演播室提供商mostlylucid.mockllmapi/Services/Providers/LlmProviderFactory.cs-提供厂mostlylucid.mockllmapi/Services/LlmBackendSelector.cs-后端选择逻辑
测试:
LLMApi.Tests/SseModeTests.cs- NSK1 SSE 模式测试
文 件 @:
docs/SSE_STREAMING_MODES.md完成 SSE 指南LLMApi/SSE_Streaming.http“- 30+ SSE 示例”
{📝} 更新文件
核心服务=:
mostlylucid.mockllmapi/LLMockApiOptions.cs*-添加SseMode属性@, @%LlmBackends矩阵数组mostlylucid.mockllmapi/RequestHandlers/StreamingRequestHandler.cs- 添加 SSE 模式路由mostlylucid.mockllmapi/Services/LlmClient.cs- 添加后端选择超载mostlylucid.mockllmapi/Services/MockDataBackgroundService.cs- 添加了信号R 后端选择mostlylucid.mockllmapi/Models/HubContextConfig.cs*-添加BackendName和BackendNames
文 件 @:
README.md“-”更新到 v2.0,}全面特征列表docs/CONFIGURATION_REFERENCE.md- 添加 SSE 模式和后端选择docs/MULTIPLE_LLM_BACKENDS.md以负载平衡示例增强“-”appsettings.Full.json添加了全面的例子。
Demo 应用程序@: @%
LLMApi/Program.cs{-} 添加的交换器配置LLMApi/Pages/_Layout.cshtml- 添加了 Swagger UI 链接
🎨使用案例示例
股市进料( 完整ObjectsMS K1
GET /api/mock/stream/stocks?sseMode=CompleteObjects&shape={"ticker":"AAPL","price":150.25,"change":2.5}
批量客户出口 @(_ArrayIemts@):
GET /api/mock/stream/export-customers?sseMode=ArrayItems&shape={"customers":[{"id":"string","name":"string"}]}
AI 聊天界面 @(#LlmTokens@):
GET /api/mock/stream/chat?sseMode=LlmTokens&shape={"message":"Hello!"}
High-Troughput IOT 传感器(Load balanced}):
{
"HubContexts": [
{
"Name": "iot-sensors",
"BackendNames": ["ollama-llama3", "ollama-mistral", "lmstudio-default"]
}
]
}
使用 {128} k 背景@:} 的大规模数据集
GET /api/mock/stream/bulk-data?sseMode=ArrayItems&backend=ollama-mistral-nemo
来自v1.x的移民
无代码更改要求@ ! @%
版本 @2.0}是Q100%}后退与 v1._x}:}兼容
// 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-到新地貌 @ :
// Same setup, just update appsettings.json
{
"MockLlmApi": {
"SseMode": "CompleteObjects", // Switch to realistic streaming
"Backends": [...] // Add multiple backends
}
}
断开更改
(无声)
尽管主要版本被冲击到 @ 2.0, @ 有零断裂变化@: @
- 默认 SSES 模式
LlmTokens@(_ 原始行为@)_ - 遗产
BaseUrl/ModelName仍然支持的配置 - 所有现有终点都未改变
- 所有现有考试通行证
- 保持完全后向兼容性
改进业绩
- 多@ - @ 后端加载平衡: 分布在多个 LLM 实例中的负载
- 加权环圆Q-罗宾\ :基于后端能力的智能分布
- 后端@ - @ 具体 Tok 限制优化每种型号的'能力
- 完整对象模式@: 更少的 SSE 事件@= 管理费比马约#- by-token低
为何版本@2.0? @%
此解密代表基本转换@: @
mock API 与 LLM - 发电
- 单 LLM 后端
- 一个 SSE 流模式
- 基本配置
v2.0:production -Ready Moock平台
- 带负负平衡的多个 LLM 后端
- 三种现实的 SSE 流模式
- 全面后端选择
- 生产@-比例配置 @ (128 k 背景 @)
- 企业+- 已备文件
- 交互式 API 文件 @(_Swagger})
“2.0”版本将LLMock API定位为能够处理不同用途案例的大规模测试要求的综合模拟平台,
完整文件
- SSE 流模式 SSE 模式完整指南
- 多个 LLM 后端 Q-后端配置指南
- 配置引用 @ -_% 所有配置选项
- HTTP 示例 “-备就”“-to}-run SSE 示例
- 排练和抓取 -_Auto @-_Cchunking 指南
- AIPI 背景 内容管理指南
- gRPPC 支持 -+GRPC模拟指南
- 阅读 @- 快速启动和概览
🙏 谢谢
感谢所有用户和贡献者帮助将LalMock API塑造成一个全面的模拟平台@. @你的反馈和使用案例驱动了这些改进_!}
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}我...
参见 v1.8.0}功能 @ (}%Multiple LLM 后端支援@,}自动请求 Chunking_,}强化缓存配置 @).}
以前版本
参见以下 v1.7.x,vMS K2x},v{1.5.XMSKO}及先前版本@.}的完整发布历史记录