标签

#fastapi

2 篇文章

api-开发fastapigcpgithubk8smcpnginxopenairag上下文医学向量对话代码流式爬虫环境配置
Fastapi 最快的序列化返回-ORJSONResponse
Python 开发
7 分钟

Fastapi 最快的序列化返回-ORJSONResponse

这篇笔记聚焦 FastAPI 中使用 ORJSONResponse 提升 JSON 响应序列化性能的原因与配置方式,核心场景是接口返回大列表、大 JSON 或包含时间字段等复杂类型的数据库记录。正文将默认 JSONResponse/标准库 json 与 orjson 的路径拆开比较:前者通常先把 Python 对象转换成 Python str,再由 Web 层编码成 UTF-8 bytes;orjson 则直接生成可网络传输的 UTF-8 字节,减少一次全量内存拷贝和编码转换。文章还解释了 orjson 采用 Rust 实现、面向速度优化并利用 SIMD 的背景,以及它对 datetime、UUID、numpy、dataclasses 等类型的原生支持如何避免频繁回调 Python 函数,从而降低额外开销和 GIL 争用。实践部分给出安装 orjson、导入 ORJSONResponse,并通过 FastAPI(default_response_class=ORJSONResponse) 设置全局默认响应类的示例。性能判断上,文中认为纯序列化微基准可能达到标准库的 5 到 10 倍,但在真实 Web 接口里收益取决于响应体大小和瓶颈位置。对于只返回极小 JSON 的接口,网络 IO 可能掩盖差异;而返回几千行记录、数 MB JSON 或大量 datetime 字段时,ORJSONResponse 更可能带来可感知的响应时间下降。

fastapi
AI 大模型开发
15 分钟

FastAPI-MCP

这篇笔记聚焦 fastapi-mcp 在 FastAPI 与大模型工具调用之间的衔接方式,说明它如何把现有 API 端点转换为符合 MCP 的工具描述,让 Coze、通义、百川、智谱等平台更容易识别接口能力。内容先给出服务端示例:使用 FastApiMCP 挂载到 /mcp,接口通过 Pydantic 模型定义请求体,并显式设置 operation_id,同时可额外暴露 openapi.json 供客户端读取。文章强调 operation_id 是外部调用时定位接口的唯一标识,不能依赖 FastAPI 自动生成的冗长默认值;请求方法、请求体结构、description、summary 等信息也会影响大模型是否能准确理解参数。随后它拆解 MCPClient 的实际工作流程:先获取 openapi.json,根据 operation_id 找到路径和方法,再组装并发送普通 HTTP 请求,因此 MCP 并不是替代 HTTP 的新传输协议,而是面向大模型的 OpenAPI 子集和调用约定。后半部分用 OpenAI 兼容的 tool call 示例说明,大模型通常只生成函数名和参数,不会自动替开发者请求本地接口。要形成完整闭环,仍需要中转层或代理服务负责执行 HTTP 调用、把工具结果写回 messages,并再次请求模型生成最终回复;LangChain、Flowise 或自建代理可以承担这类自动执行逻辑。

fastapimcp