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请求失败等情况添加详细的错误提示。
相关推荐
KoiC8 分钟前
Dify接入RAGFlow无返回结果
人工智能·ai应用
拉不动的猪13 分钟前
前端自做埋点,我们应该要注意的几个问题
前端·javascript·面试
lilye6620 分钟前
精益数据分析(20/126):解析经典数据分析框架,助力创业增长
大数据·人工智能·数据分析
王景程22 分钟前
如何测试短信接口
java·服务器·前端
盈达科技40 分钟前
盈达科技:登顶GEO优化全球制高点,以AICC定义AI时代内容智能优化新标杆
大数据·人工智能
安冬的码畜日常1 小时前
【AI 加持下的 Python 编程实战 2_10】DIY 拓展:从扫雷小游戏开发再探问题分解与 AI 代码调试能力(中)
开发语言·前端·人工智能·ai·扫雷游戏·ai辅助编程·辅助编程
古希腊掌管学习的神1 小时前
[LangGraph教程]LangGraph04——支持人机协作的聊天机器人
人工智能·语言模型·chatgpt·机器人·agent
西柚小萌新1 小时前
【Python爬虫基础篇】--4.Selenium入门详细教程
爬虫·python·selenium
小杨升级打怪中1 小时前
前端面经-JS篇(三)--事件、性能优化、防抖与节流
前端·javascript·xss
FIT2CLOUD飞致云1 小时前
问答页面支持拖拽和复制粘贴文件,MaxKB企业级AI助手v1.10.6 LTS版本发布
人工智能·开源