diff --git a/apps/builder/src/features/blocks/integrations/openai/components/createChatCompletion/OpenAIChatCompletionSettings.tsx b/apps/builder/src/features/blocks/integrations/openai/components/createChatCompletion/OpenAIChatCompletionSettings.tsx
index e8746ebd5..bbec5c063 100644
--- a/apps/builder/src/features/blocks/integrations/openai/components/createChatCompletion/OpenAIChatCompletionSettings.tsx
+++ b/apps/builder/src/features/blocks/integrations/openai/components/createChatCompletion/OpenAIChatCompletionSettings.tsx
@@ -16,6 +16,7 @@ import {
} from '@chakra-ui/react'
import { TextLink } from '@/components/TextLink'
import { ChatCompletionResponseItem } from './ChatCompletionResponseItem'
+import { NumberInput } from '@/components/inputs'
const apiReferenceUrl =
'https://platform.openai.com/docs/api-reference/chat/create'
@@ -43,6 +44,18 @@ export const OpenAIChatCompletionSettings = ({
})
}
+ const updateTemperature = (
+ temperature: number | `{{${string}}}` | undefined
+ ) => {
+ onOptionsChange({
+ ...options,
+ advancedSettings: {
+ ...options.advancedSettings,
+ temperature,
+ },
+ })
+ }
+
const updateResponseMapping = (
responseMapping: typeof options.responseMapping
) => {
@@ -61,6 +74,11 @@ export const OpenAIChatCompletionSettings = ({
{' '}
to better understand the available options.
+
@@ -88,10 +106,14 @@ export const OpenAIChatCompletionSettings = ({
-
diff --git a/apps/viewer/src/features/blocks/integrations/openai/createChatCompletionOpenAI.ts b/apps/viewer/src/features/blocks/integrations/openai/createChatCompletionOpenAI.ts
index 9d21fd301..d831baa0c 100644
--- a/apps/viewer/src/features/blocks/integrations/openai/createChatCompletionOpenAI.ts
+++ b/apps/viewer/src/features/blocks/integrations/openai/createChatCompletionOpenAI.ts
@@ -18,6 +18,8 @@ import { saveErrorLog } from '@/features/logs/saveErrorLog'
import { updateVariables } from '@/features/variables/updateVariables'
import { parseVariables } from '@/features/variables/parseVariables'
import { saveSuccessLog } from '@/features/logs/saveSuccessLog'
+import { parseVariableNumber } from '@/features/variables/parseVariableNumber'
+import { HTTPError } from 'got'
export const createChatCompletionOpenAI = async (
state: SessionState,
@@ -53,11 +55,16 @@ export const createChatCompletionOpenAI = async (
if (variablesTransformedToList.length > 0)
newSessionState = await updateVariables(state)(variablesTransformedToList)
+ const temperature = parseVariableNumber(newSessionState.typebot.variables)(
+ options.advancedSettings?.temperature
+ )
+
try {
const openai = new OpenAIApi(configuration)
const response = await openai.createChatCompletion({
model: options.model,
messages,
+ temperature,
})
const messageContent = response.data.choices.at(0)?.message?.content
const totalTokens = response.data.usage?.total_tokens
@@ -100,7 +107,12 @@ export const createChatCompletionOpenAI = async (
newSessionState,
}
} catch (err) {
- console.error(err)
+ if (err instanceof HTTPError) {
+ console.error(err.response.body)
+ } else {
+ console.error(err)
+ }
+
const log = {
status: 'error',
description: 'OpenAI block returned error',
diff --git a/apps/viewer/src/features/variables/parseVariableNumber.ts b/apps/viewer/src/features/variables/parseVariableNumber.ts
new file mode 100644
index 000000000..906bbf466
--- /dev/null
+++ b/apps/viewer/src/features/variables/parseVariableNumber.ts
@@ -0,0 +1,12 @@
+import { Variable } from '@typebot.io/schemas'
+import { parseGuessedValueType } from './parseGuessedValueType'
+import { parseVariables } from './parseVariables'
+
+export const parseVariableNumber =
+ (variables: Variable[]) =>
+ (input: number | `{{${string}}}` | undefined): number | undefined => {
+ if (typeof input === 'number' || input === undefined) return input
+ const parsedInput = parseGuessedValueType(parseVariables(variables)(input))
+ if (typeof parsedInput !== 'number') return undefined
+ return parsedInput
+ }
diff --git a/packages/schemas/features/blocks/integrations/openai.ts b/packages/schemas/features/blocks/integrations/openai.ts
index 623d2a648..c8df301f4 100644
--- a/packages/schemas/features/blocks/integrations/openai.ts
+++ b/packages/schemas/features/blocks/integrations/openai.ts
@@ -1,10 +1,15 @@
import { z } from 'zod'
+import { variableStringSchema } from '../../utils'
import { blockBaseSchema, credentialsBaseSchema } from '../baseSchemas'
import { IntegrationBlockType } from './enums'
export const openAITasks = ['Create chat completion', 'Create image'] as const
export const chatCompletionModels = [
+ 'gpt-4',
+ 'gpt-4-0314',
+ 'gpt-4-32k',
+ 'gpt-4-32k-0314',
'gpt-3.5-turbo',
'gpt-3.5-turbo-0301',
] as const
@@ -58,6 +63,11 @@ const chatCompletionOptionsSchema = z
messages: z.array(
z.union([chatCompletionMessageSchema, chatCompletionCustomMessageSchema])
),
+ advancedSettings: z
+ .object({
+ temperature: z.number().or(variableStringSchema).optional(),
+ })
+ .optional(),
responseMapping: z.array(
z.object({
id: z.string(),