OpenAI 实战进阶教程 - 第四节: 结合 Web 服务:构建 Flask API 网关

目标
  • 学习将 OpenAI 接入 Web 应用,构建交互式 API 网关
  • 理解 Flask 框架的基本用法
  • 实现 GPT 模型的 API 集成并返回结果

内容与实操

一、环境准备
  • 安装必要依赖:

    打开终端或命令行,执行以下命令安装 Flask 和 OpenAI SDK:

    bash 复制代码
    pip install flask openai
  • 获取 OpenAI API 密钥:

    登录 OpenAI 平台 创建 API 密钥。


二、创建基础 Flask 项目
1. 创建项目结构
复制代码
├── app.py              # Flask 入口文件  
├── requirements.txt     # 项目依赖  
└── README.md            # 项目说明文档
2. 编写基础 Flask 代码

在 app.py 中编写以下代码,支持不同类型的 API 功能:

python 复制代码
from flask import Flask, request, jsonify
import openai

# 初始化 Flask 应用
app = Flask(__name__)

# 设置 OpenAI API 密钥
openai.api_key = "your-api-key"

# 定义 API 路由:生成摘要
@app.route("/gpt-summary", methods=["POST"])
def generate_summary():
    data = request.json
    user_text = data.get("text", "")

    if not user_text:
        return jsonify({"error": "未提供有效的输入文本"}), 400

    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": f"请对以下文本生成摘要:{user_text}"}],
        max_tokens=150
    )
    summary = response["choices"][0]["message"]["content"]
    return jsonify({"summary": summary})

# 定义 API 路由:自动写作
@app.route("/gpt-writing", methods=["POST"])
def generate_text():
    data = request.json
    topic = data.get("topic", "")

    if not topic:
        return jsonify({"error": "未提供主题"}), 400

    prompt = f"写一篇关于{topic}的中文文章。"
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": prompt}],
        max_tokens=300
    )
    generated_text = response["choices"][0]["message"]["content"]
    return jsonify({"generated_text": generated_text})

# 定义 API 路由:代码生成
@app.route("/gpt-code", methods=["POST"])
def generate_code():
    data = request.json
    task_description = data.get("task", "")

    if not task_description:
        return jsonify({"error": "未提供任务描述"}), 400

    prompt = f"编写一个 Python 函数来完成以下任务:{task_description}"
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": prompt}],
        max_tokens=150
    )
    generated_code = response["choices"][0]["message"]["content"]
    return jsonify({"generated_code": generated_code})

if __name__ == "__main__":
    app.run(port=5000)
3. 代码说明
  • gpt-summary: 接收用户文本,生成摘要。
  • gpt-writing: 根据给定主题自动生成中文文章内容。
  • gpt-code: 根据描述生成 Python 代码片段。

三、运行与测试
1. 启动 Flask 服务
bash 复制代码
python app.py

启动成功后,终端输出:

复制代码
* Running on http://127.0.0.1:5000
2. 使用 Postman 测试
  • 请求方法:POST
  • 请求 URL:
    • http://127.0.0.1:5000/gpt-summary
    • http://127.0.0.1:5000/gpt-writing
    • http://127.0.0.1:5000/gpt-code
  • 示例请求体
  1. 文本摘要

    json 复制代码
    {
      "text": "人工智能正在迅速改变我们的生活方式和工作模式。越来越多的行业开始采用智能化方案。"
    }
  2. 文章生成

    json 复制代码
    {
      "topic": "人工智能的未来发展趋势"
    }
  3. 代码生成

    json 复制代码
    {
      "task": "读取一个文件,统计包含关键字 '错误' 的行数"
    }
3. 使用 curl 测试
bash 复制代码
curl -X POST http://127.0.0.1:5000/gpt-summary \
-H "Content-Type: application/json" \
-d '{"text": "人工智能技术正在重新定义行业标准。"}'
4. 预期输出

文本摘要

json 复制代码
{
  "summary": "人工智能技术正在改变行业标准。"
}

文章生成

json 复制代码
{
  "generated_text": "人工智能(AI)在过去几年中取得了飞速发展,未来其应用场景将更加广泛......"
}

代码生成

json 复制代码
{
  "generated_code": "def count_error_lines(file_path):\n    count = 0\n    with open(file_path, 'r') as file:\n        for line in file:\n            if '错误' in line:\n                count += 1\n    return count"
}

小结

本节通过实际示例讲解了如何使用 Flask 构建一个支持多功能的 API 网关,将 OpenAI 强大的生成能力接入到 Web 服务中。通过这些示例,开发者可以为不同业务场景快速创建交互式服务。


练习题

  1. 功能扩展
    • 添加新的路由 gpt-translate,实现中英文互译功能。
      示例提示语:将 "This is a test" 翻译为中文。
  2. 性能优化
    • 设置最大请求次数或缓存策略,以应对高并发请求。
  3. 异常处理
    • 为网络超时、API请求失败等情况添加详细的错误提示。
相关推荐
CCblandy1 小时前
令牌桶在 0.9 倍负载超发 19%、固定窗口边界放行 20 个:四种限流算法同构实测
后端·python·算法·性能优化·架构
建筑工程企业管理系统1 小时前
工程进度统计管理系统自动化汇总数据,解决施工企业手工对账误差难题
大数据·人工智能·自动化
唠点键盘之外的1 小时前
27 存量系统接大模型:旁挂一个 AI 微服务,老架构一行不改
人工智能·微服务·架构
u0111026752 小时前
JPG、PNG、WebP 怎么选?按透明度、体积和使用场景做判断
前端·javascript·vue.js·图像处理·ai作画
kaixin_啊啊2 小时前
【用于更准确 G×E 基因组预测的大规模作物数据集与基于深度学习的多模态融合框架】论文学习
人工智能·深度学习·学习
GOWIN革文品牌咨询2 小时前
工业测量品牌系统化搭建指南:从内容架构到长期治理的全流程
大数据·人工智能·架构
Cc.Y2 小时前
Java零基础入门:深入Java核心:文件IO与序列化全解
java·开发语言·python
拿本唠嗑AI研究2 小时前
本体工程实战指南:从建模到可维护的完整落地路径
java·人工智能·python·jena·ontology
jerrywus2 小时前
让 AI 写完代码后交一份报告:我改造了 answer-me-with-html
前端·claude·cursor
deepseek232 小时前
AI 模型隐藏任意能力拆解:把加密神经网络塞进宿主权重,能力评估为什么在密码学上抓不到
人工智能·深度学习·神经网络·密码学·模型安全