配置获取并配置OpenAI API key
一、获取OpenAI API key
- 在openai官网注册账号并登录,选择
API
,点击右上角头像,选择View API keys
。 - 点击
Create new secret key
按钮创建OpenAI API key,将创建好的OpenAI API key复制并以OPENAI_API_KEY="sk-..."
形式保存到.env
文件中,将.env
文件保存在项目根目录下。
二、读取并配置OpenAI API key
import os
import openai
from dotenv import load_dotenv, find_dotenv
# find_dotenv()寻找并定位.env文件的路径
# load_dotenv()读取该.env文件,并将其中的环境变量加载到当前的运行环境中
_ = load_dotenv(find_dotenv())
# 获取环境变量 OPENAI_API_KEY
openai.api_key = os.environ['OPENAI_API_KEY']
为方便后续代码使用,可将上述代码封装成函数:
import os
from dotenv import load_dotenv, find_dotenv
def get_openai_key():
_ = load_dotenv(find_dotenv())
return os.environ['OPENAI_API_KEY']
openai.api_key = get_openai_key()
三、示例
假设项目目录结构如下:
project/
├── .env
├── config.py
└── src/
└── main.py
.env
OPENAI_API_KEY="sk-..."
config.py
import os
from dotenv import load_dotenv, find_dotenv
import openai
def get_openai_key():
# 自动查找 .env 文件并加载
load_dotenv(find_dotenv())
return os.getenv('OPENAI_API_KEY')
# 设置 OpenAI 的 API 密钥
openai.api_key = get_openai_key()
if __name__ == "__main__":
print(openai.api_key)
四、运行结果
运行config.py
,若成功加载API密钥,将打印出密钥值(此处省略具体密钥)。
五、解释
find_dotenv()
的查找机制
- 起始目录:从当前工作目录开始查找
.env
文件。 - 向上遍历父目录:如果在当前目录未找到
.env
文件,会逐级向上遍历父目录,直到找到.env
文件或达到文件系统的根目录为止。 - 返回第一个找到的
.env
文件路径:一旦找到.env
文件,函数立即返回该文件的完整路径,不再继续向上查找;如果未找到,返回空字符串。
find_dotenv()
的参数配置
filename
:默认值为.env
,可指定其他文件名。raise_error_if_not_found
:布尔值,默认False
。若设置为True
,未找到.env
文件时会引发异常。encoding
:指定文件的编码方式,默认使用系统默认编码。
load_dotenv()
的作用
- 查找
.env
文件:使用find_dotenv()
找到.env
文件的路径。 - 加载环境变量:将
.env
文件中的环境变量加载到当前环境变量中,使得os.getenv('OPENAI_API_KEY')
能够获取到相应的值。
注意事项
- 环境变量的覆盖:默认情况下,
load_dotenv()
不会覆盖已存在的环境变量。若希望.env
文件中的变量覆盖系统中已有的变量,可使用override=True
参数。 - 多重
.env
文件:若多个目录中存在.env
文件,find_dotenv()
只会加载第一个找到的文件。确保希望加载的.env
文件位于最优先查找的位置。