Ubuntu22下用LangChain的ChatOpenAI对接LM Studio遇401认证错误
解决LangChain-OpenAI对接本地LM Studio的401认证错误
可能的原因及解决方案
1. 未指定本地模型名称
ChatOpenAI默认调用OpenAI官方模型(如gpt-3.5-turbo),但本地LM Studio服务器需要明确指定已加载的模型名称。未指定模型可能导致服务器返回混淆的认证类错误信息。
修正代码:
from langchain_openai import ChatOpenAI from dotenv import load_dotenv import os # 补充缺失的os模块导入 load_dotenv() llm = ChatOpenAI( api_key=os.getenv("OPENAI_API_KEY"), base_url=os.getenv("OPENAI_API_BASE_URL"), temperature=0.5, model="你的LM Studio加载模型名称", # 替换为实际模型名,比如mistral-7b-instruct-v0.3 )
2. LM Studio服务器配置问题
- 确认LM Studio本地服务器已启动,端口为
1234,且在服务器设置中未开启API Key强制验证(默认关闭)。若开启了验证,需确保代码中的api_key与LM Studio设置的密钥完全一致。 - 检查LM Studio的CORS设置,确保允许本地请求访问。
3. 环境变量加载异常
- 确保
.env文件与脚本在同一目录,或使用绝对路径加载:load_dotenv("/absolute/path/to/.env")。 - 可暂时跳过环境变量,直接硬编码参数测试,排除加载问题:
llm = ChatOpenAI( api_key="lm-studio", base_url="http://localhost:1234/v1", temperature=0.5, model="你的模型名称", )
4. 验证基础连接(绕过LangChain)
用原生OpenAI SDK测试连接,确认问题是否出在LangChain层:
from openai import OpenAI client = OpenAI( api_key="lm-studio", base_url="http://localhost:1234/v1" ) # 替换为你的模型名称 response = client.chat.completions.create( model="mistral-7b-instruct-v0.3", messages=[{"role": "user", "content": "测试请求"}] ) print(response.choices[0].message.content)
若此请求成功,说明LangChain的配置仍有问题;若失败,检查LM Studio服务器状态或端口是否正确。
5. 版本兼容调整
部分新版本的openai SDK对本地服务器的认证逻辑有变化,可尝试将api_key设为任意非空字符串(如"not-needed"),或降级openai版本至1.30.0左右测试。
内容的提问来源于stack exchange,提问作者Karol
相关产品推荐
相关产品推荐

