Repository navigation
Expand file tree
/
Copy pathResponsesInputFileExample.java
More file actions
49 lines (42 loc) · 2.09 KB
/
Copy pathResponsesInputFileExample.java
File metadata and controls
49 lines (42 loc) · 2.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package com.openai.example;
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.ChatModel;
import com.openai.models.responses.ResponseCreateParams;
import com.openai.models.responses.ResponseInputFile;
import com.openai.models.responses.ResponseInputItem;
import java.io.IOException;
import java.util.Base64;
import java.util.List;
public final class ResponsesInputFileExample {
private ResponsesInputFileExample() {}
public static void main(String[] args) throws IOException {
// Configures using one of:
// - The `OPENAI_API_KEY` environment variable
// - The `OPENAI_BASE_URL` and `AZURE_OPENAI_KEY` environment variables
OpenAIClient client = OpenAIOkHttpClient.fromEnv();
ClassLoader classloader = Thread.currentThread().getContextClassLoader();
String filename = "pdflatex-image.pdf";
byte[] pdfBytes = classloader.getResource(filename).openStream().readAllBytes();
String pdfBase64Url =
"data:application/pdf;base64," + Base64.getEncoder().encodeToString(pdfBytes);
ResponseInputFile inputFile = ResponseInputFile.builder()
.filename(filename)
.fileData(pdfBase64Url)
.build();
ResponseInputItem messageInputItem = ResponseInputItem.ofMessage(ResponseInputItem.Message.builder()
.role(ResponseInputItem.Message.Role.USER)
.addInputTextContent("Describe this file.")
.addContent(inputFile)
.build());
ResponseCreateParams createParams = ResponseCreateParams.builder()
.inputOfResponse(List.of(messageInputItem))
.model(ChatModel.GPT_4O)
.build();
client.responses().create(createParams).output().stream()
.flatMap(item -> item.message().stream())
.flatMap(message -> message.content().stream())
.flatMap(content -> content.outputText().stream())
.forEach(outputText -> System.out.println(outputText.text()));
}
}