Skip to content

Commit 03bfd18

Browse files
committed
Implementation of the OpenAI Java SDK
- First tests passing for ChatModel Signed-off-by: Julien Dubois <[email protected]>
1 parent 1536658 commit 03bfd18

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

models/spring-ai-openai-official/src/main/java/org/springframework/ai/openaiofficial/OpenAiOfficialChatModel.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,7 @@ private Generation buildGeneration(ChatCompletion.Choice choice, Map<String, Obj
388388
.map(toolCall -> {
389389
return new AssistantMessage.ToolCall(toolCall.function().get().id(), "function", toolCall.function().get().function().name(),
390390
toolCall.function().get().function().arguments());
391-
}).toList()).get();
391+
}).toList()).orElse(List.of());
392392

393393
var generationMetadataBuilder = ChatGenerationMetadata.builder()
394394
.finishReason(choice.finishReason().value().name());
@@ -566,8 +566,7 @@ else if (mimeType.startsWith("audio/")) {
566566
else {
567567
builder.role(JsonValue.from(MessageType.SYSTEM));
568568
}
569-
Object refusal = message.getMetadata().get("refusal");
570-
builder.refusal(refusal != null ? JsonValue.from(refusal.toString()) : JsonValue.from(""));
569+
builder.refusal(JsonValue.from(Optional.ofNullable(message.getMetadata().get("refusal")).map(Object::toString).orElse("")));
571570
return List.of(builder.build());
572571
}
573572
else if (message.getMessageType() == MessageType.ASSISTANT) {
@@ -576,8 +575,12 @@ else if (message.getMessageType() == MessageType.ASSISTANT) {
576575
.role(JsonValue.from(MessageType.ASSISTANT));
577576

578577
if (assistantMessage.getText() != null) {
579-
builder.content(ChatCompletionMessage.builder().content(assistantMessage.getText()).build().content());
578+
builder.content(ChatCompletionMessage.builder()
579+
.content(assistantMessage.getText())
580+
.refusal(JsonValue.from(Optional.ofNullable(message.getMetadata().get("refusal")).map(Object::toString).orElse("")))
581+
.build().content());
580582
}
583+
builder.refusal(JsonValue.from(Optional.ofNullable(message.getMetadata().get("refusal")).map(Object::toString).orElse("")));
581584

582585
if (!CollectionUtils.isEmpty(assistantMessage.getToolCalls())) {
583586
List<ChatCompletionMessageToolCall> toolCalls = assistantMessage.getToolCalls()
@@ -604,6 +607,7 @@ else if (message.getMessageType() == MessageType.TOOL) {
604607
.map(toolResponse -> ChatCompletionMessage.builder()
605608
.role(JsonValue.from(MessageType.TOOL))
606609
.content(ChatCompletionMessage.builder().content(toolResponse.responseData()).build().content())
610+
.refusal(JsonValue.from(Optional.ofNullable(message.getMetadata().get("refusal")).map(Object::toString).orElse("")))
607611
.build())
608612
.toList();
609613
}

0 commit comments

Comments
 (0)