From f4d315fed5a113649c7abf70669232bf0588888c Mon Sep 17 00:00:00 2001 From: Baptiste Arnaud Date: Fri, 19 Jan 2024 08:05:38 +0100 Subject: [PATCH] :sparkles: (openai) Add tools and functions support (#1167) Closes #863 Got helped from #1162 for the implementation. Closing it in favor of this PR. ## Summary by CodeRabbit - **New Features** - Enhanced `CodeEditor` with additional properties for better form control and validation. - Introduced tools and functions in OpenAI integrations documentation for custom JavaScript execution. - Added capability to define and use custom JavaScript functions with the OpenAI assistant. - Expanded layout metadata options to include various input types and languages. - **Improvements** - Updated the OpenAI actions to support new function execution features. - **Documentation** - Added new sections for tools and functions in the OpenAI integrations guide. - **Refactor** - Refactored components and actions to integrate new features and improve existing functionalities. --- .../src/components/inputs/CodeEditor.tsx | 161 ++++++++++------- .../components/zodLayouts/ZodFieldLayout.tsx | 37 +++- .../editor/blocks/integrations/openai.mdx | 16 ++ .../blocks/integrations/openai/tools.png | Bin 0 -> 174838 bytes packages/embeds/js/package.json | 2 +- .../ConversationContainer.tsx | 92 ++++------ packages/embeds/nextjs/package.json | 2 +- packages/embeds/react/package.json | 2 +- .../blocks/openai/actions/askAssistant.tsx | 94 ++++++++++ .../openai/actions/createChatCompletion.tsx | 166 +++++++++++++++++- .../openai/helpers/parseToolParameters.ts | 22 +++ .../forge/core/zod/extendWithTypebotLayout.ts | 3 +- 12 files changed, 460 insertions(+), 137 deletions(-) create mode 100644 apps/docs/images/blocks/integrations/openai/tools.png create mode 100644 packages/forge/blocks/openai/helpers/parseToolParameters.ts diff --git a/apps/builder/src/components/inputs/CodeEditor.tsx b/apps/builder/src/components/inputs/CodeEditor.tsx index a569d0703..267d523de 100644 --- a/apps/builder/src/components/inputs/CodeEditor.tsx +++ b/apps/builder/src/components/inputs/CodeEditor.tsx @@ -1,11 +1,15 @@ import { BoxProps, Fade, + FormControl, + FormHelperText, + FormLabel, HStack, + Stack, useColorModeValue, useDisclosure, } from '@chakra-ui/react' -import { useEffect, useRef, useState } from 'react' +import React, { ReactNode, useEffect, useRef, useState } from 'react' import { useDebouncedCallback } from 'use-debounce' import { VariablesButton } from '@/features/variables/components/VariablesButton' import { Variable } from '@typebot.io/schemas' @@ -16,8 +20,10 @@ import { githubLight } from '@uiw/codemirror-theme-github' import { LanguageName, loadLanguage } from '@uiw/codemirror-extensions-langs' import { isDefined } from '@udecode/plate-common' import { CopyButton } from '../CopyButton' +import { MoreInfoTooltip } from '../MoreInfoTooltip' type Props = { + label?: string value?: string defaultValue?: string lang: LanguageName @@ -27,11 +33,18 @@ type Props = { height?: string maxHeight?: string minWidth?: string + moreInfoTooltip?: string + helperText?: ReactNode + isRequired?: boolean onChange?: (value: string) => void } export const CodeEditor = ({ + label, defaultValue, lang, + moreInfoTooltip, + helperText, + isRequired, onChange, height = '250px', maxHeight = '70vh', @@ -86,71 +99,91 @@ export const CodeEditor = ({ ) return ( - - - {isVariableButtonDisplayed && ( - + {label && ( + + {label}{' '} + {moreInfoTooltip && ( + {moreInfoTooltip} + )} + )} - {isReadOnly && ( - - + + {isVariableButtonDisplayed && ( + - - )} - + )} + {isReadOnly && ( + + + + )} + + {helperText && {helperText}} + ) } diff --git a/apps/builder/src/features/forge/components/zodLayouts/ZodFieldLayout.tsx b/apps/builder/src/features/forge/components/zodLayouts/ZodFieldLayout.tsx index bf9cebb6c..53bf53a5a 100644 --- a/apps/builder/src/features/forge/components/zodLayouts/ZodFieldLayout.tsx +++ b/apps/builder/src/features/forge/components/zodLayouts/ZodFieldLayout.tsx @@ -22,6 +22,7 @@ import { DropdownList } from '@/components/DropdownList' import { ForgedBlockDefinition, ForgedBlock } from '@typebot.io/forge-schemas' import { PrimitiveList } from '@/components/PrimitiveList' import { SwitchWithLabel } from '@/components/inputs/SwitchWithLabel' +import { CodeEditor } from '@/components/inputs/CodeEditor' const mdComponents = { a: ({ href, children }) => ( @@ -99,6 +100,8 @@ export const ZodFieldLayout = ({ @@ -229,6 +234,28 @@ export const ZodFieldLayout = ({ /> ) } + + if (layout?.inputType === 'code') + return ( + + {layout.helperText} + + ) : undefined + } + isRequired={layout?.isRequired} + withVariableButton={layout?.withVariableButton} + moreInfoTooltip={layout.moreInfoTooltip} + onChange={onDataChange} + width={width} + /> + ) return ( | undefined isInAccordion?: boolean onDataChange: (val: any) => void @@ -283,6 +314,8 @@ const ZodArrayContent = ({ {({ item, onItemChange }) => ( - + +### Tools + +The tools section allows you to add functions that the OpenAI model can execute. Here is an example of a function named `getWeather` that returns 'Sunny and warm' if you ask about the weather of Paris and 'Rainy and cold' if you ask for any other city 😂. + +A more useful example would be, of course, to call an API to get the weather of the city the user is asking about. + + + OpenAI tools + + +As you can see, the code block expects the body of the Javascript function. You can use the `return` keyword to return values. + ## Ask assistant This action allows you to talk with your [OpenAI assistant](https://platform.openai.com/assistants). All you have to do is to provide its ID. @@ -44,6 +56,10 @@ This action allows you to talk with your [OpenAI assistant](https://platform.ope /> +### Functions + +If you defined functions in your assistant, you can define the function to execute in the `Functions` section. + ## Create speech This action allows you to transform a text input into an audio URL that you can reuse in your bot. diff --git a/apps/docs/images/blocks/integrations/openai/tools.png b/apps/docs/images/blocks/integrations/openai/tools.png new file mode 100644 index 0000000000000000000000000000000000000000..c06e18ac4884034bfe3b63e8a80430b7bf0581f6 GIT binary patch literal 174838 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 z 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 { const actionsBeforeFirstBubble = initialChunk.clientSideActions.filter( (action) => isNotDefined(action.lastBubbleBlockId) ) - for (const action of actionsBeforeFirstBubble) { - if ( - 'streamOpenAiChatCompletion' in action || - 'webhookToExecute' in action - ) - setIsSending(true) - const response = await executeClientSideAction({ - clientSideAction: action, - context: { - apiHost: props.context.apiHost, - sessionId: props.initialChatReply.sessionId, - }, - onMessageStream: streamMessage, - }) - if (response && 'replyToSend' in response) { - sendMessage(response.replyToSend, response.logs) - return - } - if (response && 'blockedPopupUrl' in response) - setBlockedPopupUrl(response.blockedPopupUrl) - } + processClientSideActions(actionsBeforeFirstBubble) })() }) @@ -210,27 +190,7 @@ export const ConversationContainer = (props: Props) => { const actionsBeforeFirstBubble = data.clientSideActions.filter((action) => isNotDefined(action.lastBubbleBlockId) ) - for (const action of actionsBeforeFirstBubble) { - if ( - 'streamOpenAiChatCompletion' in action || - 'webhookToExecute' in action - ) - setIsSending(true) - const response = await executeClientSideAction({ - clientSideAction: action, - context: { - apiHost: props.context.apiHost, - sessionId: props.initialChatReply.sessionId, - }, - onMessageStream: streamMessage, - }) - if (response && 'replyToSend' in response) { - sendMessage(response.replyToSend, response.logs) - return - } - if (response && 'blockedPopupUrl' in response) - setBlockedPopupUrl(response.blockedPopupUrl) - } + processClientSideActions(actionsBeforeFirstBubble) } setChatChunks((displayedChunks) => [ ...displayedChunks, @@ -267,27 +227,35 @@ export const ConversationContainer = (props: Props) => { const actionsToExecute = lastChunk.clientSideActions.filter( (action) => action.lastBubbleBlockId === blockId ) - for (const action of actionsToExecute) { - if ( - 'streamOpenAiChatCompletion' in action || - 'webhookToExecute' in action - ) - setIsSending(true) - const response = await executeClientSideAction({ - clientSideAction: action, - context: { - apiHost: props.context.apiHost, - sessionId: props.initialChatReply.sessionId, - }, - onMessageStream: streamMessage, - }) - if (response && 'replyToSend' in response) { - sendMessage(response.replyToSend, response.logs) - return - } - if (response && 'blockedPopupUrl' in response) - setBlockedPopupUrl(response.blockedPopupUrl) + await processClientSideActions(actionsToExecute) + } + } + + const processClientSideActions = async ( + actions: NonNullable + ) => { + for (const action of actions) { + if ( + 'streamOpenAiChatCompletion' in action || + 'webhookToExecute' in action || + 'stream' in action + ) + setIsSending(true) + const response = await executeClientSideAction({ + clientSideAction: action, + context: { + apiHost: props.context.apiHost, + sessionId: props.initialChatReply.sessionId, + }, + onMessageStream: streamMessage, + }) + if (response && 'replyToSend' in response) { + setIsSending(false) + sendMessage(response.replyToSend, response.logs) + return } + if (response && 'blockedPopupUrl' in response) + setBlockedPopupUrl(response.blockedPopupUrl) } } diff --git a/packages/embeds/nextjs/package.json b/packages/embeds/nextjs/package.json index 3393d9e0d..59b63c583 100644 --- a/packages/embeds/nextjs/package.json +++ b/packages/embeds/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@typebot.io/nextjs", - "version": "0.2.33", + "version": "0.2.34", "description": "Convenient library to display typebots on your Next.js website", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/embeds/react/package.json b/packages/embeds/react/package.json index 14be32669..3b934cf15 100644 --- a/packages/embeds/react/package.json +++ b/packages/embeds/react/package.json @@ -1,6 +1,6 @@ { "name": "@typebot.io/react", - "version": "0.2.33", + "version": "0.2.34", "description": "Convenient library to display typebots on your React app", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/forge/blocks/openai/actions/askAssistant.tsx b/packages/forge/blocks/openai/actions/askAssistant.tsx index e48dbbeb9..25f63302b 100644 --- a/packages/forge/blocks/openai/actions/askAssistant.tsx +++ b/packages/forge/blocks/openai/actions/askAssistant.tsx @@ -24,6 +24,24 @@ export const askAssistant = createAction({ label: 'Message', inputType: 'textarea', }), + functions: option + .array( + option.object({ + name: option.string.layout({ + fetcher: 'fetchAssistantFunctions', + label: 'Name', + }), + code: option.string.layout({ + inputType: 'code', + label: 'Code', + lang: 'javascript', + moreInfoTooltip: + 'A javascript code snippet that can use the defined parameters. It should return a value.', + withVariableButton: false, + }), + }) + ) + .layout({ accordion: 'Functions', itemLabel: 'function' }), responseMapping: option .saveResponseArray(['Message', 'Thread ID'] as const) .layout({ @@ -64,6 +82,40 @@ export const askAssistant = createAction({ }, dependencies: ['baseUrl', 'apiVersion'], }, + { + id: 'fetchAssistantFunctions', + fetch: async ({ options, credentials }) => { + if (!options.assistantId) return [] + const config = { + apiKey: credentials.apiKey, + baseURL: options.baseUrl, + defaultHeaders: { + 'api-key': credentials.apiKey, + }, + defaultQuery: options.apiVersion + ? { + 'api-version': options.apiVersion, + } + : undefined, + } satisfies ClientOptions + + const openai = new OpenAI(config) + + const response = await openai.beta.assistants.retrieve( + options.assistantId + ) + + return response.tools + .filter((tool) => tool.type === 'function') + .map((tool) => + tool.type === 'function' && tool.function.name + ? tool.function.name + : undefined + ) + .filter(isDefined) + }, + dependencies: ['baseUrl', 'apiVersion', 'assistantId'], + }, ], getSetVariableIds: ({ responseMapping }) => responseMapping?.map((r) => r.variableId).filter(isDefined) ?? [], @@ -77,6 +129,7 @@ export const askAssistant = createAction({ message, responseMapping, threadId, + functions, }, variables, logs, @@ -139,6 +192,45 @@ export const askAssistant = createAction({ ) { throw new Error(run.status) } + if (run.status === 'requires_action') { + if (run.required_action?.type === 'submit_tool_outputs') { + const tool_outputs = ( + await Promise.all( + run.required_action.submit_tool_outputs.tool_calls.map( + async (toolCall) => { + const parameters = JSON.parse(toolCall.function.arguments) + + const functionToExecute = functions?.find( + (f) => f.name === toolCall.function.name + ) + if (!functionToExecute) return + + const name = toolCall.function.name + if (!name) return + const func = AsyncFunction( + ...Object.keys(parameters), + functionToExecute.code + ) + const output = await func(...Object.values(parameters)) + + return { + tool_call_id: toolCall.id, + output, + } + } + ) + ) + ).filter(isDefined) + + run = await openai.beta.threads.runs.submitToolOutputs( + currentThreadId, + run.id, + { tool_outputs } + ) + + await waitForRun(run) + } + } } await waitForRun(run) @@ -170,3 +262,5 @@ export const askAssistant = createAction({ }, }, }) + +const AsyncFunction = Object.getPrototypeOf(async function () {}).constructor diff --git a/packages/forge/blocks/openai/actions/createChatCompletion.tsx b/packages/forge/blocks/openai/actions/createChatCompletion.tsx index b4d203d71..8df72fcb5 100644 --- a/packages/forge/blocks/openai/actions/createChatCompletion.tsx +++ b/packages/forge/blocks/openai/actions/createChatCompletion.tsx @@ -1,11 +1,13 @@ import { option, createAction } from '@typebot.io/forge' import OpenAI, { ClientOptions } from 'openai' import { defaultOpenAIOptions } from '../constants' -import { OpenAIStream } from 'ai' +import { OpenAIStream, ToolCallPayload } from 'ai' import { parseChatCompletionMessages } from '../helpers/parseChatCompletionMessages' import { isDefined } from '@typebot.io/lib' import { auth } from '../auth' import { baseOptions } from '../baseOptions' +import { ChatCompletionTool } from 'openai/resources/chat/completions' +import { parseToolParameters } from '../helpers/parseToolParameters' const nativeMessageContentSchema = { content: option.string.layout({ @@ -32,6 +34,48 @@ const assistantMessageItemSchema = option }) .extend(nativeMessageContentSchema) +export const parameterSchema = option.object({ + name: option.string.layout({ + label: 'Name', + placeholder: 'myVariable', + withVariableButton: false, + }), + type: option.enum(['string', 'number', 'boolean']).layout({ + label: 'Type:', + direction: 'row', + }), + description: option.string.layout({ + label: 'Description', + withVariableButton: false, + }), + required: option.boolean.layout({ + label: 'Is required?', + }), +}) + +const functionToolItemSchema = option.object({ + type: option.literal('function'), + name: option.string.layout({ + label: 'Name', + placeholder: 'myFunctionName', + withVariableButton: false, + }), + description: option.string.layout({ + label: 'Description', + placeholder: 'A brief description of what this function does.', + withVariableButton: false, + }), + parameters: option.array(parameterSchema).layout({ accordion: 'Parameters' }), + code: option.string.layout({ + inputType: 'code', + label: 'Code', + lang: 'javascript', + moreInfoTooltip: + 'A javascript code snippet that can use the defined parameters. It should return a value.', + withVariableButton: false, + }), +}) + const dialogueMessageItemSchema = option.object({ role: option.literal('Dialogue'), dialogueVariableId: option.string.layout({ @@ -61,6 +105,9 @@ export const options = option.object({ ]) ) .layout({ accordion: 'Messages', itemLabel: 'message', isOrdered: true }), + tools: option + .array(option.discriminatedUnion('type', [functionToolItemSchema])) + .layout({ accordion: 'Tools', itemLabel: 'tool' }), temperature: option.number.layout({ accordion: 'Advanced settings', label: 'Temperature', @@ -131,20 +178,74 @@ export const createChatCompletion = createAction({ const openai = new OpenAI(config) + const tools = options.tools + ? (options.tools + .filter((t) => t.name && t.parameters) + .map((t) => ({ + type: 'function', + function: { + name: t.name as string, + description: t.description, + parameters: parseToolParameters(t.parameters!), + }, + })) satisfies ChatCompletionTool[]) + : undefined + + const messages = parseChatCompletionMessages({ options, variables }) + const response = await openai.chat.completions.create({ model: options.model ?? defaultOpenAIOptions.model, temperature: options.temperature ? Number(options.temperature) : undefined, - messages: parseChatCompletionMessages({ options, variables }), + messages, + tools, }) + let message = response.choices[0].message + let totalTokens = response.usage?.total_tokens + + if (message.tool_calls) { + messages.push(message) + + for (const toolCall of message.tool_calls) { + const name = toolCall.function?.name + if (!name) continue + const toolDefinition = options.tools?.find((t) => t.name === name) + if (!toolDefinition?.code || !toolDefinition.parameters) continue + const func = AsyncFunction( + ...toolDefinition.parameters?.map((p) => p.name), + toolDefinition.code + ) + const content = await func( + ...Object.values(JSON.parse(toolCall.function.arguments)) + ) + messages.push({ + tool_call_id: toolCall.id, + role: 'tool', + content, + }) + } + + const secondResponse = await openai.chat.completions.create({ + model: options.model ?? defaultOpenAIOptions.model, + temperature: options.temperature + ? Number(options.temperature) + : undefined, + messages, + tools, + }) + + message = secondResponse.choices[0].message + totalTokens = secondResponse.usage?.total_tokens + } + options.responseMapping?.forEach((mapping) => { if (!mapping.variableId) return if (!mapping.item || mapping.item === 'Message content') - variables.set(mapping.variableId, response.choices[0].message.content) + variables.set(mapping.variableId, message.content) if (mapping.item === 'Total tokens') - variables.set(mapping.variableId, response.usage?.total_tokens) + variables.set(mapping.variableId, totalTokens) }) }, stream: { @@ -168,17 +269,70 @@ export const createChatCompletion = createAction({ const openai = new OpenAI(config) + const tools = options.tools + ? (options.tools + .filter((t) => t.name && t.parameters) + .map((t) => ({ + type: 'function', + function: { + name: t.name as string, + description: t.description, + parameters: parseToolParameters(t.parameters!), + }, + })) satisfies ChatCompletionTool[]) + : undefined + + const messages = parseChatCompletionMessages({ options, variables }) + const response = await openai.chat.completions.create({ model: options.model ?? defaultOpenAIOptions.model, temperature: options.temperature ? Number(options.temperature) : undefined, stream: true, - messages: parseChatCompletionMessages({ options, variables }), + messages, + tools, }) - return OpenAIStream(response) + return OpenAIStream(response, { + experimental_onToolCall: async ( + call: ToolCallPayload, + appendToolCallMessage + ) => { + for (const toolCall of call.tools) { + const name = toolCall.func?.name + if (!name) continue + const toolDefinition = options.tools?.find((t) => t.name === name) + if (!toolDefinition?.code || !toolDefinition.parameters) continue + const func = AsyncFunction( + ...toolDefinition.parameters?.map((p) => p.name), + toolDefinition.code + ) + const content = await func( + ...Object.values(JSON.parse(toolCall.func.arguments as any)) + ) + + const newMessages = appendToolCallMessage({ + tool_call_id: toolCall.id, + function_name: toolCall.func.name, + tool_call_result: content, + }) + + return openai.chat.completions.create({ + messages: [ + ...messages, + ...newMessages, + ] as OpenAI.Chat.Completions.ChatCompletionMessageParam[], + model: options.model ?? defaultOpenAIOptions.model, + stream: true, + tools, + }) + } + }, + }) }, }, }, }) + +const AsyncFunction = Object.getPrototypeOf(async function () {}).constructor diff --git a/packages/forge/blocks/openai/helpers/parseToolParameters.ts b/packages/forge/blocks/openai/helpers/parseToolParameters.ts new file mode 100644 index 000000000..a29e8949e --- /dev/null +++ b/packages/forge/blocks/openai/helpers/parseToolParameters.ts @@ -0,0 +1,22 @@ +import type { OpenAI } from 'openai' +import { parameterSchema } from '../actions/createChatCompletion' +import { z } from '@typebot.io/forge/zod' + +export const parseToolParameters = ( + parameters: z.infer[] +): OpenAI.FunctionParameters => ({ + type: 'object', + properties: parameters?.reduce<{ + [x: string]: unknown + }>((acc, param) => { + if (!param.name) return acc + acc[param.name] = { + type: param.type, + description: param.description, + } + return acc + }, {}), + required: + parameters?.filter((param) => param.required).map((param) => param.name) ?? + [], +}) diff --git a/packages/forge/core/zod/extendWithTypebotLayout.ts b/packages/forge/core/zod/extendWithTypebotLayout.ts index dcbabd351..36c481e5a 100644 --- a/packages/forge/core/zod/extendWithTypebotLayout.ts +++ b/packages/forge/core/zod/extendWithTypebotLayout.ts @@ -8,7 +8,8 @@ export interface ZodLayoutMetadata< > { accordion?: string label?: string - inputType?: 'variableDropdown' | 'textarea' | 'password' + inputType?: 'variableDropdown' | 'textarea' | 'password' | 'code' + lang?: 'javascript' | 'html' | 'css' | 'json' defaultValue?: T extends ZodDate ? string : TInferred placeholder?: string helperText?: string