# LLMApi:释放便笺

<!--category-- AI, LLM, LLMAPi, ASP.NET Core, API, Nuget, mockllmapi-->
<datetime class="hidden">2025-11-02T12:30</datetime>

> 这是GitHub.的现场发布记录

# 诱引

这是来自 GitHub 的 @'@live_'}, 因此将会经常更新@.}

[TOC]

# 单元说明

## 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, 并正常逃跑

**使用率示例**:

```bash
curl -X POST http://localhost:5116/api/mock/users/register \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "username=john_doe&email=john@example.com&age=30"
```

**特点**:

- 单值和多个值 @ ( @ arrays@ MS K1 @ {}
- 正在跳出特殊字符@( @ quotes @ , @ 反斜@ MS K2 @ newlines @ I,_ tabs @ )}
- Unicode 和 Demoji 支持
- JSON 手工制造JSON
- 空值处理

**多重值**:

```bash
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 K1`multipart/form-data`) 🔥

**已解决问题**& :% 没有支持文件上传@-}对于测试文档来说关键 *\ MS K2 image 上传 UIs.}

**解决方案**: memory-安全文件流,包含元数据提取

**使用率示例**:

```bash
curl -X POST http://localhost:5116/api/mock/photos/upload \
  -F "title=My Photo" \
  -F "description=Beautiful sunset" \
  -F "image=@photo.jpg"
```

**特点**:

- **Memory - 安全流**@:}檔案讀取過{8}{KB 缓冲区,並被丟棄}(沒有儲存@)
- **抽取元数据**: filename@,内容类型 @,}大小 @MS K3字节已读
- **多个文件**\ : 上传多个文件
- **混合内容**: 表单字段 @+}文件组合
- **大型文件支持**“: 测试” 用“ @100 mB +" 文件测试
- **内容类型**: Text, PDF, JEGMS K3二進位@- 全部支援

**如何运作**:

- 文件内容流出并丢弃了 @ ( 防止内存 bloat)\ {}
- 只保留元数据并转给LLM
- LLM 生成基于上传内容的适当响应

**回应实例**:

```json
{
  "message": "File uploaded successfully",
  "file": {
    "fieldName": "image",
    "fileName": "photo.jpg",
    "contentType": "image/jpeg",
    "size": 524288,
    "processed": true
  }
}
```

#### @3._任意道路的长度#🔥_

**已解决问题**: 有限路径深度支持 @- 重新更新的APIs经常使用深巢@.

**解决方案**“:充分支持通过深路” `{**path}` 所有的路线

**使用率示例**:

```bash
# 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** 以避免反射@-}基于序列的序列化 @:

```csharp
// 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 文件处理

```csharp
// 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.cs` JSON逃跑和抽取的测试
- `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 现有测试通过 =)

### 《移徙指南指南》

没有需要的迁移@!}所有更改都是添加的 @:

```csharp
// 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` -窗体的新使用示例@,}文件 @,深路
- 更新的“"”区域
- 最新特征一览表
- 更新测试覆盖率科

### 已知限制

1. 文件内容被倾弃 @ ( @ {% 无法为LLM 访问, 以便分析@ MS K1} *
2. 最大文件大小受 ASP.NET 核心默认值限制
3. 窗体阵列命名字段常规@: @% 重复的战地名称变为数组

### 使用案例

**机构支助表格**:

- 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 :

```json
{
  "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 工具** “-”链条决定树的模拟端点“:”

```json
{
  "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”。

**使用率示例**:

```http
# 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 配置

**配置示例**:

```json
{
  "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):

```http
# 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` 滑动到期

```csharp
// 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_ 小时根据您的需要设定

**配置配置**:

```json
{
  "mostlylucid.mockllmapi": {
    "ContextExpirationMinutes": 15  // Default: 15 (range: 5-1440)
  }
}
```

**推荐设置**:

- **分钟**“:快速测试”“, CI/CD管道
- **分钟**“: 默认”“- 常规开发测试”“(”建议“MSC3”
- **分钟**:Complical multiple @-_step工作流程
- **分钟**:长探索性试验课程

#### 智能共享数据提取

**已解决问题**: 唯有硬码字段 @(`id`, `userId`, `name`, `email`) 被追蹤@, 限制域域@MS K2 特定字段的一致性, 如 SKUs, 帐号 @, 參考編碼}, 等.

**解决方案**:捕捉的递归性实地提取 **全部所有** 自动自动字段

**在“(”之前**:

```json
// Only 4 hardcoded fields extracted
{"lastId": "123", "lastUserId": "456", "lastName": "Alice", "lastEmail": "alice@example.com"}
```

**现在"(#V}2.2.0)\i"**:

```json
// 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` 关键键仍然工作

**世界影响**:

```http
### 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` 安全限值
- 新建新设新 `RestApis` API 配置定义的数组
- 新建新设新 `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`@,等#.)}仍在工作
- 现有环境守则继续工作,没有变化
- 新建功能为自动 & @ - 不需要更改代码

### 《移徙指南指南》

**无需移民@! @** 提升并享受自动福利

1. **上下文过期**: 自动- 语境现在可以清理了
2. **强化采掘**: 自动- 所有字段现在都被跟踪

**任择**: 配置过期时间( 如果默认) @ MS K1 分钟 doesn't access your problem=:}

```json
{
  "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 K2
- `mostlylucid.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\
- **工作变通办法**:
  1. 以块状请求将温度降低到 @ 0.8-1.0@ label
  2. 使用 lama3.2:3b 或 mistral-nemo @ (更好的指令
  3. 为避免块积而减少项目计数
  4. 禁用自动@ - @ 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**

```json
{
  "MockLlmApi": {
    "SseMode": "CompleteObjects"  // LlmTokens | CompleteObjects | ArrayItems
  }
}
```

**请求覆写@: @**

```http
GET /api/mock/stream/users?sseMode=CompleteObjects
GET /api/mock/stream/data?sseMode=ArrayItems
GET /api/mock/stream/chat?sseMode=LlmTokens
```

**客戶端範例 @ ( @ completeObjects@ MS K1**

```javascript
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**

```json
{
  "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
      }
    ]
  }
}
```

**加载平衡的信号枢纽@: @ {}**

```json
{
  "HubContexts": [
    {
      "Name": "high-throughput-data",
      "BackendNames": ["ollama-llama3", "ollama-mistral", "lmstudio-default"]
    }
  ]
}
```

**功能@: @%**

- 圆四重量-罗滨分布
- 请求选择后端@ option: check
- 如果后端不可用, 自动失败默认
- 使用信号R,SSEMS K1REST},和图解QL

#### 3. 全面后端选择

**请求选择** (=多方法=):=

```http
# 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 上下文窗口@:}

```json
{
  "Backends": [
    {
      "Name": "ollama-mistral-nemo",
      "Provider": "ollama",
      "ModelName": "mistral-nemo",
      "MaxTokens": 128000,
      "Enabled": true
    }
  ]
}
```

**使用案例@:**

- 在一次请求中生成数千份详细记录
- 具有深层关系的复杂嵌套数据结构
- 大型批量作业 `MaxItems=10000+`)
- 综合测试数据集
- 具有广泛嵌套字段的图形QL查询

**信号号示例@:**

```json
{
  "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 @:}**

```csharp
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

app.UseSwagger();
app.UseSwaggerUI();
```

### 文件翻版

#### 新建文件文件文件

- **`docs/SSE_STREAMING_MODES.md`** 完整的 SSE 指南
  
  - 详细解释所有三种模式
  - 每个模式的客户端代码示例
  - 使用个案决定总表
  - 比较图表
  - 移徙指南
  - 排除故障区域

- **`LLMApi/SSE_Streaming.http`** SSE 模式的 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测试跳过 ) *
- 无汇编错误或警告
- 检查了完全后向兼容性

### {🔧} 配置增强

**新建配置选项@: @%**

```json
{
  "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
  }
}
```

### 🌍 环境变量

带有完整文档的全环境变量支持@: @%

```bash
# 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.cs` Ollama 提供商
- `mostlylucid.mockllmapi/Services/Providers/OpenAIProvider.cs` OpenAI 提供商
- `mostlylucid.mockllmapi/Services/Providers/LMStudioProvider.cs` LM演播室提供商
- `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**

```http
GET /api/mock/stream/stocks?sseMode=CompleteObjects&shape={"ticker":"AAPL","price":150.25,"change":2.5}
```

**批量客户出口 @(_ArrayIemts@):**

```http
GET /api/mock/stream/export-customers?sseMode=ArrayItems&shape={"customers":[{"id":"string","name":"string"}]}
```

**AI 聊天界面 @(#LlmTokens@):**

```http
GET /api/mock/stream/chat?sseMode=LlmTokens&shape={"message":"Hello!"}
```

**High-Troughput IOT 传感器(Load balanced}):**

```json
{
  "HubContexts": [
    {
      "Name": "iot-sensors",
      "BackendNames": ["ollama-llama3", "ollama-mistral", "lmstudio-default"]
    }
  ]
}
```

**使用 {128} k 背景@:} 的大规模数据集**

```http
GET /api/mock/stream/bulk-data?sseMode=ArrayItems&backend=ollama-mistral-nemo
```

### 来自v1.x的移民

**无代码更改要求@ ! @%**

版本 @2.0}是Q100%}后退与 v1._x}:}兼容

```csharp
// 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-到新地貌 @ :**

```csharp
// 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 流模式](https://github.com/scottgal/LLMApi/blob/refs/heads/master/docs/SSE_STREAMING_MODES.md)** SSE 模式完整指南
- **[多个 LLM 后端](https://github.com/scottgal/LLMApi/blob/refs/heads/master/docs/MULTIPLE_LLM_BACKENDS.md)** Q-后端配置指南
- **[配置引用](https://github.com/scottgal/LLMApi/blob/refs/heads/master/docs/CONFIGURATION_REFERENCE.md)** @ -_% 所有配置选项
- **[HTTP 示例](https://github.com/scottgal/LLMApi/blob/refs/heads/master/LLMApi/SSE_Streaming.http)** “-备就”“-to}-run SSE 示例
- **[排练和抓取](https://github.com/scottgal/LLMApi/blob/refs/heads/master/CHUNKING_AND_CACHING.md)** -_Auto @-_Cchunking 指南
- **[AIPI 背景](https://github.com/scottgal/LLMApi/blob/refs/heads/master/docs/API-CONTEXTS.md)** 内容管理指南
- **[gRPPC 支持](https://github.com/scottgal/LLMApi/blob/refs/heads/master/docs/GRPC_SUPPORT.md)** -+GRPC模拟指南
- **[阅读](https://github.com/scottgal/LLMApi/blob/refs/heads/master/README.md)** @- 快速启动和概览

### 🙏 谢谢

感谢所有用户和贡献者帮助将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}及先前版本@.}的完整发布历史记录