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
No known key found for this signature in database
GPG Key ID: 2B51652F224037DF
1 changed files with
4 additions and
3 deletions
-
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; |
|
|
|
} |
|
|
|
|