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

2023-07-27 17:17:04 +08:00
 oyp
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
}
582 次点击
所在节点    程序员
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/960288

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX