Skip to content
This repository was archived by the owner on Feb 11, 2025. It is now read-only.

Commit 925669f

Browse files
Allow additional headers in the OpenAiClient
1 parent 2698c79 commit 925669f

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

src/main/java/dev/ai4j/openai4j/DefaultOpenAiClient.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import static dev.ai4j.openai4j.Json.GSON;
44

5+
import java.util.HashMap;
6+
import java.util.Map;
57
import org.slf4j.Logger;
68
import org.slf4j.LoggerFactory;
79

@@ -44,6 +46,8 @@ private DefaultOpenAiClient(Builder serviceBuilder) {
4446
this.apiVersion = serviceBuilder.apiVersion;
4547
this.userAgent = serviceBuilder.userAgent;
4648

49+
Map<String, String> headers = new HashMap<>();
50+
4751
OkHttpClient.Builder okHttpClientBuilder = new OkHttpClient.Builder()
4852
.callTimeout(serviceBuilder.callTimeout)
4953
.connectTimeout(serviceBuilder.connectTimeout)
@@ -63,15 +67,15 @@ private DefaultOpenAiClient(Builder serviceBuilder) {
6367
}
6468

6569
if (serviceBuilder.organizationId != null) {
66-
okHttpClientBuilder.addInterceptor(new GenericHeaderInjector(Collections.singletonMap("OpenAI-Organization", serviceBuilder.organizationId)));
70+
headers.put("OpenAI-Organization", serviceBuilder.organizationId);
6771
}
6872

6973
if (serviceBuilder.proxy != null) {
7074
okHttpClientBuilder.proxy(serviceBuilder.proxy);
7175
}
7276

7377
if (serviceBuilder.userAgent != null) {
74-
okHttpClientBuilder.addInterceptor(new GenericHeaderInjector(Collections.singletonMap("User-Agent", serviceBuilder.userAgent)));
78+
headers.put("User-Agent", serviceBuilder.userAgent);
7579
}
7680

7781
if (serviceBuilder.logRequests) {
@@ -83,6 +87,11 @@ private DefaultOpenAiClient(Builder serviceBuilder) {
8387
}
8488
this.logStreamingResponses = serviceBuilder.logStreamingResponses;
8589

90+
if (serviceBuilder.additionalHeaders != null) {
91+
headers.putAll(serviceBuilder.additionalHeaders);
92+
okHttpClientBuilder.addInterceptor(new GenericHeaderInjector(headers));
93+
}
94+
8695
this.okHttpClient = okHttpClientBuilder.build();
8796

8897
Retrofit.Builder retrofitBuilder = new Retrofit.Builder().baseUrl(serviceBuilder.baseUrl).client(okHttpClient);

src/main/java/dev/ai4j/openai4j/OpenAiClient.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import dev.ai4j.openai4j.moderation.ModerationResult;
2121
import dev.ai4j.openai4j.spi.OpenAiClientBuilderFactory;
2222
import dev.ai4j.openai4j.spi.ServiceHelper;
23+
import java.util.Map;
2324

2425
import static dev.ai4j.openai4j.LogLevel.DEBUG;
2526

@@ -73,6 +74,7 @@ public abstract static class Builder<T extends OpenAiClient, B extends Builder<T
7374
public LogLevel logLevel = DEBUG;
7475
public boolean logStreamingResponses;
7576
public Path persistTo;
77+
public Map<String, String> additionalHeaders;
7678

7779
public abstract T build();
7880

@@ -250,5 +252,16 @@ public B persistTo(Path persistTo) {
250252
this.persistTo = persistTo;
251253
return (B) this;
252254
}
255+
256+
/**
257+
* Additional headers to be added to the HTTP request.
258+
*
259+
* @param additionalHeaders map of headers
260+
* @return builder
261+
*/
262+
public B additionalHeaders(Map<String, String> additionalHeaders) {
263+
this.additionalHeaders = additionalHeaders;
264+
return (B) this;
265+
}
253266
}
254267
}

0 commit comments

Comments
 (0)