You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OpenAI API遇Token超限错误的解决方案咨询

问题与解决方案

问题概述

尝试通过OpenAI API读取CSV文件数据并回答问题时触发Token超限错误,已测试GPT-3.5 Turbo及所有GPT-4系列模型,设置MaxTokens为2500,通过Swagger调试接口,需调整Prompt或采用Token缩减方案解决。

相关代码

[Route("AskQuestionCsv")]
public async Task<IActionResult> AskQuestionCsv([FromBody] string question)
{
    if (string.IsNullOrWhiteSpace(extractedCsvText))
    {
        return BadRequest(new { Message = "No CSV content available. Please upload a CSV file first." });
    }

    if (string.IsNullOrWhiteSpace(question))
    {
        return BadRequest(new { Message = "Question cannot be empty." });
    }

    try
    {
        var openai = new OpenAIAPI("API_KEY");
        var chatRequest = new ChatRequest
        {
            Model = "gpt-4", 
            Temperature = 0.7,
            MaxTokens = 25000,
            Messages = new List<ChatMessage>
            {
                new ChatMessage
                {
                    Role = ChatMessageRole.System,
                    Content = "You are a helpful assistant."
                },
                new ChatMessage
                {
                    Role = ChatMessageRole.User,
                    Content = $"Based on the following text from the CSV file, answer the question.\n\nCSV Text:\n{extractedCsvText}\n\nQuestion: {question}"
                }
            }
        };

        var chatResponse = await openai.Chat.CreateChatCompletionAsync(chatRequest);
        var answer = chatResponse.Choices.FirstOrDefault()?.Message.Content.Trim();

        return Ok(new { Question = question, Answer = answer });
    }
    catch (Exception ex)
    {
        return StatusCode(500, new { Message = "ERROR: " + ex.Message }
    }
}

错误信息

调用chat/completions时出错,HTTP状态码:TooManyRequests。响应内容:
{
"error": {
"message": "针对组织org-uedxqeR1FzNcdHx3MOuawI9d的gpt-4模型,请求超出每分钟Token(TPM)限制:限制为10000,请求为6668686。必须减少输入或输出Token才能成功运行。",
"type": "tokens",
"param": null,
"code": "rate_limit_exceeded"
}
}

解决方案

1. 缩减输入Token(核心解决方向)

  • CSV数据过滤:仅保留与当前问题相关的列和行,比如问题涉及销售数据则剔除无关的员工信息列,或只提取最近N条有效数据,避免传入全量CSV内容。
  • 数据预聚合:对CSV中的数值型字段提前做统计(求和、平均值、极值等),将原始明细数据转换为统计结果后再传入Prompt,大幅减少Token占用。
  • Token计量与截断:使用tiktoken工具计算CSV内容的Token数量,若超出模型上下文窗口,对无关内容进行截断,或生成CSV内容的摘要后再传入。

2. 优化Prompt结构

  • 精简系统提示词:将泛化的"You are a helpful assistant."替换为精准指令,比如"你是CSV数据分析助手,仅基于提供的CSV数据回答问题,不输出无关内容",减少冗余Token。
  • 拆分提问流程:如果问题复杂,分多轮请求:先让模型解析CSV结构,再逐步提出细分问题,避免一次性传入全量数据。
  • 减少冗余描述:用户Prompt中"Based on the following text from the CSV file, answer the question."可简化为"基于以下CSV数据回答问题:",降低Token消耗。

3. 修正参数与模型选择

  • 调整MaxTokens值:代码中设置的MaxTokens = 25000与描述的2500不符,需确认实际配置。过高的MaxTokens会增加输出Token占用,建议根据回答长度需求设置合理值(如500-1000)。
  • 选用大上下文模型:如果组织配额允许,使用GPT-4 Turbo(128k上下文窗口),可容纳更多CSV数据,但需注意对应TPM限制更高。

4. 配额与代码优化

  • 添加重试逻辑:在代码中捕获rate_limit_exceeded错误,实现指数退避重试机制,避免频繁请求触发配额限制。
  • 检查组织配额:当前单次请求Token数(6668686)远超10000的TPM限制,需优先通过输入缩减降低单次请求的Token总量。

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 21:14:58