Midjourney接口

posthttp://8.217.90.53:22021/chatstreamGk?apiKey=

注意参数类型全部为字符串

名称 是否必选 参数可选值 含义
message 图像内容描述
modelid Midjourney
mjType 0或1 0为极速模式 1为慢速模式
mjTimeout 超时时间,单位为秒,示例值:480

接口返回值说明: 慢速模式,结果会推送到mjCallback对应的地址,推送请求的body格式为:

                           {
raw_image_url: 图片url地址
}
                        

极速模式 接口返回为流式文本。 图片消息格式为

 assmdx[Image]assmdx图片url地址assmdx[Image]assmdx
                        

结束时消息格式为assmdx[DONE]assmdx+JSON字符串,示例值如下:

 assmdx[DONE]assmdx{"conversationId":"","tokens":189}
                        

                     const runner = async () => {
  try {
    const response = await fetch(`${CHAT_SERVER_API}/chatstreamGk`, {
      method: 'post',
      body: JSON.stringify({
        modelid: 'GPT-4',
        openid: '123',
        memory: '[]',
        message: '你好',
        conversationId: '',
        device: '3',
        websearch: '0'
      }),
      headers: {'Content-Type': 'application/json'},
      timeout: 30000
    })
    const read = async body => {
      let error;
      body.on('error', err => {
        error = err
        console.log(err, "请求网络数据失败")
      })

      for await (const chunk of body) {
        const nstrArr = chunk.toString().split('\n').map(s => s.replace('data:', '').replaceAll('assmdx[Enter]assmdx', '\n'))
        for (let nstr of nstrArr) {
          if (nstr === '') {
            continue
          } else if (nstr.indexOf('assmdx[DONE]assmdx') === 0) {
            nstr = nstr.replace('assmdx[DONE]assmdx', '').trim()
            try {
              const ress = JSON.parse(nstr)
              console.log('conversationId 是', ress.conversationId)
              console.log('消耗token数:', ress.tokens)
            } catch(e) {
              console.error(e, "请求网络数据失败")
            }
          }  else if (nstr.indexOf('assmdx[Image]assmdx') === 0) {
 // 解析图片url
             nstr = nstr.replaceAll('assmdx[Image]assmdx', '').trim()
          }else if (nstr.indexOf('assmdx[Error]assmdx') === 0) {
            console.log('服务器错误')
          } else {
            console.log('收到了服务器返回的内容:', nstr)
          }
        }
      }

      return new Promise((resolve, reject) => {
        body.on('close', () => {
          error ? reject(error) : resolve();
        });
      });
    };
    await read(response.body);
  } catch (e) {
    console.error('出错了', e)
  }
}
runner()