|
25 | 25 | import static org.mockito.Mockito.times; |
26 | 26 | import static org.mockito.Mockito.when; |
27 | 27 |
|
| 28 | +import com.sap.ai.sdk.foundationmodels.openai.generated.model.ChatCompletionMessageToolCall; |
28 | 29 | import com.sap.ai.sdk.foundationmodels.openai.generated.model.ChatCompletionResponseMessageRole; |
29 | 30 | import com.sap.ai.sdk.foundationmodels.openai.generated.model.ChatCompletionTool; |
30 | 31 | import com.sap.ai.sdk.foundationmodels.openai.generated.model.ContentFilterPromptResults; |
@@ -527,27 +528,16 @@ void chatCompletionTool() { |
527 | 528 |
|
528 | 529 | assertThat(response).isNotNull(); |
529 | 530 | assertThat(response.getChoices()).hasSize(1); |
530 | | - assertThat(response.getChoices().get(0).getFinishReason()).isEqualTo(STOP); |
531 | | - assertThat(response.getChoices().get(0).getMessage().getRole()) |
532 | | - .isEqualTo(ChatCompletionResponseMessageRole.ASSISTANT); |
533 | | - assertThat(response.getChoices().get(0).getMessage().getToolCalls()).hasSize(1); |
534 | | - assertThat(response.getChoices().get(0).getMessage().getToolCalls().get(0).getId()) |
535 | | - .isEqualTo("call_CUYGJf2j7FRWJMHT3PN3aGxK"); |
536 | | - assertThat(response.getChoices().get(0).getMessage().getToolCalls().get(0).getType()) |
537 | | - .isEqualTo(FUNCTION); |
538 | | - assertThat( |
539 | | - response.getChoices().get(0).getMessage().getToolCalls().get(0).getFunction().getName()) |
540 | | - .isEqualTo("fibonacci"); |
541 | | - assertThat( |
542 | | - response |
543 | | - .getChoices() |
544 | | - .get(0) |
545 | | - .getMessage() |
546 | | - .getToolCalls() |
547 | | - .get(0) |
548 | | - .getFunction() |
549 | | - .getArguments()) |
550 | | - .isEqualTo("{\"N\":12}"); |
| 531 | + var choice = response.getChoices().get(0); |
| 532 | + assertThat(choice.getFinishReason()).isEqualTo(STOP); |
| 533 | + var message = choice.getMessage(); |
| 534 | + assertThat(message.getRole()).isEqualTo(ChatCompletionResponseMessageRole.ASSISTANT); |
| 535 | + assertThat(message.getToolCalls()).hasSize(1); |
| 536 | + var toolCall = message.getToolCalls().get(0); |
| 537 | + assertThat(toolCall.getId()).isEqualTo("call_CUYGJf2j7FRWJMHT3PN3aGxK"); |
| 538 | + assertThat(toolCall.getType()).isEqualTo(FUNCTION); |
| 539 | + assertThat(toolCall.getFunction().getName()).isEqualTo("fibonacci"); |
| 540 | + assertThat(toolCall.getFunction().getArguments()).isEqualTo("{\"N\":12}"); |
551 | 541 |
|
552 | 542 | verify( |
553 | 543 | postRequestedFor(anyUrl()) |
@@ -585,43 +575,36 @@ void chatCompletionTool() { |
585 | 575 | } |
586 | 576 |
|
587 | 577 | @Test |
588 | | - void chatCompletionResponseGetMessage() { |
| 578 | + void chatCompletionGetMessage() { |
589 | 579 | stubForChatCompletion(); |
| 580 | + final var textRequest = new OpenAiChatCompletionRequest("Some text"); |
| 581 | + |
| 582 | + final var textResponse = client.chatCompletion(textRequest); |
| 583 | + final var message = textResponse.getMessage(); |
590 | 584 |
|
591 | | - final var response = client.chatCompletion(new OpenAiChatCompletionRequest("Some text")); |
592 | | - final var simpleMessage = response.getMessage(); |
| 585 | + assertThat(message).isNotNull(); |
| 586 | + assertThat(message.toolCalls()).isEmpty(); |
| 587 | + assertThat(message.content().items()).hasSize(1); |
593 | 588 |
|
594 | | - assertThat(simpleMessage).isNotNull(); |
595 | | - assertThat(simpleMessage.toolCalls()).isEmpty(); |
596 | | - assertThat(simpleMessage.content().items()).hasSize(1); |
597 | | - assertThat(simpleMessage.content().items().get(0)).isInstanceOf(OpenAiTextItem.class); |
598 | | - assertThat(((OpenAiTextItem) simpleMessage.content().items().get(0)).text()) |
| 589 | + final var textItem = message.content().items().get(0); |
| 590 | + assertThat(textItem).isInstanceOf(OpenAiTextItem.class); |
| 591 | + assertThat(((OpenAiTextItem) textItem).text()) |
599 | 592 | .isEqualTo( |
600 | 593 | "I'm an AI and cannot answer that question as beauty is subjective and varies from person to person."); |
| 594 | + } |
601 | 595 |
|
| 596 | + @Test |
| 597 | + void chatCompletionToolCallGetMessage() { |
602 | 598 | stubForChatCompletionTool(); |
603 | | - |
604 | | - final var responseWithToolCall = |
605 | | - client.chatCompletion(new OpenAiChatCompletionRequest("Some tool request")); |
606 | | - var messageWithToolCall = responseWithToolCall.getMessage(); |
607 | | - |
608 | | - assertThat(messageWithToolCall).isNotNull(); |
609 | | - assertThat(messageWithToolCall.content().items()).hasSize(0); |
610 | | - OpenAiFunctionCall functionCallItem = |
611 | | - (OpenAiFunctionCall) messageWithToolCall.toolCalls().get(0); |
612 | | - assertThat(functionCallItem.getId()).isEqualTo("call_CUYGJf2j7FRWJMHT3PN3aGxK"); |
613 | | - assertThat(functionCallItem.getName()).isEqualTo("fibonacci"); |
614 | | - assertThat(functionCallItem.getArguments()).isEqualTo("{\"N\":12}"); |
615 | | - |
616 | | - // case: both content and tool calls are present |
617 | | - responseWithToolCall.getChoice().getMessage().content("Some content"); |
618 | | - var messageWithToolCallsAndContent = responseWithToolCall.getMessage(); |
619 | | - |
620 | | - assertThat(messageWithToolCallsAndContent).isNotNull(); |
621 | | - assertThat(messageWithToolCallsAndContent.content().items()).hasSize(1); |
622 | | - assertThat(messageWithToolCallsAndContent.content().items().get(0)) |
623 | | - .isInstanceOf(OpenAiTextItem.class); |
624 | | - assertThat(messageWithToolCallsAndContent.toolCalls().get(0)) |
625 | | - .isInstanceOf(OpenAiFunctionCall.class); |
| 599 | + final var toolRequest = new OpenAiChatCompletionRequest("Some tool request"); |
| 600 | + final var toolResponse = client.chatCompletion(toolRequest); |
| 601 | + final var message = toolResponse.getMessage(); |
| 602 | + |
| 603 | + assertThat(message).isNotNull(); |
| 604 | + assertThat(message.content().items()).isEmpty(); |
| 605 | + final var toolCall = (OpenAiFunctionCall) message.toolCalls().get(0); |
| 606 | + assertThat(toolCall.getId()).isEqualTo("call_CUYGJf2j7FRWJMHT3PN3aGxK"); |
| 607 | + assertThat(toolCall.getName()).isEqualTo("fibonacci"); |
| 608 | + assertThat(toolCall.getArguments()).isEqualTo("{\"N\":12}"); |
626 | 609 | } |
627 | 610 | } |
0 commit comments