本地Weaviate连接添加OpenAI密钥触发KeyError问题求助
本地Weaviate连接添加OpenAI密钥触发KeyError问题求助
看起来你这是踩了环境变量使用的小坑啦,我来帮你拆解问题和解决办法:
首先,你看到的KeyError: 'sk-...'是核心问题——os.environ["xxx"]是用来读取系统环境变量名的,你直接把密钥开头的sk-...填进去,系统里根本没有叫这个名字的环境变量,自然会报错。
正确的两种解决方式:
方式一:用环境变量(推荐,安全不暴露密钥)
先在Ubuntu系统里设置环境变量:
- 临时生效(仅当前终端窗口):在终端里输入这条命令,把
sk-你的真实密钥换成你自己的OpenAI密钥:export OPENAI_API_KEY="sk-你的真实密钥" - 永久生效(重启终端也能用):编辑
~/.bashrc文件(如果你用zsh就编辑~/.zshrc),在末尾添加一行上面的export命令,保存后执行source ~/.bashrc让设置立刻生效。
- 临时生效(仅当前终端窗口):在终端里输入这条命令,把
修改Python代码读取环境变量:
import weaviate.classes as wvc import os client = weaviate.connect_to_local( headers={"X-OpenAI-Api-Key": os.environ["OPENAI_API_KEY"]} )
方式二:直接在代码里填密钥(仅测试用,不推荐)
如果只是临时测试不想折腾环境变量,可以直接把密钥写到代码里,但注意不要把这个代码上传到公共仓库:
import weaviate.classes as wvc client = weaviate.connect_to_local( headers={"X-OpenAI-Api-Key": "sk-你的真实密钥"} )
额外排查点:
- 确认Weaviate容器是否正常运行,并且开启了
text2vec-openai模块——如果docker-compose.yml里没配置这个模块,即使密钥对了后续也会有功能报错,你可以检查下compose文件里的ENABLE_MODULES参数有没有包含这个模块。 - 尽量保持Weaviate服务端和Python客户端版本匹配,最新的v4客户端用
weaviate.classes是正确的,如果你之前试v3的旧语法肯定会出错,建议以官方最新文档为准。
备注:内容来源于stack exchange,提问作者Jonny
相关产品推荐
相关产品推荐

