2025-05-25 修复 cAI
Bug 修复
WithEvents声明缺失:HttpClient和SSEClient都是Dim声明,事件处理函数永远不会被触发。改SSEClient为Private WithEvents,HttpClient改为同步请求中的局部变量。ParseStreamChunkJSON 解析逻辑完全错误:SSE 返回{"choices":[...]}是对象格式,代码却检查RootIsArray,导致流式响应永远无法解析。重写为ParseStreamJson,正确从RootItem→Item("choices")→ 数组元素 →("delta")→("content")逐层提取。系统提示词重复添加:
BuildRequestBody每次调用都往m_Messages开头插入系统消息,多次 Chat 后系统提示词重复堆积。改用临时MsgList集合构建请求体,不修改m_Messages。流式请求架构不可行:
cHttpClient.Async(True).SendPost是假流式(WinHttp 全部接收完才触发事件),无法逐 chunk 回调。改用cSSEClient.ConnectPost,真正逐条解析 SSE 事件。SSEClient_OnClose双重触发:[DONE]标记和OnClose都会触发完成,导致OnComplete事件重复。改为只在m_IsStreaming=True时触发完成。
功能增强
新增
IsStreaming属性:外部可查询流式请求状态。防重入检查:
Chat()检查m_IsStreaming,防止同时发起多个流式请求。清理旧连接:
SendStreamRequest先Disconnect旧 SSE 客户端再创建新的。