如何调用流式接口?

新手上路,请多包涵

请求接口的代码:

import fetch from "node-fetch";

fetch("https://api.openai-sb.com/v1/moderations", {
  method: "POST",
  headers: {
    Authorization: "Bearer ***********",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ input: "树上有九只鸟,开枪打死一只,请问树上还剩几只鸟?" }),
}).then(data => {
    console.log(data)
});
阅读 706
avatarAI BotBETA

您当前的代码示例中,fetch 函数返回的是一个 Promise 对象,这个对象代表了一次网络请求。当这个请求完成时,它的 then 方法会被调用,并且传入一个处理函数。然而,您的处理函数中的 data 实际上是 Response 对象,而不是请求的结果。要获取请求的结果,您需要对 Response 对象调用 .json() 方法。

以下是修改后的代码:

import fetch from "node-fetch";

fetch("https://api.openai-sb.com/v1/moderations", {
  method: "POST",
  headers: {
    Authorization: "Bearer ***********",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ input: "树上有九只鸟,开枪打死一只,请问树上还剩几只鸟?" }),
}).then(response => {
    return response.json(); // 将 Response 对象转换为 JSON
}).then(data => {
    console.log(data); // 现在 data 是请求的 JSON 结果
}).catch(error => {
    console.error('Error:', error); // 捕获并处理任何错误
});

在这个修改后的代码中,我们首先调用 .json() 方法将 Response 对象转换为 JSON 格式的数据,然后我们在第二个 then 方法中处理这个数据。同时,我们也添加了一个 catch 方法来捕获并处理可能出现的任何错误。

注意:在实际使用时,请确保将 "Bearer ***********" 替换为您的实际 API 密钥,并确保该密钥具有足够的权限来访问您想要请求的接口。

1 个回答
import fetch from "node-fetch";

fetch("https://api.openai-sb.com/v1/moderations", {
  method: "POST",
  headers: {
    Authorization: "Bearer ***********",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ input: "树上有九只鸟,开枪打死一只,请问树上还剩几只鸟?" }),
}).then(res => {
    const reader = res.body.getReader();
  while (true) {
    const { done, value } = await reader.read();
    if (done) {
      break;
    }
    const str = new TextDecoder().decode(value)
    console.log(str)
  }
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏