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

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

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

import time
from openai import OpenAI

class OneAPIDemo:

    @staticmethod
    def completion(mode_name, messages=[]):
        """
            完成一次对话
        :param mode_name:
        :param messages:
        :return:
        """
        completion = client.chat.completions.create(
            model=model_name,
            messages=messages
        )
        return completion

    @staticmethod
    def completion_stream(model_name, message=[]):
        """
            流式对话
        :param model_name:
        :param message:
        :return:
        """
        completion = client.chat.completions.create(
            model=model_name,
            messages=message,
            stream=True
        )
        return completion

if __name__ == '__main__':
    base_url = ""
    api_key = ""

    client = OpenAI(api_key=api_key,
                    base_url=base_url)
    model_name = "chatglm_turbo"
    messages = [
        {"role": "user", "content": "1+1=?"}
    ]
    start_time = time.time()

    # 是否流式输出
    stream = True
    if stream:
        completion_text = ""
        response = OneAPIDemo.completion_stream(model_name, messages)
        for chunk in response:
            if chunk.choices[0].finish_reason == "stop":
                # 完成
                break

            chunk_text = chunk.choices[0].delta.content
            if chunk_text is not None:
                completion_text += chunk_text
                print(f"接收到: {chunk_text}")

        print(f"回复:{completion_text}\n本次耗时: {time.time() - start_time:.2f}s")

    else:
        response = OneAPIDemo.completion(model_name, messages)
        res_text = response.choices[0].message.content
        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 行,其内容为:

"Accept": "application/json",

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

slhcrj9b

slhcrj9b9#

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

"Accept": "application/json",

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

相关问题