首先上来先说结论然后聊细节;

        这个坑是关于apikey的,如果你在windows的系统环境变量中设置了百炼的apikey,然后由于某些原因更换apikey重新设置就一定要重启电脑,重启电脑之后才能让修改的apikey在系统环境变量中生效。        

        细节如下:

        如果你使用java的springai来调用大模型的:你多半会在application.yml的配置文件中有类似的配置

server:
  port: 8889
  servlet:
    encoding:
      enabled: true
      force: true
      charset: utf-8
spring:
  application:
    name: ********
  ai:
    dashscope:
      api-key: ${QWENAPIKEY}
      base-url: https://dashscope.aliyuncs.com/compatible-mode/v1

        上面的  api-key: ${QWENAPIKEY} 的意思是指从系统得到环境变量中获取你设置的百炼api-key,但是如果你的apikey失效了或者更换了在环境变量中进行了重新设置,又不重启电脑的话就会,idea就会一直使用旧的apikey,这会导致授权相关的错误。

        我就被这个坑点浪费了,之前使用的时候一直正常,我担心apikey会泄露就在百炼上把apikey删除了,然后重新添加,把新的apikey更换到我windows的系统环境变量中去,但是这时噩梦就来了,由于没有重新启动电脑,我运行所有与调用百炼相关的服务接口都出现了 500服务内部错误,无法访问,尝试过重启idea编译器但是不起作用,让claude code给我写测试排查错误,他给出的的结论是授权相关的问题,我对比了我的apikey是正确的 。

        这时就很恼火了,接下来我就用明文把apikey写到配置中去,然后在配置类去主动的再注入apikey

server:
  port: 8889
  servlet:
    encoding:
      enabled: true
      force: true
      charset: utf-8
spring:
  application:
    name: ********
  ai:
    dashscope:
      api-key: sk-*********************************************
      base-url: https://dashscope.aliyuncs.com/compatible-mode/v1

然后虽然也调通了,但是就是不明白之前的服务都能正常跑通为什么现在不行呢,于是采用了重启大法重启电脑之前没有显式的将apikey卸载代码中的也可以正常运行了。

        这里就是一个教训,在设置更改环境变量的值之后尽量重新启动电脑,不然会出现各种各样的令人费解的错误,就像这次这样,之前可以运行的服务,之后就不能运行了。

更多推荐