li-plus / chatglm.cpp

C++ implementation of ChatGLM-6B & ChatGLM2-6B & ChatGLM3 & GLM4

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

openai_api 返回为空

lesca opened this issue · comments

环境:

  • 使用 one-api 调用 openai_api
  • 启动命令 uvicorn chatglm_cpp.openai_api:app --host 0.0.0.0 --port 8000
  • 版本:
    • 当前的main分支
    • prebuild docker image 的 main 版本
    • 以上版本都有这个问题

问题

1. one-api 渠道中点击测试失败(发送hi),chatglm_cpp 日志如下(返回为空)

2024-01-01 13:39:43,126 - openai_api - INFO - prompt: "hi", sync response: ""

2. 对话一段时间后,返回结果为空

stream response: ""

返回结果为空

完整对话

有问题的地方看:⚠️备注

INFO:     Started server process [16848]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
INFO:     172.24.0.1:57077 - "POST /v1/chat/completions HTTP/1.1" 200 OK
2024-01-01 13:31:46,896 - openai_api - INFO - prompt: "ChatMessage(role="user", content="天空为什么是蓝色的?", tool_calls=[])", stream response: ""
INFO:     172.24.0.1:57421 - "POST /v1/chat/completions HTTP/1.1" 200 OK
2024-01-01 13:35:27,166 - openai_api - INFO - prompt: "ChatMessage(role="user", content="翻译", tool_calls=[])", stream response: ""
INFO:     172.24.0.1:57432 - "POST /v1/chat/completions HTTP/1.1" 200 OK
2024-01-01 13:35:35,241 - openai_api - INFO - prompt: "ChatMessage(role="user", content="你好", tool_calls=[])", stream response: "
你好👋!我是人工智能助手 ChatGLM3-6B,很高兴见到你,欢迎问我任何问题。"
INFO:     172.24.0.1:57447 - "POST /v1/chat/completions HTTP/1.1" 200 OK
2024-01-01 13:35:46,961 - openai_api - INFO - prompt: "ChatMessage(role="user", content="天空为什么蓝色?", tool_calls=[])", stream response: "
天空为什么呈现蓝色,这是一个非常有趣的问题。实际上,天空呈现蓝色的原因与大气中的气体和光线如何相互作用有关。

当太阳的光线穿过大气时,它会遇到大气中的气体分子和其他微小的粒子。光线中包含" ⚠️备注:这里回答了一半就终止了
INFO:     172.24.0.1:57480 - "POST /v1/chat/completions HTTP/1.1" 200 OK
2024-01-01 13:36:01,128 - openai_api - INFO - prompt: "ChatMessage(role="user", content="继续", tool_calls=[])", stream response: ""
⚠️备注:这里返回为空

找到原因了,是maxtoken。openai_api服务端达到maxtoken后就停止回复。(这个在chatglm项目里并不会这样)
问题1:one-api的maxtoken默认为1,所以一测试就停止
问题2:app设定了上限,调整一下就好了