这里写两种方式连接
一、创建OpenAI账号
创建一个 OpenAI 帐户并注册 API 密钥。你可以在 OpenAI 的网站上进行注册。→传送门
二、安装axios 库
安装 Node.js 的 axios 库,它是一个用于发起 HTTP 请求的库。你可以使用 npm 进行安装,命令如下:
npm install axios
三、导入 axios 库
创建一个 Node.js 文件,并在文件中导入 axios 库。
const axios = require('axios');
第一种
app.post("/chart", async (req, res) => {
// console.log('=================== req', req.body)
var data = JSON.stringify({
"model": "gpt-3.5-turbo",
"messages": req.body.messages //messages就是你发的消息是数组形式
});
var config = {
method: 'post',
url: 'https://api.openai-proxy.com/v1/chat/completions',
headers: {
'Authorization': 'Bearer YourKey',
'Content-Type': 'application/json',
},
data: data
};
axios(config)
.then(function (response) {
// console.log(JSON.stringify(response.data));
res.send({ code: 200, msg: response.data })
})
.catch(function (error) {
console.log(error);
});
})
如果要让chartgpt实现有‘’连续对话‘’的话就需要把之前的对话都跟着messages一起发过去例如
let messages = ref<msgInterface[]>([
{ role: 'user', content: '您好?' },
{ role: 'assistant', content: '您好!请问您有什么问题需要我回答吗?' },
{ role: 'user', content: '你知道射洪市吗' },
{
role: 'assistant',
content: '是的,射洪市位于中国四川省遂宁市下辖,是一个历史文化名城,也是四川省的一个农业大县。'
},
{ role: 'user', content: '你上一句话说的是什么' },
{
role: 'assistant',
content: '我上面说的是射洪市的基本信息,包括该市所属的行政区划、历史文化及经济特色。'
},
])
其中的role是user代表自己的话 assistant代表chartgpt以此来区分
需要注意的是这样虽然可以实现“连续对话”,但势必造成每次发送的消息内容会非常多,而OpenAI是按字数计费的,所以你需要根据你口袋里的钞票去衡量每次应该携带几条聊天记录比较合适。
第二种
编写一个函数来调用 OpenAI API。这需要使用 API 密钥和 API 终端点。
async function callOpenAI() {
const prompt = "Hello, how are you?";
const engine = "text-davinci-002";
const maxTokens = 5;
const response = await axios.post(
'https://api.openai-proxy.com/v1/engines/' + engine + '/completions',
{
prompt: prompt,
max_tokens: maxTokens
},
{
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + YOUR_API_KEY
}
}
);
console.log(response.data.choices[0].text);
}
测试 OpenAI API
callOpenAI();