当前位置:   article > 正文

「AI人工智能」NodeJs使用openai流式请求与非流式请求_前端使用openai 进行流式请求

前端使用openai 进行流式请求
文章目录


前言

NodeJs使用openai流式请求与非流式请求


一、非流式请求

一次性返回所有数据,请求时间较久,兼容性好。

1.1 无上下文模式

  1. router.post("/openai", async (req, res) => {
  2. let url = 'https://api.openai.com/v1/engines/text-davinci-003/completions' // 3.5可用
  3. const response = await axios.post(url, {
  4. max_tokens: 1000,
  5. prompt: req.body.content,
  6. }, {
  7. headers: {
  8. 'Authorization': 'Bearer ' + chat_key,
  9. 'Content-Type': 'application/json'
  10. }
  11. });
  12. responseJSON(res, response)
  13. })

1.2 上下文模式

  1. // gpt3.5 - 完成
  2. router.post("/chart", async (req, res) => {
  3. let param = req.body
  4. var data = JSON.stringify({
  5. messages: [
  6. {
  7. "role": "user",
  8. "content": param.content
  9. }],
  10. model: chatConfig.model || 'gpt-3.5-turbo',
  11. frequency_penalty: chatConfig.frequency_penalty || 0,
  12. max_tokens: chatConfig.max_tokens || 1000,
  13. presence_penalty: chatConfig.presence_penalty || 0,
  14. temperature: chatConfig.temperature || 1,
  15. top_p: chatConfig.top_p || 1
  16. });
  17. var config = {
  18. method: 'POST',
  19. url: 'https://api.openai.com/v1/chat/completions', // 反向代理可用 无反向代理请求超时
  20. headers: {
  21. 'Authorization': 'Bearer ' + chat_key,
  22. 'Content-Type': 'application/json',
  23. },
  24. timeout: 60 * 1000,
  25. data: data, // POST 反向代理可用
  26. };
  27. axios(config)
  28. .then((response) => {
  29. console.log(JSON.stringify(response.data));
  30. responseJSON(res, response.data.choices[0].message)
  31. })
  32. .catch((error) => {
  33. console.log(error);
  34. responseJSON(res, error)
  35. });
  36. })

二、流式请求

即时数据响应,请求时间短,交互效果好,不一定适配所有系统。

  1. let sendyhChatSteam = async (req, res, param) => {
  2. let _res = res;
  3. let data = {
  4. data: JSON.stringify({
  5. messages: [
  6. {
  7. "role": "user",
  8. "content": param.content
  9. }],
  10. frequency_penalty: chatConfig.frequency_penalty || 0,
  11. max_tokens: chatConfig.max_tokens || 1000,
  12. presence_penalty: chatConfig.presence_penalty || 0,
  13. temperature: chatConfig.temperature || 1,
  14. top_p: chatConfig.top_p || 1
  15. })
  16. };
  17. let options = {
  18. hostname: 'api.openai-proxy.com',
  19. path: 'gpt-3.5-turbo',
  20. method: 'POST',
  21. headers: {
  22. 'Content-Type': 'application/json'
  23. }
  24. };
  25. let question = ''
  26. let request = http.request(options, (response) => {
  27. response.setEncoding('utf8');
  28. // 监听 'data' 事件,获取返回的数据
  29. response.on('data', (chunk) => {
  30. question += chunk
  31. // 在这里处理每个数据块
  32. console.log(question);
  33. });
  34. // 监听 'end' 事件,表示数据传输完成
  35. response.on('end', () => {
  36. console.log('------------------监听 end 事件,表示数据传输完成-----------------------------');
  37. console.log(question);
  38. });
  39. });
  40. // 可以通过流式方式将数据写入请求
  41. request.write(JSON.stringify(data));
  42. // 结束请求
  43. request.end();
  44. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/825193
推荐阅读
相关标签
  

闽ICP备14008679号