目标
- 学习将 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请求失败等情况添加详细的错误提示。