|
<火山程序 类型 = "通常" 版本 = 1 />
方法 获取问答 <公开 静态>
{
变量 FW <类型 = 网络访问类>
变量 cs1 <类型 = 文本型
值 = "{\r\n \"model\": \"deepseek-chat\",\r\n \"messages\": [\r\n {\"role\": \"system\", \"content\": \"">
变量 cs2 <类型 = 文本型 值 = "\"}\r\n ],\r\n \"stream\": true\r\n }">
变量 协议 <类型 = 文本数组类>
变量 KEY <类型 = 文本型>
变量 传输对象 <类型 = 网络传输类>
协议.加入成员 ("Content-Type: application/json")
KEY = "sk-82a1564834be4b09b991b6ed29acb390" // 填写自己的KEY
协议.加入成员 ("Authorization:Bearer " + KEY)
变量 cs <类型 = 文本型>
cs = cs1 + FW.URL编码 (取程序 ().主窗口对象.编辑框1.内容) + cs2
// 先输出问题
取程序 ().主窗口对象.编辑框2.加入文本行 ("问:" + 取程序 ().主窗口对象.编辑框1.内容)
取程序 ().主窗口对象.编辑框2.加入文本行 ("答:")
// 设置传输对象参数
传输对象.地址 = "https://api.deepseek.com/chat/completions"
传输对象.置请求方式 ("POST")
传输对象.置请求头 (协议)
传输对象.置提交数据 (文本到多字节 (cs, 假))
// 设置回调函数处理流式数据
传输对象.置写入数据回调函数 (处理流式数据)
// 发送请求
传输对象.发送请求 ()
}
方法 处理流式数据 <静态 类型 = 变整数>
参数 数据 <类型 = 变整数>
参数 数据尺寸 <类型 = 变整数>
参数 数据数量 <类型 = 变整数>
参数 用户数据 <类型 = 变整数>
{
变量 缓冲区 <类型 = 文本型>
缓冲区 = UTF8到文本 (指针到字节集 (数据, (整数)数据尺寸 * (整数)数据数量))
如果 (寻找文本 (缓冲区, "content\":\"", , ) != -1)
{
变量 A1 <类型 = 整数>
变量 A2 <类型 = 整数>
A1 = 寻找文本 (缓冲区, "content\":\"", , )
A2 = 寻找文本 (缓冲区, "\"},\"", , )
如果 (A2 > A1 && A1 != 0 && A2 != 0)
{
变量 当前内容 <类型 = 文本型>
当前内容 = 取文本中间 (缓冲区, A1 + 10, A2 - A1 - 10)
子文本替换 (当前内容, "\\n", "\r\n", , , )
取程序 ().主窗口对象.编辑框2.加入文本 (当前内容)
处理事件 () // 让界面即时刷新
}
}
返回 (数据尺寸 * 数据数量)
}
|
|