Skip to content

Commit 5864958

Browse files
committed
Fix: return String result directly instead of JSON in DefaultToolCallResultConverter
Signed-off-by: Jemin Huh <[email protected]>
1 parent dbaa608 commit 5864958

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

spring-ai-model/src/main/java/org/springframework/ai/tool/execution/DefaultToolCallResultConverter.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
* A default implementation of {@link ToolCallResultConverter}.
3636
*
3737
* @author Thomas Vitale
38+
* @author Jemin Huh
3839
* @since 1.0.0
3940
*/
4041
public final class DefaultToolCallResultConverter implements ToolCallResultConverter {
@@ -45,7 +46,11 @@ public final class DefaultToolCallResultConverter implements ToolCallResultConve
4546
public String convert(@Nullable Object result, @Nullable Type returnType) {
4647
if (returnType == Void.TYPE) {
4748
logger.debug("The tool has no return type. Converting to conventional response.");
48-
return JsonParser.toJson("Done");
49+
return "Done";
50+
}
51+
if (returnType instanceof Class<?> cls && cls.equals(String.class)) {
52+
logger.debug("Tool return type is String. Returning result as is.");
53+
return String.valueOf(result);
4954
}
5055
if (result instanceof RenderedImage) {
5156
final var buf = new ByteArrayOutputStream(1024 * 4);

spring-ai-model/src/test/java/org/springframework/ai/tool/execution/DefaultToolCallResultConverterTests.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
* Unit tests for {@link DefaultToolCallResultConverter}.
3939
*
4040
* @author Thomas Vitale
41+
* @author Jemin Huh
4142
*/
4243
class DefaultToolCallResultConverterTests {
4344

@@ -52,13 +53,13 @@ void convertWithNullReturnTypeShouldReturn() {
5253
@Test
5354
void convertVoidReturnTypeShouldReturnDoneJson() {
5455
String result = this.converter.convert(null, void.class);
55-
assertThat(result).isEqualTo("\"Done\"");
56+
assertThat(result).isEqualTo("Done");
5657
}
5758

5859
@Test
5960
void convertStringReturnTypeShouldReturnJson() {
6061
String result = this.converter.convert("test", String.class);
61-
assertThat(result).isEqualTo("\"test\"");
62+
assertThat(result).isEqualTo("test");
6263
}
6364

6465
@Test

0 commit comments

Comments
 (0)