@@ -84,16 +84,37 @@ public OpenAiService(final String token) {
8484        this (token , DEFAULT_TIMEOUT );
8585    }
8686
87+     /** 
88+      * Creates a new OpenAiService that wraps OpenAiApi 
89+      * 
90+      * @param token OpenAi token string "sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" 
91+      * @param baseUrl OpenAi baseUrl, default is "https://api.openai.com/" 
92+      */ 
93+     public  OpenAiService (final  String  token , String  baseUrl ) {
94+         this (token , DEFAULT_TIMEOUT , baseUrl );
95+     }
96+ 
8797    /** 
8898     * Creates a new OpenAiService that wraps OpenAiApi 
8999     * 
90100     * @param token   OpenAi token string "sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" 
91101     * @param timeout http read timeout, Duration.ZERO means no timeout 
92102     */ 
93103    public  OpenAiService (final  String  token , final  Duration  timeout ) {
104+         this (token , timeout , null );
105+     }
106+ 
107+     /** 
108+      * Creates a new OpenAiService that wraps OpenAiApi 
109+      * 
110+      * @param token   OpenAi token string "sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" 
111+      * @param timeout http read timeout, Duration.ZERO means no timeout 
112+      * @param baseUrl OpenAi baseUrl, default is "https://api.openai.com/" 
113+      */ 
114+     public  OpenAiService (final  String  token , final  Duration  timeout , String  baseUrl ) {
94115        ObjectMapper  mapper  = defaultObjectMapper ();
95116        OkHttpClient  client  = defaultClient (token , timeout );
96-         Retrofit  retrofit  = defaultRetrofit (client , mapper );
117+         Retrofit  retrofit  = defaultRetrofit (client , mapper ,  baseUrl );
97118
98119        this .api  = retrofit .create (OpenAiApi .class );
99120        this .executorService  = client .dispatcher ().executorService ();
@@ -572,7 +593,7 @@ public void shutdownExecutor() {
572593    public  static  OpenAiApi  buildApi (String  token , Duration  timeout ) {
573594        ObjectMapper  mapper  = defaultObjectMapper ();
574595        OkHttpClient  client  = defaultClient (token , timeout );
575-         Retrofit  retrofit  = defaultRetrofit (client , mapper );
596+         Retrofit  retrofit  = defaultRetrofit (client , mapper ,  null );
576597
577598        return  retrofit .create (OpenAiApi .class );
578599    }
@@ -596,9 +617,9 @@ public static OkHttpClient defaultClient(String token, Duration timeout) {
596617                .build ();
597618    }
598619
599-     public  static  Retrofit  defaultRetrofit (OkHttpClient  client , ObjectMapper  mapper ) {
620+     public  static  Retrofit  defaultRetrofit (OkHttpClient  client , ObjectMapper  mapper ,  String   baseUrl ) {
600621        return  new  Retrofit .Builder ()
601-                 .baseUrl (BASE_URL )
622+                 .baseUrl (baseUrl  ==  null  ||  baseUrl . isEmpty () ?  BASE_URL  :  baseUrl )
602623                .client (client )
603624                .addConverterFactory (JacksonConverterFactory .create (mapper ))
604625                .addCallAdapterFactory (RxJava2CallAdapterFactory .create ())
0 commit comments