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

AI学习——FastAPI 接口封装

FastAPI 接口封装

  • 一、FastAPI 介绍
  • 二、安装依赖
  • 三、FastAPI 最基础接口
  • 四、把 网页总结Agent 封装成 API
    • 功能
    • 代码
  • 五、启动 API
  • 六、自动生成的接口文档
    • 👉 http://localhost:8000/docs
  • 七、测试接口(3种方式)
    • 方式1:在 /docs 里点「Try it out」直接测
    • 方式2:用 curl 调用
    • 方式3:任何前端/小程序/后端都能调用

前言:
  1. FastAPI 基础路由
  2. 网页总结 Agent / 文档问答 / RAG封装成 API
  3. 自动生成接口文档
  4. 支持外部调用(前端、小程序、其他服务都能调用)

一、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


http://www.gsyq.cn/news/1452597.html

相关文章:

  • 手机号码定位神器:3分钟免费查询归属地,地图精准标注
  • 5分钟高效部署Poppler Windows完整方案:专业级PDF处理实战指南
  • 别再为时序数据标注发愁了!手把手教你用自监督学习搞定预测、分类与异常检测
  • 免费Mac光标定制终极指南:5分钟掌握Mousecape个性化鼠标体验
  • 从零开始:用Docker在Mac上5分钟搞定PostgreSQL 15开发环境(附常用命令速查)
  • LeetCode 链表
  • 别再只调API了!手把手教你从H.264裸流到FLV封装的底层实现(附SPS/PPS处理避坑指南)
  • 告别‘炼丹’:用ACGAN、SGAN和cGAN玩转可控图像生成(附PyTorch实战代码)
  • Matlab版男女声单通道分离工具:基于NMF的免训练盲分离实现
  • 从WWW大会看知识图谱与协同过滤:理论到工程实践指南
  • 【真实经验分享】ORA-03113 ORA-7445[evaopn3()+240]根因定位:从通信中断到内核空指针崩溃的完整排查实录
  • 少女前线蓝蝶契约体力恢复时间 少女前线蓝蝶契约体力怎么恢复
  • 无界方差下SGD的理论极限与PASTA算法:从下界恶化到正则化锚定
  • 如何在3分钟内为Windows系统安装macOS风格鼠标指针的完整指南
  • 基于云计算与NLP的情绪分析:从数据采集到业务洞察的工程实践
  • 外贸独立站系统0佣金建站技术方案:新手快速落地实操指南
  • 3分钟解锁中文GitHub:告别英文界面困扰的终极解决方案
  • 别再只会用RC电路了!手把手教你用Multisim设计三种二阶有源低通滤波器(附参数计算)
  • 3分钟完成桌面股票监控:TrafficMonitor股票插件终极配置指南
  • ISyHand开源机器人灵巧手:低成本高性能的仿生设计
  • 新手避坑:用Requests库爬中国大学MOOC时,这几个反爬和编码问题你遇到了吗?
  • Sora 2为何能精准复现宋代汴京街市?:揭秘其训练数据中未公开的217万帧高保真历史影像源
  • 【AI】反思机制:执行后总结优化下次表现
  • AI辅助开发新思路,让快马平台智能优化你的页面永久更新策略
  • diff-gaussian-rasterization安装避坑全记录:除了CUDA版本,别忘了装libglm-dev这个库
  • 【Lindy低代码自动化实战指南】:20年架构师亲授3大避坑法则,90%团队踩过的5个致命误区
  • 别再为个人网站收款发愁了!实测三款免签支付平台,手把手教你选对省钱省心的那个
  • Ettercap实战:用ARP欺骗“钓”出你内网里的明文密码(仅供安全学习)
  • 北京黄金回收实力排行2026新鲜出炉!全城TOP精选商户综合实力评选 - 奢侈品回收测评
  • 【AI产品经理】传统产品经理 VS AI产品经理谁更好?