这段代码能在串口进行AI问答,但是有几个问题想请教一下:
\n大佬打算写一个SSE版本的吗?我看官方也推荐这个,可以实现流式传输,感觉快很多。我能照猫画虎照着您的代码改出SSE的版本吗?
\n怎么解析JSON获取content比较好,我用的是处理字符串的方法,感觉比较方便,没用解析JSON的方式
\nDeserializationError error_id = deserializeJson(doc, responseMessage);\nString AssistantMessage = responseMessage.substring(responseMessage.indexOf('[')+35,responseMessage.lastIndexOf(']')-4);\nSerial.println(\"AI:\" + AssistantMessage);\n
content比较长时有回车换行符号“\\n\\n”那些,怎么处理比较好呢?
\n我用轮询的方式0.5秒HTTP GET读取一次结果请求响应的task_status,当读取到它是SUCCESS时再读取content内容,这样是正确的做法吗?总感觉有点笨比,代码片段如下:
\nwhile(true){\n // 循环GET获取服务器处理状态\n int httpResponseIDCode = http_id.GET();\n if (httpResponseIDCode > 0) {\n responseMessage = http_id.getString();\n DeserializationError error_id = deserializeJson(doc, responseMessage);\n String task_status = doc[\"data\"][\"task_status\"];\n if(task_status == \"PROCESSING\"){\n // 等待\n delay(500);\n continue;\n }else{\n // 查询到状态是SUCCESS时打印content的内容\n break;\n }\n } else {\n responseMessage = \"Error: External API request failed!\";\n }\n}\n
今天突然遇到一个情况:响应内容的task_status长时间处于PROCESSING的状态,卡很久都拿不到content,等个几分钟才能得到响应结果,昨天还没这个情况的,可能是被限流还是什么原因呢,但是我用python的API例程去问它又嘎嘎快。
\n最后,还有一个bug:发送要问的问题后,偶尔会直接显示上一个问题的回复,我记得您的版本和我改出来的版本都出现过这个问题。
\n问题有点多,大佬您有空的时候再回复我吧,期待您的回复😋。
","upvoteCount":2,"answerCount":2,"acceptedAnswer":{"@type":"Answer","text":"\n\n流式传输我是没有计划写的,我觉得异步算是很快的了,所以没有考虑SSE的版本(主要是好写)
\n
\n\n对于这个问题的话,我这里将答案先通过单片机接受,再发送到网页上面去,显示出来。官方的显示比较奇怪,我的处理比较基础。我已经简单处理了一下,如果带
\n\\n\\n
就是你的文本太长了,一般情况下应该是不会显示出来的才是对的呀。因为我在index.h换掉这个了(官方的返回有的很奇怪,我是使用的正则表达式来处理这个事情的)
\n\n因为我是采用异步的做法,如果没有使用异步的话,同步的做法我记得有的时候内容太长有时候又不返回啥的,而且为了减少单片机压力,减少请求的次数,你轮询的话我也做过,没啥笨比的。你的代码如果斜杆插入内容没错的话那是正确的。
\n
\n","upvoteCount":2,"url":"https://github.com/blueokanna/ESP32-ChatGLM/discussions/2#discussioncomment-7316563"}}}这个问题我之前好像也遇到过,我那时候网络不好或者是服务器原因,我自己怀疑过是官方的问题,至于偶尔会显示之前的问题这个问题我也一直都没办法解决,我目前也在寻找对应的方法,我用 Postman 试过但是,一切又都正常,但是我自己不知道为啥,不知道是我写的问题还是?因为我自己也研究了很久,但是还是会有这个问题,难道是代码设计的问题? 🤔 💡
\n
-
大佬好,这是我根据您的代码修改的自己需要的串口问答版本:
这段代码能在串口进行AI问答,但是有几个问题想请教一下:
问题有点多,大佬您有空的时候再回复我吧,期待您的回复😋。 |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
现在在想怎么实现连续对话😂 |
Beta Was this translation helpful? Give feedback.
以及发送要问的问题后,偶尔会直接显示上一个问题的回复,我记得您的版本和我改出来的版本都出现过这个问题。