kopia lustrzana https://github.com/transitive-bullshit/chatgpt-api
56 wiersze
1.9 KiB
TypeScript
56 wiersze
1.9 KiB
TypeScript
import type * as OpenAI from 'openai-fetch'
|
|
import { describe, expect, expectTypeOf, test } from 'vitest'
|
|
|
|
import type * as types from './types'
|
|
import { Msg } from './message'
|
|
|
|
describe('Msg', () => {
|
|
test('creates a message and fixes indentation', () => {
|
|
const msgContent = `
|
|
Hello, World!
|
|
`
|
|
const msg = Msg.system(msgContent)
|
|
expect(msg.role).toEqual('system')
|
|
expect(msg.content).toEqual('Hello, World!')
|
|
})
|
|
|
|
test('supports disabling indentation fixing', () => {
|
|
const msgContent = `
|
|
Hello, World!
|
|
`
|
|
const msg = Msg.system(msgContent, { cleanContent: false })
|
|
expect(msg.content).toEqual('\n Hello, World!\n ')
|
|
})
|
|
|
|
test('handles tool calls request', () => {
|
|
const msg = Msg.toolCall([
|
|
{
|
|
id: 'fake-tool-call-id',
|
|
type: 'function',
|
|
function: {
|
|
arguments: '{"prompt": "Hello, World!"}',
|
|
name: 'hello'
|
|
}
|
|
}
|
|
])
|
|
expectTypeOf(msg).toMatchTypeOf<types.Msg.ToolCall>()
|
|
expect(Msg.isToolCall(msg)).toBe(true)
|
|
})
|
|
|
|
test('handles tool call response', () => {
|
|
const msg = Msg.toolResult('Hello, World!', 'fake-tool-call-id')
|
|
expectTypeOf(msg).toMatchTypeOf<types.Msg.ToolResult>()
|
|
expect(Msg.isToolResult(msg)).toBe(true)
|
|
})
|
|
|
|
test('prompt message types should interop with openai-fetch message types', () => {
|
|
expectTypeOf({} as OpenAI.ChatMessage).toMatchTypeOf<types.Msg>()
|
|
expectTypeOf({} as types.Msg).toMatchTypeOf<OpenAI.ChatMessage>()
|
|
expectTypeOf({} as types.Msg.System).toMatchTypeOf<OpenAI.ChatMessage>()
|
|
expectTypeOf({} as types.Msg.User).toMatchTypeOf<OpenAI.ChatMessage>()
|
|
expectTypeOf({} as types.Msg.Assistant).toMatchTypeOf<OpenAI.ChatMessage>()
|
|
expectTypeOf({} as types.Msg.FuncCall).toMatchTypeOf<OpenAI.ChatMessage>()
|
|
expectTypeOf({} as types.Msg.FuncResult).toMatchTypeOf<OpenAI.ChatMessage>()
|
|
})
|
|
})
|