import {
OpenAIApi,
Configuration,
CreateChatCompletionResponse
} from 'openai'
import process from 'process'
const configuration = new Configuration({
apiKey: 'sk-xxxxxxxxxxxx'
})
const openai = new OpenAIApi(configuration)
openai.createChatCompletion({
model: 'gpt-3.5-turbo',
messages: [
{ role: 'user', content: '请模仿李白写一首诗' }
],
stream: true
}, { responseType: 'stream' }).then(value => {
const data = value.data as ChatData
data.on('data', chunk => {
const match = chunk.toString().match(/^data: (.*)/)
if (!match || match[1] == '[DONE]') return
const res = JSON.parse(match[1])
const { content } = res.choices[0].delta
if (!content) return
process.stdout.write(content)
})
})
interface ChatData extends CreateChatCompletionResponse {
/** 绑定事件 */
on<K extends keyof EventType>(
eventType: K,
handle: (event: EventType[K]) => void
): void
}
interface EventType {
'data': Buffer
}