一文学会使用ChatGPT API搭建自己的聊天网站

news2025/1/12 7:52:57

一文读懂如何搭建自己的ChatGPT聊天网站

在数字时代的浪潮下,人工智能正变得愈发令人惊叹和亲近。ChatGPT,就是这个变革的杰出代表。这项令人兴奋的技术将强大的自然语言处理能力带到您的指尖,让您能够以前所未有的方式与计算机进行互动。

本文将引导您走进 ChatGPT 的神奇世界,向您展示如何通过简单的 API 调用和灵活的 Flask 框架搭建一个个性化的、与 ChatGPT 互动的网页界面。不再局限于干燥的命令行,您将能够在自己设计的界面中轻松输入问题,获得即时、生动、人性化的回答。

前期准备

首先您得有一个ChatGPT账号,并且处于登录转态,然后您这边需在你的电脑端启动你的魔法。

申请API

进入网址:https://platform.openai.com/

右上角进入【View API keys】:https://platform.openai.com/account/api-keys

image-20230822222110776

点击【Create new secret key】:

image-20230822222143912

生成成功,自己复制出来并保存好,只会看到一次,如果忘了只能删除并重新生成一个。

image-20230822222202432

目前注册的账号只有5美元的使用额度了。

image-20230822222337733

python本地使用

首先安装依赖:

pip install openai

下面是展示的测试代码:

import openai

# 设置你的API密钥
api_key = "你上面复制的KEY"
openai.api_key = api_key


q= [{"role": "user", "content": "请介绍一下python"}]
completion = openai.ChatCompletion.create(
  model="gpt-3.5-turbo-0301",
  messages=q
)

 
rsp = completion.choices[0].message.content    # chatGPT返回的数据
print(rsp)

输出结果如下:

image-20230822222757204

开发网站界面

在本文中通过Flask作为WEB网站后端框架,如果你没有安装,请使用下面命令安装Flask。

pip install flask

然后新建一个app.py文件,复制下面代码。

from flask import Flask, request, jsonify, render_template
import openai

app = Flask(__name__)

# 设置你的 OpenAI API 密钥
api_key = "你的KEY"
openai.api_key = api_key

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/chat', methods=['POST'])
def chat():
    data = request.get_json()

    # 检查请求中是否包含 content
    if 'content' not in data:
        return jsonify({"error": "请求中缺少 'content' 字段"}), 400

    content = data['content']

    # 调用 OpenAI API 进行聊天
    completion = openai.ChatCompletion.create(
        model="gpt-3.5-turbo-0301",
        messages=[{"role": "user", "content": content}]
    )

    response = completion.choices[0].message['content']

    return jsonify({"response": response})

if __name__ == '__main__':
    app.run(debug=True)

然后在app.py同级目录下新建templates文件夹,并在该文件夹下新建前端文件index.html。最后运行app.py文件。效果如下:

image-20230822223422879

image-20230823090022765

最后

这是一个基础的demo例子,大家也可据此集成至自己的系统中(比如在线答疑等)然后部署至服务器,这些都是可以扩展的。

篇幅所限完整代码请添加下方作者联系

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/915589.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

langchain ChatGPT AI私有知识库

企业知识库 原理就是把文档变为向量数据库,然后搜索向量数据库,把相似的数据和问题作为prompt, 输入到大模型,再利用GPT强大的自然语言处理、推理和分析等方面的能力将答案返回给用户 什么是langchain? langchain是一个强大的…

自定义VIEW之SeekBar

先放效果 实现代码 import android.annotation.SuppressLint import android.content.Context import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.graphics.Rect import android.util.AttributeSet import android…

美团增量数仓建设新进展

摘要:本文整理自美团系统研发工程师汤楚熙,在 Flink Forward Asia 2022 实时湖仓专场的分享。本篇内容主要分为四个部分: 1. 建设背景 2. 核心能力设计与优化 3. 业务实践 4. 未来展望 Tips:点击「阅读原文」免费领取 5000CU*小时…

解决 泛型类型转换出现Unchecked cast: ‘java.lang.Object‘ to ‘T‘怎么解决

文章目录 解决 泛型类型转换出现Unchecked cast: java.lang.Object to T怎么解决场景复现如何解决如何应用demo案例说明 解决 泛型类型转换出现Unchecked cast: java.lang.Object to T怎么解决 场景复现 自定义工具类,编写公共方法,根据不同日期类型&a…

动规算法题:打家劫舍Ⅱ

题目链接:打家劫舍Ⅱ 题目分析 状态表示 从题目分析中可以得知,是有偷和不偷的情况,因此根据做题经验,就使用两个数组来对应着两个情况。 状态转移方程 ①当选择偷第i个位置,那就意味着第i-1个位置的值是不能偷的&a…

手搭手入门MyBatis-Plus

MyBatis-Plus Mybatis-Plus介绍 为简化开发而生 MyBatis-Plus(opens new window)(简称 MP)是一个 MyBatis(opens new window) 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 特性 无侵入&#…

大项与小项

小项 n个命题变元的简单合取式,称作小项,其中每个命题变元与它的否定不能同时存在,但每个命题变元必须出现且仅出现一次。 n个命题变元的小项有2^n个 小项的编码:mi,其中i是使得小项等于1的一组指派的二进制表示。 大项…

英飞凌 Tc3xx AURIX 2G多核处理器简介

目录 1、概述 2、AURIX 2G多核架构 2.1、多核简介 2.2、片上总线简介 3、AURIX 2G内核简介 3.1、内核架构 3.2、内核寄存器 3.3、中断处理 4、AURIX 2G内存简介 4.1、内存简介 4.2、内存映射 1、概述 该产品具备多达六核的高性能架构,每个内核的时钟频率最高可达 30…

基于java+swing俄罗斯方块

基于javaswing俄罗斯方块 一、系统介绍二、功能展示三、其他系统实现五、获取源码 一、系统介绍 项目类型:Java SE项目(awtswing)非开源 项目名称:俄罗斯方块(Tertis) 主要技术:java、awt、swing等技术 …

CSDN首页消息发布文章topSpInfo

Java 这东西就是纯粹的概念,而且很多公司还喜欢拿着这个不停的问。 我们平常写的 Class 就是对象。 New 就是把这个 Class 实例化,实例化啥意思,就是在内存中分配空间呗,不实例化,数据存哪里呀。 这里就是有个奇葩的…

错题整理——测开2021网易

1. 某些bug不影响使用时,可以选择先上线,在维护过程中修复。 2. df:查看磁盘使用情况 dir不是linux的常用的命令,不过用dir能够罗列出目录内容;dir默认没有颜色的区别,但也可以设置。现在都使用ls来代替。…

详细手机代理IP配置

嗨,亲爱的朋友们!作为一家代理产品供应商,我知道有很多小伙伴在使用手机进行网络爬虫和数据采集时,常常会遇到一些IP限制的问题。别担心!今天我要给大家分享一下手机IP代理的设置方法,让你们轻松应对这些限…

【C++STL基础入门】string迭代器

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、迭代器是什么?二、string迭代器1.定义迭代器理解 2.通过迭代器遍历遍历方式1遍历方式2 3.迭代器失效4.涉及到的迭代函数1、begin()2、end()3、a…

element 图标变颜色和更改大小

需求效果: element自带颜色不符合,且大小不一致。 // 穿透更改图标大小 /deep/ i.el-icon-info{font-size: 20px;} 颜色变化:

SpringCloud学习笔记(三)_服务提供者集群与服务发现Discovery

服务提供者集群 既然SpringCloud的是微服务结构,那么对于同一种服务,当然不可能只有一个节点,需要部署多个节点 架构图如下: 由上可以看出存在多个同一种服务提供者(Service Provider) 搭建服务提供者集…

基于Python的图书馆大数据可视化分析系统设计与实现

博主介绍:✌csdn特邀作者、博客专家、java领域优质创作者、博客之星,擅长Java、微信小程序、Python、Android等技术,专注于Java、Python等技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 …

u盘数据丢失但占内存如何恢复?不要着急,这里有拯救方案

U盘数据丢失但占内存如何恢复?数据丢失是一种让人非常头疼的问题,尤其是当我们的U盘数据丢失了,但内存仍然被占用时,更令人困惑和焦虑。然而,不要慌张!在本文中,将为大家介绍一些有效的方法来恢…

STM32F4X 定时器PWM

STM32F4X 定时器PWM 什么是PWMSTM32F4X PWM使用GPIO引脚复用STM32F4X PWM配置参数定时器PWM输出通道定时器PWM输出模式定时器PWM有效电平定时器PWM工作过程定时器PWM频率计算 STM32F4X PWM配置步骤STM32F4X PWM配置函数 上节说到了定时器的定时功能,这节说一下定时器…

10种最流行的3D模型文件格式及转换方法

3D 文件格式用于存储有关 3D 模型的信息。 你可能听说过一些最流行的格式,包括 STL、OBJ、FBX 和 DAE。 它们广泛应用于从视频游戏动画到工业增材制造的各种应用中。 在本文中,我们将考虑为什么有这么多不同的格式,探讨 3D 文件格式存储的四…

已解决W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library ‘c

已解决W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library ‘cudart64_110.dll’; dlerror: cudart64_110.dll not found I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not ha…