解决Did not find dashscope_api_key问题——jupyter设置环境变量

该文章已生成可运行项目,

jupyter中使用通义千文+langchain 报错

Value error, Did not find dashscope_api_key, please add an environment variable `DASHSCOPE_API_KEY` which contains it, or pass `dashscope_api_key` as a named parameter.

我本来以为这样就是已经加上了:

#导入相关包
import os
from dotenv import find_dotenv, load_dotenv
DASHSCOPE_API_KEY="sk-XXXXXXXX"
from langchain_community.llms import Tongyi
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate

其实不是。

需要在Jupyter Notebook的cell中,使用Python的os模块来设置环境变量。
在这里插入图片描述
设置好之后就可以调用了。

本文章已经生成可运行项目
<think>我们遇到的问题是在使用 `Tongyi` 模型时出现了 `ValidationError`,提示我们没有找到 `dashscope_api_key`。解决这个错误的关键是确保 DashScopeAPI 密钥被正确设置。根据之前的讨论,我们有几种方法可以解决: ### ✅ 解决方案 #### 方法1:通过环境变量设置(推荐) 将 DashScopeAPI 密钥设置环境变量 `DASHSCOPE_API_KEY`。在代码中,我们可以这样设置: ```python import os os.environ["DASHSCOPE_API_KEY"] = "你的DashScope API密钥" # 替换为你的真实密钥 # 注意:设置环境变量后,需要确保在创建Tongyi实例之前已经设置好 ``` #### 方法2:在创建Tongyi实例时直接传递API密钥 在初始化 `Tongyi` 模型时,通过参数 `dashscope_api_key` 直接传递密钥: ```python from langchain_community.llms import Tongyi llm = Tongyi( model_name="qwen-plus", dashscope_api_key="你的DashScope API密钥", # 直接传递密钥 temperature=0.7 # 可选参数 ) ``` #### 方法3:使用DashScope SDK设置全局API密钥 我们也可以通过DashScopePython SDK来设置全局API密钥,这样所有使用DashScope的组件都会使用这个密钥: ```python import dashscope dashscope.api_key = "你的DashScope API密钥" # 然后创建Tongyi实例,此时不再需要单独传递密钥 llm = Tongyi(model_name="qwen-plus") ``` ### 在你的代码中应用 根据你的代码,你是在调用 `evaluate` 函数时传入了 `llm=Tongyi(model_name="qwen-plus")`。因此,我们可以采用方法2,即在创建 `Tongyi` 实例时传递 `dashscope_api_key` 参数: ```python from langchain_community.llms import Tongyi # 修改你的代码,在创建Tongyi实例时传入dashscope_api_key score = evaluate( dataset=dataset, metrics=[answer_correctness], llm=Tongyi(model_name="qwen-plus", dashscope_api_key="你的DashScope API密钥"), # 在这里传入密钥 embeddings=DashScopeEmbeddings(model="text-embedding-v3") ) ``` 或者,你也可以在代码开头设置环境变量(方法1): ```python import os os.environ["DASHSCOPE_API_KEY"] = "你的DashScope API密钥" # 然后继续你的代码 score = evaluate( dataset=dataset, metrics=[answer_correctness], llm=Tongyi(model_name="qwen-plus"), # 此时会从环境变量获取 embeddings=DashScopeEmbeddings(model="text-embedding-v3") ) ``` ### 注意事项 1. **密钥安全**:不要将密钥直接写在代码中并上传到公开仓库。可以使用环境变量管理,或者在部署时从安全存储中获取。 2. **密钥有效性**:确保你的DashScope API密钥是有效的,并且有足够的额度。 3. **依赖版本**:确保你使用的 `langchain-community` 和 `dashscope` 库是最新的,以避免已知问题。 ### 常见问题排查 - 如果设置环境变量但仍然报错,尝试重启Python内核或终端,因为环境变量在进程启动时加载。 - 确保环境变量名称是 `DASHSCOPE_API_KEY`(注意拼写)。 ### 参考资料 - [LangChain Tongyi 文档](https://python.langchain.com/docs/integrations/llms/tongyi) [^1] - [DashScope Python SDK 文档](https://help.aliyun.com/zh/dashscope/developer-reference/install-dashscope-sdk) [^2] §§相关问题§§ 1. 如何在Docker容器中安全地传递DashScope API密钥? 2. 使用Tongyi模型时如何设置请求超时和重试机制? 3. 如何在使用LangChain时同时管理多个不同服务的API密钥(如DashScope和OpenAI)? </think>根据您遇到的 `ValidationError` 错误,以下是完整解决方案及实施步骤: --- ### 🔧 错误原因分析 `Tongyi` 模型在初始化时需要验证 DashScope API 密钥,验证优先级为: 1. 构造函数参数 `dashscope_api_key`(最高优先级) 2. 环境变量 `DASHSCOPE_API_KEY` 3. DashScope SDK 全局设置(最低优先级) 当这三个位置均未检测到有效密钥时,就会抛出此验证错误[^1]。 --- ### ✅ 三种解决方案(任选其一) #### 方法一:构造函数显式传递密钥(推荐) ```python from langchain_community.llms import Tongyi # 解决方案:添加 dashscope_api_key 参数 llm = Tongyi( model_name="qwen-plus", dashscope_api_key="sk-******" # 替换为您的真实密钥 ) # 修改您的评估代码 score = evaluate( dataset=dataset, metrics=[answer_correctness], llm=llm, # 使用配置好的实例 embeddings=DashScopeEmbeddings(model="text-embedding-v3") ) ``` > **优势**:密钥作用域明确,避免全局影响[^2] #### 方法二:设置环境变量(需重启内核) ```python import os os.environ["DASHSCOPE_API_KEY"] = "sk-******" # 在代码开头设置 # 原始代码无需修改 score = evaluate( dataset=dataset, metrics=[answer_correctness], llm=Tongyi(model_name="qwen-plus"), # 自动读取环境变量 embeddings=DashScopeEmbeddings(model="text-embedding-v3") ) ``` > **注意**:在 Jupyter 中需重启内核才能生效[^3] #### 方法三:全局 SDK 配置 ```python import dashscope dashscope.api_key = "sk-****__**" # SDK 全局设置 # 原始代码无需修改 score = evaluate( dataset=dataset, metrics=[answer_correctness], llm=Tongyi(model_name="qwen-plus"), embeddings=DashScopeEmbeddings(model="text-embedding-v3") ) ``` --- ### 🛠️ 密钥验证与调试技巧 1. **密钥有效性检查**: ```python import dashscope dashscope.api_key = "sk-******" print(dashscope.util.get_token_scope()) # 成功返回scope说明密钥有效 ``` 2. **环境变量验证**: ```python import os print("DASHSCOPE_API_KEY exists:", os.getenv("DASHSCOPE_API_KEY") is not None) ``` 3. **错误处理增强**: ```python llm = Tongyi( model_name="qwen-plus", dashscope_api_key="sk-******", max_retries=3, # 增加重试机制 request_timeout=30 # 设置超时 ) ``` --- ### 📌 最佳实践 1. **密钥管理安全规范**: - 使用 `python-dotenv` 从 `.env` 文件加载密钥 ```python from dotenv import load_dotenv load_dotenv() # 加载.env文件中的环境变量 ``` 2. **多环境配置模板**(创建 `.env` 文件): ```env # .env 文件 DASHSCOPE_API_KEY=sk-****** TAVILY_API_KEY=tvly-****** # 其他服务密钥 ``` 3. **版本兼容性检查**: ```bash pip install --upgrade langchain-community dashscope # 要求:dashscope>=1.14,langchain-community>=0.0.29 ``` --- ### 根本错误触发逻辑 $$ \text{密钥检测} = \begin{cases} \text{构造函数参数} & \rightarrow \text{成功} \\ \text{环境变量} & \rightarrow \text{失败} \Rightarrow \text{报错} \\ \text{SDK全局} & \rightarrow \text{未启用} \end{cases} $$ 当系统沿此决策树检测失败时即触发验证错误[^1][^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值