one-api 智谱chatglm_turbo流式无法输出

uubf1zoe  于 9个月前  发布在  其他
关注(0)|答案(9)|浏览(252)

\n\n翻译结果为:\n\n例行检查\n* 我已确认目前没有类似问题\n* 我已确认我已升级到最新版本\n* 我已完整查看过项目 README,尤其是常见问题部分\n* 我理解并愿意跟进此问题,协助测试和提供反馈\n* 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的问题可能会被无视或直接关闭\n\n问题描述\n使用 stream=true 输出时,model_name=chatglm_turbo 无法正常输出,非stream模式可以。\n\n复现步骤\n

  1. import time
  2. from openai import OpenAI
  3. class OneAPIDemo:
  4. @staticmethod
  5. def completion(mode_name, messages=[]):
  6. """
  7. 完成一次对话
  8. :param mode_name:
  9. :param messages:
  10. :return:
  11. """
  12. completion = client.chat.completions.create(
  13. model=model_name,
  14. messages=messages
  15. )
  16. return completion
  17. @staticmethod
  18. def completion_stream(model_name, message=[]):
  19. """
  20. 流式对话
  21. :param model_name:
  22. :param message:
  23. :return:
  24. """
  25. completion = client.chat.completions.create(
  26. model=model_name,
  27. messages=message,
  28. stream=True
  29. )
  30. return completion
  31. if __name__ == '__main__':
  32. base_url = ""
  33. api_key = ""
  34. client = OpenAI(api_key=api_key,
  35. base_url=base_url)
  36. model_name = "chatglm_turbo"
  37. messages = [
  38. {"role": "user", "content": "1+1=?"}
  39. ]
  40. start_time = time.time()
  41. # 是否流式输出
  42. stream = True
  43. if stream:
  44. completion_text = ""
  45. response = OneAPIDemo.completion_stream(model_name, messages)
  46. for chunk in response:
  47. if chunk.choices[0].finish_reason == "stop":
  48. # 完成
  49. break
  50. chunk_text = chunk.choices[0].delta.content
  51. if chunk_text is not None:
  52. completion_text += chunk_text
  53. print(f"接收到: {chunk_text}")
  54. print(f"回复:{completion_text}\n本次耗时: {time.time() - start_time:.2f}s")
  55. else:
  56. response = OneAPIDemo.completion(model_name, messages)
  57. res_text = response.choices[0].message.content
  58. print(f"回复: {res_text}\n本次耗时: {time.time() - start_time:.2f}s")

\n\n预期结果\n=2

jgzswidk

jgzswidk1#

我也遇到了这个问题,当进行流式调用时,只有通义千问能够正常工作,其他模型会返回 JSON 结果,而智谱AI则会直接报错。

关联的问题:#861

zzoitvuj

zzoitvuj3#

@songquanpeng 是不是因为这个返回的model名和传入的不一样的问题,导致用了openai的python sdk没用?

rlcwz9us

rlcwz9us4#


@songquanpeng 是不是因为这个返回的model名和传入的不一样的问题,导致用了openai的python sdk没用?
可以用模型名称重定向功能试一下

wgx48brx

wgx48brx5#


@songquanpeng 是不是因为这个返回的model名和传入的不一样的问题,导致用了openai的python sdk没用?
可以用模型名称重定向功能试一下
好像不行哎

yr9zkbsy

yr9zkbsy6#

在我使用Python调用通义千问时,使用流式输出也有类似的问题,提示Accept type just supports "text/event-stream"

dw1jzc5e

dw1jzc5e7#

我的解决方法是注解掉 ./site-packages/openai/_base_client.py:581 行
其内容为:
"Accept": "application/json",
我用的openai包版本为:1.11.0

lokaqttq

lokaqttq8#

我的解决方法是注解掉 ./site-packages/openai/_base_client.py:581 行,其内容为:

  1. "Accept": "application/json",

我用的 openai 包版本为:1.11.0。@xqbumu 可以采用这个方式,不需要修改 openai 包。在请求内加上 extra_headers 参数可以覆盖 OpenAI 包自带的头部信息。

slhcrj9b

slhcrj9b9#

我的解决方法是注解掉 ./site-packages/openai/_base_client.py:581 行,其内容为:

  1. "Accept": "application/json",

我用的 openai 包版本为:1.11.0。@xqbumu 可以采用这个方式,不需要修改 openai 包。在请求内加上 extra_headers 参数可以覆盖 OpenAI 包自带的头部信息。感谢,此方法有效。

相关问题