Pydantic:

是一个Python数据校验、数据模型库,FastAPI大量依赖它。用来把“不可信的Json”转换成“经过校验的Python对象”。


激活Python虚拟环境:

source .venv/bin/activate;退出是deactivate


Uvicorn:

Uvicorn 是一个基于 ASGI(异步网关接口)规范的、闪电般快速的 Python Web 服务器 Python代码本身是不能直接运行在网络上的,它需要一个服务器来接受浏览器的网络请求,把请求转发给代码处理,再把结果返回给浏览器。Uvicorn充当的就是这个传话筒和发动机的角色。

和FastAPI的关系:

  • FastAPI是应用框架(编写业务逻辑、定义路由、处理数据)
  • Uvicorn是运行环境(监听接口、解析HTTP协议、维持连接)

运行使用Uvicorn:

打开第一个terminal启动服务:

cd ~/Desktop/code/mein/Sisyphus/backend
source .venv/bin/activate
uvicorn app.main:app --reload

打开第二个terminal执行curl:

curl -X POST "http://127.0.0.1:8000/evaluate" \
  -H "Content-Type: application/json" \
  -d '{
    "question": "onPause 和 onStop 有什么区别?",
    "reference_answer": "onPause 表示 Activity 失去焦点,但可能仍部分可见;onStop 表示 Activity 不再可见。",
    "user_answer": "onPause 是暂停,onStop 是停止。"
  }'

或者直接使用http://127.0.0.1:8000/docs


为什么每个目录下都要有__init__.py?

是为了告诉Python这个文件夹可以被当做一个包使用


模型返回的答案需要代码来变成可信的业务结果

比如score = 0,但是accepted = true,很明显就是错的,但是不适合再次提交给大模型修改。 客户端要质疑所有收到的结果,判空、合理性等等。