)
引言为什么大模型应用开发绕不开 FastAPI 呢学 Agent 也是为了把它作为一个服务去给外部调用对外提供能力的服务但是要怎么做到给外部调用呢这个时候就需要 Python 的 Web 框架了。常见的主流 Web 框架有 Flask、Django 以及 FastAPI。为什么会选择 FastAPI因为它轻量且方便而 Django 虽然很全但又很重Flask 也很轻和自由但是代码容易写乱不好维护。那就会选择 FastAPI 来作为这一个外壳来对外提供服务。学习 FastAPI我的感受学到这里我真的感觉 Python 很像 JavaScript比如参数类型校验这里JavaScript 是直接升级为 TypeScript 去做类型规范当然哈不能是 AnyScript 哈哈哈Python 这里呢是直接用 Pydantic然后如果一个类里面要进行类型规范就去继承它的 BaseModel如果是基本类型的话就用下图的方式来规范写了一下之后感觉这个框架确实要比 Spring 全家桶的 Java Web 框架要轻量很多只需要写一个初始化一个 app 对象然后就可以直接上手了就是从 Java 过来写 Python 感觉有些不适应很多 API 也不知道需要多写而且这个 import 为什么不是 import xxx from xxx 而是反过来的看着都有点奇怪。from typing import TypeVar from typing import Generic, Optional from fastapi import FastAPI, HTTPException from enum import Enum from pydantic import BaseModel app FastAPI() 定义运算符号类 class Operation(str, Enum): add sub - multi * divide / 定义计算类 class CalRequest(BaseModel): a: float b: float op: Operation T TypeVar(T) class StandardResponse(BaseModel, Generic[T]): code: int 200 msg: str Success data: Optional[T] None app.post(/calc, response_modelStandardResponse[float]) def calc(calculate: CalRequest): if calculate.op Operation.divide and calculate.b 0: raise HTTPException(status_code400, detail除数不能为0) result 0 if calculate.op Operation.add: result calculate.a calculate.b elif calculate.op Operation.sub: result calculate.a - calculate.b elif calculate.op Operation.multi: result calculate.a * calculate.b elif calculate.op Operation.divide: result calculate.a / calculate.b return StandardResponse(dataresult)但是我也不知道为什么看着就是没有 Java 代码优雅可能是戒断反应吧感觉这里导包也没有 IDEA 里面好用怎么 PyCharm 用起来和 IDEA 差距有点大呢竟然还是一家的产品呢这里我就不讲解 FastAPI 里面的内容了网上都有也可以问豆老师来学希望大家都一起努力吧