Browse Source

AI rule node: fix wrapping in JSON object if response is not a valid JSON object

pull/13371/head
Dmytro Skarzhynets 1 year ago
parent
commit
00d32c2374
No known key found for this signature in database GPG Key ID: 2B51652F224037DF
  1. 7
      rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/ai/TbAiNode.java

7
rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/ai/TbAiNode.java

@ -115,7 +115,7 @@ public final class TbAiNode extends TbAbstractExternalNode implements TbNode {
addCallback(sendChatRequest(ctx, chatRequest), new FutureCallback<>() {
@Override
public void onSuccess(String response) {
if (!isValidJson(response)) {
if (!isValidJsonObject(response)) {
response = wrapInJsonObject(response);
}
tellSuccess(ctx, ackedMsg.transform()
@ -134,9 +134,10 @@ public final class TbAiNode extends TbAbstractExternalNode implements TbNode {
return ctx.getExternalCallExecutor().submit(() -> chatModel.chat(chatRequest).aiMessage().text());
}
private static boolean isValidJson(String jsonString) {
private static boolean isValidJsonObject(String jsonString) {
try {
return JacksonUtil.toJsonNode(jsonString) != null;
JsonNode result = JacksonUtil.toJsonNode(jsonString);
return result != null && result.isObject();
} catch (IllegalArgumentException e) {
return false;
}

Loading…
Cancel
Save