":{"code":"","message":"Invalid Token (request id: 20260311200116777426744DRpaL7...

2026年03月11日 20:02 processing

错误信息

2026-03-11 20:01:58.420 [http-nio-0.0.0.0-8080-exec-1] WARN dev.langchain4j.internal.RetryUtils - Exception was thrown on attempt 2 of 3 dev.ai4j.openai4j.OpenAiHttpException: {"error":{"code":"","message":"Invalid Token (request id: 20260311200116777426744DRpaL785)","type":"rix_api_error"}} at dev.ai4j.openai4j.Utils.toException(Utils.java:8) at dev.ai4j.openai4j.SyncRequestExecutor.execute(SyncRequestExecutor.java:28) at dev.ai4j.openai4j.RequestExecutor.execute(RequestExecutor.java:59) at dev.langchain4j.model.openai.OpenAiChatModel.lambda$generate$1(OpenAiChatModel.java:250) at dev.langchain4j.internal.RetryUtils$RetryPolicy.withRetry(RetryUtils.java:192)

AI 解决方案

报错分析报告

1.错误翻译


原文:Invalid Token (request id: 20260311200116777426744DRpaL785)
译文:无效令牌(请求ID:20260311200116777426744DRpaL785)

2. 原因分析


  • 根本原因:调用OpenAI API时使用了无效的身份令牌(Token)。

  • 发生位置OpenAiChatModel.java:250generate方法执行中,通过SyncRequestExecutor发送HTTP请求至OpenAI接口时触发令牌验证失败。
  • 3. 解决方案


    import dev.langchain4j.model.openai.OpenAiChatModel;
    import static dev.langchain4j.model.openai.OpenAiChatModel.builder;
    
    public class OpenAiFixExample {
        public static void main(String[] args) {
            // 1. 从安全渠道获取有效API密钥(替换环境变量名或配置项)
            String validApiKey = System.getenv("OPENAI_VALID_API_KEY"); 
            if (validApiKey == null || validApiKey.isBlank()) {
                throw new IllegalStateException("未配置有效的OpenAI API密钥");
            }
    
            // 2. 用有效密钥初始化模型
            OpenAiChatModel model = builder()
                    .apiKey(validApiKey)  // 注入正确令牌
                    .modelName("gpt-3.5-turbo")  // 按需指定模型
                    .build();
    
            // 3. 正常调用(示例)
            // String response = model.generate("Hello");
        }
    }
    

    4.️ 预防措施


  • 最佳实践1:用环境变量/配置中心(如Spring Cloud Config、Dotenv)管理API密钥,禁止硬编码。

  • 最佳实践2:调用前用轻量请求(如models/list)验证令牌有效性;推荐用curl或Postman预测试。

  • 工具推荐:使用[dotenv-java](https://github.com/cdimascio/dotenv-java)加载本地配置,或用IDE的“Environment Variables”面板管理密钥。