0


浅谈人工智能之大模型的流式调用:Python版

浅谈人工智能之大模型的流式调用:Python版

前言

在深度学习和自然语言处理领域,大模型的应用日益广泛,它们能够处理更复杂、更精细的任务,但同时也带来了计算资源和内存占用的挑战。为了有效利用资源并实时响应用户请求,流式调用成为了一种重要的技术手段。本文将分为两部分,分别介绍纯后端版本和前后端结合版本的流式调用实现方法。

纯后端版本:使用Python进行流式调用

在纯后端场景下,我们通常使用Python来开发服务端应用,直接处理大模型的流式调用。以下是一个基于千问大模型作为实例,展示如何使用OpenAI库进行流式文本生成。

# coding:utf-8from openai import OpenAI
openai_api_base ="http://XX.XX.XX.XX:8889/v1"
openai_api_key ="none"
client = OpenAI(
api_key=openai_api_key,
base_url=openai_api_base,)
response = client.chat.completions.create(
    model="QWen",
    messages=[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"请你发表你对自己的看法?"},],
    stream=True,
    temperature=0,)for chunk in response:
    content = chunk.choices[0].delta.content
    if content:print(content, end='', flush=True)print('\n')

前后端结合版本:使用Python和Web框架进行流式调用

在前后端结合的场景下,我们需要在前端显示实时生成的文本,并在后端使用Python处理流式调用。这里以Flask作为Web框架,展示如何构建一个简单的流式文本生成服务。

前端实现

前端可以使用JavaScript的Fetch API来消费这个流式服务。下面是一个简单的HTML页面,展示了如何动态显示生成的文本

<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Stream Example</title></head><body><preid="output"></pre><script>const output = document.getElementById('output');fetch('http://127.0.0.1:5000/stream',{ method:'GET'}).then(response=> response.body).then(stream=>{const reader = stream.getReader();const decoder =newTextDecoder();asyncfunctionreadAndLog(){const{ value, done }=await reader.read();if(done){
                        console.log('Stream ended');return;}const chunk = decoder.decode(value,{ stream:true});
                    output.textContent += chunk;awaitreadAndLog();}readAndLog().catch(err=> console.error('Failed to read stream: ', err));}).catch(error=> console.error('Failed to fetch stream: ', error));</script></body></html>

后端实现

from flask import Flask, Response
from openai import OpenAI
from flask_cors import CORS

app = Flask(__name__)
CORS(app)

client = OpenAI(
    api_key="YOUR_OPENAI_API_KEY",
    base_url="http://XX.XX.XX.XX:8889/v1",)@app.route('/stream', methods=['GET'])defchat():
    
    response = client.chat.completions.create(
        model="QWen",
        messages=[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"请你自我介绍下?"},],
        stream=True,
        temperature=0,)defgenerate():for chunk in response:
            content = chunk.choices[0].delta.content
            if content:yield content
    return Response(generate(), mimetype='text/plain')if __name__ =='__main__':
    app.run(debug=True)

结论

流式调用是处理大模型实时任务的有效方式,无论是纯后端还是前后端结合的场景,都可以通过适当的技术实现。上述示例展示了如何使用Python和Flask构建一个基本的流式文本生成服务,并在前端动态显示生成的文本。这种方法可以应用于各种需要实时反馈的NLP任务,如聊天机器人、自动写作等。


本文转载自: https://blog.csdn.net/u012151594/article/details/142755681
版权归原作者 奔波儿灞爱霸波尔奔 所有, 如有侵权,请联系我们删除。

“浅谈人工智能之大模型的流式调用:Python版”的评论:

还没有评论