第8章 实战四:API 接口服务项目
-
目标概述:本章教读者开发一个将 AI 模型封装成 Web API 服务的项目,例如构建一个简易的问答HTTP接口或聊天服务端。通过这一练习,读者将掌握如何用 AI 生成后端代码,提供 RESTful API 来服务于客户端应用。这在实践中非常重要,因为许多 AI 应用需要通过网络提供服务,将模型功能供他人调用。
-
提示词结构:我们将告诉 AI 生成一个 Web 服务项目的代码框架。提示内容包括:使用的后端框架(例如 Python Flask 或 FastAPI,为了直观我们选 FastAPI)、需要暴露的API端点(比如 /ask 用于提交问题得到回答)、请求和响应格式(JSON 输入输出),以及在API内部如何调用AI模型获得结果。提示词中明确要求:创建一个 app.py 作为主程序(含FastAPI应用和路由定义),实现 /ask POST接口,接受参数 {question: "..."},返回 {answer: "..."}。并要求附带基本错误处理(如缺少参数时返回400)。
-
流程图:绘制Web API服务的架构:客户端 -> HTTP请求 (问题JSON) -> 服务器 (FastAPI) -> 调用OpenAI等获取回答 -> HTTP响应 (答案JSON) -> 客户端。标注出关键步骤如“API 解析请求”“与AI对话”“封装响应”。此外,简单展示流程中如何并发处理请求(提示FastAPI本身处理并发的能力)。
-
可视化代码生成过程:通过 Cursor 逐步生成 API 服务代码。首先根据提示生成 app.py,截图展示AI产出的FastAPI初始化和基本路由定义代码,解释其中重要部分。然后我们通过让AI补全具体实现:如 ask(question) 路由函数里调用OpenAI API获得答案并返回的逻辑。展示AI编写该部分代码的截图。如AI忽略了某些细节(比如未处理OpenAI API失败情况),我们追加提示要求加上异常处理,截图展示改进后的代码。最后,让AI生成一个简单的 requirements.txt 或 命令说明,以便运行服务。
-
样例项目代码结构:此服务项目结构相对简单:
-
app.py:包含所有路由和逻辑的主文件(小型应用可不分模块);
-
requirements.txt:所需依赖(如 fastapi, openai 等);
-
(可选)run.sh:用于启动UVicorn服务器的脚本。
解释如何运行该服务(例如 uvicorn app:app --reload),以及可扩展性(如果功能变多,可拆分成 controllers, services 等模块)。 -
生成结果截图:展示使用 curl 或 Postman 调用 API 的截图:例如向 POST /ask 发送 JSON {"question": "今天上海天气如何?"},得到 `{"answer": "..."}。截图应包含请求和响应的示例,以证明API工作正常。若有可能,也展示服务器控制台日志截屏,看到请求进来和处理的信息。
-
测试点与失败案例:测试 API 的健壮性:如缺少参数调用是否正确返回错误,输入非常长的问题是否超时或被正确处理。探讨并发请求下服务性能(简单压测),确保 AI 生成的代码没有明显阻塞问题(例如使用异步IO的好处)。失败案例:开始AI生成的API可能每次调用模型新建Session,导致效率低或者不复用,或者忘记限制并发,我们识别并通过重构提示优化。另一个潜在问题是安全性,如未做任何鉴权即可调用。我们将在部署章节讨论此类问题,这里提醒读者注意。
-
术语解释:解释RESTful API、HTTP请求方法(GET/POST)、状态码(200/400等)、JSON格式等基本概念。确保非程序员读者理解我们构建的是一个“网上可以访问的AI机器人接口”,为后续真正上线部署打基础。