报错:TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType'

报错:TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType'

本小节代码练习时报错:TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType'

https://img1.sycdn.imooc.com/climg/44476a6709f892a310870660.jpg

deepseek分析是流式输出不计算token导致,根据它给出的升级方案也没有解决问题。

更换成非流式输出invoke确实没有这问题,但之前流式输出的练习代码也是这样的,之前能正常运行,今天也不行了

https://img1.sycdn.imooc.com/climg/cd25416709f892f009690571.jpg

我的代码:

相关代码:

# 1.构造链应用
prompt = ChatPromptTemplate.from_messages([
    ('system', '你是一个OpenAI开发的聊天机器人,请根据上下文和用户的问题进行回答'),
    MessagesPlaceholder('history'),
    ('human', '{query}')
])

llm = ChatOpenAI(model='gpt-3.5-turbo-16k')
# llm = FixedChatOpenAI(model='gpt-3.5-turbo-16k')

chain = prompt | llm | StrOutputParser()

# 2.构造对话窗口
while True:
    # 提示用户进行输入
    query = input('Human:')
    # 用户如果输入q,停止循环
    if query == 'q':
        break
    # 将用户输入传递给大语言模型
    chain_input = {'query': query, 'history': []}
    print(chain_input)
    response = chain.stream(chain_input)
    # response = chain.invoke(chain_input)
    # print(response)
    print('AI:', flush=True, end='')
    for chunk in response:
        if chunk is None:
            break
        print(chunk, flush=True, end='')
    print('')


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

大概率是用的中转api,中转的api用了逆向,逆向的接口里没有输出消耗的token信息,所以值为None,langchain封装的消息叠加并没有处理None的场景,所以抛出了错误,可以尝试换一个中转接口试下。


其他可以尝试的中转api:

  1. https://yibuapi.com

  2. https://xiaoai.plus

  3. https://ai-yyds.com

  • 曲别针010 提问者 #1

    更换https://xiaoai.plus后,问题解决,谢谢


    2025-04-11 21:18:35
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
AI Agent 全栈开发工程师
  • 参与学习       583    人
  • 解答问题       435    个

全流程打造你自己的(Coze/Dify)低代码智能体开发平台;2025年入行正当时,企业急需,人才稀缺,竞争小;无论入行还是转行,首选口碑好课,门槛低、成长高

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师