首页 > 其他分享 >AI大语言模型LLM学习-WebAPI搭建

AI大语言模型LLM学习-WebAPI搭建

时间:2024-09-07 10:55:53浏览次数:12  
标签:WebAPI __ LLM 框架 web AI question Python Flask

系列文章


1. AI大语言模型LLM学习-入门篇
2. AI大语言模型LLM学习-Token及流式响应


前言


在上一篇博文中,我们调用了在线大模型API,并用 Python 写了一个控制台流式对话客户端,基本能愉快的与大模型对话聊天了。但控制台总归太技术化,我们希望能有个类似 ChatGPT 那样的 Web 聊天对话界面。为了实现这一目标,计划采用两篇博文进行实现,本篇为后端WebAPI的搭建流程,下一篇将介绍使用vue3实现前端界面的编写。


一、python的web开发框架


python的web开发框架很多,这里只简单介绍了三款在国内比较流行的开发框架。本博文及后续博文根据各自框架的特点,选择了入手简单的轻量级Flask作为web开发框架。

1.Django 框架

优 点:是一个高层次 Python Web 开发框架,特点是开发快速、代码较少、可扩展性强。Django 采用 MTV(Model、Template、View)模型组织资源,框架功能丰富,模板扩展选择最多。对于专业人员来说,Django 是当之无愧的 Python 排名第一的 Web 开发框架。

缺 点:包括一些轻量级应用不需要的功能模块,不如 Flask 轻便。过度封装很多类和方法,直接使用比较简单,但改动起来比较困难。相比于 C,C++ 性能,Djang 性能偏低。模板实现了代码和样式完全分离,不允许模板里出现 Python 代码,灵活度不够。另外学习曲线也相对陡峭。

2.Flask

优 点:Flask 是一个 Python Web 开发的微框架,严格来说,它仅提供 Web 服务器支持,不提供全栈开发支持。然而,Flask 非常轻量、非常简单,基于它搭建 Web 系统都以分钟来计时,特别适合小微原型系统的开发。花少时间、产生可用系统,是非常划算的选择。

缺 点:对于大型网站开发,需要设计路由映射的规则,否则导致代码混乱。对新手来说,容易使用低质量的代码创建 “不良的 web 应用程序”。

3.FastAPI

优 点:FastAPI 是一个现代、快速(高性能)的 Web 框架,用于基于标准 Python 类型提示使用 Python 3.6+ 构建 API。非常高的性能,与 NodeJS 和 Go 相当(感谢 Starlette 和 Pydantic)。可用的最快的 Python 框架之一。减少大约 40% 的人为(开发人员)引发的错误。简短,简单,直观,健壮。

缺 点:本身不带模板语法,需要安装模板语法


二、flask的使用介绍


1.依赖安装

pip install flask

2.一个简单webAPI接口

代码如下:

# 导入flask类
from flask import Flask
# 初始化
app = Flask(__name__)


# 使用route()装饰器来告诉Flask触发函数的URL。
@app.route('/')
def index():
    return 'Hello World!'


if __name__ == "__main__":
    # 调用run方法,设定端口号,启动服务
    app.run(port=2024, host="0.0.0.0", debug=True)

运行代码:
在这里插入图片描述
使用浏览器访问:
在这里插入图片描述

3.基于LLM搭建的WebAPI接口

# 导入flask类
from flask import Flask ,request
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
api_key = "api_key(平台注册获得)"

# 初始化
app = Flask(__name__)


# 将大模型的调用封装成方法
def call(question):
    model = "qwen2-72b-instruct"
    llm = ChatOpenAI(
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
        api_key=api_key,
        model=model,
        streaming=True,
    )
    prompt_template = ChatPromptTemplate.from_messages([
        ("system", "你是一个很出色的历史老师,给我讲讲历史人物的故事吧。"),
        ("user", "{input}")
    ])

    # 使用|操作符将prompt_template和llm连接在一起,创建一个chain对象。
    chain = prompt_template | llm
    for token in chain.stream({"input": question}):
        data = token.content
        # web模型的流式输出
        yield data


# 定义请求路径为/chat,访问方法为post,本方法要求请求格式为json
@app.route('/chat', methods=['post'])
def chat():
    data = request.json
    # 接收用户输入的问题
    question = ""
    if (data["question"]):
        question = data["question"]
    print(question)
    return call(question)


if __name__ == "__main__":
    # 调用run方法,设定端口号,启动服务
    app.run(port=2024, host="0.0.0.0", debug=True)

使用postman工具进行测试:
在这里插入图片描述
思考:你敢确定是流式输出吗?上证据,注意动图中鼠标指向的地方,你可以尝试下非流式输出是不是一步到位,更为生动的证据需要后续配合前端页面的搭建及接口调用

在这里插入图片描述

服务部署


1.window环境的部署

1)简单粗暴:cmd黑窗口

python web.py

2)优雅高大:封装成服务

本文不做过多介绍,可参考我的好兄弟大佬超的博文中有关【WinSW】的使用介绍:
Windows部署Jar包的三种方式

2.linux环境的部署

1)简单粗暴:nohup后台运行

nohup python web.py > web.log  &

2)优雅高大:封装成服务

本文不做过多介绍,后续有空整理一篇linux环境下的服务封装方法。

标签:WebAPI,__,LLM,框架,web,AI,question,Python,Flask
From: https://blog.csdn.net/fengqiuhuang123/article/details/141983733

相关文章

  • 开源项目FaceFusion-AI换脸
    FaceFusion简介录制了一个简短的说明facefusion开源项目-视频换脸FaceFusion是一个开源的AI换脸和增强工具,支持图像和视频处理。它采用最新的深度学习技术,提供了一系列强大的功能,包括人脸替换、人脸增强、唇形同步等。FaceFusion的目标是为用户提供一个易用、高效且......
  • LLM 工程师入门:生成式AI的简易指南
    编者按:大模型发展了近两年,BaihaiIDP也分享了近百篇LLM各环节的技术洞察,有前沿探讨、有落地实践、有应用经验。但回头来看,我们似乎从来没有认真、从0开始探讨过LLM的基本原理。最近,一些企业客户和伙伴来询问,是否有LLM的从0到1的科普贴。他们说:"虽然在很多场景中,LLM都已......
  • 【第99课】云原生篇&K8s安全&实战场景&攻击Pod&污点Taint&横向移动&容器逃逸
    免责声明本文发布的工具和脚本,仅用作测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关内容。文中所涉......
  • VUE0003:Naive UI库:滑动条,单选,多选组件
    1,滑动条,单选,多选组件 <template><n-scrollbarclass="show-scrollbar"><n-spaceclass="map-setting"vertical><n-spacestyle="flex-flow:row;align-items:center;"><n-textclass=&q......
  • 如何使用AI来免费提升你的图片质量
    学习如何使用AI免费放大您的图像,可以将那些恼人的低分辨率图像转变为高分辨率的杰作——至少在某种程度上是这样。虽然使用我们用于此任务的应用程序Upscayl需要稍微调整一下不同的模型,但您至少应该能够将图像转换成视觉上更令人愉悦的效果。Upscayl目前仍在开发中,但会定期更......
  • AI助力水体保护区无人值守垂钓智能预警,基于YOLOv10全系列【n/s/m/b/l/x】参数模型开发
    保护我们赖以生存的自然生态环境,无疑是一项意义深远且需要长期坚持的任务。自然界的生态系统,由水、气、森林、土壤等多要素组成,它们相互依存、相互影响,共同维系着地球的生态平衡。然而,在人类活动的影响下,这一平衡正遭受着前所未有的挑战。因此,加强环境监管治理,保护我们的自然资......
  • 宏观了解AI大模型(持续更新中~)
      AI大模型是什么AI大模型是指具有巨大参数量的深度学习模型,通常包含数十亿甚至数万亿个参数。这些模型可以通过学习大量的数据来提高预测能力,从而在自然语言处理、计算机视觉、自主驾驶等领域取得重要突破。AI大模型的定义具体可以根据参数规模来分类。根据OpenAI的分类方......
  • Distributed Training: DeepSpeed ZeRO 1/2/3 + Accelerate, Megatron-LM
    1IntroductionGithub:https://github.com/microsoft/DeepSpeedZeRO:MemoryOptimizationsTowardTrainingTrillionParameterModelsZeRO-Offload:DemocratizingBillion-ScaleModelTrainingZeRO-Infinity:BreakingtheGPUMemoryWallforExtremeScaleDee......
  • uAI - AI Assistant 人工智能辅助助手插件
    uAI助手支持GPT3.5Turbo、GPT3.5Turbo16K、GPT4-8k和GPT4Turbo-128k什么是uAI助理?uAIAssistant是Unity游戏引擎的强大扩展,它使用GPTAI帮助游戏开发人员轻松创建专业代码和引人入胜的游戏内容。你需要一个OpenAI密钥才能使用uAI助手!阅读我们的文档以获取更多说明。......
  • Why I‘m getting 404 Resource Not Found to my newly Azure OpenAI deployment?
    题意:为什么我新部署的AzureOpenAI服务会出现404资源未找到的错误?问题背景:I'vegonethroughthis quickstart andIcreatedmyAzureOpenAIresource+createdamodeldeploymentwhichisinstatesucceedded.Ialsoplayarounditin AzureOpenAIStudio-Mi......