目标
- 学习将 OpenAI 接入 Web 应用,构建交互式 API 网关
- 理解 Flask 框架的基本用法
- 实现 GPT 模型的 API 集成并返回结果
内容与实操
一、环境准备
-
安装必要依赖:
打开终端或命令行,执行以下命令安装 Flask 和 OpenAI SDK:
pip install flask openai
-
获取 OpenAI API 密钥:
登录 OpenAI 平台 创建 API 密钥。
二、创建基础 Flask 项目
1. 创建项目结构
├── app.py # Flask 入口文件 ├── requirements.txt # 项目依赖 └── README.md # 项目说明文档
2. 编写基础 Flask 代码
在 app.py 中编写以下代码,支持不同类型的 API 功能:
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 服务
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
- 示例请求体
-
文本摘要
{ "text": "人工智能正在迅速改变我们的生活方式和工作模式。越来越多的行业开始采用智能化方案。" }
-
文章生成
{ "topic": "人工智能的未来发展趋势" }
-
代码生成
{ "task": "读取一个文件,统计包含关键字 '错误' 的行数" }
3. 使用 curl 测试
curl -X POST http://127.0.0.1:5000/gpt-summary \ -H "Content-Type: application/json" \ -d '{"text": "人工智能技术正在重新定义行业标准。"}'
4. 预期输出
文本摘要
{ "summary": "人工智能技术正在改变行业标准。" }
文章生成
{ "generated_text": "人工智能(AI)在过去几年中取得了飞速发展,未来其应用场景将更加广泛……" }
代码生成
{ "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 服务中。通过这些示例,开发者可以为不同业务场景快速创建交互式服务。
练习题
- 功能扩展
- 添加新的路由 gpt-translate,实现中英文互译功能。
示例提示语:将 "This is a test" 翻译为中文。
- 性能优化
- 设置最大请求次数或缓存策略,以应对高并发请求。
- 异常处理
- 为网络超时、API请求失败等情况添加详细的错误提示。
- 添加新的路由 gpt-translate,实现中英文互译功能。
-
-