NodeJS 如何通过curl ping ChatGPT并保持对话状态

daupos2t  于 2023-01-01  发布在  Node.js
关注(0)|答案(1)|浏览(352)

下面的代码可以正常工作。我可以将问题 curl 到ChatGPT,它会一次性回复。但是,如果我尝试参与需要引用以前提交的状态的对话,则聊天无法进行。
我想知道我需要做些什么(以及所需的代码)来保留对话的上下文

const express = require("express");
const cors = require("cors");
const bodyParser = require("body-parser");

const { Configuration, OpenAIApi } = require("openai");

const configuration = new Configuration({
  apiKey: "sk-my-key",
});
const openai = new OpenAIApi(configuration);

// Set up the server
const app = express();
app.use(bodyParser.json());
app.use(cors())

// Set up the ChatGPT endpoint
app.post("/chat", async (req, res) => {
  // Get the prompt from the request
  const { prompt } = req.body;

  // Generate a response with ChatGPT
  const completion = await openai.createCompletion({
    model: "text-davinci-002",
    prompt: prompt,
  });
  res.send(completion.data.choices[0].text);
});

// Start the server
const port = 8080;
app.listen(port, () => {
  console.log(`Server listening on port ${port}`);
});

正在新终端中运行的CURL:

curl -X POST -H "Content-Type: application/json" -d '{"prompt":"Hello, how are you doing today?"}' http://localhost:8080/chat
luaexgnf

luaexgnf1#

您可以在提示符中传递一些上下文,因此保存一些内容,如最后10个回复,将其与新消息一起发送,然后弹出最旧的回复并添加最新的回复。
更有效的方法是,你也可以每交流10次,问“总结这次对话:......”然后将总结与每条消息一起传递并重复。
在请求中传递一个低温参数也是一个好主意,这样可以使聊天集中在主题上。

相关问题