":{"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. 解决方案


    java
    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”面板管理密钥。