oyp
V2EX  ›  程序员

Node.js 调用 ChatGPT 并实现流式传输

By oyp at 2023 年 7 月 27 日 · 1319 次点击
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
}
目前尚无回复
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
© 2026 V2EX · 23ms · 3.9.8.5