chatgpt-api/packages/core/src/create-ai-function.test.ts

43 wiersze
1.0 KiB
TypeScript

import { describe, expect, test } from 'vitest'
import { z } from 'zod'
import { createAIFunction } from './create-ai-function'
const fullName = createAIFunction(
{
name: 'fullName',
description: 'Returns the full name of a person.',
inputSchema: z.object({
first: z.string(),
last: z.string()
})
},
async ({ first, last }) => {
return `${first} ${last}`
}
)
describe('createAIFunction()', () => {
test('exposes OpenAI function calling spec', () => {
expect(fullName.spec.name).toEqual('fullName')
expect(fullName.spec.description).toEqual(
'Returns the full name of a person.'
)
expect(fullName.spec.parameters).toEqual({
properties: {
first: { type: 'string' },
last: { type: 'string' }
},
required: ['first', 'last'],
type: 'object',
additionalProperties: false
})
})
test('executes the function', async () => {
expect(await fullName('{"first": "John", "last": "Doe"}')).toEqual(
'John Doe'
)
})
})