gpt4 book ai didi

openai-api - 如何从 openAI chat-gpt-4 获取流答案?

转载 作者:行者123 更新时间:2023-12-02 22:47:56 25 4
gpt4 key购买 nike

我听说您可以从 Chat-GPT-4 获取流式答案,但我没有找到太多相关信息。如果我问 chat-gpt 本身,它告诉我根据 2021 年,没有这样的功能。我可以使用流媒体吗?如何使用?

最佳答案

是的,可以。

首先,API 引用在这里: https://platform.openai.com/docs/api-reference/chat/create

向下滚动到“流”。这是一个 bool 值。

其次,这是一个开箱即用的 JavaScript 示例,其中包含最基本的工具。丑陋但有效。如果运行它,您将看到增量下降并打印在控制台中。玩得开心。

(function() {
// Define the API endpoint
const apiEndpoint = "https://api.openai.com/v1/chat/completions";
const headers = {
"Content-Type": "application/json",
"Authorization": "Bearer xxxxx", // replace with your actual OpenAI key
};

// Define the data to be sent
const data = {
model: "gpt-4",
messages: [{
role: "user",
content: "Tell me more about XYZ." // <<<<< This is your prompt.
}],
stream: true // <<<< Peek-a-boo
};

// Make the API request
fetch(apiEndpoint, {
method: "POST",
headers: headers,
body: JSON.stringify(data)
})
.then((response) => {
const reader = response.body.getReader();
return new ReadableStream({
start(controller) {
return pump();
function pump() {
return reader.read().then(({ done, value }) => {
// When no more data needs to be consumed, close the stream
if (done) {
controller.close();
return;
}
// Enqueue the next data chunk into our target stream
controller.enqueue(value);

//debugger;

let chars = new TextDecoder().decode(value);
let lines = chars.split('data:');
for (let i=0; i < lines.length; i++) {
chars = lines[i].replace(/\s*/, '').replace(/\s*$/, '');
if (!chars) {
continue;
}
//debugger;
//chars = lines[i].replace(/data: *(\{.*)\s*/g, '$1');
//chars = chars.replace('\\"', '"');
let obj = JSON.parse(chars);
if (obj && obj.choices[0].delta) {
let deltaS = obj.choices[0].delta.content;
console.log(deltaS);
}
}
// console.log('Received: ' + chars.join(''));
return pump();
});
}
},
});
})
.then((stream) => new Response(stream))
.then((response) => response.json())
.then((responseJson) => {
// Here, you get the whole response object.
// Loop over the 'choices' array to get each individual message.
responseJson['choices'].forEach((choice) => {
//console.log(choice['message']['content']);
});
})
.catch((err) => console.error(err));
})();

关于openai-api - 如何从 openAI chat-gpt-4 获取流答案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76654561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com