import { FunctionCallHandler, Message, nanoid } from 'ai'; | |
import { toast } from 'sonner'; | |
export const functionCallHandler: FunctionCallHandler = async ( | |
chatMessages, | |
functionCall, | |
) => { | |
let result; | |
const { name, arguments: args } = functionCall; | |
const response = await fetch("/api/functions", { | |
method: "POST", | |
headers: { | |
"Content-Type": "application/json", | |
}, | |
body: JSON.stringify({ | |
args: args, | |
name: name | |
}) | |
} as any); | |
if (!response.ok) { | |
const errorText = await response.text(); | |
toast.error(`Something went wrong: ${errorText}`); | |
return; | |
} | |
result = await response.text(); | |
return { | |
messages: [ | |
...chatMessages, | |
{ | |
id: nanoid(), | |
name: functionCall.name, | |
role: "function" as const, | |
content: result, | |
}, | |
], | |
}; | |
}; | |