Skip to content

Commit d791cfc

Browse files
fix: [Orchestration] tool calling works on all models
1 parent 41b4717 commit d791cfc

File tree

2 files changed

+29
-13
lines changed

2 files changed

+29
-13
lines changed

orchestration/src/main/java/com/sap/ai/sdk/orchestration/AssistantMessage.java

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -63,24 +63,40 @@ public AssistantMessage(@Nonnull final List<MessageToolCall> toolCalls) {
6363
this.toolCalls = toolCalls;
6464
}
6565

66+
/**
67+
* Creates a new assistant message with the given message and tool calls.
68+
*
69+
* @param singleMessage the message content.
70+
* @param toolCalls list of tool call objects
71+
* @since 1.11.0
72+
*/
73+
public AssistantMessage(
74+
@Nonnull final String singleMessage, @Nullable final List<MessageToolCall> toolCalls) {
75+
this.content = new MessageContent(List.of(new TextItem(singleMessage)));
76+
this.toolCalls = toolCalls;
77+
}
78+
6679
@Nonnull
6780
@Override
6881
public ChatMessage createChatMessage() {
82+
var assistantChatMessage = AssistantChatMessage.create().role(ASSISTANT);
83+
6984
if (toolCalls != null) {
70-
return AssistantChatMessage.create().role(ASSISTANT).toolCalls(toolCalls);
85+
assistantChatMessage.setToolCalls(toolCalls);
7186
}
87+
88+
ChatMessageContent text;
7289
if (content.items().size() == 1 && content.items().get(0) instanceof TextItem textItem) {
73-
return AssistantChatMessage.create()
74-
.role(ASSISTANT)
75-
.content(ChatMessageContent.create(textItem.text()));
90+
text = ChatMessageContent.create(textItem.text());
91+
} else {
92+
val texts =
93+
content.items().stream()
94+
.filter(item -> item instanceof TextItem)
95+
.map(item -> (TextItem) item)
96+
.map(item -> TextContent.create().type(TextContent.TypeEnum.TEXT).text(item.text()))
97+
.toList();
98+
text = ChatMessageContent.create(texts);
7699
}
77-
val texts =
78-
content.items().stream()
79-
.filter(item -> item instanceof TextItem)
80-
.map(item -> (TextItem) item)
81-
.map(item -> TextContent.create().type(TextContent.TypeEnum.TEXT).text(item.text()))
82-
.toList();
83-
84-
return AssistantChatMessage.create().role(ASSISTANT).content(ChatMessageContent.create(texts));
100+
return assistantChatMessage.content(text);
85101
}
86102
}

orchestration/src/main/java/com/sap/ai/sdk/orchestration/spring/OrchestrationChatModel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ private static com.sap.ai.sdk.orchestration.Message[] toOrchestrationMessages(
133133
springToolCalls.stream()
134134
.map(OrchestrationChatModel::toOrchestrationToolCall)
135135
.toList();
136-
yield List.of(new AssistantMessage(sdkToolCalls));
136+
yield List.of(new AssistantMessage(msg.getText(), sdkToolCalls));
137137
}
138138
yield List.of(new AssistantMessage(msg.getText()));
139139
case TOOL:

0 commit comments

Comments
 (0)