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请求失败等情况添加详细的错误提示。
相关推荐
山海青风12 分钟前
OpenAI 实战进阶教程 - 第七节: 与数据库集成 - 生成 SQL 查询与优化
数据库·人工智能·python·sql
Chatopera 研发团队1 小时前
计算图 Compute Graph 和自动求导 Autograd | PyTorch 深度学习实战
人工智能·pytorch·深度学习
纠结哥_Shrek1 小时前
pytorch实现半监督学习
人工智能·pytorch·学习
白白糖1 小时前
深度学习 Pytorch 基础网络手动搭建与快速实现
人工智能·pytorch·深度学习
AI浩1 小时前
【Block总结】HWD,小波下采样,适用分类、分割、目标检测等任务|即插即用
人工智能·目标检测·分类
ZWZhangYu1 小时前
【实践案例】基于大语言模型的海龟汤游戏
人工智能·游戏·语言模型
AI浩1 小时前
【Block总结】Shuffle Attention,新型的Shuffle注意力|即插即用
人工智能·深度学习
三月七(爱看动漫的程序员)2 小时前
模型/O功能之提示词模板
java·前端·javascript·人工智能·语言模型·langchain·prompt
LCG元2 小时前
Vue.js组件开发-实现左侧浮动菜单跟随页面滚动
前端·javascript·vue.js
金融OG2 小时前
98.2 AI量化开发:基于DeepSeek打造个人专属金融消息面-AI量化分析师(理论+全套Python代码)
人工智能·python·算法·机器学习·数学建模·金融