You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用LM Studio搭建本地聊天机器人时遭遇TypeError: 'NoneType' object is not subscriptable错误求助

使用LM Studio搭建本地聊天机器人时遭遇TypeError: 'NoneType' object is not subscriptable错误求助

兄弟别慌!这个错误我之前踩过类似的坑,本质是你调用OpenAI兼容API后,返回的completion.choices是None——要么是请求没成功拿到正常响应,要么是返回的结构和你预期的不一样。咱一步步来排查:

先排查最基础的服务状态

  • 你得确认LM Studio已经正确启动了本地API服务:打开LM Studio,加载好llama3模型(或者你实际用的那个模型),然后点「Start Server」,看到界面显示服务在http://127.0.0.1:1234运行才行。要是服务没开,或者模型没加载,请求直接就失败了,自然拿不到正确的completion对象。
  • 另外,模型名称要对应上:你代码里写的model="llama3",得和LM Studio里显示的模型名完全一致,比如有些Llama3模型的全名是meta-llama/Llama-3-8B-Instruct,要是名字错了,服务会找不到模型,返回异常。

代码里的API类型写错了!

你现在写的是:

openai.api_type = "open_ai"

正确的应该是openai.api_type = "openai"(去掉中间的下划线)!这个参数设置错了会导致请求格式不兼容LM Studio的服务,直接返回异常响应,所以completion里的choices就成了None。

冗余代码要清理

你代码里写了两个一模一样的while循环,虽然这不是直接导致错误的原因,但会让程序逻辑混乱——运行时先执行第一个循环,退出后又会跑第二个循环,建议删掉其中一个,保留一套循环逻辑就好。

加个错误排查的调试代码

为了更清楚看到问题在哪,给你的chat_with_gpt函数加个错误捕获和调试打印,这样能直观看到请求到底出了啥问题:

def chat_with_gpt(prompt):
    try:
        completion = openai.chat.completions.create(
            messages = [
                {"role": "user",
                 "content": prompt}
            ],
            model="llama3"  # 这里要和LM Studio里的模型名一致!
        )
        # 打印返回的完整结构,方便调试
        print("\n[调试信息] 返回的completion结构:", completion)
        return completion.choices[0].message.content.strip()
    except Exception as e:
        print(f"\n[错误提示] 请求出错了:{str(e)}")
        return "抱歉,我现在没法回应你,请检查LM Studio服务状态或者代码设置~"

运行后看控制台的调试信息,就能知道是服务没响应,还是模型不存在,或者其他参数问题了。

按照上面的步骤排查,应该能解决这个问题!

备注:内容来源于stack exchange,提问作者N T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 15:43:01