Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 25 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,11 @@ Use OCI IAM auth when you want to sign requests with your OCI profile (session/u
```java
import com.oracle.genai.auth.OciAuthConfig;
import com.oracle.genai.auth.OciOkHttpClientFactory;
import com.oracle.genai.auth.OciOpenAIHttpClient;
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.client.OpenAIClientImpl;
import com.openai.core.ClientOptions;
import okhttp3.OkHttpClient;

OciAuthConfig config = OciAuthConfig.builder()
.authType("security_token")
Expand All @@ -57,11 +60,13 @@ OciAuthConfig config = OciAuthConfig.builder()

OkHttpClient ociHttpClient = OciOkHttpClientFactory.build(config);

OpenAIClient client = OpenAIOkHttpClient.builder()
.baseUrl("https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/openai/v1")
.okHttpClient(ociHttpClient)
String baseUrl = "https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/openai/v1";

OpenAIClient client = new OpenAIClientImpl(ClientOptions.builder()
.httpClient(OciOpenAIHttpClient.of(ociHttpClient, baseUrl))
.baseUrl(baseUrl)
.apiKey("not-used")
.build();
.build());
```

## Using API Key Auth
Expand Down Expand Up @@ -97,19 +102,29 @@ Explore [examples](examples/enterprise_ai_agents) to get started.
Note: OpenAI commercial models and image generation are only available to Oracle internal teams at this moment.

```java
import com.oracle.genai.auth.OciAuthConfig;
import com.oracle.genai.auth.OciOkHttpClientFactory;
import com.oracle.genai.auth.OciOpenAIHttpClient;
import com.openai.client.OpenAIClient;
import com.openai.client.OpenAIClientImpl;
import com.openai.core.ClientOptions;
import okhttp3.OkHttpClient;

OciAuthConfig config = OciAuthConfig.builder()
.authType("security_token")
.profile("DEFAULT")
.build();

OkHttpClient ociHttpClient = OciOkHttpClientFactory.build(config);

OpenAIClient client = OpenAIOkHttpClient.builder()
.baseUrl("https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/openai/v1")
.okHttpClient(ociHttpClient)
String baseUrl = "https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/openai/v1";

OpenAIClient client = new OpenAIClientImpl(ClientOptions.builder()
.httpClient(OciOpenAIHttpClient.of(ociHttpClient, baseUrl))
.baseUrl(baseUrl)
.apiKey("not-used")
.addHeader("openai-project", "ocid1.generativeaiproject.oc1.us-chicago-1.aaaaaaaaexample")
.build();
.putHeader("openai-project", "ocid1.generativeaiproject.oc1.us-chicago-1.aaaaaaaaexample")
.build());
```

## Examples
Expand Down
12 changes: 7 additions & 5 deletions examples/enterprise_ai_agents/QuickstartResponsesOciIam.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,14 @@
*/

import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.client.OpenAIClientImpl;
import com.openai.core.ClientOptions;
import com.openai.models.responses.Response;
import com.openai.models.responses.ResponseCreateParams;

import com.oracle.genai.auth.OciAuthConfig;
import com.oracle.genai.auth.OciOkHttpClientFactory;
import com.oracle.genai.auth.OciOpenAIHttpClient;

import okhttp3.OkHttpClient;

Expand All @@ -45,12 +47,12 @@ public static void main(String[] args) {
OkHttpClient ociHttpClient = OciOkHttpClientFactory.build(config);

// OCI Enterprise AI Agents only needs project OCID — no compartment ID required
OpenAIClient client = OpenAIOkHttpClient.builder()
OpenAIClient client = new OpenAIClientImpl(ClientOptions.builder()
.httpClient(OciOpenAIHttpClient.of(ociHttpClient, BASE_URL))
.baseUrl(BASE_URL)
.okHttpClient(ociHttpClient)
.apiKey("not-used")
.addHeader("openai-project", PROJECT_OCID)
.build();
.putHeader("openai-project", PROJECT_OCID)
.build());

Response response = client.responses().create(
ResponseCreateParams.builder()
Expand Down
12 changes: 7 additions & 5 deletions examples/enterprise_ai_agents/responses/CreateResponse.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,14 @@
*/

import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.client.OpenAIClientImpl;
import com.openai.core.ClientOptions;
import com.openai.models.responses.Response;
import com.openai.models.responses.ResponseCreateParams;

import com.oracle.genai.auth.OciAuthConfig;
import com.oracle.genai.auth.OciOkHttpClientFactory;
import com.oracle.genai.auth.OciOpenAIHttpClient;

import okhttp3.OkHttpClient;

Expand All @@ -38,12 +40,12 @@ public static void main(String[] args) {
OkHttpClient ociHttpClient = OciOkHttpClientFactory.build(config);

// OCI Enterprise AI Agents only needs project OCID — no compartment ID required
OpenAIClient client = OpenAIOkHttpClient.builder()
OpenAIClient client = new OpenAIClientImpl(ClientOptions.builder()
.httpClient(OciOpenAIHttpClient.of(ociHttpClient, BASE_URL))
.baseUrl(BASE_URL)
.okHttpClient(ociHttpClient)
.apiKey("not-used")
.addHeader("openai-project", PROJECT_OCID)
.build();
.putHeader("openai-project", PROJECT_OCID)
.build());

Response response = client.responses().create(
ResponseCreateParams.builder()
Expand Down
12 changes: 7 additions & 5 deletions examples/enterprise_ai_agents/responses/StreamingTextDelta.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,13 @@
*/

import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.client.OpenAIClientImpl;
import com.openai.core.ClientOptions;
import com.openai.models.responses.ResponseCreateParams;

import com.oracle.genai.auth.OciAuthConfig;
import com.oracle.genai.auth.OciOkHttpClientFactory;
import com.oracle.genai.auth.OciOpenAIHttpClient;

import okhttp3.OkHttpClient;

Expand All @@ -37,12 +39,12 @@ public static void main(String[] args) {
OkHttpClient ociHttpClient = OciOkHttpClientFactory.build(config);

// OCI Enterprise AI Agents only needs project OCID — no compartment ID required
OpenAIClient client = OpenAIOkHttpClient.builder()
OpenAIClient client = new OpenAIClientImpl(ClientOptions.builder()
.httpClient(OciOpenAIHttpClient.of(ociHttpClient, BASE_URL))
.baseUrl(BASE_URL)
.okHttpClient(ociHttpClient)
.apiKey("not-used")
.addHeader("openai-project", PROJECT_OCID)
.build();
.putHeader("openai-project", PROJECT_OCID)
.build());

client.responses().createStreaming(
ResponseCreateParams.builder()
Expand Down
12 changes: 7 additions & 5 deletions examples/enterprise_ai_agents/tools/FunctionCalling.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,13 @@
*/

import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.client.OpenAIClientImpl;
import com.openai.core.ClientOptions;
import com.openai.models.responses.*;

import com.oracle.genai.auth.OciAuthConfig;
import com.oracle.genai.auth.OciOkHttpClientFactory;
import com.oracle.genai.auth.OciOpenAIHttpClient;

import okhttp3.OkHttpClient;

Expand Down Expand Up @@ -47,12 +49,12 @@ public static void main(String[] args) {
OkHttpClient ociHttpClient = OciOkHttpClientFactory.build(config);

// OCI Enterprise AI Agents only needs project OCID — no compartment ID required
OpenAIClient client = OpenAIOkHttpClient.builder()
OpenAIClient client = new OpenAIClientImpl(ClientOptions.builder()
.httpClient(OciOpenAIHttpClient.of(ociHttpClient, BASE_URL))
.baseUrl(BASE_URL)
.okHttpClient(ociHttpClient)
.apiKey("not-used")
.addHeader("openai-project", PROJECT_OCID)
.build();
.putHeader("openai-project", PROJECT_OCID)
.build());

// Define function tool
Tool weatherTool = Tool.ofFunction(FunctionTool.builder()
Expand Down
12 changes: 7 additions & 5 deletions examples/enterprise_ai_agents/tools/WebSearch.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,16 @@
*/

import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.client.OpenAIClientImpl;
import com.openai.core.ClientOptions;
import com.openai.models.responses.Response;
import com.openai.models.responses.ResponseCreateParams;
import com.openai.models.responses.Tool;
import com.openai.models.responses.WebSearchTool;

import com.oracle.genai.auth.OciAuthConfig;
import com.oracle.genai.auth.OciOkHttpClientFactory;
import com.oracle.genai.auth.OciOpenAIHttpClient;

import okhttp3.OkHttpClient;

Expand All @@ -40,12 +42,12 @@ public static void main(String[] args) {
OkHttpClient ociHttpClient = OciOkHttpClientFactory.build(config);

// OCI Enterprise AI Agents only needs project OCID — no compartment ID required
OpenAIClient client = OpenAIOkHttpClient.builder()
OpenAIClient client = new OpenAIClientImpl(ClientOptions.builder()
.httpClient(OciOpenAIHttpClient.of(ociHttpClient, BASE_URL))
.baseUrl(BASE_URL)
.okHttpClient(ociHttpClient)
.apiKey("not-used")
.addHeader("openai-project", PROJECT_OCID)
.build();
.putHeader("openai-project", PROJECT_OCID)
.build());

Response response = client.responses().create(
ResponseCreateParams.builder()
Expand Down
10 changes: 9 additions & 1 deletion oci-genai-auth-java-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,15 @@
<artifactId>slf4j-api</artifactId>
</dependency>

<!-- OpenAI SDK — integration test only -->
<!-- OpenAI SDK core — optional; required only when using OciOpenAIHttpClient -->
<dependency>
<groupId>com.openai</groupId>
<artifactId>openai-java-core</artifactId>
<version>4.26.0</version>
<optional>true</optional>
</dependency>

<!-- OpenAI SDK — integration tests only -->
<dependency>
<groupId>com.openai</groupId>
<artifactId>openai-java</artifactId>
Expand Down
Loading
Loading