cAI 事件参考
事件概览
| 事件 | 说明 |
|---|---|
OnStreamChunk(Chunk, IsComplete) | 流式响应数据块 |
OnComplete(Response) | 请求完成 |
OnError(ErrorMsg, ErrorCode) | 错误事件 |
OnStreamChunk
流式响应数据到达时触发。
vb
Public Event OnStreamChunk(Chunk As String, IsComplete As Boolean)参数:
Chunk— 本次收到的文本片段(完成时为空字符串)IsComplete— 是否为最后一次触发(流式结束)
说明:
- 仅在
Stream=True且未提供回调函数时触发 - 如果 Chat 提供了
Callback和CallbackMethod参数,则使用回调而不触发此事件 IsComplete=True时,Chunk为空,完整内容通过OnComplete事件获取
示例:
vb
Dim WithEvents AI As cAI
Private Sub Form_Load()
Set AI = New cAI
AI.ApiKey("sk-xxx").Stream(True).Chat("写一首诗")
End Sub
Private Sub AI_OnStreamChunk(Chunk As String, IsComplete As Boolean)
If Not IsComplete Then
TextResponse.Text = TextResponse.Text & Chunk
TextResponse.SelStart = Len(TextResponse.Text)
End If
End SubOnComplete
请求完成时触发(同步和流式均触发)。
vb
Public Event OnComplete(Response As String)参数:
Response— 完整的响应文本
示例:
vb
Private Sub AI_OnComplete(Response As String)
Debug.Print "请求完成,完整响应: " & Left(Response, 100)
End SubOnError
请求出错时触发。
vb
Public Event OnError(ErrorMsg As String, ErrorCode As Long)参数:
ErrorMsg— 错误描述ErrorCode— 错误代码(HTTP 状态码或系统错误码)
说明: 错误来源包括:
- API Key 未设置(500)
- 网络/超时错误
- HTTP 4xx/5xx(如 401 认证失败、429 限速)
- SSE 连接错误
示例:
vb
Private Sub AI_OnError(ErrorMsg As String, ErrorCode As Long)
MsgBox "请求失败 [" & ErrorCode & "]: " & ErrorMsg, vbExclamation
End Sub流式响应工作原理
用户调用 Chat() (Stream=True)
↓
cSSEClient.ConnectPost() — POST 请求到 AI API
↓
SSE 逐条返回 data: {"choices":[{"delta":{"content":"..."}}]}
↓
cAI 解析 JSON,提取 delta.content
↓
触发 OnStreamChunk(Chunk, False) — 每个 chunk
↓
收到 data: [DONE]
↓
触发 OnStreamChunk("", True) + OnComplete(完整文本)最后更新: 2025-05-25