LangChain 调用 Qwen 与 Ollama 的环境变量笔记
技术、模型名称、SDK 参数和云厂商入口都会更新。本文记录的是本次排查得到的理解与当前写法,后续一定以官方文档为准。
1. 先区分三类配置
调用大模型时,经常会混在一起的其实是三层东西:
| 层级 | 作用 | 示例 |
|---|---|---|
| 模型名称 | 指定调用哪个模型 | qwen3.7-max、deepseek-r1:7b |
| API Key | 证明你有权限调用服务 | DASHSCOPE_API_KEY |
| Base URL / Host | 指定请求发到哪个服务地址 | 阿里云百炼 Workspace URL、http://127.0.0.1:11434 |
模型名称一般看官网模型列表;Base URL 要看你使用的是默认公共入口、工作空间入口,还是本地服务。
2. Qwen / 阿里云百炼调用
LangChain 官方 Qwen 示例通常只写:
fromlangchain_qwqimportChatQwen llm=ChatQwen(model="qwen-flash")这是因为示例默认使用库内置的默认接口地址,并且要求你提前配置好DASHSCOPE_API_KEY。
但如果你使用阿里云百炼 OpenAI 兼容接口,.env里可能会有工作空间专属地址:
DASHSCOPE_BASE_URL=https://你的WorkspaceId.cn-beijing.maas.aliyuncs.com/compatible-mode/v1这种情况下,如果代码不传base_url,库可能会走默认地址,导致 API Key 和服务入口不匹配,报:
401 invalid_api_key3.langchain_qwq默认认识的环境变量
你本机源码关键位置:
D:\Users\26730\miniconda3\envs\python-stu\Lib\site-packages\langchain_qwq\base.py源码含义是:
api_key<-DASHSCOPE_API_KEY api_base<-DASHSCOPE_API_BASE也就是说,库默认认识:
DASHSCOPE_API_KEY DASHSCOPE_API_BASE不是:
DASHSCOPE_BASE_URL如果.env写成:
DASHSCOPE_API_KEY=sk-xxx DASHSCOPE_API_BASE=https://你的WorkspaceId.cn-beijing.maas.aliyuncs.com/compatible-mode/v1 DASHSCOPE_MODEL_NAME=qwen3.7-max代码可以简化为:
importosfromdotenvimportload_dotenv,find_dotenvfromlangchain_qwqimportChatQwen load_dotenv(find_dotenv(),override=True)model=ChatQwen(model=os.getenv("DASHSCOPE_MODEL_NAME"),)res=model.invoke("你是谁?")print(res.content)注意:DASHSCOPE_MODEL_NAME不是ChatQwen默认自动读取的变量,这里仍然是我们自己用os.getenv(...)读取后传进去。
如果.env写的是:
DASHSCOPE_BASE_URL=...那么需要手动传:
model=ChatQwen(model=os.getenv("DASHSCOPE_MODEL_NAME"),api_key=os.getenv("DASHSCOPE_API_KEY"),base_url=os.getenv("DASHSCOPE_BASE_URL"),)4. 推荐写法
学习阶段推荐写清楚一点:
importosfromdotenvimportload_dotenv,find_dotenvfromlangchain_qwqimportChatQwen load_dotenv(find_dotenv(),override=True)base_url=os.getenv("DASHSCOPE_BASE_URL")oros.getenv("DASHSCOPE_API_BASE")model=ChatQwen(model=os.getenv("DASHSCOPE_MODEL_NAME"),api_key=os.getenv("DASHSCOPE_API_KEY"),base_url=base_url,)res=model.invoke("你是谁?")print(res.content)如果以后确认.env统一使用DASHSCOPE_API_BASE,也可以省略base_url参数。
5. Ollama 本地模型调用
LangChain 调 Ollama:
fromlangchain_ollamaimportChatOllama llm=ChatOllama(model="deepseek-r1:7b")res=llm.invoke("你是谁?")print(res.content)这类代码默认连接本机 Ollama 服务:
http://127.0.0.1:11434所以一般不需要传base_url。
前提是:
- Ollama 服务已经启动
ollama list能看到这个模型
检查模型:
ollama list如果没有目标模型,就先拉取:
ollama pull deepseek-r1:7b或者把代码里的模型名改成ollama list中已有的模型。
6. Ollama 软件、服务和模型目录
Ollama 分三层:
LangChain / Python ↓ HTTP 请求 Ollama 服务:http://127.0.0.1:11434 ↓ 读取模型 本地模型目录,例如 D:\Users\26730\.ollama\models打开 Ollama 软件时,它通常会帮你启动后台服务。
不打开软件,也可以手动启动:
ollama serve服务启动后,另开一个 PowerShell:
ollama list7. 为什么手动ollama serve看不到 D 盘模型?
看ollama serve日志里的这一项:
OLLAMA_MODELS:C:\\Users\\26730\\.ollama\\models这说明当前手动启动的服务读取的是 C 盘默认目录,不是:
D:\Users\26730\.ollama\models临时指定 D 盘目录:
$env:OLLAMA_MODELS="D:\Users\26730\.ollama\models"ollama serve永久指定用户环境变量:
[Environment]::SetEnvironmentVariable("OLLAMA_MODELS","D:\Users\26730\.ollama\models","User")然后关闭 Ollama、关闭终端、结束残留ollama.exe,重新打开终端再启动。
启动日志里要看到:
OLLAMA_MODELS:D:\\Users\\26730\\.ollama\\models才说明服务真的在读 D 盘模型目录。
8. LangSmith 是什么?
LangSmith 是 LangChain 官方的观测和调试平台。
文档里的:
os.environ["LANGSMITH_TRACING"]="true"os.environ["LANGSMITH_API_KEY"]=getpass.getpass("Enter your LangSmith API key: ")作用是开启模型调用追踪,把 prompt、模型输出、Chain/RAG 每一步输入输出等上传到 LangSmith 后台查看。
它不是 Ollama 必需项,也不是 Qwen 必需项。学习本地 Ollama 或简单调用时可以先不配置。涉及敏感数据时,也要注意开启追踪可能上传调用内容。
9. 常见报错判断
| 报错 | 常见原因 | 排查方式 |
|---|---|---|
401 invalid_api_key | API Key 错;或 API Key 与 Base URL 不匹配 | 检查DASHSCOPE_API_KEY、DASHSCOPE_API_BASE/base_url |
model not found | Ollama 本地没有该模型 | ollama list、ollama pull 模型名 |
Ollama502 | 服务刚启动、代理/云模型异常、服务端临时异常 | 先用ollama list和/api/tags确认服务 |
| Ollama 云模型提示订阅 | 调用了:cloud模型但账号无权限 | 换本地模型或升级云服务 |
ollama list看不到模型 | 服务读错模型目录 | 看ollama serve日志里的OLLAMA_MODELS |
10. 官方文档入口
后续如果版本变了,以这些官方页面为准:
- LangChain Qwen 集成文档:https://docs.langchain.com/oss/python/integrations/chat/qwen
- LangChain Ollama 集成文档:https://docs.langchain.com/oss/python/integrations/chat/ollama
- LangSmith Observability:https://docs.langchain.com/langsmith/observability
- 阿里云百炼 OpenAI 兼容接口:https://help.aliyun.com/zh/model-studio/compatibility-of-openai-with-dashscope
- 阿里云百炼模型列表:https://help.aliyun.com/zh/model-studio/models
- 阿里云百炼错误码:https://help.aliyun.com/zh/model-studio/error-code
- Ollama Windows 文档:https://github.com/ollama/ollama/blob/main/docs/windows.md
- Ollama FAQ:https://github.com/ollama/ollama/blob/main/docs/faq.md
11. 最后记一句
云模型优先确认:
模型名 + API Key + Base URL本地 Ollama 优先确认:
ollama serve 是否启动 + ollama list 是否有模型 + OLLAMA_MODELS 是否指向正确目录