今天ChatGPT交流群中一位用户在部署GPT学术优化 (GPT Academic)时报错API_KEY不满足任何一种已知的密钥格式,网页也提示缺少api_key,输入api key依然报错,本文就分享下这个问题的原因和解决方法。
一、问题描述
GPT学术优化版本:3.8.3
OpenAI API key是9月刚新建的,格式如:sk-proj-z_ZotxL9lg3ve0o5VhU0DOJDoJ************
在config.py里配置了API_KEY
,运行报错:
[API_KEY] 本项目现已支持OpenAI和Azure的api-key。也支持同时填写多个api-key,如API_KEY=”openai-key1,openai-key2,azure-key3″
[API_KEY] 您既可以在config.py中修改api-key(s),也可以在问题输入区输入临时的api-key(s),然后回车键提交后即可生效。
[API_KEY] 您的 API_KEY 不满足任何一种已知的密钥格式,请在config文件中修改API密钥之后再运行。
在网页使用时报错:
缺少api key。
- 临时解决方案:直接在输入区键入api key,然后回车
- 长效解决方案:在confg.py中配置。
输入了api key,还是报错:
GPT学术优化的配置教程可以参考:
二、问题原因
造成这个问题的原因是当前版本(包括最新版本)的GPT学术优化的API Key正则代码有点问题,无法匹配最新的OpenAI API key,例如这位用户的API key里有一个下划线,就无法被匹配到,所以报错无法识别,缺少api key。
这是GPT学术优化正则匹配API Key的相关代码:
def is_openai_api_key(key): CUSTOM_API_KEY_PATTERN = get_conf('CUSTOM_API_KEY_PATTERN') if len(CUSTOM_API_KEY_PATTERN) != 0: API_MATCH_ORIGINAL = re.match(CUSTOM_API_KEY_PATTERN, key) else: API_MATCH_ORIGINAL = re.match(r"sk-[a-zA-Z0-9]{48}$|sk-proj-[a-zA-Z0-9]{48}$|sess-[a-zA-Z0-9]{40}$", key) return bool(API_MATCH_ORIGINAL)
三、解决方法
从正则代码里也可以看到,如果配置里有CUSTOM_API_KEY_PATTERN的话是可以优先考虑的。因此这个问题的解决方法就是在config.py里找到CUSTOM_API_KEY_PATTERN参数,自定义一个正则表达式,例如最简单的只匹配前面的:
CUSTOM_API_KEY_PATTERN='^sk-proj-.+$'
之后再运行就没问题了。
最后,如果你是GPT学术的重度用户,强烈推荐你使用这个中转API,同样的效果,价格便宜一半都不止:便携AI聚合API