2
0

Remove ZemanticAI block

Closes #1656, closes #1652
This commit is contained in:
Baptiste Arnaud
2024-07-22 17:24:02 +02:00
parent 71d09cdf7c
commit ec2a53fac1
50 changed files with 5 additions and 1821 deletions

View File

@@ -1,47 +0,0 @@
import { Select } from '@/components/inputs/Select'
import { useTypebot } from '@/features/editor/providers/TypebotProvider'
import { useWorkspace } from '@/features/workspace/WorkspaceProvider'
import { useToast } from '@/hooks/useToast'
import { trpc } from '@/lib/trpc'
type Props = {
credentialsId: string
blockId: string
defaultValue: string
onChange: (projectId: string | undefined) => void
}
export const ProjectsDropdown = ({
defaultValue,
onChange,
credentialsId,
}: Props) => {
const { typebot } = useTypebot()
const { workspace } = useWorkspace()
const { showToast } = useToast()
const { data } = trpc.zemanticAI.listProjects.useQuery(
{
credentialsId,
workspaceId: workspace?.id as string,
},
{
enabled: !!typebot && !!workspace,
onError: (error) => {
showToast({
description: error.message,
status: 'error',
})
},
}
)
return (
<Select
items={data?.projects as { label: string; value: string }[]}
selectedItem={defaultValue}
onSelect={onChange}
placeholder="Select a project"
/>
)
}

View File

@@ -1,44 +0,0 @@
import { DropdownList } from '@/components/DropdownList'
import { VariableSearchInput } from '@/components/inputs/VariableSearchInput'
import { TableListItemProps } from '@/components/TableList'
import { Stack } from '@chakra-ui/react'
import { Variable, ZemanticAiBlock } from '@typebot.io/schemas'
import {
defaultZemanticAiResponseMappingItem,
searchResponseValues,
} from '@typebot.io/schemas/features/blocks/integrations/zemanticAi/constants'
type Props = TableListItemProps<
NonNullable<
NonNullable<ZemanticAiBlock['options']>['responseMapping']
>[number]
>
export const SearchResponseItem = ({ item, onItemChange }: Props) => {
const changeValueToExtract = (
valueToExtract: (typeof searchResponseValues)[number]
) => {
onItemChange({ ...item, valueToExtract })
}
const changeVariableId = (variable: Pick<Variable, 'id'> | undefined) => {
onItemChange({ ...item, variableId: variable ? variable.id : undefined })
}
return (
<Stack p="4" rounded="md" flex="1" borderWidth="1px">
<DropdownList
currentItem={
item.valueToExtract ??
defaultZemanticAiResponseMappingItem.valueToExtract
}
items={searchResponseValues}
onItemSelect={changeValueToExtract}
/>
<VariableSearchInput
onSelectVariable={changeVariableId}
initialVariableId={item.variableId}
/>
</Stack>
)
}

View File

@@ -1,21 +0,0 @@
import { Icon, IconProps } from '@chakra-ui/react'
export const ZemanticAiLogo = (props: IconProps) => (
<Icon viewBox="0 0 24 24" {...props}>
<g transform="matrix(.049281 0 0 .064343 -.27105 -3.4424)">
<path
d="m99.5 205.5v221h-94v-373h94v152z"
fill="#8771b1"
opacity=".991"
/>
<path
d="m284.5 426.5v-221-152h94v373h-94z"
fill="#f05b4e"
opacity=".99"
/>
<path d="m99.5 205.5h93v221h-93v-221z" fill="#ec9896" />
<path d="m192.5 205.5h92v221h-92v-221z" fill="#efe894" />
<path d="m398.5 298.5h94v128h-94v-128z" fill="#46bb91" opacity=".989" />
</g>
</Icon>
)

View File

@@ -1,37 +0,0 @@
import React from 'react'
import { Stack, Text } from '@chakra-ui/react'
import { useTypebot } from '@/features/editor/providers/TypebotProvider'
import { SetVariableLabel } from '@/components/SetVariableLabel'
import { ZemanticAiBlock } from '@typebot.io/schemas'
type Props = {
options: ZemanticAiBlock['options']
}
export const ZemanticAiNodeBody = ({
options: { query, projectId, responseMapping } = {},
}: Props) => {
const { typebot } = useTypebot()
return (
<Stack>
<Text
color={query && projectId ? 'currentcolor' : 'gray.500'}
noOfLines={1}
>
{query && projectId ? `Ask: ${query}` : 'Configure...'}
</Text>
{typebot &&
responseMapping
?.map((mapping) => mapping.variableId)
.map((variableId, idx) =>
variableId ? (
<SetVariableLabel
key={variableId + idx}
variables={typebot.variables}
variableId={variableId}
/>
) : null
)}
</Stack>
)
}

View File

@@ -1,148 +0,0 @@
import { TextInput, Textarea, NumberInput } from '@/components/inputs'
import {
Accordion,
AccordionButton,
AccordionIcon,
AccordionItem,
AccordionPanel,
Stack,
Text,
} from '@chakra-ui/react'
import { isEmpty } from '@typebot.io/lib'
import { ZemanticAiBlock } from '@typebot.io/schemas'
import { ProjectsDropdown } from './ProjectsDropdown'
import { SearchResponseItem } from './SearchResponseItem'
import { TableList } from '@/components/TableList'
type Props = {
block: ZemanticAiBlock
onOptionsChange: (options: ZemanticAiBlock['options']) => void
}
export const ZemanticAiSettings = ({
block: { id: blockId, options },
onOptionsChange,
}: Props) => {
const updateProjectId = (projectId: string | undefined) => {
onOptionsChange({
...options,
projectId: isEmpty(projectId) ? undefined : projectId,
})
}
const updateQuery = (query: string) => {
onOptionsChange({
...options,
query: isEmpty(query) ? undefined : query,
})
}
const updateMaxResults = (
maxResults: number | `{{${string}}}` | undefined
) => {
onOptionsChange({
...options,
maxResults: maxResults as number,
})
}
const updateSystemPrompt = (systemPrompt: string) => {
onOptionsChange({
...options,
systemPrompt: isEmpty(systemPrompt) ? undefined : systemPrompt,
})
}
const updatePrompt = (prompt: string) => {
onOptionsChange({
...options,
prompt: isEmpty(prompt) ? undefined : prompt,
})
}
const updateResponseMapping = (
responseMapping: NonNullable<ZemanticAiBlock['options']>['responseMapping']
) => {
onOptionsChange({
...options,
responseMapping,
})
}
return (
<Stack spacing={4}>
{options?.credentialsId && (
<>
<ProjectsDropdown
credentialsId={options?.credentialsId as string}
defaultValue={(options?.projectId as string) ?? ''}
onChange={updateProjectId}
blockId={blockId as string}
/>
<TextInput
label="Query:"
moreInfoTooltip="The question you want to ask or search against the documents in the project."
defaultValue={options?.query ?? ''}
onChange={updateQuery}
withVariableButton={true}
placeholder="Content"
/>
<NumberInput
label="Max Results:"
moreInfoTooltip="The maximum number of document chunk results to return from your search."
direction="column"
defaultValue={options?.maxResults}
onValueChange={updateMaxResults}
placeholder="i.e. 3"
w="full"
/>
<Accordion allowMultiple={true}>
<AccordionItem>
<AccordionButton>
<Text w="full" textAlign="left">
Advanced settings
</Text>
<AccordionIcon />
</AccordionButton>
<AccordionPanel pb={4} as={Stack} spacing={6}>
<Textarea
label="System Prompt:"
moreInfoTooltip="System prompt to send to the summarization LLM. This is prepended to the prompt and helps guide system behavior."
defaultValue={options?.systemPrompt ?? ''}
onChange={updateSystemPrompt}
placeholder="System Prompt"
withVariableButton={true}
/>
<Textarea
label="Prompt:"
moreInfoTooltip="Prompt to send to the summarization LLM."
defaultValue={options?.prompt ?? ''}
onChange={updatePrompt}
placeholder="Prompt"
withVariableButton={true}
/>
</AccordionPanel>
</AccordionItem>
<AccordionItem>
<AccordionButton>
<Text w="full" textAlign="left">
Save answer
</Text>
<AccordionIcon />
</AccordionButton>
<AccordionPanel pt="4">
<TableList
initialItems={options.responseMapping ?? []}
onItemsChange={updateResponseMapping}
newItemDefaultProps={{ valueToExtract: 'Summary' }}
>
{(props) => <SearchResponseItem {...props} />}
</TableList>
</AccordionPanel>
</AccordionItem>
</Accordion>
</>
)}
</Stack>
)
}

View File

@@ -1,87 +0,0 @@
import prisma from '@typebot.io/lib/prisma'
import { authenticatedProcedure } from '@/helpers/server/trpc'
import { TRPCError } from '@trpc/server'
import { z } from 'zod'
import { isReadWorkspaceFobidden } from '@/features/workspace/helpers/isReadWorkspaceFobidden'
import { decrypt } from '@typebot.io/lib/api/encryption/decrypt'
import { ZemanticAiCredentials } from '@typebot.io/schemas/features/blocks/integrations/zemanticAi'
import ky from 'ky'
export const listProjects = authenticatedProcedure
.input(
z.object({
credentialsId: z.string(),
workspaceId: z.string(),
})
)
.query(async ({ input: { credentialsId, workspaceId }, ctx: { user } }) => {
const workspace = await prisma.workspace.findFirst({
where: { id: workspaceId },
select: {
members: {
select: {
userId: true,
},
},
credentials: {
where: {
id: credentialsId,
},
select: {
id: true,
data: true,
iv: true,
},
},
},
})
if (!workspace || isReadWorkspaceFobidden(workspace, user))
throw new TRPCError({
code: 'NOT_FOUND',
message: 'No workspace found',
})
const credentials = workspace.credentials.at(0)
if (!credentials)
throw new TRPCError({
code: 'NOT_FOUND',
message: 'No credentials found',
})
const data = (await decrypt(
credentials.data,
credentials.iv
)) as ZemanticAiCredentials['data']
const url = 'https://api.zemantic.ai/v1/projects'
try {
const response = await ky
.get(url, {
headers: {
Authorization: `Bearer ${data.apiKey}`,
},
})
.json()
const projectsData = response as {
id: string
name: string
}[]
return {
projects: projectsData.map((project) => ({
label: project.name,
value: project.id,
})),
}
} catch (e) {
throw new TRPCError({
code: 'INTERNAL_SERVER_ERROR',
message: 'Could not list projects',
cause: e,
})
}
})

View File

@@ -1,6 +0,0 @@
import { router } from '@/helpers/server/trpc'
import { listProjects } from './listProjects'
export const zemanticAiRouter = router({
listProjects,
})

View File

@@ -62,8 +62,6 @@ const CredentialsCreateModalContent = ({
onClose={onClose}
/>
)
case 'zemanticAi':
return null
default:
return (
<CreateForgedCredentialsModalContent

View File

@@ -211,8 +211,6 @@ const CredentialsIcon = ({
return <StripeLogo rounded="sm" {...props} />
case 'whatsApp':
return <WhatsAppLogo {...props} />
case 'zemanticAi':
return null
default:
return <BlockIcon type={type} {...props} />
}
@@ -247,8 +245,6 @@ const CredentialsLabel = ({
WhatsApp
</Text>
)
case 'zemanticAi':
return null
default:
return <BlockLabel type={type} {...props} />
}

View File

@@ -57,7 +57,6 @@ const CredentialsUpdateModalContent = ({
onUpdate={onSubmit}
/>
)
case 'zemanticAi':
case 'whatsApp':
return null
default:

View File

@@ -31,7 +31,6 @@ import { TypebotLinkIcon } from '@/features/blocks/logic/typebotLink/components/
import { AbTestIcon } from '@/features/blocks/logic/abTest/components/AbTestIcon'
import { PictureChoiceIcon } from '@/features/blocks/inputs/pictureChoice/components/PictureChoiceIcon'
import { PixelLogo } from '@/features/blocks/integrations/pixel/components/PixelLogo'
import { ZemanticAiLogo } from '@/features/blocks/integrations/zemanticAi/ZemanticAiLogo'
import { BubbleBlockType } from '@typebot.io/schemas/features/blocks/bubbles/constants'
import { InputBlockType } from '@typebot.io/schemas/features/blocks/inputs/constants'
import { IntegrationBlockType } from '@typebot.io/schemas/features/blocks/integrations/constants'
@@ -117,8 +116,6 @@ export const BlockIcon = ({ type, ...props }: BlockIconProps): JSX.Element => {
return <ChatwootLogo {...props} />
case IntegrationBlockType.PIXEL:
return <PixelLogo {...props} />
case IntegrationBlockType.ZEMANTIC_AI:
return <ZemanticAiLogo {...props} />
case 'start':
return <FlagIcon {...props} />
case IntegrationBlockType.OPEN_AI:

View File

@@ -219,12 +219,6 @@ export const BlockLabel = ({ type, ...props }: Props): JSX.Element => {
{t('editor.sidebarBlock.pixel.label')}
</Text>
)
case IntegrationBlockType.ZEMANTIC_AI:
return (
<Text fontSize="sm" {...props}>
{t('editor.sidebarBlock.zemanticAi.label')}
</Text>
)
default:
return <ForgedBlockLabel type={type} {...props} />
}

View File

@@ -27,10 +27,7 @@ import { useDebouncedCallback } from 'use-debounce'
import { forgedBlockIds } from '@typebot.io/forge-repository/constants'
// Integration blocks migrated to forged blocks
const legacyIntegrationBlocks = [
IntegrationBlockType.OPEN_AI,
IntegrationBlockType.ZEMANTIC_AI,
]
const legacyIntegrationBlocks = [IntegrationBlockType.OPEN_AI]
export const BlocksSideBar = () => {
const { t } = useTranslate()

View File

@@ -16,7 +16,7 @@ import {
import React, { useState } from 'react'
import { ZodObjectLayout } from '../zodLayouts/ZodObjectLayout'
import { ForgedBlockDefinition } from '@typebot.io/forge-repository/types'
import { CredentialsWithoutLegacy } from '@typebot.io/schemas'
import { Credentials } from '@typebot.io/schemas'
type Props = {
blockDef: ForgedBlockDefinition
@@ -91,7 +91,7 @@ export const CreateForgedCredentialsModalContent = ({
workspaceId: workspace.id,
name,
data,
} as CredentialsWithoutLegacy,
} as Credentials,
})
}

View File

@@ -14,7 +14,7 @@ import {
import React, { useEffect, useState } from 'react'
import { ZodObjectLayout } from '../zodLayouts/ZodObjectLayout'
import { ForgedBlockDefinition } from '@typebot.io/forge-repository/types'
import { CredentialsWithoutLegacy } from '@typebot.io/schemas'
import { Credentials } from '@typebot.io/schemas'
type Props = {
credentialsId: string
@@ -76,7 +76,7 @@ export const UpdateForgedCredentialsModalContent = ({
workspaceId: workspace.id,
name,
data,
} as CredentialsWithoutLegacy,
} as Credentials,
})
}

View File

@@ -32,7 +32,6 @@ import { ChatwootNodeBody } from '@/features/blocks/integrations/chatwoot/compon
import { AbTestNodeBody } from '@/features/blocks/logic/abTest/components/AbTestNodeBody'
import { PictureChoiceNode } from '@/features/blocks/inputs/pictureChoice/components/PictureChoiceNode'
import { PixelNodeBody } from '@/features/blocks/integrations/pixel/components/PixelNodeBody'
import { ZemanticAiNodeBody } from '@/features/blocks/integrations/zemanticAi/ZemanticAiNodeBody'
import { BubbleBlockType } from '@typebot.io/schemas/features/blocks/bubbles/constants'
import { InputBlockType } from '@typebot.io/schemas/features/blocks/inputs/constants'
import { LogicBlockType } from '@typebot.io/schemas/features/blocks/logic/constants'
@@ -151,9 +150,6 @@ export const BlockNodeContent = ({
case IntegrationBlockType.PIXEL: {
return <PixelNodeBody options={block.options} />
}
case IntegrationBlockType.ZEMANTIC_AI: {
return <ZemanticAiNodeBody options={block.options} />
}
default: {
return <ForgedBlockNodeContent block={block} indices={indices} />
}

View File

@@ -39,7 +39,6 @@ import { AbTestSettings } from '@/features/blocks/logic/abTest/components/AbTest
import { PictureChoiceSettings } from '@/features/blocks/inputs/pictureChoice/components/PictureChoiceSettings'
import { SettingsHoverBar } from './SettingsHoverBar'
import { PixelSettings } from '@/features/blocks/integrations/pixel/components/PixelSettings'
import { ZemanticAiSettings } from '@/features/blocks/integrations/zemanticAi/ZemanticAiSettings'
import { InputBlockType } from '@typebot.io/schemas/features/blocks/inputs/constants'
import { IntegrationBlockType } from '@typebot.io/schemas/features/blocks/integrations/constants'
import { LogicBlockType } from '@typebot.io/schemas/features/blocks/logic/constants'
@@ -338,11 +337,6 @@ export const BlockSettings = ({
/>
)
}
case IntegrationBlockType.ZEMANTIC_AI: {
return (
<ZemanticAiSettings block={block} onOptionsChange={updateOptions} />
)
}
case LogicBlockType.CONDITION:
return null
default: {

View File

@@ -65,8 +65,6 @@ export const getHelpDocUrl = (
return 'https://docs.typebot.io/editor/blocks/logic/jump'
case IntegrationBlockType.PIXEL:
return 'https://docs.typebot.io/editor/blocks/integrations/pixel'
case IntegrationBlockType.ZEMANTIC_AI:
return 'https://docs.typebot.io/editor/blocks/integrations/zemantic-ai'
case LogicBlockType.CONDITION:
return 'https://docs.typebot.io/editor/blocks/logic/condition'
default:

View File

@@ -3,7 +3,6 @@ import { router } from '../trpc'
import { generateUploadUrl } from '@/features/upload/api/generateUploadUrl'
import { openAIRouter } from '@/features/blocks/integrations/openai/api/router'
import { internalWhatsAppRouter } from '@/features/whatsapp/router'
import { zemanticAiRouter } from '@/features/blocks/integrations/zemanticAi/api/router'
import { forgeRouter } from '@/features/forge/api/router'
import { googleSheetsRouter } from '@/features/blocks/integrations/googleSheets/api/router'
import { telemetryRouter } from '@/features/telemetry/api/router'
@@ -13,7 +12,6 @@ export const internalRouter = router({
generateUploadUrl,
whatsAppInternal: internalWhatsAppRouter,
openAI: openAIRouter,
zemanticAI: zemanticAiRouter,
forge: forgeRouter,
sheets: googleSheetsRouter,
telemetry: telemetryRouter,

View File

@@ -1,48 +0,0 @@
---
title: Zemantic AI
---
With the Zemantic AI block, you can search and retrieve results or LLM summaries from your documents stored on Zemantic AI.
<Frame>
<img
src="/images/blocks/integrations/zemanticAi/overview.png"
alt="Zemantic AI block"
/>
</Frame>
## Settings
This integration requires a Zemantic AI account. If you don't have one yet, you can create one [here](https://zemantic.ai/).
The block has the following settings:
<Frame>
<img
src="/images/blocks/integrations/zemanticAi/settings.png"
alt="Zemantic AI settings"
/>
</Frame>
- Zemantic AI account: create or select the Zemantic AI credentials you want to use.
- Project ID: The project id of the project containing the documents you want to search
- Question or Query: The question you want to ask your Zemantic AI documents
- Max Results: The maximum number of results you want to retrieve
### Prompt Settings
- System Prompt: The prompt you want to use to guide the LLM behavior
- Prompt: The prompt you want to use to summarize your documents
## Troobleshooting
### Error message: "Zemantic AI block returned error"
It means your Zemantic AI block is not configured properly. Please check the following:
- You have selected an Zemantic AI account
- You have filled out the Question or Query field
### It returns an empty message
Either you misconfigured the block or your may have have gone over the context limits of the LLM. You can try lowering the number of results to retrieve or shortening your prompt.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 KiB

View File

@@ -122,7 +122,6 @@
"editor/blocks/integrations/chatwoot",
"editor/blocks/integrations/meta-pixel",
"editor/blocks/integrations/openai",
"editor/blocks/integrations/zemantic-ai",
"editor/blocks/integrations/mistral",
"editor/blocks/integrations/elevenlabs",
"editor/blocks/integrations/anthropic",

View File

@@ -2469,78 +2469,6 @@
"id",
"type"
]
},
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"outgoingEdgeId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"Zemantic AI"
]
},
"blockId": {
"type": "string"
},
"options": {
"type": "object",
"properties": {
"credentialsId": {
"type": "string"
},
"projectId": {
"type": "string"
},
"systemPrompt": {
"type": "string"
},
"prompt": {
"type": "string"
},
"query": {
"type": "string"
},
"maxResults": {
"type": "integer"
},
"responseMapping": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"valueToExtract": {
"type": "string",
"enum": [
"Summary",
"Results"
]
},
"variableId": {
"type": "string"
}
},
"required": [
"id",
"valueToExtract"
]
}
}
}
}
},
"required": [
"id",
"type"
]
}
]
}
@@ -6838,78 +6766,6 @@
"id",
"type"
]
},
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"outgoingEdgeId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"Zemantic AI"
]
},
"blockId": {
"type": "string"
},
"options": {
"type": "object",
"properties": {
"credentialsId": {
"type": "string"
},
"projectId": {
"type": "string"
},
"systemPrompt": {
"type": "string"
},
"prompt": {
"type": "string"
},
"query": {
"type": "string"
},
"maxResults": {
"type": "integer"
},
"responseMapping": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"valueToExtract": {
"type": "string",
"enum": [
"Summary",
"Results"
]
},
"variableId": {
"type": "string"
}
},
"required": [
"id",
"valueToExtract"
]
}
}
}
}
},
"required": [
"id",
"type"
]
}
]
}
@@ -10344,78 +10200,6 @@
"id",
"type"
]
},
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"outgoingEdgeId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"Zemantic AI"
]
},
"blockId": {
"type": "string"
},
"options": {
"type": "object",
"properties": {
"credentialsId": {
"type": "string"
},
"projectId": {
"type": "string"
},
"systemPrompt": {
"type": "string"
},
"prompt": {
"type": "string"
},
"query": {
"type": "string"
},
"maxResults": {
"type": "integer"
},
"responseMapping": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"valueToExtract": {
"type": "string",
"enum": [
"Summary",
"Results"
]
},
"variableId": {
"type": "string"
}
},
"required": [
"id",
"valueToExtract"
]
}
}
}
}
},
"required": [
"id",
"type"
]
}
]
}
@@ -12949,37 +12733,6 @@
"name"
]
},
{
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"apiKey": {
"type": "string"
}
}
},
"type": {
"type": "string",
"enum": [
"zemantic-ai"
]
},
"workspaceId": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"data",
"type",
"workspaceId",
"name"
]
},
{
"type": "object",
"properties": {
@@ -13345,9 +13098,7 @@
"google sheets",
"stripe",
"whatsApp",
"zemanticAi",
"openai",
"zemantic-ai",
"chat-node",
"dify-ai",
"mistral",
@@ -13383,9 +13134,7 @@
"google sheets",
"stripe",
"whatsApp",
"zemanticAi",
"openai",
"zemantic-ai",
"chat-node",
"dify-ai",
"mistral",
@@ -13836,37 +13585,6 @@
"workspaceId"
]
},
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"data": {
"type": "object",
"properties": {
"apiKey": {
"type": "string"
}
}
},
"type": {
"type": "string",
"enum": [
"zemantic-ai"
]
},
"workspaceId": {
"type": "string"
}
},
"required": [
"name",
"data",
"type",
"workspaceId"
]
},
{
"type": "object",
"properties": {
@@ -19821,78 +19539,6 @@
"type"
]
},
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"outgoingEdgeId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"Zemantic AI"
]
},
"blockId": {
"type": "string"
},
"options": {
"type": "object",
"properties": {
"credentialsId": {
"type": "string"
},
"projectId": {
"type": "string"
},
"systemPrompt": {
"type": "string"
},
"prompt": {
"type": "string"
},
"query": {
"type": "string"
},
"maxResults": {
"type": "integer"
},
"responseMapping": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"valueToExtract": {
"type": "string",
"enum": [
"Summary",
"Results"
]
},
"variableId": {
"type": "string"
}
},
"required": [
"id",
"valueToExtract"
]
}
}
}
}
},
"required": [
"id",
"type"
]
},
{
"type": "object",
"properties": {
@@ -20462,99 +20108,6 @@
"type"
]
},
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"outgoingEdgeId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"zemantic-ai"
]
},
"options": {
"oneOf": [
{
"type": "object",
"properties": {
"projectId": {
"type": "string"
},
"credentialsId": {
"type": "string"
}
}
},
{
"type": "object",
"properties": {
"projectId": {
"type": "string"
},
"credentialsId": {
"type": "string"
},
"action": {
"type": "string",
"enum": [
"Search documents"
]
},
"query": {
"type": "string"
},
"maxResults": {
"anyOf": [
{
"type": "number"
},
{}
]
},
"systemPrompt": {
"type": "string"
},
"prompt": {
"type": "string"
},
"responseMapping": {
"type": "array",
"items": {
"type": "object",
"properties": {
"item": {
"type": "string",
"enum": [
"Summary",
"Document IDs",
"Texts",
"Scores"
]
},
"variableId": {
"type": "string"
}
}
}
}
},
"required": [
"action"
]
}
]
}
},
"required": [
"id",
"type"
]
},
{
"type": "object",
"properties": {
@@ -26532,78 +26085,6 @@
"id",
"type"
]
},
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"outgoingEdgeId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"Zemantic AI"
]
},
"blockId": {
"type": "string"
},
"options": {
"type": "object",
"properties": {
"credentialsId": {
"type": "string"
},
"projectId": {
"type": "string"
},
"systemPrompt": {
"type": "string"
},
"prompt": {
"type": "string"
},
"query": {
"type": "string"
},
"maxResults": {
"type": "integer"
},
"responseMapping": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"valueToExtract": {
"type": "string",
"enum": [
"Summary",
"Results"
]
},
"variableId": {
"type": "string"
}
},
"required": [
"id",
"valueToExtract"
]
}
}
}
}
},
"required": [
"id",
"type"
]
}
]
}
@@ -29407,78 +28888,6 @@
"id",
"type"
]
},
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"outgoingEdgeId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"Zemantic AI"
]
},
"blockId": {
"type": "string"
},
"options": {
"type": "object",
"properties": {
"credentialsId": {
"type": "string"
},
"projectId": {
"type": "string"
},
"systemPrompt": {
"type": "string"
},
"prompt": {
"type": "string"
},
"query": {
"type": "string"
},
"maxResults": {
"type": "integer"
},
"responseMapping": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"valueToExtract": {
"type": "string",
"enum": [
"Summary",
"Results"
]
},
"variableId": {
"type": "string"
}
},
"required": [
"id",
"valueToExtract"
]
}
}
}
}
},
"required": [
"id",
"type"
]
}
]
}

View File

@@ -5753,78 +5753,6 @@
"id",
"type"
]
},
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"outgoingEdgeId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"Zemantic AI"
]
},
"blockId": {
"type": "string"
},
"options": {
"type": "object",
"properties": {
"credentialsId": {
"type": "string"
},
"projectId": {
"type": "string"
},
"systemPrompt": {
"type": "string"
},
"prompt": {
"type": "string"
},
"query": {
"type": "string"
},
"maxResults": {
"type": "integer"
},
"responseMapping": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"valueToExtract": {
"type": "string",
"enum": [
"Summary",
"Results"
]
},
"variableId": {
"type": "string"
}
},
"required": [
"id",
"valueToExtract"
]
}
}
}
}
},
"required": [
"id",
"type"
]
}
]
}
@@ -9888,78 +9816,6 @@
"type"
]
},
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"outgoingEdgeId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"Zemantic AI"
]
},
"blockId": {
"type": "string"
},
"options": {
"type": "object",
"properties": {
"credentialsId": {
"type": "string"
},
"projectId": {
"type": "string"
},
"systemPrompt": {
"type": "string"
},
"prompt": {
"type": "string"
},
"query": {
"type": "string"
},
"maxResults": {
"type": "integer"
},
"responseMapping": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"valueToExtract": {
"type": "string",
"enum": [
"Summary",
"Results"
]
},
"variableId": {
"type": "string"
}
},
"required": [
"id",
"valueToExtract"
]
}
}
}
}
},
"required": [
"id",
"type"
]
},
{
"type": "object",
"properties": {
@@ -10529,99 +10385,6 @@
"type"
]
},
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"outgoingEdgeId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"zemantic-ai"
]
},
"options": {
"oneOf": [
{
"type": "object",
"properties": {
"projectId": {
"type": "string"
},
"credentialsId": {
"type": "string"
}
}
},
{
"type": "object",
"properties": {
"projectId": {
"type": "string"
},
"credentialsId": {
"type": "string"
},
"action": {
"type": "string",
"enum": [
"Search documents"
]
},
"query": {
"type": "string"
},
"maxResults": {
"anyOf": [
{
"type": "number"
},
{}
]
},
"systemPrompt": {
"type": "string"
},
"prompt": {
"type": "string"
},
"responseMapping": {
"type": "array",
"items": {
"type": "object",
"properties": {
"item": {
"type": "string",
"enum": [
"Summary",
"Document IDs",
"Texts",
"Scores"
]
},
"variableId": {
"type": "string"
}
}
}
}
},
"required": [
"action"
]
}
]
}
},
"required": [
"id",
"type"
]
},
{
"type": "object",
"properties": {