11package io .github .sashirestela .openai ;
22
33import com .fasterxml .jackson .databind .ObjectMapper ;
4- import io .github .sashirestela .openai .base .AbstractOpenAIProvider ;
54import io .github .sashirestela .openai .base .ClientConfig ;
5+ import io .github .sashirestela .openai .base .OpenAIConfigurator ;
6+ import io .github .sashirestela .openai .base .OpenAIProvider ;
67import io .github .sashirestela .openai .base .RealtimeConfig ;
7- import io .github .sashirestela .openai .service .provider .StandardOpenAIServices ;
8+ import io .github .sashirestela .openai .service .AssistantServices ;
9+ import io .github .sashirestela .openai .service .AudioServices ;
10+ import io .github .sashirestela .openai .service .BatchServices ;
11+ import io .github .sashirestela .openai .service .ChatCompletionServices ;
12+ import io .github .sashirestela .openai .service .CompletionServices ;
13+ import io .github .sashirestela .openai .service .EmbeddingServices ;
14+ import io .github .sashirestela .openai .service .FileServices ;
15+ import io .github .sashirestela .openai .service .FineTunningServices ;
16+ import io .github .sashirestela .openai .service .ImageServices ;
17+ import io .github .sashirestela .openai .service .ModelServices ;
18+ import io .github .sashirestela .openai .service .ModerationServices ;
19+ import io .github .sashirestela .openai .service .RealtimeServices ;
20+ import io .github .sashirestela .openai .service .SessionServices ;
21+ import io .github .sashirestela .openai .service .UploadServices ;
822import io .github .sashirestela .openai .support .Constant ;
923import lombok .Builder ;
1024import lombok .NonNull ;
25+ import lombok .experimental .SuperBuilder ;
1126
1227import java .net .http .HttpClient ;
1328import java .util .HashMap ;
1732/**
1833 * The standard OpenAI implementation which implements the full services.
1934 */
20- public class SimpleOpenAI extends AbstractOpenAIProvider implements StandardOpenAIServices {
35+ public class SimpleOpenAI extends OpenAIProvider implements
36+ AssistantServices ,
37+ AudioServices ,
38+ BatchServices ,
39+ ChatCompletionServices ,
40+ CompletionServices ,
41+ EmbeddingServices ,
42+ FileServices ,
43+ FineTunningServices ,
44+ ImageServices ,
45+ ModelServices ,
46+ ModerationServices ,
47+ RealtimeServices ,
48+ SessionServices ,
49+ UploadServices {
2150
2251 /**
2352 * Constructor used to generate a builder.
@@ -34,47 +63,15 @@ public class SimpleOpenAI extends AbstractOpenAIProvider implements StandardOpen
3463 @ Builder
3564 public SimpleOpenAI (@ NonNull String apiKey , String organizationId , String projectId , String baseUrl ,
3665 HttpClient httpClient , ObjectMapper objectMapper , RealtimeConfig realtimeConfig ) {
37- super (buildConfig (apiKey , organizationId , projectId , baseUrl , httpClient , objectMapper , realtimeConfig ));
38- }
39-
40- public static ClientConfig buildConfig (String apiKey , String organizationId , String projectId , String baseUrl ,
41- HttpClient httpClient , ObjectMapper objectMapper , RealtimeConfig realtimeConfig ) {
42- return ClientConfig .builder ()
43- .baseUrl (Optional .ofNullable (baseUrl ).orElse (Constant .OPENAI_BASE_URL ))
44- .headers (headers (apiKey , organizationId , projectId ))
66+ super (StandardConfigurator .builder ()
67+ .apiKey (apiKey )
68+ .organizationId (organizationId )
69+ .projectId (projectId )
70+ .baseUrl (baseUrl )
4571 .httpClient (httpClient )
4672 .objectMapper (objectMapper )
47- .realtimeConfig (realtimeConfig (apiKey , realtimeConfig ))
48- .build ();
49- }
50-
51- private static Map <String , String > headers (String apiKey , String organizationId , String projectId ) {
52- var headers = new HashMap <String , String >();
53- headers .put (Constant .AUTHORIZATION_HEADER , Constant .BEARER_AUTHORIZATION + apiKey );
54- if (organizationId != null ) {
55- headers .put (Constant .OPENAI_ORG_HEADER , organizationId );
56- }
57- if (projectId != null ) {
58- headers .put (Constant .OPENAI_PRJ_HEADER , projectId );
59- }
60- return headers ;
61- }
62-
63- private static RealtimeConfig realtimeConfig (String apiKey , RealtimeConfig realtimeConfig ) {
64- if (realtimeConfig == null ) {
65- return null ;
66- }
67- var headers = new HashMap <String , String >();
68- headers .put (Constant .AUTHORIZATION_HEADER , Constant .BEARER_AUTHORIZATION + apiKey );
69- headers .put (Constant .OPENAI_BETA_HEADER , Constant .OPENAI_REALTIME_VERSION );
70- var queryParams = new HashMap <String , String >();
71- queryParams .put (Constant .OPENAI_REALTIME_MODEL_NAME , realtimeConfig .getModel ());
72- return RealtimeConfig .builder ()
73- .endpointUrl (
74- Optional .ofNullable (realtimeConfig .getEndpointUrl ()).orElse (Constant .OPENAI_WS_ENDPOINT_URL ))
75- .headers (headers )
76- .queryParams (queryParams )
77- .build ();
73+ .realtimeConfig (realtimeConfig )
74+ .build ());
7875 }
7976
8077 @ Override
@@ -182,4 +179,54 @@ public OpenAIRealtime realtime() {
182179 return this .realtime ;
183180 }
184181
182+ @ SuperBuilder
183+ static class StandardConfigurator extends OpenAIConfigurator {
184+
185+ private String organizationId ;
186+ private String projectId ;
187+ private RealtimeConfig realtimeConfig ;
188+
189+ @ Override
190+ public ClientConfig buildConfig () {
191+ return ClientConfig .builder ()
192+ .baseUrl (Optional .ofNullable (baseUrl ).orElse (Constant .OPENAI_BASE_URL ))
193+ .headers (makeHeaders ())
194+ .httpClient (httpClient )
195+ .objectMapper (objectMapper )
196+ .realtimeConfig (makeRealtimeConfig ())
197+ .build ();
198+ }
199+
200+ private Map <String , String > makeHeaders () {
201+ var headers = new HashMap <String , String >();
202+ headers .put (Constant .AUTHORIZATION_HEADER , Constant .BEARER_AUTHORIZATION + apiKey );
203+ if (organizationId != null ) {
204+ headers .put (Constant .OPENAI_ORG_HEADER , organizationId );
205+ }
206+ if (projectId != null ) {
207+ headers .put (Constant .OPENAI_PRJ_HEADER , projectId );
208+ }
209+ return headers ;
210+ }
211+
212+ private RealtimeConfig makeRealtimeConfig () {
213+ if (realtimeConfig == null ) {
214+ return null ;
215+ }
216+ var headers = new HashMap <String , String >();
217+ headers .put (Constant .AUTHORIZATION_HEADER , Constant .BEARER_AUTHORIZATION + apiKey );
218+ headers .put (Constant .OPENAI_BETA_HEADER , Constant .OPENAI_REALTIME_VERSION );
219+ var queryParams = new HashMap <String , String >();
220+ queryParams .put (Constant .OPENAI_REALTIME_MODEL_NAME , realtimeConfig .getModel ());
221+ return RealtimeConfig .builder ()
222+ .endpointUrl (
223+ Optional .ofNullable (realtimeConfig .getEndpointUrl ())
224+ .orElse (Constant .OPENAI_WS_ENDPOINT_URL ))
225+ .headers (headers )
226+ .queryParams (queryParams )
227+ .build ();
228+ }
229+
230+ }
231+
185232}
0 commit comments