文章目录
-
- 前言
- 环境准备
- [生成OpenAI API](#生成OpenAI API)
- 代码实现详解
-
- 导入必要的模块
- 创建Flask应用实例
- [配置OpenAI API](#配置OpenAI API)
- 完整代码如下(demo源码)
- 利用Postman调用接口
- 了解更多AI内容
- 结尾
前言
Flask作为一个轻量级的Python Web框架,凭借其简洁易用的特点,成为构建Web应用的理想选择。本文将通过一个具体的项目实例,全面讲解如何利用Flask与OpenAI API构建一个智能AI对话接口,适用于各种应用场景。
环境准备
以下是本教程中所需的基本环境和依赖:
- 操作系统:Windows、macOS或Linux均可
- 编程语言:Python 3.7及以上版本
- 开发工具:推荐使用VS Code、PyCharm等现代化IDE
- 依赖库 :
- Flask
- Flask-CORS
- openai
安装必要的库
在激活的虚拟环境中,安装项目所需的库:
bash
pip install Flask
pip install Flask-CORS
pip install openai
生成OpenAI API
要使用OpenAI的GPT模型,首先需要获取API。
目前我了解到的OpenAI API KEY获取有两种方法。这个我们之前写过,有兴趣的可以看看:【OpenAI】获取OpenAI API Key的两种方式全攻略:从入门到精通,再到详解教程-CSDN
代码实现详解
下面我们将逐步解析如何在app.py
中实现智能对话接口。
导入必要的模块
首先,导入构建应用所需的库:
python
from flask import Flask, Response, request
from flask_cors import CORS
import openai
- Flask:核心框架,用于创建Web应用
- Flask-CORS:处理跨域资源共享,允许前端进行跨域请求
- openai:OpenAI的官方Python库,用于与GPT模型进行交互
创建Flask应用实例
接下来,创建Flask应用实例,并配置跨域请求:
python
app = Flask(__name__)
CORS(app, resources=r'/*') # 允许所有来源的请求
Flask(__name__)
:创建一个Flask应用实例,__name__
用于资源路径的定位CORS(app, resources=r'/*')
:配置CORS,允许所有路径的跨域请求,确保前端应用能够正常访问API
配置OpenAI API
为了调用OpenAI API,建议使用环境变量来存储API KEY(目前为了演示demo所以我都放在一起了)
如果你是从OpenAI获取的API,那么只需要用下面的方式添加KEY就可以:
bash
openai.api_key = os.getenv("OPENAI_API_KEY")
如果不是从OpenAI官方获取的,是从其他地方获取的,那么就需要注意baseURL
的配置。因为不同的框架baseURL
都是不一样。所以你要确认路径的拼接。
例如:
在python的源码里面,baseURL
是自动拼接了v1
。
所以我们在拼接的时候,也要注意咱们的baseURL
是否自带v1
,完整拼接如下:
bash
api_key="", # 替换为你的api_key
base_url="https://api.aihao123.cn/luomacode-api/open-api/v1" # 替换为你获取的base_url,注意这里后面拼接了1个v1
完整代码如下(demo源码)
python
from flask import Flask, Response, request # 导入Flask框架的相关模块
from flask_cors import CORS # 导入CORS模块以处理跨域请求
from openai import OpenAI # 导入OpenAI的API客户端
app = Flask(__name__) # 创建Flask应用实例
CORS(app, resources=r'/*') # 启用CORS,允许所有来源的请求
@app.route('/', methods=['GET', 'POST']) # 定义根路由,支持GET和POST请求
def run():
# 从请求中获取 JSON 数据中的 'content' 字段
gpt_content = request.form.get('content')
# 创建OpenAI客户端实例,使用API密钥和基础URL
client = OpenAI(
api_key="", # 替换为你的API密钥
base_url="https://api.aihao123.cn/luomacode-api/open-api/v1" # 替换为你的base_url。注意:我这里是用CodeMoss生成的base_url,所以api_key也要用CodeMoss的
)
# 调用OpenAI的聊天补全接口,传入用户消息
response = client.chat.completions.create(
messages=[
{'role': 'user', 'content': gpt_content}, # 用户发送的消息
],
model='gpt-3.5-turbo', # 使用的模型
stream=True # 启用流式响应
)
# 定义生成器函数,用于逐块返回响应内容
def generate():
for chunk in response: # 遍历响应中的每个块
yield chunk.choices[0].delta.content # 逐块返回内容
# 返回一个流式响应,内容类型为 'text/event-stream'
return Response(generate(), content_type='text/event-stream')
# 主程序入口
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080, debug=False, threaded=True) # 启动Flask应用
代码解析
- 请求方法判断:根据请求的方法(GET或POST)执行不同的逻辑。
- 获取请求数据 :对于POST请求,从JSON数据中提取
content
字段,作为用户输入的对话内容。 - 参数校验 :确保用户提供了必要的
content
,否则返回400错误。
运行后我们会生成一个接口连接。默认情况下,运行后会是你的本地/局域网接口,你可以通过浏览器或Postman等工具进行测试。
利用Postman调用接口
教程到这里,就完整的结束了。快去试试吧!
了解更多AI内容
【OpenAI】(一)获取OpenAI API Key的多种方式全攻略:从入门到精通,再到详解教程!!
【VScode】(二)VSCode中的智能AI-GPT编程利器,全面揭秘CodeMoss & ChatGPT中文版
结尾
希望本文对您有所帮助,祝您在技术探索的道路上不断前行,取得更多成就!