Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

第四次提问,通义千问提示错误 #436

Closed
wuhunyu opened this issue Jan 23, 2024 · 8 comments
Closed

第四次提问,通义千问提示错误 #436

wuhunyu opened this issue Jan 23, 2024 · 8 comments

Comments

@wuhunyu
Copy link

wuhunyu commented Jan 23, 2024

问题描述

第四次回答开始,控制台无法正常返回 通义千问 的回复,重启 docker 容器之后也是第四次回答错误

--------------------
问题:1+1等于多少?
以下是小爱的回答:  答案是二
以下是 Qian Wen 的回答: 1+1=2回答完毕
--------------------
问题:1+2等于多少?
以下是小爱的回答:  答案是三
以下是 Qian Wen 的回答: 1+2=3回答完毕
--------------------
问题:1+3等于多少?
以下是小爱的回答:  答案是四
以下是 Qian Wen 的回答: 1+3=4回答完毕
--------------------
问题:1+4等于多少?
以下是小爱的回答:  答案是五
以下是 Qian Wen 的回答: Request id: 2f31f74c-12a9-9db6-a5f4-30f98b0ab474, Status code: 
HTTPStatus.INTERNAL_SERVER_ERROR, error code: InvalidParameter, error message: 
User and assistant need to appear alternately in the message
回答完毕
--------------------
问题:1+5等于多少?
以下是小爱的回答:  答案是六
以下是 Qian Wen 的回答: Request id: 6e27daac-39cc-9ef2-bb39-4a8acf907cb0, Status code: 
HTTPStatus.INTERNAL_SERVER_ERROR, error code: InvalidParameter, error message: 
Role must be user or assistant and Content length must be greater than 0
回答完毕
--------------------
问题:1+3等于多少?
以下是小爱的回答:  答案是四
以下是 Qian Wen 的回答: Request id: f3909027-2acf-9e9c-b85b-c37a9df1d06c, Status code: 
HTTPStatus.INTERNAL_SERVER_ERROR, error code: InvalidParameter, error message: 
Role must be user or assistant and Content length must be greater than 0
回答完毕

环境

docker 镜像 yihong0618/xiaogpt
音箱是小爱音箱mini

启动命令

docker run -d --name xiaogpt -v /etc/localtime:/etc/localtime:ro -v xiaogptConf:/config yihong0618/xiaogpt:latest --use_qwen --config=/config/config.json

config.json

xxx 的部分已填入,这里脱敏处理了

{
  "hardware": "LX01",
  "account": "xxx",
  "password": "xxx",
  "openai_key": "",
  "glm_key": "",
  "gemini_key": "",
  "qwen_key": "xxx",
  "bard_token": "",
  "serpapi_api_key": "",
  "cookie": "",
  "mi_did": "xxx",
  "use_command": false,
  "mute_xiaoai": true,
  "verbose": false,
  "bot": "chatgptapi",
  "tts": "mi",
  "edge_tts_voice": "zh-CN-XiaoxiaoNeural",
  "prompt": "请用100字以内回答",
  "keyword": [""],
  "change_prompt_keyword": ["中文"],
  "start_conversation": "开始持续对话",
  "end_conversation": "结束持续对话",
  "stream": true,
  "proxy": "",
  "gpt_options": {},
  "bing_cookie_path": "",
  "bing_cookies": {},
  "api_base": "https://dashscope.aliyuncs.com/api/v1",
  "deployment_id": ""
}

问题查找

image
@yihong0618
Copy link
Owner

@wuhunyu 有可能是 history 的问题,我今晚看看,如果你能 fix PR welcome 哈

@wuhunyu
Copy link
Author

wuhunyu commented Jan 23, 2024

@wuhunyu 有可能是 history 的问题,我今晚看看,如果你能 fix PR welcome 哈

我不会 python [/doge]

从我看的作者的文档以及使用情况,大致的原理是不是这样子

  1. 每一秒轮询获取小爱音箱的历史问答列表
  2. 如果获取到了有效的文本,就下发给语言模型,并等待回复
  3. 如果回复成功,则让小爱音箱播报语言模型的回复

我有几个题外的问题

  1. 我的服务器时间比网络时间落后了几分钟,我在纳闷配置哪里有问题的时候,结果小爱音箱自己播报了我几分钟之前问题答复。这个问题只要服务器时间同步到也没啥。但历史消息获取作者是怎么避免重复获取的,每次查询只查询最近的一秒吗?由于小爱音箱识别也要时间,我倒是没办法在1秒内录入多个不连续的问题
  2. 语言模型的回答总是会在小爱音箱默认回答的后面,所以只要触发了语言模型的回答,总是会打断默认回答然后播报。我想大多数人应该是想要直接替换掉默认回答的。看了作者的文档之后,大概意思是现阶段不破解不行是吗?文档中写了作者有去抓过包,放弃了这个策略的原因是传输内容加密?我设想如果可以拦截问题请求,判断是需要走语言模型的问题,就截获请求,然后换成去请求语言模型,是可以解决两次回复的问题

@yihong0618
Copy link
Owner

  1. 1s 内应该没办法。
  2. 语言模型的回答总是会在小爱音箱默认回答的后面,所以只要触发了语言模型的回答,总是会打断默认回答然后播报。我想大多数人应该是想要直接替换掉默认回答的。看了作者的文档之后,大概意思是现阶段不破解不行是吗?文档中写了作者有去抓过包,放弃了这个策略的原因是传输内容加密?我设想如果可以拦截问题请求,判断是需要走语言模型的问题,就截获请求,然后换成去请求语言模型,是可以解决两次回复的问题

这个不破解是解决不了的,因为不在小米那落盘你是拿不到 history 的。
3. 你可以先试试 ChatGLM

@frostming
Copy link
Collaborator

2. 我设想如果可以拦截问题请求

小爱有自己的耳朵(监听器),自己的嘴巴(默认TTS),以及中枢大脑。
现在开放的程度,只能进入它的大脑。于是得等信息监听到了,存到大脑之后我们才能看到,偏这个大脑还是在远程服务器上。
现在就是耳朵的问题,不破解的情况下,没法换成我们自己的耳朵。

@wuhunyu
Copy link
Author

wuhunyu commented Jan 23, 2024

  1. 你可以先试试 ChatGLM

使用 ChatGLM 提示了 GLM do not support stream,实际用起来还是比较难受的,文本量稍微多一点就容易让人产生是不是回答不了的错觉
话说,我看了 glm-3-turboglm-4 模型的开放接口,都是支持 sse 的,为啥 glmask_stream 方法没有实现呢 [/doge]

@frostming
Copy link
Collaborator

为啥 glmask_stream 方法没有实现呢

因为没有人提PR

@wuhunyu
Copy link
Author

wuhunyu commented Jan 23, 2024

因为没有人提PR

好吧,如果是 java,我还能出点力

yihong0618 added a commit that referenced this issue Jan 28, 2024
Signed-off-by: yihong0618 <zouzou0208@gmail.com>
@yihong0618
Copy link
Owner

@wuhunyu fixed and added glm stream please check

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants