当前位置: 首页 > news >正文

LangChain 调用 Qwen 与 Ollama 的环境变量笔记

技术、模型名称、SDK 参数和云厂商入口都会更新。本文记录的是本次排查得到的理解与当前写法,后续一定以官方文档为准。

1. 先区分三类配置

调用大模型时,经常会混在一起的其实是三层东西:

层级作用示例
模型名称指定调用哪个模型qwen3.7-maxdeepseek-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_key

3.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

前提是:

  1. Ollama 服务已经启动
  2. 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 list

7. 为什么手动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_keyAPI Key 错;或 API Key 与 Base URL 不匹配检查DASHSCOPE_API_KEYDASHSCOPE_API_BASE/base_url
model not foundOllama 本地没有该模型ollama listollama 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 是否指向正确目录
http://www.jsqmd.com/news/1105854/

相关文章:

  • 从0到1:企业级AI项目迭代日记 Vol.58|一个工单解决的事,不值得等一个发版周期
  • JWT与Session+Cookie认证方案选型实战指南
  • 等保测评核心:高危漏洞、高危端口与弱口令的实战防护指南
  • 编程学习工程化:让服务解释编译错误而不是代写答案
  • 无法使用dbeaver、navicat连接opengauss
  • 华为HCCDA-AI认证题库解析与AI开发实战指南
  • 若依(RuoYi)管理系统取消登录验证完整指南
  • 【单片机毕业设计】基于 STM32 的红外测温报警阈值控制系统设计,基于 GY906 的便携式多点温度采集监测装置开发(014701)
  • 抖音下载器终极指南:5分钟掌握免费批量下载技巧
  • PCF8591与PIC18F2682的I2C通信与混合信号处理实践
  • 模型评测体系:平均分高不代表线上好用
  • KMS_VL_ALL_AIO:5分钟完成Windows和Office永久激活的终极指南
  • 第7篇:数据主权架构的TCO模型:如何向CFO证明“数据不动”更省钱?
  • 工程化工作流 系统设计:工具调用要先定义权限和状态
  • 自动化查询优化评测:平均耗时下降不代表可以上线
  • 第2篇:从“数据集中治理”到“数据原位治理”:DISC架构的治理哲学
  • Python 科学计算仿真系统:三层递进式性能优化实战 NVIDIA GTX 1050 Ti (4GB) + Intel Core i7 (12 逻辑核)
  • 多源像素时序融合渲染,增量网格迭代空间实景
  • Linux 内核调优:不要把所有性能问题都甩给参数
  • Moneta亿汇:从公开信息出发,分析产品理解成本与客户支持
  • QKeyMapper:基于Windows输入拦截与虚拟设备模拟的跨平台输入重映射架构解析
  • 小批量定制非标双叠自锁垫圈,会拖延项目交付吗?
  • 以单目时序张量求解像素纵深,以坐标变换矩阵完成二维升维,以隐式曲面拟合耦合自研渲染管线,构建像素转三维空间完整可复算数学闭环。
  • AI账号管理与数据备份的实战解决方案
  • 系统部署性能调优:延迟、吞吐和显存不能只选一个
  • 云原生工程化部署:GPU 资源别被调度系统浪费掉
  • 文本处理系统评测方法:准确率之外还要看哪些指标
  • Serverless 自动发布:冷启动和可观测性要提前设计
  • 苹果涨价、韩股回调:AI 时代,科技股正在分裂定价
  • 自动化运维中的 工程化:告警降噪要先理解故障拓扑