读取 YAML 配置文件

示例代码:

os.environ['OPENAI_API_KEY'] = os.getenv("OPENAI_API_KEY")

with open(here("configs/tools_config.yml")) as cfg:
    app_config = yaml.load(cfg, Loader=yaml.FullLoader)

# Uncomment the following configs to run for swiss airline policy document
chunk_size = app_config["swiss_airline_policy_rag"]["chunk_size"]
chunk_overlap = app_config["swiss_airline_policy_rag"]["chunk_overlap"]
embedding_model = app_config["swiss_airline_policy_rag"]["embedding_model"]
vectordb_dir = app_config["swiss_airline_policy_rag"]["vectordb"]
collection_name = app_config["swiss_airline_policy_rag"]["collection_name"]
doc_dir = app_config["swiss_airline_policy_rag"]["unstructured_docs"]

我将详细解释每行代码的作用


1. load_dotenv()

  • 作用
    调用 load_dotenv() 函数会从项目根目录下的 .env 文件中读取环境变量,并将这些变量加载到系统环境变量(os.environ)中。
  • 说人话
    就像把一个装有配置信息(比如 API 密钥)的笔记本打开,把里面写的内容一行一行地放进程序的“工具箱”,让后面的代码可以方便地取出来使用。
  • 举例说明
    假设你在项目目录下有个文件 .env,内容是:
    OPENAI_API_KEY=12345abcde
    DATABASE_URL=postgres://user:pass@localhost:5432/mydb
    
    当你运行 load_dotenv() 后,程序就能从系统环境变量中获取到 OPENAI_API_KEYDATABASE_URL 的值。

2. os.environ['OPENAI_API_KEY'] = os.getenv("OPENAI_API_KEY")

  • 作用
    这行代码从系统环境变量中获取名为 "OPENAI_API_KEY" 的值(用 os.getenv("OPENAI_API_KEY")),然后把它赋值给 os.environ['OPENAI_API_KEY']
  • 说人话
    其实就是确保环境变量里有一个叫做 OPENAI_API_KEY 的项,并且它的值就是你从 .env 文件中加载到的那个密钥。如果之前加载的时候出了问题,这样重新赋值一次也不会错。
  • 举例说明
    如果 .env 文件中有 OPENAI_API_KEY=12345abcde,那么 os.getenv("OPENAI_API_KEY") 就会返回字符串 "12345abcde"。接着,os.environ['OPENAI_API_KEY'] 也被设置成 "12345abcde"。这样,无论后续哪个部分需要这个 API 密钥,都可以从 os.environ['OPENAI_API_KEY'] 中取到正确的值。

3. 读取 YAML 配置文件

with open(here("configs/tools_config.yml")) as cfg:
    app_config = yaml.load(cfg, Loader=yaml.FullLoader)
  • 作用
    这段代码打开一个名为 tools_config.yml 的 YAML 配置文件,并使用 PyYAML 库把文件内容解析为 Python 对象,存入变量 app_config 中。
  • 说人话
    就像你把一个“配置说明书”(这里是 YAML 格式的文件)打开,然后把里面的内容(各种设置和参数)读进来,转换成 Python 程序可以理解和使用的数据结构(比如字典)。
  • 详细步骤
    1. 定位文件
      使用 here("configs/tools_config.yml") 获取配置文件的完整路径。通常 here() 是一个自定义函数,用来返回相对于项目根目录的路径。
    2. 打开文件
      open(...) 以读取模式打开这个 YAML 文件,并将文件对象赋值给变量 cfg
    3. 解析 YAML
      yaml.load(cfg, Loader=yaml.FullLoader) 读取并解析文件内容,将 YAML 格式的数据转换成 Python 数据(通常是字典或列表)。
  • 举例说明
    假设 configs/tools_config.yml 文件内容如下:
    tool1:
      enabled: true
      name: "ExampleTool"
    tool2:
      enabled: false
      name: "AnotherTool"
    
    执行上述代码后,变量 app_config 将会是一个字典:
    {
        "tool1": {"enabled": True, "name": "ExampleTool"},
        "tool2": {"enabled": False, "name": "AnotherTool"}
    }
    
    这样,程序就可以根据这个配置判断是否启用某个工具、获取工具名称或其他相关设置。

总结

  1. 加载环境变量
    load_dotenv().env 文件里的密钥等配置信息加载进程序环境。

  2. 确保环境变量正确
    OPENAI_API_KEY 的值从环境变量中取出来,再次设置到 os.environ 中,确保后续代码可以正确访问到这个 API 密钥。

  3. 读取配置文件
    打开并读取一个 YAML 配置文件,把里面的配置信息转换成 Python 数据结构(例如字典),存储在变量 app_config 中,供程序后续使用。

这种写法常见于需要使用外部配置和密钥的项目中,能够帮助程序灵活地加载不同的配置信息而无需硬编码到代码里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值