OpenAI ChatGPT (GPT-3.5) API 错误 400:向 OpenAI API 发送大文本数据时遇到“400 Bad Request”错误

问题描述 投票:0回答:1

在尝试将大型文本数据发送到 OpenAI API 进行处理时,我遇到了“400 Bad Request”问题。这是我的项目的概述:

我有一个与 OpenAI API 集成的项目。该功能允许用户发送数据和问题,系统根据提供的数据和问题检索响应。但是,当发送超过大约 20000 个字符的文本数据时,我始终收到“400 Bad Request”错误。奇怪的是,20000 个字符范围内的较小文本数据工作得很好

// Method to send data to OpenAI API
public Result sendData() {
    ChatGptRequest chatGptRequest = new ChatGptRequest();
    List<Message> messages = new ArrayList<>();

    Message userMessage = new Message();
    userMessage.setRole("user");
    userMessage.setContent("What is the start and end date?");
    messages.add(userMessage);

    Message systemMessage = new Message();
    systemMessage.setRole("system");
    systemMessage.setContent(text); // 'text' contains the large text data
    messages.add(systemMessage);

    chatGptRequest.setMessages(messages);
    String response = ChatGptClient.chatGPT(chatGptRequest);
    // Handle response as needed
    return response;
}

// Method to interact with OpenAI API
public static String chatGPT(ChatGptRequest chatGptRequest) {
    String url = "https://api.openai.com/v1/chat/completions";
    String apiKey = "my_api_key";
    String model = "gpt-3.5-turbo";

    try {
        URL openAIUrl = new URL(url);
        HttpURLConnection connection = (HttpURLConnection) openAIUrl.openConnection();
        connection.setRequestMethod("POST");
        connection.setRequestProperty("Authorization", "Bearer " + apiKey);
        connection.setRequestProperty("Content-Type", "application/json");

        chatGptRequest.setModel(model);

        Gson gson = new Gson();
        String body = gson.toJson(chatGptRequest);

        connection.setDoOutput(true);
        OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());
        writer.write(body);
        writer.flush();
        writer.close();

        BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        String line;
        StringBuffer response = new StringBuffer();

        while ((line = br.readLine()) != null) {
            response.append(line);
        }
        br.close();

        return response.toString();
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}

您能为这个问题提出任何解决方案吗?任何建议将不胜感激。先谢谢你了

java openai-api chatgpt-api gpt-3
1个回答
0
投票

我刚刚对您正在使用的 gpt-3.5-turbo 进行了测试调用。响应数据(包括实际使用的模型的名称)将其指定为 gpt-3.5-turbo-0125。

OpenAI 在 gpt-3.5-turbo-0125 上为我们提供了这个(https://openai.com/pricing#language-models):

gpt-3.5-turbo-0125是该家族的旗舰型号,支持 16K 上下文窗口并针对对话框进行了优化。

所以你只需要使用不同的模型。例如,GPT-4 Turbo 的上下文窗口为 128K。

© www.soinside.com 2019 - 2024. All rights reserved.