轻松实现百度大模型ERNIE对话

该代码直接可用,实现了流式输出,只需要在你自己的开发环境配置百度申请的QIANFAN_AK和QIANFAN_SK即可使用啦。// # 在.env文件中,设置以下内容,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk

不过需要注意:大模型输出目前无法设置成一个字一个字的返回。设置成流式清求能一段一段内容返回,如果您需要达到逐字输出的效果,你可以使用服务端接收到流式返回结果后,通过SSE的方式返还给客户端、客户端通过EventSource接收后使用js定时打印,Typed.js等方式实现逐字输出即可。或者前端处理使用setTimeout也是可以的。

我用的是node.js实现的,直接引入的SDK包,别的语言同理也可以实现。

const express = require('express')
const { ChatCompletion, Text2Image } = require('@baiducloud/qianfan')
const router = express.Router()

router.post('/', async function (req, res) {
  let payload = req.body
  const messageInput = payload.message

  res.setHeader('Cache-Control', 'no-cache')
  res.setHeader('Transfer-Encoding', 'chunked')
  res.setHeader('X-Accel-Buffering', 'no')

  try {
    const messages = Array.isArray(messageInput) ? messageInput : [{ role: 'user', content: messageInput }]
    const client = new ChatCompletion()
    const stream = await client.chat(
      {
        messages: messages,
        stream: true,
        system: '你是Amarantine、沐风倩研发的一款私人AI助手',
        max_output_tokens: 1024,
        temperature: 0.95, 
        top_p: 0.8, 
      },
      'ERNIE-3.5-8K'
    )
    for await (const chunk of stream) {
      const result = chunk.result
      if (result) {
        res.write(result)
      }
    }
    res.end()
  } catch (error) {
    console.error('Error:', error.message)
    res.status(500).end('Internal service exception:' + error.message)
  }
})

效果图如下:

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值