Skip to content

2025-05-25 修复 cAI

Bug 修复

  1. WithEvents 声明缺失HttpClientSSEClient 都是 Dim 声明,事件处理函数永远不会被触发。改 SSEClientPrivate WithEventsHttpClient 改为同步请求中的局部变量。

  2. ParseStreamChunk JSON 解析逻辑完全错误:SSE 返回 {"choices":[...]} 是对象格式,代码却检查 RootIsArray,导致流式响应永远无法解析。重写为 ParseStreamJson,正确从 RootItemItem("choices") → 数组元素 → ("delta")("content") 逐层提取。

  3. 系统提示词重复添加BuildRequestBody 每次调用都往 m_Messages 开头插入系统消息,多次 Chat 后系统提示词重复堆积。改用临时 MsgList 集合构建请求体,不修改 m_Messages

  4. 流式请求架构不可行cHttpClient.Async(True).SendPost 是假流式(WinHttp 全部接收完才触发事件),无法逐 chunk 回调。改用 cSSEClient.ConnectPost,真正逐条解析 SSE 事件。

  5. SSEClient_OnClose 双重触发[DONE] 标记和 OnClose 都会触发完成,导致 OnComplete 事件重复。改为只在 m_IsStreaming=True 时触发完成。

功能增强

  1. 新增 IsStreaming 属性:外部可查询流式请求状态。

  2. 防重入检查Chat() 检查 m_IsStreaming,防止同时发起多个流式请求。

  3. 清理旧连接SendStreamRequestDisconnect 旧 SSE 客户端再创建新的。

VB6及其LOGO版权为微软公司所有