赞
踩
通过本文你可以了解到:
- 如何安装fastapi,快速接入
- 如何让大模型对外提供API接口
往期文章回顾:
1.大模型学习资料整理:大模型学习资料整理:如何从0到1学习大模型,搭建个人或企业RAG系统,如何评估与优化(更新中…)
2.streamlit入门和简单使用:streamlit:如何快速构建一个应用,不会前端也能写出好看的界面
3.搭建RAG应用:RAG:如何从0到1搭建一个RAG应用
欢迎大家访问个人博客网址:https://www.maogeshuo.com,博主努力更新中…
文档: https://fastapi.tiangolo.com
源码: https://github.com/tiangolo/fastapi
FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 并基于标准的 Python 类型提示。
关键特性:
pip install fastapi
pip install "uvicorn[standard]"
参考RAG:如何从0到1搭建一个RAG应用中的模型和接口,在上层提供接口,其具体实现如下:
Item
,包含常用的参数model_name,vector_db,prompt,top_k,temperature
等chat_with_model
,调用get_vector_db
和ask_and_get_answer_from_local
,返回结果给调用方import os from typing import Any from chat_doc_stream import ask_and_get_answer_from_local from fastapi import FastAPI from pydantic import BaseModel # 创建app from streamlit_demo.embedding_oper import load_embeddings_faiss app = FastAPI() class Item(BaseModel): model_name: str = "Qwen_q2" vector_db: str = "bge-large-zh-v1.5" prompt: str = None top_k: int = 5 temperature: float = 0.01 class Response: code: int message: str data: Any def __init__(self, code, message, data): self.code = code self.message = message self.data = data @staticmethod def success(data: Any): return Response(code=200, message="success", data=data) @staticmethod def error(msg:str): return Response(code=500, message=msg, data=None) @app.get(path="/hello", description="hello测试") def hello(): return {"hello": "world"} @app.get(path="/getItemById/{id}") def getItemById(id: int): return {"id: ": id} def get_vector_db(): base_dir = os.path.dirname(__file__) vector_db_path = os.path.join(base_dir, "vector_db") vector_store = load_embeddings_faiss(vector_db_path, "bge") return vector_store @app.post(path="/chat") def chat_with_model(item: Item): if item.prompt is None: return Response.error("prompt is None") vector_store = get_vector_db() response = ask_and_get_answer_from_local( model_name="Qwen_q2", vector_db=vector_store, prompt=item.prompt, top_k=item.top_k ) print("chat_with_model: ", response) return Response.success(response)
关于 uvicorn api:app --reload 命令......
uvicorn main:app 命令含义如下:
api:api.py 文件(一个 Python "模块")。
app:在 main.py 文件中通过 app = FastAPI() 创建的对象。
--reload:让服务器在更新代码后重新启动。仅在开发时使用该选项。
访问http://127.0.0.1:8000/docs
,查看所有的接口
接触过java后端的同学,看到这个界面应该很熟悉,这不就是swaggerui
?
输入参数,点击Try it out执行和调用后台API,等待返回结果
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。