AI学习——FastAPI 接口封装

FastAPI 接口封装

前言:

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

一、FastAPI 介绍

FastAPI = 最快、最简单把 Python 代码变成 API 的工具

  • 1分钟写接口
  • 自动生成可视化文档
  • 支持 POST/GET
  • 适合把 Agent、RAG、总结工具 做成接口供外部调用

链路:

把 网页总结Agent 封装成 API → 别人发 URL → 你返回结构化笔记


二、安装依赖

bash 复制代码
pip install fastapi uvicorn langchain langchain-openai beautifulsoup4

三、FastAPI 最基础接口

python 复制代码
from fastapi import FastAPI

app = FastAPI()

# 1. 最简单接口(GET)
@app.get("/")
def home():
    return {"message": "AI Agent API 服务已启动"}

# 2. 带参数接口
@app.get("/add")
def add(a: int, b: int):
    return {"result": a + b}

运行:

bash 复制代码
uvicorn main:app --reload

打开浏览器访问:


四、把 网页总结Agent 封装成 API

功能

  • 外部传入 url
  • API 内部调用 Agent
  • 返回 结构化笔记
  • 支持所有前端/后端/小程序调用

代码

python 复制代码
# main.py
from fastapi import FastAPI
from pydantic import BaseModel
from langchain_openai import ChatOpenAI
from langchain.memory import ConversationBufferMemory
from langchain.agents import AgentExecutor, create_react_agent
from langchain.tools import Tool
from langchain import hub
import requests
from bs4 import BeautifulSoup

# ==================
# 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. 网页抓取工具
# ==================
def fetch_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) for t in tags)
        return content[:12000]
    except Exception as e:
        return f"抓取失败:{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接收参数格式
# ==================
class SummaryRequest(BaseModel):
    url: str  # 用户传入URL

# ==================
# 8. 【核心API接口】
# ==================
@app.post("/summarize", summary="输入网页链接,返回结构化总结")
def summarize_website(request: SummaryRequest):
    result = agent_executor.invoke({
        "input": request.url
    })
    return {
        "code": 200,
        "url": request.url,
        "summary": result["output"]
    }

# ==================
# 9. 健康检查接口
# ==================
@app.get("/")
def root():
    return {"status": "running", "agent": "网页总结AI"}

五、启动 API

bash 复制代码
uvicorn main:app --reload --host 0.0.0.0 --port 8000

六、自动生成的接口文档

打开浏览器访问:

👉 http://localhost:8000/docs

你会看到:

  • 接口列表
  • 可直接在线测试
  • 自动生成参数说明
  • 一键调用、看返回结果

这就是 FastAPI 最强的地方!


七、测试接口(3种方式)

方式1:在 /docs 里点「Try it out」直接测

输入:

json 复制代码
{
  "url": "https://baike.baidu.com/item/人工智能"
}

返回:

json 复制代码
{
  "code": 200,
  "url": "https://baike.baidu.com/item/人工智能",
  "summary": "【文章主题】...【核心观点】...【结构化笔记】..."
}

方式2:用 curl 调用

bash 复制代码
curl -X POST "http://localhost:8000/summarize" -H "Content-Type: application/json" -d '{"url":"https://baike.baidu.com/item/人工智能"}'

方式3:任何前端/小程序/后端都能调用

✅ Java

✅ Vue / React

✅ 微信小程序

✅ Python

✅ 移动端APP


相关推荐
IT_陈寒1 小时前
Python搞不定字符串编码?这破玩意坑我两小时!
前端·人工智能·后端
小白跃升坊2 小时前
Codex 增强部署:基于 Codex++ 接入 DeepSeek
ai·ai编程·codex·deepseek·ai coding·codex++
AlfredZhao2 小时前
GPT 省钱,不是别用最新模型,而是别浪费缓存
gpt·ai
大模型真好玩2 小时前
什么是Loop Engineering?最通俗易懂的Loop Engineering核心概念
人工智能·agent·deepseek
叁两3 小时前
前端转型AI Agent该如何学习?(前置篇)
前端·人工智能·node.js
LaiYoung_3 小时前
🎁 送你一套超好用超实用的 FE AI-Coding Skills
前端·人工智能·开源
doiito5 小时前
【Agent Harness】Gliding Horse 本体论系统设计:给 AI Agent 装上“语义大脑”
ai·rust·架构设计·系统设计·ai agent
ZzT5 小时前
怎么做才不会被 AI 替代?
人工智能·程序员
道友可好6 小时前
从今天开始:你的第一个 Harness Engineering 实践
前端·人工智能·后端
小姜前线技术7 小时前
AI回答代码块高亮加一键复制
人工智能