在尝试将大型文本数据发送到 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);
}
}
您能为这个问题提出任何解决方案吗?任何建议将不胜感激。先谢谢你了
我刚刚对您正在使用的 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。