ChatGPT实战100例 - (13) 写一个属于自己的 ChatGPT 新版 WebUI

文章目录

  • ChatGPT实战100例 - (13) 写一个属于自己的 ChatGPT 新版 WebUI
    • 一、ChatGPT(OpenAI)的新版API调用
      • 1.1 环境变量配置与调用
      • 1.2 新版api调用
      • 1.3 命令行流式输出
    • 二、Gradio制作自己的聊天WebUI

ChatGPT实战100例 - (13) 写一个属于自己的 ChatGPT 新版 WebUI

今时不同往日,openai的api已经到了1.xx版本,web ui王者gradio也早就推出了chat集成,写一个基于ai的chat变得如此简单。
不过,gradio的官方demo的openai版本过于老旧Creating A Chatbot Fast,没有跟进openai的api变动,让人无言以对。
因此,我们今天来写一个自己的chat webui。

一、ChatGPT(OpenAI)的新版API调用

1.1 环境变量配置与调用

1.xx版的openai的api调用,需要在环境变量中配置api的key。
主要是OPENAI_API_KEYOPENAI_BASE_URL这两个

.env

OPENAI_API_KEY = sk-xxxxx
OPENAI_BASE_URL = https://api.xxx/v1 

两行代码搞定导入环境变量:

from dotenv import load_dotenv
load_dotenv()

1.2 新版api调用

from dotenv import load_dotenv
load_dotenv()from openai import OpenAI
client = OpenAI()def predict(message):history_openai_format = []history_openai_format.append({

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

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

相关文章

某赛通电子文档安全管理系统 UploadFileList 任意文件读取漏洞复现

0x01 产品简介 某赛通电子文档安全管理系统(简称:CDG)是一款电子文档安全加密软件,该系统利用驱动层透明加密技术,通过对电子文档的加密保护,防止内部员工泄密和外部人员非法窃取企业核心重要数据资产,对电子文档进行全生命周期防护,系统具有透明加密、主动加密、智能…

用VsCode写python

1.创建一个文件夹 2.创建.py文件 print("Hello World") print("*"*10) 4.运行 在终端版本fileName python3 app.py

线性代数:线性方程组

目录 一、线性方程组概念 二、消元法求线性方程组 三、系数阵的秩与线性方程组的解 无解 唯一解 无数解 相关定理 一、线性方程组概念 二、消元法求线性方程组 三、系数阵的秩与线性方程组的解 无解 唯一解 无数解 相关定理

Redis -- hash哈希

马行软地易失蹄,人贪安逸易失志。 目录 关于Redis的hash hash命令 hset hget hexists hdel hkeys hvals hgetall hmget hlen hsetnx hash计数 hincrby hincrbyfloat 小结 关于Redis的hash 几乎所有的主流编程语言都提供了哈希(hash&a…

移动机器人激光SLAM导航(三):Hector SLAM 篇

参考引用 Hector_Mapping ROS-Wiki从零开始搭二维激光SLAM机器人工匠阿杰wpr_simulation 移动机器人激光SLAM导航(文章链接汇总) 1. 基于滤波器的 SLAM 问题 1.1 什么是 SLAM 什么是SLAM SLAM 就是为了构建地图用的,这个地图可以保存下来&…

SpringBoot集成Redisson实现限流(二)

1. 简介 Springboot集成Redisson默认的限流器为令牌桶型限流器,底层是通过lua脚本去实现的。 通过lua脚本我们可以去实现一个滑动窗口限流器,利用ZSET格式数据就可以轻松实现。 springboot集成Redisson就不做讲解,可以参考:sprin…

将word中插入的zotero文献转为latex引用样式

在word中,可以使用zotero插件插入和管理参考文献。 例如: 若需要将这段内容移植到latex,就需要将对应的引用编号用\cite{}替换。手动替换非常麻烦且容易出错。要实现自动转换,可在zotero中定制一种新的引文格式,自动将…

第二十三天| 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

Leetcode 669. 修剪二叉搜索树 题目链接:669 修剪二叉搜索树 题干:给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元…

常见的6种软件测试用例设计方法

常见的软件测试用例设计方法,个人认为主要是下面这6种: 流程图法(也叫场景法)等价类划分法边界值分析判定表正交法错误推测法 这6种常见方法中,我分别按照定义、应用场景、使用步骤、案例讲解这4个部分进行讲解。 所…

实习|基于SSM的实习管理系统设计与实现(源码+数据库+文档)

实习管理系统目录 目录 基于SSM的实习管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员功能介绍 (1)管理员登录 (2)实训方向管理 (3)公告信息管理 (4&#xff0…

C++——STL标准模板库——常用算法归纳

使用标准模板库提供的算法需要包含头文件:algorithm,其中包含了遍历、查找、排序、拷贝和替换等算法。当容器储存内置数据类型可使用STL提供函数对象,当容器储存自定义数据类型时需要自定义数据对象或者函数用于提供自定义数据类型的比较、计…

STM32MP135开发板助力电力行业,IEC61850协议移植笔记

1.概述 IEC61850是变电站自动化系统(SAS)中通信系统和分散能源(DER)管理的国际标准。它通过标准的实现,实现了智能变电站的工程运作标准化。使得智能变电站的工程实施变得规范、统一和透明,在电力和储能系…

go语言-用channel控制goroutine的退出

用channel控制goroutine的退出 本文简要介绍了,如何用channel控制goroutine的退出的基本方法 for-range主动停止goruitine package mainimport ("fmt""sync""time" )/* Go并发编程模型:主动停止goroutine 方法一&#…

(java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~

目录 冒泡排序(BubbleSort): 代码详解: 冒泡排序的优化: 选择排序(SelectSort): 代码详解: 插入排序(InsertSort): 代码详解: 希尔排序(ShellSort): 法一…

Java中的常用API

常用API Object类浅克隆与深克隆 ObjectsObjects中的equals 包装类StringBuilder和StringBufferStringBuilder是可变字符串对象StringBuffer线程安全案例![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/87649c20e6464113a42aee5f16f1ee22.png) StringJoiner Object…

关于ZYZ旋转和XYZ旋转

ZYZ旋转和XYZ旋转 概述1、XYZ旋转2、ZYZ旋转 概述 以下公式默认为右手坐标系;ZYZ通常可以避免死解情况,因此在六轴末端解算时常被用到;参考文章 1、XYZ旋转 XYZ旋转一般是绕固定轴旋转(外旋),旋转矩阵的构成为:RzRy…

软考 系统分析师系列知识点之需求管理(3)

接前一篇文章:软考 系统分析师系列知识点之需求管理(2) 所属章节: 第11章. 软件需求工程 第8节. 需求管理 11.8.4 需求跟踪 根据IEEE的定义,可跟踪性包含两个层面的含义:一个是开发过程的两个或多个产品之…

无广告iOS获取设备UDID 简单方便快捷

ps: 为啥不用蒲公英了,就是因为有广告了,获取个UDID还安装游戏,真恶心?,所以找了新的获取UDID都方法,网页直接获取就可以,不会安装软件。 UDID 是一种 iOS 设备的特殊识别码。除序号之外&…

(1)cpu0简介

一、cpu0介绍 cpu032位架构16位通用寄存器,协处理器和其他特殊寄存器 (1)通用寄存器 全局指针寄存器:"Global Pointer register"(全局指针寄存器)是一个在某些处理器架构中存在的专用寄存器&…

单臂路由实验(思科)

一,实验目的 在路由器的一个接口上通过配置子接口的方式,实现相互隔离的不同vlan之间互通。 二,设备配置 Switch1 Switch>enable 全局模式 Switch#configure terminal 配置模式 Switch(config)#vlan 10 …