ChatGPT的博弈:一场猫捉老鼠的游戏画上句号

news2024/12/29 10:45:38

前言

上周日我在B站发了个视频(https://www.bilibili.com/video/BV1Ud4y1e7BP),本来想水一期的(毕竟一个半月没更新了),不过借着ChatGPT的热度,播放量突破2w。

随之而来的是大批网友涌入群聊,想测验一下ChatGPT的性能,也有不少人是来交流搭建技术的。不过截至目前,OpenAi官方对其做了一些限制,以至于目前已经变得不太好用。为了防止一部分人的误解(如:进来发现不好用,误认为视频是人工假扮合成)以及一部分人的重复提问(如:为什么之前的教程xx步会报错),特此把最近与ChatGPT的博弈过程阐明一下。

博弈时间线

12.11 - 初始搭建

这天开始入坑ChatGPT,本以为抓个包就能调用到官方Web界面上的API,监听数据包一看没那么简单,数据的收发并不是请求数据-响应数据的普通模式,因此无法直接去进行调用。

在Github查阅到https://github.com/acheong08/ChatGPT这个仓库,该作者(下面统称为仓库作者)使用逆向工程成功接入官方Web的API,不过token每24小时会进行一次刷新,需要手动修改一下,总体来说运行比较正常。

12.12 - CloudFlare5秒盾

可能是周末官方服务被机器人频繁调用,这天周一官方一上班就新增了一道CloudFlare5秒盾,即访问ChatGPT网页时,需要先等待五秒。
在这里插入图片描述
在此过程中,服务器会将加密的请求参数写入cookie的字段cf_clearance中,而普通的机器人访问无法携带这个参数,因此基本上只有真正的浏览器访问才能够通过这道检验。

这天机器人一度停止了半天,到了下仓库作者更新了版本,他使用浏览器模拟技术Selenium来应对CloudFlare的检验,不过cf_clearance这个参数每两小时就会进行更新,因此每隔两小时就需要重新启动配置,只能说勉强能用。

12.13 - 谷歌验证

这天仓库作者又更新了一个版本,每隔两小时自动启动浏览器来刷新配置参数。不过很快,官方在登陆界面引入了一个谷歌验证(就是那个需要根据提示点击图片的麻烦验证),这就导致了每隔两小时启动浏览器来刷新配置参数时,需要人工介入来完成这道登录验证。

12.14 - 保持登录状态

仓库作者很快又找到了应对策略,他通过修改cookie的内容,实现了登录保活,这样又实现了自动化。官方很快提出应对策略: 在CloudFlare界面新增了一个点击确认,同时压缩短时间内同一账户的提问数量,因此这天频繁出现“Too many requests…”的响应报错。

12.15 - 区域限制

这天,官方掏出大杀器–直接根据ip进行区域限制:即亚洲等地区一小时内只能问一个问题,ChatGPT成了临时一次性机器人,几乎处于“瘫痪状态”。仓库作者也再无办法,于是将仓库进行存档,不再更新。

在这里插入图片描述
至此,这场猫捉老鼠的游戏来到终点。

过渡方案:调用官方API

模型简介

实际上,官方并无公开的ChatGPT调用方式,但是在官方文档中提供了一些可供调用的GPT-3模型:

在这里插入图片描述

据官方所述:text-davinci-003这个模型的综合性能最强,同时,这几个模型各有各的优势:

  • Davinci: 复杂文本理解、因果分析、观点总结
  • Curie:语言翻译、复杂文本分类、文本情感分析、摘要提取
  • Babbage:文本分类,语义搜索分类
  • ada:文本解析、简单分类、地址纠正、关键字提取

调用费用

针对不同模型,官方指定了不同的收费标准:

在这里插入图片描述

每个初始账户都有18$的账户余额,可以试用体验:
在个人信息主页(https://beta.openai.com/account/usage)可以查看到当前余额状态:

在这里插入图片描述

调用方式

调用API之前,需要现在官网上申请一个key,申请地址:https://beta.openai.com/account/api-keys

以python为例,下面进行调用示例:

首先需要安装openai库:

pip install openai

下面调用text-davinci-003模型:

import openai

openai.api_key = "自己的key"

response = openai.Completion.create(
  model="text-davinci-003",
  prompt="你是谁啊",
  temperature=0,
  max_tokens=4000,
  top_p=1.0,
  frequency_penalty=0.0,
  presence_penalty=0.0,
)
print(response['choices'][0]['text'])

UTF-8转中文

有些时候,服务器会返回\U0001F970之类的UTF-8字符码,用下面的方式,可以转换成中文输出:

import re


def replace(matched):
    h_s = matched.group(1)
    h_i = int(h_s, base=16)
    return chr(h_i)


def uni_to_cn(s: str):
    result = re.sub(r"\\u([0-9a-fA-F]{4})", replace, s)
    return result


if __name__ == '__main__':
    cn = uni_to_cn('\U0001F970 \U0001F970 \U0001F970 \n Hello World \U0001F970 \U0001F970 \U0001F970')
    print(cn)

注:代码中的这段内容是davinci模型返回出来的真实结果。

总结

在经历半天的群友测试后,发现davinci模型相比于ChatGPT来说,有以下这些优缺点。

  • 优点
    1.调用速度快,毕竟是官方API,没有那么多限制,速度嗖嗖的
    2.可以联网,因此可以用它进行一些网页聚合搜索和推荐

在这里插入图片描述

  • 缺点
    1.输入长度限制,davinci的最大接受输入是4000个token,这就意味着太长的语言无法回答
    2.性能比ChatGPT明显要低一些,不过作为陪聊机器人,基本该有的功能都有

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

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

相关文章

手把手教你在Ubuntu定制文件系统

为了给客户的测试和开发提供便利,飞凌嵌入式的开发板产品一般都支持多种操作系统,以基于全志T507H处理器设计研发的OKT507-C开发板为例,它支持三种操作系统,分别是:Linux、Android 和 Forlinx Desktop(Ubun…

招聘惊现997工作要求!HR:因为下班比较晚,所以公司一般不加班

对于程序员来说,加班就像阳光和空气,实在是太正常不过的事情了。 就算本身并不是需要加班的公司,在项目上线的前夕多多少少肯定还是需要加一些班的! 但是,下面这家公司就不一样了,直言公司就是997工作制……

Centos 配置磁盘加密(crypt-disk)

文章目录 Crypt-disk 创建一块新的磁盘,启用磁盘加密,解锁密码为“CSK2022!”; 映射到/dev/mapper/crypt 分区,并挂载到/mut/crypt 目录。一、去虚拟机添加一块磁盘二、安装cryptsetup2.对/dev/sdb 进行加密操作3.映射加密磁盘4.格式化5.挂载到到/mut/crypt 目录。题目 Cry…

Pytest测试框架(二):fixture 方法等相关操作--自定义测试用例的前置后置条件

pytest中的fixture: fixture是pytest特有的功能,它用pytest.fixture标识,定义在函数前面。fixture有明确的名字,在其他函数,模块,类或整个工程调用它时会被激活。fixture是基于模块来执行的,每个…

如何用C#制作 微信个人机器人

打包下载..https://github.com/wechaty/dotnet-wechaty在windows上安装docker,由于可能不是专业版windows10,可能会遇到一系列问题,百度能解决。可以参考 win10安装docker(适用于windows家庭版)_一起玩编程的博客-CSDN…

基于jsp+mysql+SSM学生兼职信息网站-计算机毕业设计

项目介绍 运行环境: 最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 IDE环境: Eclipse,Myeclipse,IDEA都可以 tomcat环境: Tomcat 7.x,8.x,9.x版本均可 硬件环境: windows 7/8/10 1G内存以上 管理员角色…

系统的混乱并非业务本身之复杂,我们并不擅长处理『简单』

作者:聂晓龙 一、前言 一群高智商青年在餐厅吃饭,餐桌上一个瓶盖标识为盐的瓶子里装的是胡椒粉,而标识为胡椒粉的瓶子里装的却是盐,他们想出了一个充满才气的方案来完成对调--仅需要一张餐巾纸、一根吸管和两个空碟子。当他们叫来…

Jmeter 性能测试入门 ——性能插件介绍

目录 一、前言 1、首先,JMeter提供了三个基本的线程组,分别为: 2、其他线程组可以通过集成插件的方式使用,包括: 二、集成插件下载安装 1、下载地址:jmeter-plugins.org 2、安装:下载后文件为plugins…

nodejs+vue015疫情社区管理系统

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.3 B/S结构 4 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可…

Python自学教材推荐 初学者必看

Python是一种面向对象、解释性的高级程序语言,它已经被应用在众多领域,因此学习Python变得越来越有必要。传智播客针对编程零基础的初学者,编著出版了高质量的Python自学教材——《Python快速编程入门》。下面我将把这本书推荐给大家&#xf…

陈天老师的Rust培训(1)学习笔记

https://tyrchen.github.io/rust-training/ 跟C互操作时,加上上面图片的宏,rust会根据你的各个域的内存的占用自动去调整内存中的位置,让你的内存占用是最优的,而且rust在生成数据结构的结构的时候,它会做一些padding&…

新零售@2022: 调料、精酿、预制菜

【潮汐商业评论/原创】 圣诞节临近,刚刚下班的Emily想着好久没有与闺蜜见面了,于是相约着过平安夜。 她顺手就打开盒马APP下单了适合女生的微醺精酿,同时发现零售平台上新了一款可以用来拌蔬菜的中式沙拉川式椒麻汁,想起中午做饭…

常见音视频编码格式

1、常见的音频编码格式 MP3 这种压缩方式的全称叫MPEG Audio Layer3,MP3是利用MPEG Audio Layer 3的技术,将音乐以1:10甚至1:12 的压缩率,压缩成容量较小的file,换句话说,能够在音质丢失很小的情况下把文件压缩到更小的程度。而且…

收获一个python识别率超级高的OCR包,值得推荐

他的开源项目地址:https://github.com/sml2h3/ddddocr 他支持的类型还是挺多的: 本次更新新增了两种滑块识别算法,算法非深度神经网络实现,仅使用opencv和PIL完成。 算法1 小滑块为单独的png图片,背景是透明图&…

大一新生HTML期末作业——大学生抗疫感动专题网页设计作业

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

栈,队列和链表三者之间的关系与区别

最近一直在学习算法,刷算法题,但是自从大学毕业以来,数据结构的知识都还给老师了,只会个数组,所以前期刷的题目也都是有关数组的 最近跟着小册重学了一遍数据结构,今天就记录一下栈,队列和链表三者之间的关…

MindFusion.Diagramming for JavaScript V4.2.4

MindFusion.Diagramming for JavaScript V4.2.4 现在支持使用套索工具进行缩放的多种方式。2022 年 12 月 15 日 - 15:44新版本特征 套索缩放工具- 该控件现在支持使用套索工具进行缩放的多种方式。新的“PanAndModify”行为允许您在鼠标指针悬停在某个项目上或平移视图时进行选…

HTTPS工作过程!

HTTPS了解 HTTPS 也是一个应用层协议, 是在 HTTP 协议的基础上引入了一个加密层。HTTP 协议内容都是按照文本的方式明文传输的, 这就导致在传输过程中出现一些被篡改的情况。如运营商劫持。 HTTPS工作过程 ① 既然要保证数据安全, 就需要进行 “加密”。…

【python】如何把你的python包发布出去(pip install)

python:如何把你的python包发布出去(pip install) 介绍 实际上分为两步 打包发布 我们要发布的网站是https://pypi.org/。也就是用户通过pip install XXX,就可以安装你的包。 1 通过setuptools打包 需要我们编写setup.py f…

数据库的事务

作者:~小明学编程 文章专栏:MySQL 格言:目之所及皆为回忆,心之所想皆为过往 目录 什么是事务? 事务的特性 原子性 一致性 持久性 独立性 事务之间的影响 脏读 不可重复读 幻读 数据库的隔离级别 读未提交…