diff --git a/server/libs/modules/components/ai/llm/open-ai/src/main/java/com/bytechef/component/ai/llm/openai/action/OpenAiChatAction.java b/server/libs/modules/components/ai/llm/open-ai/src/main/java/com/bytechef/component/ai/llm/openai/action/OpenAiChatAction.java index 4fc55ef88ec..d849468645b 100644 --- a/server/libs/modules/components/ai/llm/open-ai/src/main/java/com/bytechef/component/ai/llm/openai/action/OpenAiChatAction.java +++ b/server/libs/modules/components/ai/llm/open-ai/src/main/java/com/bytechef/component/ai/llm/openai/action/OpenAiChatAction.java @@ -130,9 +130,7 @@ public class OpenAiChatAction { private OpenAiChatAction() { } - public static Object perform( - Parameters inputParameters, Parameters connectionParameters, ActionContext actionContext) { - - return CHAT_MODEL.getResponse(inputParameters, connectionParameters, actionContext); + public static Object perform(Parameters inputParameters, Parameters connectionParameters, ActionContext context) { + return CHAT_MODEL.getResponse(inputParameters, connectionParameters, context); } } diff --git a/server/libs/modules/components/ai/llm/src/main/java/com/bytechef/component/ai/llm/ChatModel.java b/server/libs/modules/components/ai/llm/src/main/java/com/bytechef/component/ai/llm/ChatModel.java index 0131cb50285..dee5911c55d 100644 --- a/server/libs/modules/components/ai/llm/src/main/java/com/bytechef/component/ai/llm/ChatModel.java +++ b/server/libs/modules/components/ai/llm/src/main/java/com/bytechef/component/ai/llm/ChatModel.java @@ -53,18 +53,24 @@ enum Format { org.springframework.ai.chat.model.ChatModel createChatModel( Parameters inputParameters, Parameters connectionParameters, boolean responseFormatRequired); + @Nullable + default Object getResponse(Parameters inputParameters, Parameters connectionParameters, ActionContext context) { + return getResponse(inputParameters, connectionParameters, context, true, true); + } + @Nullable default Object getResponse( - Parameters inputParameters, Parameters connectionParameters, ActionContext actionContext) { + Parameters inputParameters, Parameters connectionParameters, ActionContext context, + boolean messageFormatRequired, boolean responseFormatRequired) { org.springframework.ai.chat.model.ChatModel chatModel = createChatModel( - inputParameters, connectionParameters, true); + inputParameters, connectionParameters, responseFormatRequired); List messages = ModelUtils.getMessages( - inputParameters, actionContext); + inputParameters, context, messageFormatRequired); ChatClient.ChatClientRequestSpec chatClientRequestSpec = createPrompt( - inputParameters, actionContext, chatModel); + chatModel, inputParameters, responseFormatRequired, context); ChatClient.CallResponseSpec callResponseSpec = chatClientRequestSpec .messages(messages) @@ -73,23 +79,26 @@ default Object getResponse( .build()) .call(); - return ModelUtils.getChatResponse(callResponseSpec, inputParameters, actionContext); + return ModelUtils.getChatResponse(callResponseSpec, inputParameters, responseFormatRequired, context); } private ChatClient.ChatClientRequestSpec createPrompt( - Parameters inputParameters, ActionContext actionContext, - org.springframework.ai.chat.model.ChatModel chatModel) { + org.springframework.ai.chat.model.ChatModel chatModel, Parameters inputParameters, + boolean responseFormatRequired, ActionContext context) { ChatClient chatClient = ChatClient.create(chatModel); + ResponseFormat responseFormat = ResponseFormat.TEXT; - ResponseFormat responseFormat = inputParameters.getRequiredFromPath( - RESPONSE + "." + RESPONSE_FORMAT, ResponseFormat.class); + if (responseFormatRequired) { + responseFormat = inputParameters.getRequiredFromPath( + RESPONSE + "." + RESPONSE_FORMAT, ResponseFormat.class); + } if (responseFormat.equals(ResponseFormat.TEXT)) { return chatClient.prompt(); } else { JsonSchemaStructuredOutputConverter converter = new JsonSchemaStructuredOutputConverter( - inputParameters.getFromPath(RESPONSE + "." + RESPONSE_SCHEMA, String.class), actionContext); + inputParameters.getFromPath(RESPONSE + "." + RESPONSE_SCHEMA, String.class), context); return chatClient.prompt(converter.getFormat()); } diff --git a/server/libs/modules/components/ai/llm/src/main/java/com/bytechef/component/ai/llm/util/ModelUtils.java b/server/libs/modules/components/ai/llm/src/main/java/com/bytechef/component/ai/llm/util/ModelUtils.java index d6aa8c01ffb..d867fefbdc1 100644 --- a/server/libs/modules/components/ai/llm/src/main/java/com/bytechef/component/ai/llm/util/ModelUtils.java +++ b/server/libs/modules/components/ai/llm/src/main/java/com/bytechef/component/ai/llm/util/ModelUtils.java @@ -49,7 +49,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -import org.springframework.ai.chat.client.ChatClient; +import org.springframework.ai.chat.client.ChatClient.CallResponseSpec; import org.springframework.ai.chat.messages.AssistantMessage; import org.springframework.ai.chat.messages.Message; import org.springframework.ai.chat.messages.SystemMessage; @@ -77,11 +77,22 @@ private ModelUtils() { @SuppressFBWarnings("NP") @Nullable public static Object getChatResponse( - ChatClient.CallResponseSpec callResponseSpec, Parameters parameters, Context context) { + CallResponseSpec callResponseSpec, Parameters parameters, Context context) { + + return getChatResponse(callResponseSpec, parameters, true, context); + } + + @SuppressFBWarnings("NP") + @Nullable + public static Object getChatResponse( + CallResponseSpec callResponseSpec, Parameters parameters, boolean responseFormatRequired, Context context) { Object response = null; - ResponseFormat responseFormat = parameters.getRequiredFromPath( - RESPONSE + "." + RESPONSE_FORMAT, ResponseFormat.class); + ResponseFormat responseFormat = TEXT; + + if (responseFormatRequired) { + responseFormat = parameters.getRequiredFromPath(RESPONSE + "." + RESPONSE_FORMAT, ResponseFormat.class); + } if (responseFormat == TEXT) { try { @@ -121,24 +132,34 @@ public static List> getEnumOptions(Map map) { } public static List getMessages(Parameters inputParameters, ActionContext actionContext) { + return getMessages(inputParameters, actionContext, true); + } + + public static List getMessages( + Parameters inputParameters, ActionContext actionContext, boolean messageFormatRequired) { + List chatModelMessages = new ArrayList<>(); - String format = inputParameters.getRequiredString(FORMAT); + if (messageFormatRequired) { + String format = inputParameters.getRequiredString(FORMAT); - if (format.equals(Format.SIMPLE.name())) { - String userPrompt = inputParameters.getRequiredString(USER_PROMPT); + if (format.equals(Format.SIMPLE.name())) { + String userPrompt = inputParameters.getRequiredString(USER_PROMPT); - ChatModel.Message userMessage = new ChatModel.Message( - userPrompt, inputParameters.getList(ATTACHMENTS, FileEntry.class), Role.USER); + ChatModel.Message userMessage = new ChatModel.Message( + userPrompt, inputParameters.getList(ATTACHMENTS, FileEntry.class), Role.USER); - chatModelMessages.add(userMessage); + chatModelMessages.add(userMessage); - String systemPrompt = inputParameters.getString(SYSTEM_PROMPT); + String systemPrompt = inputParameters.getString(SYSTEM_PROMPT); - if (systemPrompt != null && !systemPrompt.isEmpty()) { - ChatModel.Message systeMMessage = new ChatModel.Message(systemPrompt, null, Role.SYSTEM); + if (systemPrompt != null && !systemPrompt.isEmpty()) { + ChatModel.Message systeMMessage = new ChatModel.Message(systemPrompt, null, Role.SYSTEM); - chatModelMessages.add(systeMMessage); + chatModelMessages.add(systeMMessage); + } + } else { + chatModelMessages = inputParameters.getList(MESSAGES, new TypeReference<>() {}); } } else { chatModelMessages = inputParameters.getList(MESSAGES, new TypeReference<>() {}); diff --git a/server/libs/modules/components/ai/llm/vertex/gemini/src/main/java/com/bytechef/component/ai/llm/vertex/gemini/action/VertexGeminiChatAction.java b/server/libs/modules/components/ai/llm/vertex/gemini/src/main/java/com/bytechef/component/ai/llm/vertex/gemini/action/VertexGeminiChatAction.java index d950a24b09c..39a23490fb4 100644 --- a/server/libs/modules/components/ai/llm/vertex/gemini/src/main/java/com/bytechef/component/ai/llm/vertex/gemini/action/VertexGeminiChatAction.java +++ b/server/libs/modules/components/ai/llm/vertex/gemini/src/main/java/com/bytechef/component/ai/llm/vertex/gemini/action/VertexGeminiChatAction.java @@ -107,9 +107,7 @@ public class VertexGeminiChatAction { private VertexGeminiChatAction() { } - public static Object perform( - Parameters inputParameters, Parameters connectionParameters, ActionContext context) { - + public static Object perform(Parameters inputParameters, Parameters connectionParameters, ActionContext context) { return CHAT_MODEL.getResponse(inputParameters, connectionParameters, context); } } diff --git a/server/libs/modules/components/ai/universal/universal-text/src/main/java/com/bytechef/component/ai/universal/text/action/ClassifyTextAction.java b/server/libs/modules/components/ai/universal/universal-text/src/main/java/com/bytechef/component/ai/universal/text/action/ClassifyTextAction.java index ccce472367a..98ea0ae0ac1 100644 --- a/server/libs/modules/components/ai/universal/universal-text/src/main/java/com/bytechef/component/ai/universal/text/action/ClassifyTextAction.java +++ b/server/libs/modules/components/ai/universal/universal-text/src/main/java/com/bytechef/component/ai/universal/text/action/ClassifyTextAction.java @@ -32,6 +32,8 @@ import static com.bytechef.component.definition.ComponentDsl.action; import static com.bytechef.component.definition.ComponentDsl.array; import static com.bytechef.component.definition.ComponentDsl.object; +import static com.bytechef.component.definition.ComponentDsl.outputSchema; +import static com.bytechef.component.definition.ComponentDsl.sampleOutput; import static com.bytechef.component.definition.ComponentDsl.string; import com.bytechef.component.ai.universal.text.action.definition.AiTextActionDefinition; @@ -84,7 +86,11 @@ private AiTextActionDefinition getActionDefinition( .additionalProperties(string()), MAX_TOKENS_PROPERTY, TEMPERATURE_PROPERTY) - .output(), + .output( + outputSchema( + string() + .description("The chosen category.")), + sampleOutput("sample category")), provider, this, propertyService); } diff --git a/server/libs/modules/components/ai/universal/universal-text/src/main/java/com/bytechef/component/ai/universal/text/action/GenerateTextAction.java b/server/libs/modules/components/ai/universal/universal-text/src/main/java/com/bytechef/component/ai/universal/text/action/GenerateTextAction.java index f03651229b7..1c2dd3f8158 100644 --- a/server/libs/modules/components/ai/universal/universal-text/src/main/java/com/bytechef/component/ai/universal/text/action/GenerateTextAction.java +++ b/server/libs/modules/components/ai/universal/universal-text/src/main/java/com/bytechef/component/ai/universal/text/action/GenerateTextAction.java @@ -68,7 +68,11 @@ public GenerateTextAction(ApplicationProperties.Ai.Provider provider, PropertySe .required(true), MAX_TOKENS_PROPERTY, TEMPERATURE_PROPERTY) - .output(outputSchema(string().description("Generated text.")), sampleOutput("Generated text.")), + .output( + outputSchema( + string() + .description("Generated text.")), + sampleOutput("sample generated text.")), provider, this, propertyService); } diff --git a/server/libs/modules/components/ai/universal/universal-text/src/main/java/com/bytechef/component/ai/universal/text/action/ScoreAction.java b/server/libs/modules/components/ai/universal/universal-text/src/main/java/com/bytechef/component/ai/universal/text/action/ScoreAction.java index e280732ceb1..aff7df87cd6 100644 --- a/server/libs/modules/components/ai/universal/universal-text/src/main/java/com/bytechef/component/ai/universal/text/action/ScoreAction.java +++ b/server/libs/modules/components/ai/universal/universal-text/src/main/java/com/bytechef/component/ai/universal/text/action/ScoreAction.java @@ -39,11 +39,13 @@ import static com.bytechef.component.definition.ComponentDsl.object; import static com.bytechef.component.definition.ComponentDsl.string; +import com.bytechef.component.ai.llm.ChatModel; import com.bytechef.component.ai.universal.text.action.definition.AiTextActionDefinition; import com.bytechef.component.ai.universal.text.constant.AiTextConstants; import com.bytechef.component.ai.universal.text.util.AiTextUtils; import com.bytechef.component.definition.Parameters; import com.bytechef.config.ApplicationProperties; +import com.bytechef.definition.BaseOutputDefinition.OutputResponse; import com.bytechef.platform.component.definition.ParametersFactory; import com.bytechef.platform.configuration.service.PropertyService; import java.util.HashMap; @@ -57,6 +59,36 @@ public class ScoreAction implements AiTextAction { public final AiTextActionDefinition actionDefinition; + private static final String RESPONSE_SCHEMA = """ + { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "CriteriaList", + "type": "object", + "properties": { + "criteria": { + "type": "array", + "items": { + "type": "object", + "properties": { + "criteriaName": { + "type": "string", + "description": "Name of the evaluation criteria" + }, + "criteriaValue": { + "type": "number", + "description": "Numeric value or score for the criteria" + } + }, + "required": ["criteriaName", "criteriaValue"], + "additionalProperties": false + } + } + }, + "required": ["criteria"], + "additionalProperties": false + } + """; + public ScoreAction(ApplicationProperties.Ai.Provider provider, PropertyService propertyService) { this.actionDefinition = getActionDefinition(provider, propertyService); } @@ -103,7 +135,9 @@ private AiTextActionDefinition getActionDefinition( .required(true), MAX_TOKENS_PROPERTY, TEMPERATURE_PROPERTY) - .output(), + .output( + (inputParameters, connectionParameters, context) -> OutputResponse.of( + context.outputSchema(outputSchema -> outputSchema.getOutputSchema(RESPONSE_SCHEMA)))), provider, this, propertyService); } @@ -150,6 +184,11 @@ public Parameters createParameters(Parameters inputParameters) { Map.of("content", systemPrompt, ROLE, SYSTEM.name()), Map.of("content", userBuilder.toString(), ROLE, USER.name()))); modelInputParametersMap.put("model", inputParameters.getString(MODEL)); + modelInputParametersMap.put( + "response", + Map.of( + "responseFormat", ChatModel.ResponseFormat.JSON, + "responseSchema", RESPONSE_SCHEMA)); return ParametersFactory.createParameters(modelInputParametersMap); } diff --git a/server/libs/modules/components/ai/universal/universal-text/src/main/java/com/bytechef/component/ai/universal/text/action/SentimentAction.java b/server/libs/modules/components/ai/universal/universal-text/src/main/java/com/bytechef/component/ai/universal/text/action/SentimentAction.java index a241a500399..95c8bc68159 100644 --- a/server/libs/modules/components/ai/universal/universal-text/src/main/java/com/bytechef/component/ai/universal/text/action/SentimentAction.java +++ b/server/libs/modules/components/ai/universal/universal-text/src/main/java/com/bytechef/component/ai/universal/text/action/SentimentAction.java @@ -28,6 +28,8 @@ import static com.bytechef.component.ai.universal.text.constant.AiTextConstants.PROVIDER_PROPERTY; import static com.bytechef.component.ai.universal.text.constant.AiTextConstants.TEXT; import static com.bytechef.component.definition.ComponentDsl.action; +import static com.bytechef.component.definition.ComponentDsl.outputSchema; +import static com.bytechef.component.definition.ComponentDsl.sampleOutput; import static com.bytechef.component.definition.ComponentDsl.string; import com.bytechef.component.ai.universal.text.action.definition.AiTextActionDefinition; @@ -69,7 +71,11 @@ private AiTextActionDefinition getActionDefinition( .required(true), MAX_TOKENS_PROPERTY, TEMPERATURE_PROPERTY) - .output(), + .output( + outputSchema( + string() + .description("The chosen category.")), + sampleOutput("sample category")), provider, this, propertyService); } diff --git a/server/libs/modules/components/ai/universal/universal-text/src/main/java/com/bytechef/component/ai/universal/text/action/SimilaritySearchAction.java b/server/libs/modules/components/ai/universal/universal-text/src/main/java/com/bytechef/component/ai/universal/text/action/SimilaritySearchAction.java index 92430ee339d..d210401c53a 100644 --- a/server/libs/modules/components/ai/universal/universal-text/src/main/java/com/bytechef/component/ai/universal/text/action/SimilaritySearchAction.java +++ b/server/libs/modules/components/ai/universal/universal-text/src/main/java/com/bytechef/component/ai/universal/text/action/SimilaritySearchAction.java @@ -34,10 +34,12 @@ import static com.bytechef.component.definition.ComponentDsl.integer; import static com.bytechef.component.definition.ComponentDsl.string; +import com.bytechef.component.ai.llm.ChatModel; import com.bytechef.component.ai.universal.text.action.definition.AiTextActionDefinition; import com.bytechef.component.ai.universal.text.constant.AiTextConstants; import com.bytechef.component.definition.Parameters; import com.bytechef.config.ApplicationProperties; +import com.bytechef.definition.BaseOutputDefinition; import com.bytechef.platform.component.definition.ParametersFactory; import com.bytechef.platform.configuration.service.PropertyService; import java.util.HashMap; @@ -51,6 +53,36 @@ public class SimilaritySearchAction implements AiTextAction { public final AiTextActionDefinition actionDefinition; + private static final String RESPONSE_SCHEMA = """ + { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "ResultObject", + "type": "object", + "properties": { + "result": { + "type": "array", + "items": { + "type": "object", + "properties": { + "chunk": { + "type": "string", + "description": "Text content of the chunk" + }, + "match_score": { + "type": "number", + "description": "Similarity or relevance score of the chunk" + } + }, + "required": ["chunk", "match_score"], + "additionalProperties": false + } + } + }, + "required": ["result"], + "additionalProperties": false + } + """; + public SimilaritySearchAction( ApplicationProperties.Ai.Provider provider, PropertyService propertyService) { @@ -85,7 +117,9 @@ public SimilaritySearchAction( .defaultValue(5), MAX_TOKENS_PROPERTY, TEMPERATURE_PROPERTY) - .output(), + .output( + (inputParameters, connectionParameters, context) -> BaseOutputDefinition.OutputResponse.of( + context.outputSchema(outputSchema -> outputSchema.getOutputSchema(RESPONSE_SCHEMA)))), provider, this, propertyService); } @@ -100,11 +134,17 @@ public Parameters createParameters(Parameters inputParameters) { + "N: " + inputParameters.getInteger(NUM_RESULTS) + "\n" + "C: " + inputParameters.getInteger(CHUNK_SIZE); - modelInputParametersMap.put("messages", + modelInputParametersMap.put( + "messages", List.of( Map.of("content", systemPrompt, ROLE, SYSTEM.name()), Map.of("content", userBuilder, ROLE, USER.name()))); modelInputParametersMap.put("model", inputParameters.getString(MODEL)); + modelInputParametersMap.put( + "response", + Map.of( + "responseFormat", ChatModel.ResponseFormat.JSON, + "responseSchema", RESPONSE_SCHEMA)); return ParametersFactory.createParameters(modelInputParametersMap); } diff --git a/server/libs/modules/components/ai/universal/universal-text/src/main/java/com/bytechef/component/ai/universal/text/action/SummarizeTextAction.java b/server/libs/modules/components/ai/universal/universal-text/src/main/java/com/bytechef/component/ai/universal/text/action/SummarizeTextAction.java index a4182b6646b..98a5ea380e4 100644 --- a/server/libs/modules/components/ai/universal/universal-text/src/main/java/com/bytechef/component/ai/universal/text/action/SummarizeTextAction.java +++ b/server/libs/modules/components/ai/universal/universal-text/src/main/java/com/bytechef/component/ai/universal/text/action/SummarizeTextAction.java @@ -36,6 +36,8 @@ import static com.bytechef.component.ai.universal.text.constant.AiTextConstants.TEXT; import static com.bytechef.component.definition.ComponentDsl.action; import static com.bytechef.component.definition.ComponentDsl.option; +import static com.bytechef.component.definition.ComponentDsl.outputSchema; +import static com.bytechef.component.definition.ComponentDsl.sampleOutput; import static com.bytechef.component.definition.ComponentDsl.string; import com.bytechef.component.ai.universal.text.action.definition.AiTextActionDefinition; @@ -97,7 +99,11 @@ public SummarizeTextAction( .required(true), MAX_TOKENS_PROPERTY, TEMPERATURE_PROPERTY) - .output(), + .output( + outputSchema( + string() + .description("The summarized text.")), + sampleOutput("sample summarized text")), provider, this, propertyService); } diff --git a/server/libs/modules/components/ai/universal/universal-text/src/main/java/com/bytechef/component/ai/universal/text/action/definition/AiTextActionDefinition.java b/server/libs/modules/components/ai/universal/universal-text/src/main/java/com/bytechef/component/ai/universal/text/action/definition/AiTextActionDefinition.java index bd9969f2d94..b9f2e81574e 100644 --- a/server/libs/modules/components/ai/universal/universal-text/src/main/java/com/bytechef/component/ai/universal/text/action/definition/AiTextActionDefinition.java +++ b/server/libs/modules/components/ai/universal/universal-text/src/main/java/com/bytechef/component/ai/universal/text/action/definition/AiTextActionDefinition.java @@ -93,31 +93,27 @@ public Optional getPerform() { return Optional.of((SingleConnectionPerformFunction) this::perform); } - protected String perform( - Parameters inputParameters, Parameters connectionParameter, ActionContext context) { - + protected Object perform(Parameters inputParameters, Parameters connectionParameter, ActionContext context) { Map modelConnectionParametersMap = new HashMap<>(); - List activeProviderKeys = propertyService.getProperties( - Arrays.stream(Provider.values()) - .map(Provider::getKey) - .toList(), - Scope.PLATFORM, null) + List providers = Arrays.stream(Provider.values()) + .map(Provider::getKey) + .toList(); + + List activeProviderKeys = propertyService.getProperties(providers, Scope.PLATFORM, null) .stream() .filter(property -> property.getValue() != null && property.isEnabled()) .map(Property::getKey) .toList(); - Parameters modelInputParameters = aiTextAction.createParameters(inputParameters); - ChatModelResult chatModelResult = getChatModel(inputParameters, activeProviderKeys); + Parameters modelInputParameters = aiTextAction.createParameters(inputParameters); modelConnectionParametersMap.put(TOKEN, chatModelResult.token); - Object response = chatModelResult.chatModel.getResponse( - modelInputParameters, ParametersFactory.createParameters(modelConnectionParametersMap), context); - - return response != null ? response.toString() : null; + return chatModelResult.chatModel.getResponse( + modelInputParameters, ParametersFactory.createParameters(modelConnectionParametersMap), context, false, + modelInputParameters.containsPath("response.responseFormat")); } private String getAiProviderToken(String key, List activeProviderKeys) { diff --git a/server/libs/modules/components/ai/universal/universal-text/src/test/resources/definition/ai-text_v1.json b/server/libs/modules/components/ai/universal/universal-text/src/test/resources/definition/ai-text_v1.json index d2bb4ebfb48..283cede6921 100644 --- a/server/libs/modules/components/ai/universal/universal-text/src/test/resources/definition/ai-text_v1.json +++ b/server/libs/modules/components/ai/universal/universal-text/src/test/resources/definition/ai-text_v1.json @@ -8,9 +8,57 @@ "name": "classifyText", "outputDefinition": { "output": null, - "outputResponse": null, - "outputSchema": null, - "sampleOutput": null + "outputResponse": { + "outputSchema": { + "advancedOption": null, + "controlType": "TEXT", + "defaultValue": null, + "description": "The chosen category.", + "displayCondition": null, + "exampleValue": null, + "expressionEnabled": null, + "hidden": null, + "label": null, + "languageId": null, + "maxLength": null, + "metadata": { }, + "minLength": null, + "name": null, + "options": null, + "optionsDataSource": null, + "optionsLoadedDynamically": null, + "placeholder": null, + "regex": null, + "required": null, + "type": "STRING" + }, + "placeholder": null, + "sampleOutput": "sample category" + }, + "outputSchema": { + "advancedOption": null, + "controlType": "TEXT", + "defaultValue": null, + "description": "The chosen category.", + "displayCondition": null, + "exampleValue": null, + "expressionEnabled": null, + "hidden": null, + "label": null, + "languageId": null, + "maxLength": null, + "metadata": { }, + "minLength": null, + "name": null, + "options": null, + "optionsDataSource": null, + "optionsLoadedDynamically": null, + "placeholder": null, + "regex": null, + "required": null, + "type": "STRING" + }, + "sampleOutput": "sample category" }, "perform": { }, "processErrorResponse": null, @@ -268,9 +316,57 @@ "name": "sentimentAnalysis", "outputDefinition": { "output": null, - "outputResponse": null, - "outputSchema": null, - "sampleOutput": null + "outputResponse": { + "outputSchema": { + "advancedOption": null, + "controlType": "TEXT", + "defaultValue": null, + "description": "The chosen category.", + "displayCondition": null, + "exampleValue": null, + "expressionEnabled": null, + "hidden": null, + "label": null, + "languageId": null, + "maxLength": null, + "metadata": { }, + "minLength": null, + "name": null, + "options": null, + "optionsDataSource": null, + "optionsLoadedDynamically": null, + "placeholder": null, + "regex": null, + "required": null, + "type": "STRING" + }, + "placeholder": null, + "sampleOutput": "sample category" + }, + "outputSchema": { + "advancedOption": null, + "controlType": "TEXT", + "defaultValue": null, + "description": "The chosen category.", + "displayCondition": null, + "exampleValue": null, + "expressionEnabled": null, + "hidden": null, + "label": null, + "languageId": null, + "maxLength": null, + "metadata": { }, + "minLength": null, + "name": null, + "options": null, + "optionsDataSource": null, + "optionsLoadedDynamically": null, + "placeholder": null, + "regex": null, + "required": null, + "type": "STRING" + }, + "sampleOutput": "sample category" }, "perform": { }, "processErrorResponse": null, @@ -442,7 +538,7 @@ "metadata": null, "name": "score", "outputDefinition": { - "output": null, + "output": { }, "outputResponse": null, "outputSchema": null, "sampleOutput": null @@ -749,9 +845,57 @@ "name": "summarizeText", "outputDefinition": { "output": null, - "outputResponse": null, - "outputSchema": null, - "sampleOutput": null + "outputResponse": { + "outputSchema": { + "advancedOption": null, + "controlType": "TEXT", + "defaultValue": null, + "description": "The summarized text.", + "displayCondition": null, + "exampleValue": null, + "expressionEnabled": null, + "hidden": null, + "label": null, + "languageId": null, + "maxLength": null, + "metadata": { }, + "minLength": null, + "name": null, + "options": null, + "optionsDataSource": null, + "optionsLoadedDynamically": null, + "placeholder": null, + "regex": null, + "required": null, + "type": "STRING" + }, + "placeholder": null, + "sampleOutput": "sample summarized text" + }, + "outputSchema": { + "advancedOption": null, + "controlType": "TEXT", + "defaultValue": null, + "description": "The summarized text.", + "displayCondition": null, + "exampleValue": null, + "expressionEnabled": null, + "hidden": null, + "label": null, + "languageId": null, + "maxLength": null, + "metadata": { }, + "minLength": null, + "name": null, + "options": null, + "optionsDataSource": null, + "optionsLoadedDynamically": null, + "placeholder": null, + "regex": null, + "required": null, + "type": "STRING" + }, + "sampleOutput": "sample summarized text" }, "perform": { }, "processErrorResponse": null, @@ -987,7 +1131,7 @@ "metadata": null, "name": "similaritySearch", "outputDefinition": { - "output": null, + "output": { }, "outputResponse": null, "outputSchema": null, "sampleOutput": null @@ -1248,7 +1392,7 @@ "type": "STRING" }, "placeholder": null, - "sampleOutput": "Generated text." + "sampleOutput": "sample generated text." }, "outputSchema": { "advancedOption": null, @@ -1273,7 +1417,7 @@ "required": null, "type": "STRING" }, - "sampleOutput": "Generated text." + "sampleOutput": "sample generated text." }, "perform": { }, "processErrorResponse": null,