33import static com .sap .ai .sdk .foundationmodels .openai .OpenAiModel .GPT_35_TURBO ;
44import static com .sap .ai .sdk .foundationmodels .openai .OpenAiModel .GPT_4O ;
55import static com .sap .ai .sdk .foundationmodels .openai .OpenAiModel .TEXT_EMBEDDING_ADA_002 ;
6- import static com .sap .ai .sdk .foundationmodels .openai .model .OpenAiChatCompletionTool .ToolType .FUNCTION ;
6+ import static com .sap .ai .sdk .foundationmodels .openai .model2 .ChatCompletionRequestMessageContentPartImage .TypeEnum .IMAGE_URL ;
7+ import static com .sap .ai .sdk .foundationmodels .openai .model2 .ChatCompletionRequestMessageContentPartImageImageUrl .DetailEnum .HIGH ;
8+ import static com .sap .ai .sdk .foundationmodels .openai .model2 .ChatCompletionRequestMessageContentPartText .TypeEnum .TEXT ;
9+ import static com .sap .ai .sdk .foundationmodels .openai .model2 .ChatCompletionRequestUserMessage .RoleEnum .USER ;
710
811import com .sap .ai .sdk .core .AiCoreService ;
12+ import com .sap .ai .sdk .foundationmodels .openai .OpenAiChatCompletionDelta ;
913import com .sap .ai .sdk .foundationmodels .openai .OpenAiClient ;
10- import com .sap .ai .sdk .foundationmodels .openai .model .OpenAiChatCompletionDelta ;
11- import com .sap .ai .sdk .foundationmodels .openai .model .OpenAiChatCompletionFunction ;
12- import com .sap .ai .sdk .foundationmodels .openai .model .OpenAiChatCompletionOutput ;
13- import com .sap .ai .sdk .foundationmodels .openai .model .OpenAiChatCompletionParameters ;
14- import com .sap .ai .sdk .foundationmodels .openai .model .OpenAiChatCompletionTool ;
15- import com .sap .ai .sdk .foundationmodels .openai .model .OpenAiChatMessage ;
16- import com .sap .ai .sdk .foundationmodels .openai .model .OpenAiEmbeddingOutput ;
17- import com .sap .ai .sdk .foundationmodels .openai .model .OpenAiEmbeddingParameters ;
14+ import com .sap .ai .sdk .foundationmodels .openai .model2 .ChatCompletionNamedToolChoice ;
15+ import com .sap .ai .sdk .foundationmodels .openai .model2 .ChatCompletionNamedToolChoiceFunction ;
16+ import com .sap .ai .sdk .foundationmodels .openai .model2 .ChatCompletionRequestMessageContentPartImage ;
17+ import com .sap .ai .sdk .foundationmodels .openai .model2 .ChatCompletionRequestMessageContentPartImageImageUrl ;
18+ import com .sap .ai .sdk .foundationmodels .openai .model2 .ChatCompletionRequestMessageContentPartText ;
19+ import com .sap .ai .sdk .foundationmodels .openai .model2 .ChatCompletionRequestUserMessage ;
20+ import com .sap .ai .sdk .foundationmodels .openai .model2 .ChatCompletionRequestUserMessageContent ;
21+ import com .sap .ai .sdk .foundationmodels .openai .model2 .ChatCompletionTool ;
22+ import com .sap .ai .sdk .foundationmodels .openai .model2 .ChatCompletionToolChoiceOption ;
23+ import com .sap .ai .sdk .foundationmodels .openai .model2 .CreateChatCompletionRequest ;
24+ import com .sap .ai .sdk .foundationmodels .openai .model2 .CreateChatCompletionResponse ;
25+ import com .sap .ai .sdk .foundationmodels .openai .model2 .EmbeddingsCreate200Response ;
26+ import com .sap .ai .sdk .foundationmodels .openai .model2 .EmbeddingsCreateRequest ;
27+ import com .sap .ai .sdk .foundationmodels .openai .model2 .EmbeddingsCreateRequestInput ;
28+ import com .sap .ai .sdk .foundationmodels .openai .model2 .FunctionObject ;
29+ import java .net .URI ;
1830import java .util .List ;
1931import java .util .Map ;
2032import java .util .stream .Stream ;
@@ -34,7 +46,7 @@ public class OpenAiService {
3446 * @return the assistant message response
3547 */
3648 @ Nonnull
37- public OpenAiChatCompletionOutput chatCompletion (@ Nonnull final String prompt ) {
49+ public CreateChatCompletionResponse chatCompletion (@ Nonnull final String prompt ) {
3850 return OpenAiClient .forModel (GPT_35_TURBO ).chatCompletion (prompt );
3951 }
4052
@@ -46,9 +58,12 @@ public OpenAiChatCompletionOutput chatCompletion(@Nonnull final String prompt) {
4658 @ Nonnull
4759 public Stream <OpenAiChatCompletionDelta > streamChatCompletionDeltas (
4860 @ Nonnull final String message ) {
61+ final var userMessage =
62+ new ChatCompletionRequestUserMessage ()
63+ .role (USER )
64+ .content (ChatCompletionRequestUserMessageContent .create (message ));
4965 final var request =
50- new OpenAiChatCompletionParameters ()
51- .addMessages (new OpenAiChatMessage .OpenAiChatUserMessage ().addText (message ));
66+ new CreateChatCompletionRequest ().addMessagesItem (userMessage ).functions (null ).tools (null );
5267
5368 return OpenAiClient .forModel (GPT_35_TURBO ).streamChatCompletionDeltas (request );
5469 }
@@ -72,15 +87,27 @@ public Stream<String> streamChatCompletion(@Nonnull final String message) {
7287 * @return the assistant message response
7388 */
7489 @ Nonnull
75- public OpenAiChatCompletionOutput chatCompletionImage (@ Nonnull final String linkToImage ) {
90+ public CreateChatCompletionResponse chatCompletionImage (@ Nonnull final String linkToImage ) {
91+ final var partText =
92+ new ChatCompletionRequestMessageContentPartText ()
93+ .type (TEXT )
94+ .text ("Describe the following image." );
95+ final var partImageUrl =
96+ new ChatCompletionRequestMessageContentPartImageImageUrl ()
97+ .url (URI .create (linkToImage ))
98+ .detail (HIGH );
99+ final var partImage =
100+ new ChatCompletionRequestMessageContentPartImage ().type (IMAGE_URL ).imageUrl (partImageUrl );
101+ final var userMessage =
102+ new ChatCompletionRequestUserMessage ()
103+ .role (USER )
104+ .content (ChatCompletionRequestUserMessageContent .create (List .of (partText , partImage )));
76105 final var request =
77- new OpenAiChatCompletionParameters ()
78- .addMessages (
79- new OpenAiChatMessage .OpenAiChatUserMessage ()
80- .addText ("Describe the following image." )
81- .addImage (
82- linkToImage ,
83- OpenAiChatMessage .OpenAiChatUserMessage .ImageDetailLevel .HIGH ));
106+ new CreateChatCompletionRequest ()
107+ .addMessagesItem (userMessage )
108+ .functions (null )
109+ .tools (null )
110+ .parallelToolCalls (null );
84111
85112 return OpenAiClient .forModel (GPT_4O ).chatCompletion (request );
86113 }
@@ -92,21 +119,29 @@ public OpenAiChatCompletionOutput chatCompletionImage(@Nonnull final String link
92119 * @return the assistant message response
93120 */
94121 @ Nonnull
95- public OpenAiChatCompletionOutput chatCompletionTools (@ Nonnull final String prompt ) {
122+ public CreateChatCompletionResponse chatCompletionTools (@ Nonnull final String prompt ) {
96123 final var question =
97124 "A pair of rabbits is placed in a field. Each month, every pair produces one new pair, starting from the second month. How many rabbits will there be after 12 months?" ;
98125 final var par = Map .of ("type" , "object" , "properties" , Map .of ("N" , Map .of ("type" , "integer" )));
99- final var function =
100- new OpenAiChatCompletionFunction ()
101- .setName ("fibonacci" )
102- .setDescription (prompt )
103- .setParameters (par );
104- final var tool = new OpenAiChatCompletionTool ().setType (FUNCTION ).setFunction (function );
126+ final var function = new FunctionObject ().name ("fibonacci" ).description (prompt ).parameters (par );
127+ final var tool =
128+ new ChatCompletionTool ().type (ChatCompletionTool .TypeEnum .FUNCTION ).function (function );
129+ final var userMessage =
130+ new ChatCompletionRequestUserMessage ()
131+ .role (USER )
132+ .content (ChatCompletionRequestUserMessageContent .create (question ));
133+ final var toolChoice =
134+ ChatCompletionToolChoiceOption .create (
135+ new ChatCompletionNamedToolChoice ()
136+ .type (ChatCompletionNamedToolChoice .TypeEnum .FUNCTION )
137+ .function (new ChatCompletionNamedToolChoiceFunction ().name ("fibonacci" )));
105138 final var request =
106- new OpenAiChatCompletionParameters ()
107- .addMessages (new OpenAiChatMessage .OpenAiChatUserMessage ().addText (question ))
108- .setTools (List .of (tool ))
109- .setToolChoiceFunction ("fibonacci" );
139+ new CreateChatCompletionRequest ()
140+ .addMessagesItem (userMessage )
141+ .tools (List .of (tool ))
142+ .toolChoice (toolChoice )
143+ .functions (null )
144+ .parallelToolCalls (null );
110145
111146 return OpenAiClient .forModel (GPT_35_TURBO ).chatCompletion (request );
112147 }
@@ -118,8 +153,9 @@ public OpenAiChatCompletionOutput chatCompletionTools(@Nonnull final String prom
118153 * @return the embedding response
119154 */
120155 @ Nonnull
121- public OpenAiEmbeddingOutput embedding (@ Nonnull final String input ) {
122- final var request = new OpenAiEmbeddingParameters ().setInput (input );
156+ public EmbeddingsCreate200Response embedding (@ Nonnull final String input ) {
157+ final var request =
158+ new EmbeddingsCreateRequest ().input (EmbeddingsCreateRequestInput .create (input ));
123159
124160 return OpenAiClient .forModel (TEXT_EMBEDDING_ADA_002 ).embedding (request );
125161 }
@@ -132,7 +168,7 @@ public OpenAiEmbeddingOutput embedding(@Nonnull final String input) {
132168 * @return the assistant message response
133169 */
134170 @ Nonnull
135- public OpenAiChatCompletionOutput chatCompletionWithResource (
171+ public CreateChatCompletionResponse chatCompletionWithResource (
136172 @ Nonnull final String resourceGroup , @ Nonnull final String prompt ) {
137173
138174 final var destination =
0 commit comments