功能和问题
- 功能描述:读取环境变量
-
问题描述:在Python中,我们可以使用
os模块来读取环境变量。但是,当环境变量很多时,手动一个一个读取会比较麻烦。 - 问题描述:使用dotenv库可以更方便地读取环境变量。
代码片段展示
# .env
# 设置环境变量到配置文件里
BAILIAN_APPKEY="sk-7ba735b69340xxxxxxxx"
BAILIAN_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
MODEL_NAME_DEEPSEEK="deepseek-v3.2"
# config.py
from dotenv import load_dotenv
load_dotenv()
import os
# 验证环节变量
def _get_env(key: str, default: any = None, required: bool = False):
"""
读取默认的环节变量
如果没有环境变量也没有默认值则报错
:param key:环境变量名
:param default:默认值
:param required:是否必须
:return:
"""
value = os.getenv(key, default)
if required and not value:
raise ValueError(f"{key} 缺少值")
return value
global_config = {
"BAILIAN_APPKEY": _get_env("BAILIAN_APPKEY", required= True),
"BAILIAN_BASE_URL": _get_env("BAILIAN_BASE_URL", required= True),
"MODEL_NAME_DEEPSEEK": _get_env("MODEL_NAME_DEEPSEEK", required= True),
}
# llm.py
from langchain_openai import ChatOpenAI
from config import global_config
llm = ChatOpenAI(
model_name=global_config["MODEL_NAME_DEEPSEEK"],
api_key=global_config["BAILIAN_APPKEY"],
base_url=global_config["BAILIAN_BASE_URL"]
)
result = llm.invoke("hello")
print(result.content)