Skip to content

Commit c8d7404

Browse files
feat(client): support setting base URL via env var (#427)
1 parent 94245a0 commit c8d7404

File tree

4 files changed

+18
-22
lines changed

4 files changed

+18
-22
lines changed

README.md

+11-10
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ import com.openai.models.ChatModel;
5050
import com.openai.models.chat.completions.ChatCompletion;
5151
import com.openai.models.chat.completions.ChatCompletionCreateParams;
5252

53-
// Configures using the `OPENAI_API_KEY`, `OPENAI_ORG_ID` and `OPENAI_PROJECT_ID` environment variables
53+
// Configures using the `OPENAI_API_KEY`, `OPENAI_ORG_ID`, `OPENAI_PROJECT_ID` and `OPENAI_BASE_URL` environment variables
5454
OpenAIClient client = OpenAIOkHttpClient.fromEnv();
5555

5656
ChatCompletionCreateParams params = ChatCompletionCreateParams.builder()
@@ -68,7 +68,7 @@ Configure the client using environment variables:
6868
import com.openai.client.OpenAIClient;
6969
import com.openai.client.okhttp.OpenAIOkHttpClient;
7070

71-
// Configures using the `OPENAI_API_KEY`, `OPENAI_ORG_ID` and `OPENAI_PROJECT_ID` environment variables
71+
// Configures using the `OPENAI_API_KEY`, `OPENAI_ORG_ID`, `OPENAI_PROJECT_ID` and `OPENAI_BASE_URL` environment variables
7272
OpenAIClient client = OpenAIOkHttpClient.fromEnv();
7373
```
7474

@@ -90,19 +90,20 @@ import com.openai.client.OpenAIClient;
9090
import com.openai.client.okhttp.OpenAIOkHttpClient;
9191

9292
OpenAIClient client = OpenAIOkHttpClient.builder()
93-
// Configures using the `OPENAI_API_KEY`, `OPENAI_ORG_ID` and `OPENAI_PROJECT_ID` environment variables
93+
// Configures using the `OPENAI_API_KEY`, `OPENAI_ORG_ID`, `OPENAI_PROJECT_ID` and `OPENAI_BASE_URL` environment variables
9494
.fromEnv()
9595
.apiKey("My API Key")
9696
.build();
9797
```
9898

9999
See this table for the available options:
100100

101-
| Setter | Environment variable | Required | Default value |
102-
| -------------- | -------------------- | -------- | ------------- |
103-
| `apiKey` | `OPENAI_API_KEY` | true | - |
104-
| `organization` | `OPENAI_ORG_ID` | false | - |
105-
| `project` | `OPENAI_PROJECT_ID` | false | - |
101+
| Setter | Environment variable | Required | Default value |
102+
| -------------- | -------------------- | -------- | ----------------------------- |
103+
| `apiKey` | `OPENAI_API_KEY` | true | - |
104+
| `organization` | `OPENAI_ORG_ID` | false | - |
105+
| `project` | `OPENAI_PROJECT_ID` | false | - |
106+
| `baseUrl` | `OPENAI_BASE_URL` | true | `"https://api.openai.com/v1"` |
106107

107108
> [!TIP]
108109
> Don't create more than one client in the same application. Each client has a connection pool and
@@ -134,7 +135,7 @@ import com.openai.models.chat.completions.ChatCompletion;
134135
import com.openai.models.chat.completions.ChatCompletionCreateParams;
135136
import java.util.concurrent.CompletableFuture;
136137

137-
// Configures using the `OPENAI_API_KEY`, `OPENAI_ORG_ID` and `OPENAI_PROJECT_ID` environment variables
138+
// Configures using the `OPENAI_API_KEY`, `OPENAI_ORG_ID`, `OPENAI_PROJECT_ID` and `OPENAI_BASE_URL` environment variables
138139
OpenAIClient client = OpenAIOkHttpClient.fromEnv();
139140

140141
ChatCompletionCreateParams params = ChatCompletionCreateParams.builder()
@@ -154,7 +155,7 @@ import com.openai.models.chat.completions.ChatCompletion;
154155
import com.openai.models.chat.completions.ChatCompletionCreateParams;
155156
import java.util.concurrent.CompletableFuture;
156157

157-
// Configures using the `OPENAI_API_KEY`, `OPENAI_ORG_ID` and `OPENAI_PROJECT_ID` environment variables
158+
// Configures using the `OPENAI_API_KEY`, `OPENAI_ORG_ID`, `OPENAI_PROJECT_ID` and `OPENAI_BASE_URL` environment variables
158159
OpenAIClientAsync client = OpenAIOkHttpClientAsync.fromEnv();
159160

160161
ChatCompletionCreateParams params = ChatCompletionCreateParams.builder()

openai-java-client-okhttp/src/main/kotlin/com/openai/client/okhttp/OpenAIOkHttpClient.kt

+2-6
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,10 @@ class OpenAIOkHttpClient private constructor() {
3030
class Builder internal constructor() {
3131

3232
private var clientOptions: ClientOptions.Builder = ClientOptions.builder()
33-
private var baseUrl: String = ClientOptions.PRODUCTION_URL
3433
private var timeout: Timeout = Timeout.default()
3534
private var proxy: Proxy? = null
3635

37-
fun baseUrl(baseUrl: String) = apply {
38-
clientOptions.baseUrl(baseUrl)
39-
this.baseUrl = baseUrl
40-
}
36+
fun baseUrl(baseUrl: String) = apply { clientOptions.baseUrl(baseUrl) }
4137

4238
/**
4339
* Whether to throw an exception if any of the Jackson versions detected at runtime are
@@ -184,7 +180,7 @@ class OpenAIOkHttpClient private constructor() {
184180
clientOptions
185181
.httpClient(
186182
OkHttpClient.builder()
187-
.baseUrl(baseUrl)
183+
.baseUrl(clientOptions.baseUrl())
188184
.timeout(timeout)
189185
.proxy(proxy)
190186
.build()

openai-java-client-okhttp/src/main/kotlin/com/openai/client/okhttp/OpenAIOkHttpClientAsync.kt

+2-6
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,10 @@ class OpenAIOkHttpClientAsync private constructor() {
3030
class Builder internal constructor() {
3131

3232
private var clientOptions: ClientOptions.Builder = ClientOptions.builder()
33-
private var baseUrl: String = ClientOptions.PRODUCTION_URL
3433
private var timeout: Timeout = Timeout.default()
3534
private var proxy: Proxy? = null
3635

37-
fun baseUrl(baseUrl: String) = apply {
38-
clientOptions.baseUrl(baseUrl)
39-
this.baseUrl = baseUrl
40-
}
36+
fun baseUrl(baseUrl: String) = apply { clientOptions.baseUrl(baseUrl) }
4137

4238
/**
4339
* Whether to throw an exception if any of the Jackson versions detected at runtime are
@@ -184,7 +180,7 @@ class OpenAIOkHttpClientAsync private constructor() {
184180
clientOptions
185181
.httpClient(
186182
OkHttpClient.builder()
187-
.baseUrl(baseUrl)
183+
.baseUrl(clientOptions.baseUrl())
188184
.timeout(timeout)
189185
.proxy(proxy)
190186
.build()

openai-java-core/src/main/kotlin/com/openai/core/ClientOptions.kt

+3
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,10 @@ private constructor(
217217

218218
fun removeAllQueryParams(keys: Set<String>) = apply { queryParams.removeAll(keys) }
219219

220+
fun baseUrl(): String = baseUrl
221+
220222
fun fromEnv() = apply {
223+
System.getenv("OPENAI_BASE_URL")?.let { baseUrl(it) }
221224
System.getenv("OPENAI_API_KEY")?.let { apiKey(it) }
222225
System.getenv("OPENAI_ORG_ID")?.let { organization(it) }
223226
System.getenv("OPENAI_PROJECT_ID")?.let { project(it) }

0 commit comments

Comments
 (0)