【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中文版

结尾

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

相关推荐
用户51914958484524 分钟前
Windows 渗透测试载荷加载器 POC 工具集
人工智能·aigc
袋鱼不重27 分钟前
我的神奇同事,AI 用多了居然写了个 Open In Codex
前端·后端·ai编程
大树8829 分钟前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
用户83562907805130 分钟前
使用 Python 操作 Word 内容控件
后端·python
像我这样帅的人丶你还31 分钟前
啥? 前端也要会干Java?🛵🛵🛵
后端
Hommy8833 分钟前
【剪映小助手】添加贴纸接口(Add Sticker)
后端·github·剪映小助手·视频剪辑自动化·剪映api
量子位37 分钟前
刚刚,Fable-5之下,智谱开源的GLM-5.2拿下AI编程第一!
ai编程
通信小呆呆38 分钟前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
施小赞41 分钟前
普通 RAG vs GraphRAG 核心对比
人工智能·ai
量子位42 分钟前
SpaceX一分现金没花收购Cursor,马斯克吞下AI编程工具第一名
ai编程