【Flask+OpenAI】利用Flask+OpenAI Key实现GPT4-智能AI对话接口demo - 从0到1手把手全教程(附源码)

文章目录

前言

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应用
代码解析
  1. 请求方法判断:根据请求的方法(GET或POST)执行不同的逻辑。
  2. 获取请求数据 :对于POST请求,从JSON数据中提取content字段,作为用户输入的对话内容。
  3. 参数校验 :确保用户提供了必要的content,否则返回400错误。

运行后我们会生成一个接口连接。默认情况下,运行后会是你的本地/局域网接口,你可以通过浏览器或Postman等工具进行测试。

利用Postman调用接口

教程到这里,就完整的结束了。快去试试吧!

了解更多AI内容

【OpenAI】(一)获取OpenAI API Key的多种方式全攻略:从入门到精通,再到详解教程!!

【VScode】(二)VSCode中的智能AI-GPT编程利器,全面揭秘CodeMoss & ChatGPT中文版

【CodeMoss】(三)集成13个种AI模型(GPT4、o1等)、支持Open API调用、自定义助手、文件上传等强大功能,助您提升工作效率! >>> - CodeMoss & ChatGPT-AI中文版

结尾

希望本文对您有所帮助,祝您在技术探索的道路上不断前行,取得更多成就!

相关推荐
玩AI的小胡子27 分钟前
让文案生成更具灵活性/chatGPT新功能canvas画布编辑
人工智能·gpt·chatgpt·aigc
远洋录1 小时前
前端单元测试实战:从零开始构建可靠的测试体系
前端·人工智能·react
是Dream呀1 小时前
Python从0到100(七十七):计算机视觉-YOLOv5姿态估计实时检测人体关键点
python·yolo·计算机视觉
纪伊路上盛名在1 小时前
生成式AI、大模型、多模态技术开发与应用学习清单
服务器·人工智能·笔记·学习·知识图谱·学习方法
??? Meggie2 小时前
【Python】解决运行selenium调用chrome浏览器,监听端口被占用的方法
开发语言·chrome·python
??? Meggie2 小时前
【Python】使用Selenium的find_element模块获取网页上的大段文字和表格的方法(建议收藏!)
开发语言·python·selenium
山外有山a2 小时前
python解题之寻找最大的葫芦
开发语言·python
hongkid2 小时前
mac 安装CosyVoice (cpu版本)
人工智能·macos·cosyvoice
暮暮七2 小时前
基于Llamaindex的网页内容爬取实战
python·rag·llamaindex·网页读取
只可远观3 小时前
Python解释器和PyCharm详解
开发语言·python