【问题标题】:"Malformed API key in .env" when setting up OpenAI API Access设置 OpenAI API 访问时出现“.env 中格式错误的 API 密钥”
【发布时间】:2023-01-03 16:53:22
【问题描述】:

我正在尝试使用 OpenAI 的 API 来处理他们拥有的一些示例。但是,当我加载我的 API 密钥时,出现错误。我创建了一个“.env”文件并做了:

OPENAI_API_KEY=XYZ-123

然后在 Python 中我有以下内容:

import os
import openai
openai.api_key_path = ".env"

openai.api_key = os.getenv("OPENAI_API_KEY")
print(openai.Model.list())

每次它告诉我我的 API 密钥格式错误。我也可以删除第 3 行,我得到了同样的错误,它是格式错误的,但我将它直接复制到网站上的 .env 文件中。另外,如果我直接在 Python 中设置密钥,它似乎工作得很好:

openai.api_key = "XYZ-123"

但为了安全起见,我宁愿在我的 Python 代码中看不到密钥。关于如何解决这个问题的任何建议?

【问题讨论】:

  • 1)相关文件? 2)"./.env"? 3) 将 env 值用引号引起来?
  • 文档在这里:beta.openai.com/docs/api-reference/authentication 可悲的是,这些建议都没有奏效。
  • 当我在那个页面上搜索 api_key_path 时,什么也没有出现。也许链接到相关的源代码?
  • 也许我们可以只依赖于使用 os.getenv 设置 api_key 而不是 api_key_path (删除它),正如文档所建议的那样。 1)您是否通过打印或其他方式验证它正在正确读取环境变量? 2) 你试过先设置openai.organization = "YOUR_ORG_ID"再设置openai.api_key吗? 3)你能分享更多关于错误本身的信息吗?

标签: python python-os openai


【解决方案1】:

创建一个 .properties 文档并在该文档中仅添加您的 API 密钥,不带任何引号或任何内容。 API 密钥应该是文档中的唯一文本。将此文档的路径传递给 openai.api_key_path 的值,它应该可以工作。

请记住,该值需要来自根目录的路径。如果在根目录下创建,只需传入“.properties”即可。例如,如果您将它放在名为 backend 的子目录中,则传入“backend/.properties”。

希望这可以帮助。

【讨论】:

    【解决方案2】:

    为此,我建议使用dotenv

    pip install python-dotenv
    

    使用示例:

    import dotenv
    
    config = dotenv.dotenv_values(".env")
    openai.api_key = config['OPENAI_API_KEY']
    

    它非常灵活,只要在 .env 文件中存储秘密出现,它就可以很好地工作。不要忘记将它们添加到.gitignore 或使用.env.local(默认忽略)!

    【讨论】:

      猜你喜欢
      • 2022-08-16
      • 1970-01-01
      • 1970-01-01
      • 2018-10-21
      • 1970-01-01
      • 1970-01-01
      • 2012-05-12
      • 1970-01-01
      • 2018-12-01
      相关资源
      最近更新 更多