AI大模型-流式处理 (以百度接口为例)

本文介绍了如何使用PythonFlask框架构建一个后端服务,通过与百度AI的ERNIE-BotAPI交互,实现实时的流式对话功能,并在前端展示。后端代码展示了获取访问令牌、发送请求以及处理流式响应的过程。
摘要由CSDN通过智能技术生成

No bb , show code

效果

后端代码

from flask import Flask, request, Response
import json
import requests
from flask_cors import CORS

app = Flask(__name__)
CORS(app)  # Enable CORS for all routes

def get_access_token(ak, sk):
    auth_url = "https://aip.baidubce.com/oauth/2.0/token"
    resp = requests.get(auth_url, params={"grant_type": "client_credentials", "client_id": ak, 'client_secret': sk})
    return resp.json().get("access_token")

def get_stream_response(prompt):
    ak = "你的AK"
    sk = "你的SK"
    source = "&sourceVer=0.0.1&source=app_center&appName=streamDemo"
    # ERNIE-Bot-turbo
    base_url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/eb-instant"
    # ERNIE-Bot 4.0
    # base_url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions_pro"
    # base_url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/plugin/57wt8rb5b3kzhnrd"
    url = base_url + "?access_token=" + get_access_token(ak, sk) + source
    data = {
        "messages": [{"role": "user", "content": prompt}],
        "stream": True
    }
    payload = json.dumps(data)
    headers = {'Content-Type': 'application/json'}
    return requests.post(url, headers=headers, data=payload, stream=True)

def gen_stream(prompt):
    response = get_stream_response(prompt)
    for chunk in response.iter_lines():
        chunk = chunk.decode("utf8")
        if chunk[:5] == "data:":
            chunk = chunk[5:]
        yield chunk

@app.route('/eb_stream', methods=['POST'])
def eb_stream():
    body = request.json
    prompt = body.get("prompt")
    return Response(gen_stream(prompt), mimetype='text/event-stream')

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8000)

前端代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Sample</title>
</head>
<body>
  <label for="textInput">Prompt:</label>
  <input type="textarea" id="textInput" placeholder="您有什么问题">
  <button onclick="run_prompt()">执行prompt</button>
  <p><textarea id="answer" rows="10" cols="50" readonly></textarea></p>
<script>
  current_text = document.getElementById('answer');
  text = "";
  char_index = 0
  function run_prompt() {
    var inputValue = document.getElementById('textInput').value;
    document.getElementById('answer').value = "";
    // 调用服务端的流式接口, 修改为自己的服务器地址和端口号
    fetch('http://127.0.0.1:8000/eb_stream', {
      method: 'post',
      headers: {'Content-Type': 'application/json'},
      body: JSON.stringify({'prompt': inputValue})
    })
    .then(response => {
      return response.body;
    })
    .then(body => {
      const reader = body.getReader();
      const decoder = new TextDecoder();
      function read() {
        return reader.read().then(({ done, value }) => {
          if (done) { // 读取完成
            return;
          }
          data = decoder.decode(value, { stream: true });
          text += JSON.parse(data).result;
          type();  // 打字机效果输出
          return read();
        });
      }
      return read();
    })
    .catch(error => {
      console.error('发生错误:', error);
    });
  }

  function type() {
    let enableCursor = true;  // 启用光标效果
    if (char_index < text.length) {
      let txt = document.getElementById('answer').value;
      let cursor = enableCursor ? "|" : "";
      if (enableCursor && txt.endsWith("|")) {
        txt = txt.slice(0, -1);
      }
      document.getElementById('answer').value = txt + text.charAt(char_index) + cursor;
      char_index++;
      setTimeout(type, 1000/5);  // 打字机速度控制, 每秒5个字
    }
  }
</script>
</body>
</html>

AI模型赋能人形机器人可以被视为迈向通用人工智能的一大步。人形机器人是一种能够模拟人类外貌、行为和交流的机器,结合AI模型的能力,可以实现更高级别的人工智能功能。 首先,AI模型的强大计算能力和学习能力使得人形机器人能够更加准确地理解和模仿人类的动作和表情。通过对大量数据的学习,AI模型能够理解并推断人类的情绪、意图和行为,从而更好地与人类进行交互和沟通。这种与人类的自然交流方式可以让机器人更好地融入人类社会,满足人类的各种需求。 其次,AI模型赋能的人形机器人在应用领域具有广泛的潜力。例如,在医疗领域,人形机器人可以通过感知和理解病人的情绪和需求来提供情感支持和护理服务。在教育领域,人形机器人可以根据学生的学习情况和兴趣定制教学内容,提供个性化的教育体验。在服务行业中,人形机器人可以担任引导员、导游员等角色,为人们提供导航和咨询服务。 最后,AI模型赋能的人形机器人还有助于推动人工智能技术的发展和创新。通过将大模型与机器人相结合,各种新的应用和功能不断涌现出来。同时,人形机器人的使用也可以促进对于伦理、隐私和安全等相关问题的讨论和解决。 总的来说,AI模型赋能人形机器人是迈向通用人工智能的一大步。它能够实现更加准确和自然的人机交互,拓展人工智能在各个领域的应用,并推动人工智能技术的发展和创新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值