当前位置: 首页 > backend >正文

【LLM】FastAPI入门教程

note

  • FastAPI 是一个现代的、快速(高性能)的 Web 框架,用于构建 API(应用程序编程接口)。它基于 Python 3.7+,使用了 Python 类型提示(type hints),并且具有自动化的文档功能。

文章目录

  • note
  • 一、FastAPI
  • 二、Pydantic定义和校验数据类型
  • Reference

一、FastAPI

简介:FastAPI 是一个现代的、快速(高性能)的 Web 框架,用于构建 API(应用程序编程接口)。它基于 Python 3.7+,使用了 Python 类型提示(type hints),并且具有自动化的文档功能。

(1)安装fastapi

# 安装 FastAPI 和一个异步 HTTP 服务器(比如 Uvicorn)
pip install fastapi uvicorn

(2)创建一个简单的 FastAPI 应用
main.py内容如下:

from fastapi import FastAPIapp = FastAPI()@app.get("/")
async def read_root():return {"message": "Hello World"}

(3)终端运行:uvicorn main:app --reload

  • uvicorn 是 HTTP 服务器。
  • main 是你的 Python 文件名(main.py)。
  • app 是你在文件中创建的 FastAPI 实例。
  • –reload 是一个开发选项,它会在代码更改时自动重新加载服务器。

运行后,你会看到类似这样的输出:

INFO:     Started server process [12345]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://1234.0.0.1:8000 (Press CTRL+C to quit)

(4)访问你的 API
打开浏览器,访问 http://127.0.0.1:8000,你会看到返回的 JSON 数据:

{"message": "Hello World"
}

(5)查看自动生成的文档
FastAPI 会自动为你生成文档,你可以通过以下两个链接访问:

  • http://127.0.0.1:8000/docs:使用 Swagger UI
  • http://127.0.0.1:8000/redoc:使用 ReDoc

这些文档会根据你的代码自动生成

(6)添加更多路由:可以添加更多的路由来处理不同的请求,比如:

@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):return {"item_id": item_id, "q": q}
  • /items/{item_id} 是一个路径参数,item_id 是一个整数。
  • q 是一个可选的查询参数。

访问 http://127.0.0.1:8000/items/1?q=somequery,你会看到返回:

{"item_id": 1,"q": "somequery"
}

(7)使用请求体
FastAPI 可以轻松处理 JSON 请求体

from pydantic import BaseModelclass Item(BaseModel):name: strdescription: str = Noneprice: floattax: float = None@app.post("/items/")
async def create_item(item: Item):return item
  • Item 是一个 Pydantic 模型,用于定义请求体的结构。
  • 使用 @app.post 来定义一个 POST 请求。

可以通过文档页面(http://127.0.0.1:8000/docs)测试这个 POST 请求,输入 JSON 数据:

{"name": "Item1","description": "This is an item","price": 9.99,"tax": 1.0
}

二、Pydantic定义和校验数据类型

Pydantic 是一个 Python 库,用于 数据验证 和 设置管理。它的名字来源于 Python 和 valid(验证)的结合。Pydantic 的核心功能是通过 Python 类型提示(Type Hints) 来验证数据的类型和结构。

在 FastAPI 中,Pydantic 主要用于定义 请求体(Request Body) 的结构。当你需要接收用户发送的 JSON 数据时,Pydantic 可以确保这些数据的格式是正确的。

Reference

[1] https://fastapi.tiangolo.com/
[2] http://www.datawhale.cn/learn/summary/164
[3] fastapi教程:https://hongtaoh.com/cn/2024/09/01/fastapi/

http://www.xdnf.cn/news/10316.html

相关文章:

  • 无公网ip远程桌面连接不了怎么办?内网计算机让外网访问方法和问题分析
  • 2. 手写数字预测 gui版
  • VMvare 创建虚拟机 安装CentOS7,配置静态IP地址
  • Kubernetes架构与核心概念深度解析:Pod、Service与RBAC的奥秘
  • 算法训练第四天
  • 企业上线ESOP(电子标准操作程序)电子作业指导书,实现车间无纸化,是数字化转型的重要一步
  • ZC-OFDM雷达通信一体化减小PAPR——部分传输序列法(PTS)
  • 利用python工具you-get下载网页的视频文件
  • 学习笔记:3个学习AI路上反复看到的概念:RAG,Langchain,Agent
  • MySql(十)
  • 字符串~~~
  • 【Python训练营打卡】day40 @浙大疏锦行
  • 前端学习(7)—— HTML + CSS实现博客系统页面
  • python魔法函数
  • 《操作系统真相还原》——初探保护模式
  • 使用curlconverter网站快速生成requests请求包
  • 【Docker 新手入门指南】第十五章:常见故障排除
  • pytest 常见问题解答 (FAQ)
  • 头歌java课程实验(学习-Java字符串之正则表达式之元字符之判断字符串是否符合规则)
  • 每日c/c++题 备战蓝桥杯(P1204 [USACO1.2] 挤牛奶 Milking Cows)
  • [蓝桥杯]分考场
  • 【11408学习记录】考研英语写作提分秘籍:2013真题邀请信精讲+万能模板套用技巧
  • 1-Wire 一线式总线:从原理到实战,玩转 DS18B20 温度采集
  • AE已禁用刷新请释放Caps Lock
  • Redis事务详解:原理、使用与注意事项
  • RabbitMQ 高级特性
  • Python打卡训练营Day41
  • C 语言开发中常见的开发环境
  • python打卡day41@浙大疏锦行
  • 【愚公系列】《生产线数字化设计与仿真》006-颜色分类站仿真(配置颜色分类站的气缸和传送带)