AI学习——FastAPI 接口封装
FastAPI 接口封装
- 一、FastAPI 介绍
- 二、安装依赖
- 三、FastAPI 最基础接口
- 四、把 网页总结Agent 封装成 API
- 功能
- 代码
- 五、启动 API
- 六、自动生成的接口文档
- 👉 http://localhost:8000/docs
- 七、测试接口(3种方式)
- 方式1:在 /docs 里点「Try it out」直接测
- 方式2:用 curl 调用
- 方式3:任何前端/小程序/后端都能调用
前言:
- FastAPI 基础路由
- 把网页总结 Agent / 文档问答 / RAG封装成 API
- 自动生成接口文档
- 支持外部调用(前端、小程序、其他服务都能调用)
一、FastAPI 介绍
FastAPI = 最快、最简单把 Python 代码变成 API 的工具
- 1分钟写接口
- 自动生成可视化文档
- 支持 POST/GET
- 适合把Agent、RAG、总结工具做成接口供外部调用
链路:
把 网页总结Agent 封装成 API → 别人发 URL → 你返回结构化笔记
二、安装依赖
pipinstallfastapi uvicorn langchain langchain-openai beautifulsoup4三、FastAPI 最基础接口
fromfastapiimportFastAPI app=FastAPI()# 1. 最简单接口(GET)@app.get("/")defhome():return{"message":"AI Agent API 服务已启动"}# 2. 带参数接口@app.get("/add")defadd(a:int,b:int):return{"result":a+b}运行:
uvicorn main:app--reload打开浏览器访问:
- http://localhost:8000 → 看到欢迎语
- http://localhost:8000/add?a=1&b=2 → 直接返回结果
- http://localhost:8000/docs →自动生成API文档(超级强)
四、把 网页总结Agent 封装成 API
功能
- 外部传入
url - API 内部调用 Agent
- 返回结构化笔记
- 支持所有前端/后端/小程序调用
代码
# main.pyfromfastapiimportFastAPIfrompydanticimportBaseModelfromlangchain_openaiimportChatOpenAIfromlangchain.memoryimportConversationBufferMemoryfromlangchain.agentsimportAgentExecutor,create_react_agentfromlangchain.toolsimportToolfromlangchainimporthubimportrequestsfrombs4importBeautifulSoup# ==================# 1. 初始化 FastAPI# ==================app=FastAPI(title="AI 网页总结 Agent API",version="1.0")# ==================# 2. 初始化 LLM# ==================llm=ChatOpenAI(model="gpt-3.5-turbo",temperature=0.1,api_key="你的API_KEY",base_url="https://api.chatanywhere.tech/v1")# ==================# 3. 记忆功能# ==================memory=ConversationBufferMemory(memory_key="chat_history",return_messages=True)# ==================# 4. 网页抓取工具# ==================deffetch_and_clean(url:str)->str:try:html=requests.get(url,timeout=10).text soup=BeautifulSoup(html,"html.parser")tags=soup.find_all(["p","h1","h2","h3","h4","li"])content="\n".join(t.get_text(strip=True)fortintags)returncontent[:12000]exceptExceptionase:returnf"抓取失败:{str(e)}"web_tool=Tool(name="WebFetcher",func=fetch_and_clean,description="输入URL获取网页正文")# ==================# 5. 结构化总结 Prompt# ==================prompt=hub.pull("hwchase17/react-chat")prompt.template+=""" 请你总结网页内容,严格输出以下格式: 【文章主题】 【核心观点】 【重点内容】 【结构化笔记】 """# ==================# 6. 创建 Agent# ==================agent=create_react_agent(llm,[web_tool],prompt)agent_executor=AgentExecutor(agent=agent,tools=[web_tool],memory=memory,verbose=True)# ==================# 7. 定义API接收参数格式# ==================classSummaryRequest(BaseModel):url:str# 用户传入URL# ==================# 8. 【核心API接口】# ==================@app.post("/summarize",summary="输入网页链接,返回结构化总结")defsummarize_website(request:SummaryRequest):result=agent_executor.invoke({"input":request.url})return{"code":200,"url":request.url,"summary":result["output"]}# ==================# 9. 健康检查接口# ==================@app.get("/")defroot():return{"status":"running","agent":"网页总结AI"}五、启动 API
uvicorn main:app--reload--host0.0.0.0--port8000六、自动生成的接口文档
打开浏览器访问:
👉 http://localhost:8000/docs
你会看到:
- 接口列表
- 可直接在线测试
- 自动生成参数说明
- 一键调用、看返回结果
这就是 FastAPI 最强的地方!
七、测试接口(3种方式)
方式1:在 /docs 里点「Try it out」直接测
输入:
{"url":"https://baike.baidu.com/item/人工智能"}返回:
{"code":200,"url":"https://baike.baidu.com/item/人工智能","summary":"【文章主题】...【核心观点】...【结构化笔记】..."}方式2:用 curl 调用
curl-XPOST"http://localhost:8000/summarize"-H"Content-Type: application/json"-d'{"url":"https://baike.baidu.com/item/人工智能"}'方式3:任何前端/小程序/后端都能调用
✅ Java
✅ Vue / React
✅ 微信小程序
✅ Python
✅ 移动端APP
