ai
Version:
AI SDK by Vercel - The AI Toolkit for TypeScript and JavaScript
69 lines (56 loc) • 2.19 kB
text/typescript
import { JSONValue } from '@ai-sdk/provider';
import { describe, expectTypeOf, it } from 'vitest';
import { z } from 'zod';
import { generateText, Output } from '../generate-text';
import { MockLanguageModelV3 } from '../test/mock-language-model-v3';
describe('generateText types', () => {
describe('output', () => {
it('should infer text output type (default)', async () => {
const result = await generateText({
model: new MockLanguageModelV3(),
prompt: 'Hello, world!',
});
expectTypeOf<typeof result.output>().toEqualTypeOf<string>();
});
it('should infer text output type', async () => {
const result = await generateText({
model: new MockLanguageModelV3(),
prompt: 'Hello, world!',
output: Output.text(),
});
expectTypeOf<typeof result.output>().toEqualTypeOf<string>();
});
it('should infer object output type', async () => {
const result = await generateText({
model: new MockLanguageModelV3(),
prompt: 'Hello, world!',
output: Output.object({ schema: z.object({ value: z.string() }) }),
});
expectTypeOf<typeof result.output>().toEqualTypeOf<{ value: string }>();
});
it('should infer array output type', async () => {
const result = await generateText({
model: new MockLanguageModelV3(),
prompt: 'Hello, world!',
output: Output.array({ element: z.string() }),
});
expectTypeOf<typeof result.output>().toEqualTypeOf<string[]>();
});
it('should infer choice output type', async () => {
const result = await generateText({
model: new MockLanguageModelV3(),
prompt: 'Hello, world!',
output: Output.choice({ options: ['a', 'b', 'c'] as const }),
});
expectTypeOf<typeof result.output>().toEqualTypeOf<'a' | 'b' | 'c'>();
});
it('should infer json output type', async () => {
const result = await generateText({
model: new MockLanguageModelV3(),
prompt: 'Hello, world!',
output: Output.json(),
});
expectTypeOf<typeof result.output>().toEqualTypeOf<JSONValue>();
});
});
});