Skip to content

Commit

Permalink
Add capability to pass OpenAI-Project header
Browse files Browse the repository at this point in the history
  • Loading branch information
StefanBratanov committed Apr 17, 2024
1 parent f0ad841 commit 6c5b46b
Showing 1 changed file with 23 additions and 4 deletions.
27 changes: 23 additions & 4 deletions src/main/java/io/github/stefanbratanov/jvm/openai/OpenAI.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,10 @@ private OpenAI(
URI baseUrl,
String apiKey,
Optional<String> organization,
Optional<String> project,
HttpClient httpClient,
Optional<Duration> requestTimeout) {
String[] authenticationHeaders = createAuthenticationHeaders(apiKey, organization);
String[] authenticationHeaders = createAuthenticationHeaders(apiKey, organization, project);
audioClient = new AudioClient(baseUrl, authenticationHeaders, httpClient, requestTimeout);
chatClient = new ChatClient(baseUrl, authenticationHeaders, httpClient, requestTimeout);
embeddingsClient =
Expand Down Expand Up @@ -158,7 +159,8 @@ public RunsClient runsClient() {
return runsClient;
}

private String[] createAuthenticationHeaders(String apiKey, Optional<String> organization) {
private String[] createAuthenticationHeaders(
String apiKey, Optional<String> organization, Optional<String> project) {
List<String> authHeaders = new ArrayList<>();
authHeaders.add("Authorization");
authHeaders.add("Bearer " + apiKey);
Expand All @@ -167,6 +169,11 @@ private String[] createAuthenticationHeaders(String apiKey, Optional<String> org
authHeaders.add("OpenAI-Organization");
authHeaders.add(org);
});
project.ifPresent(
prj -> {
authHeaders.add("OpenAI-Project");
authHeaders.add(prj);
});
return authHeaders.toArray(new String[] {});
}

Expand All @@ -186,6 +193,7 @@ public static class Builder {
private String baseUrl = DEFAULT_BASE_URL;

private Optional<String> organization = Optional.empty();
private Optional<String> project = Optional.empty();
private Optional<HttpClient> httpClient = Optional.empty();
private Optional<Duration> requestTimeout = Optional.empty();

Expand All @@ -202,14 +210,24 @@ public Builder baseUrl(String baseUrl) {
}

/**
* @param organization for users who belong to multiple organizations specify which organization
* will be used for the API requests
* @param organization for users who belong to multiple organizations and are accessing their
* projects through their legacy user API key, specify which organization will be used for
* the API requests
*/
public Builder organization(String organization) {
this.organization = Optional.of(organization);
return this;
}

/**
* @param project for users who are accessing their projects through their legacy user API key,
* specify which project will be used for the API requests
*/
public Builder project(String project) {
this.project = Optional.of(project);
return this;
}

/**
* @param httpClient a custom {@link HttpClient} which will be used for the API requests
*/
Expand All @@ -235,6 +253,7 @@ public OpenAI build() {
URI.create(baseUrl),
apiKey,
organization,
project,
httpClient.orElseGet(HttpClient::newHttpClient),
requestTimeout);
}
Expand Down

0 comments on commit 6c5b46b

Please sign in to comment.