如何实现chatGPT批量问答,不用token
一、背景
因为需要批量提取一本教材里的概念做成知识图谱,想用chatGPT做概念提取。
- 调用api?别想了… 免费帐户的api慢得一批
- 于是想用模仿人类交互的方法来调用,本来想用pyautogui的,但是主要是与浏览器交互,还是用selenium比较方便。但看了下现在公开出来的selenium的方法代码,都不太能用(可能是网站更新?),所以还不如自己手撸一个。
下面代码使用的python库是 selenium
(用来模拟浏览器浏览、输入、点击、读取等行为)、undetected_chromedriver
(用来规避selenium默认的浏览器驱动会导致的跳不过人机识别的问题)
二、步骤
1. 确保库安装好了
执行下面代码安装
pip install selenium
pip install undetected_chromedriver
2. 测试能否使用浏览器驱动
执行下面代码,后台应该可以自动打开浏览器,并跳转到openai界面。(该方法虽然不需要用token,但需要进入chatGPT界面,它只是模拟人重复的与chatGPT交互)
import time # 用来之后做等待
import undetected_chromedriver as uc # 不会被监测的浏览器驱动from selenium.webdriver.remote.webdriver import By
from selenium import webdriver
from selenium.webdriver.common.keys import Keys# 浏览器打开openai界面
options = uc.ChromeOptions()
options.headless = False
driver = uc.Chrome(options=options,version_main=117)
driver.get("https://chat.openai.com")
3. 准备input.txt
准备好我们想要问的问题,下面是我自己写的一个输入测试文档,在不同的问题之间,用---
进行分隔。
4. 执行第二段代码,开启自动循环
## ------------- 1. 需要解析的文档路径 (第二步:配置好input文档后,执行下面所有代码)-------------
input_file = r'input.txt'# 0.1. 用utf-8的编码读取上述md文件
try:# 使用UTF-8编码打开文件with open(input_file, 'r', encoding='utf-8') as file:md_content = file.read()
except FileNotFoundError:print(f"文件 '{input_file}' 未找到.")
except Exception as e:print(f"发生错误: {str(e)}")# 0.2 按照\n---\n分割文本,得到文本列表
text_list = md_content.split("\n---\n")
response_list = []
talk_num = 3 # 对话次数,初始化为3(经验值)
for a_text in text_list:result = extract_small(a_text, driver, talk_num)response = result[0]talk_num = result[1] # 会迭代增加。#response_list.append(response) # 将回复添加到列表# 0.3 重新构造output输出
output_str = ''
for i in range(len(text_list)):output_str += text_list[i] + '\n'output_str += '🤖:' + response_list[i]output_str += '\n---\n'
# 讲上面构造的output_str输出到文件里面
# 将output_str写入文件
output_file = r'output.txt' # 定义输出文件的路径和名称
try:with open(output_file, 'w', encoding='utf-8') as file:file.write(output_str)print(f"已将结果写入文件 '{output_file}'")
except Exception as e:print(f"写入文件时发生错误: {str(e)}")
三、源码使用说明
extract_small()
函数还包括了识别chatGPT有没有回答完成的功能,有效避免睡眠固定时间导致的时间浪费问题。extract_small()
已经放在源码中了。感兴趣的同学可以去看源码。>>> 源码链接
源码使用方法
-
解压压缩包;在Pycharm打开这个文件夹
-
执行 pip install undetected_chromedriver 和 pip install selenium
-
执行第1到63行代码,后台会自动打开浏览器,需要手动登录账号和点掉系统的弹窗;
-
按照模板准备好input.txt文件后,执行剩下的代码;可以看到程序自动执行了。
效果视频展示:
3分钟,教你做个GPT批量问答还不用token | 有源码
总结
该程序实现了无需token批量与chatGPT交互的方法,一共分为两个步骤:打开auto_selenium_txt.py
先运行第一步的代码,执行之后会自动打开浏览器,需要手动配置好浏览器界面;
再运行的第二步代码,配置好文件夹中的input文档,执行之后会开始自动批量问答。结束之后会保存的output文档
相关文章:

如何实现chatGPT批量问答,不用token
一、背景 因为需要批量提取一本教材里的概念做成知识图谱,想用chatGPT做概念提取。 调用api?别想了… 免费帐户的api慢得一批于是想用模仿人类交互的方法来调用,本来想用pyautogui的,但是主要是与浏览器交互,还是用s…...

Arduino驱动LIS2DH三轴加速度传感器(惯性测量传感器篇)
目录 1、传感器特性 2、硬件原理图 3、控制器和传感器连线图 4、驱动程序 LIS2DH加速度计相对传统的ADXL345在稳定性以及功耗上都有一定的优化,低功耗模式下仅为2μA(普通模式11μA),并且最高支持5.3KHz输出频率,拥有2g/4g/8g/16g四档可选量程&...

B 开组会(可持久线段树+树剖) 武汉大学2023年新生程序设计竞赛(同步赛)
其实题目就是每次询问一个节点 在这个节点的基础上往下继续遍历t的深度,在这个遍历的过程中找一个最大值就行了 其实这个题目数据非常水,直接暴力就可以过了 下面是别人过的代码 #include<bits/stdc.h> using namespace std; const int mxn5e…...

vue的axios方法
Axios是Vue.js推荐使用的一个基于Promise的HTTP库,用于浏览器和Node.js中发送HTTP请求。它可以让我们更容易地与后端进行数据交互。 以下是Axios的基本用法: 安装Axios 在Vue项目中,可以使用npm来安装Axios: npm install axio…...

gitlab docker部署,备份,恢复。附踩坑记录
本次安装在CentOS7下进行 1、安装yum 检查是否已经安装yum yum --version如果未安装 sudo yum install -y yum-utils添加镜像源: 国外镜像源:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo阿里镜像源&am…...

2023品牌新媒体矩阵营销洞察报告:流量内卷下,如何寻找增长新引擎?
近年来,随着移动互联网的发展渗透,短视频、直播的兴起,新消费/新零售、兴趣电商/社交电商等的驱动下,布局线上渠道已成为绝大多数品牌的必然选择。 2022年,越来越多的品牌加入到自运营、自播的行列中,并且从…...

HarmonyOS/OpenHarmony原生应用-ArkTS万能卡片组件Toggle
组件提供勾选框样式、状态按钮样式及开关样式。该组件从API Version 8开始支持。 仅当ToggleType为Button时可包含子组件。 一、接口 Toggle(options: { type: ToggleType, isOn?: boolean }) 从API version 9开始,该接口支持在ArkTS卡片中使用。 参数: Toggle…...

redis,mongoDB,mysql,Elasticsearch区别
Redis: Redis是一种高性能键值存储数据库,基于内存操作,支持数据持久化,支持数据类型丰富灵活,如字符串、哈希、列表、集合、有序集合等。Redis还提供了订阅/发布、事务、Lua脚本、主从同步等功能,适用于访…...

什么是软件测试架构师?
软件测试架构师是一个新职位,但确实是一个非常必要的职位,主要有几点: 1. 根据V模型、广义测试概念等,(静态)测试的越早,发现缺陷越早,越有利于产品的质量、加快产品开发周期、降低企业的成本。更重要预防…...

安科瑞ARB5系列弧光保护装置,智能电弧光保护,保障用电安全
安科瑞虞佳豪壹捌柒陆壹伍玖玖零玖叁 什么是弧光 电弧是放电过程中发生的一种现象,当两点之间的电压超过其工频绝缘强度极限时就会发生。当适当的条件出现时,一个携带着电流的等离子产生,直到电源侧的保护设备断开才会消失。空气在通常条件…...

查找算法——二分查找法
一、介绍 首先需要将查找的数据排好序,再进行二分查找法来进行查找,二分查找是将数据范围不断分割为两份,不断比较中间值与待查找值的大小来确定其在哪个区间范围的一种方法。例如:在一组数据(1,4ÿ…...

大数据——Spark Streaming
是什么 Spark Streaming是一个可扩展、高吞吐、具有容错性的流式计算框架。 之前我们接触的spark-core和spark-sql都是离线批处理任务,每天定时处理数据,对于数据的实时性要求不高,一般都是T1的。但在企业任务中存在很多的实时性的任务需求&…...

graphviz 绘制二叉树
代码 digraph BalancedBinaryTree {node [fontname"Arial", shapecircle, stylefilled, color"#ffffff", fillcolor"#0077be", fontsize12, width0.7, height0.7];edge [fontname"Arial", fontsize10, color"#333333", arr…...

STM32 PA15/JTDI 用作普通IO,烧录口不能使用问题解决
我们一般用SW调试接口 所以DEBUG选择Serial Wire 这样PA15可以用作普通IO使用。 工程中默认加上: PA13(JTMS/SWDIO).ModeSerial_Wire PA13(JTMS/SWDIO).SignalDEBUG_JTMS-SWDIO PA14(JTCK/SWCLK).ModeSerial_Wire PA14(JTCK/SWCLK).SignalDEBUG_JTCK-SWCLK...

【ARM Coresight 系列文章 9 -- ETM 介绍 1】
文章目录 ARM Coresight ETM 介绍1.1.1 ARM Coresight ETM 版本介绍1.1.2 ARM Coresight 常见术语1.2 ARM Coresight ETM 常用寄存器介绍1.2.1 TRCVIIECTLR(ViewInst Include-Exclude Control Register)1.2.2 TRCVISSCTLR(ViewInst Start/Stop Processing Element Comparator C…...

设计模式 - 中介者模式
目录 一. 前言 二. 实现 三. 优缺点 一. 前言 中介者模式又叫调停模式,定义一个中介角色来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。 中介者模式可以使对象之间的关系数量急剧减少࿰…...

HttpServletRequest对象与RequestDispatcher对象
一、HttpServletRequest对象 1.介绍 在Servlet API中,定义了一个HttpServletRequest接口,它继承自ServletRequest接口,专门用来封装HTTP请求消息。由于HTTP请求消息分为请求行、请求消息头和请求消息体三部分,因此,在…...

Spring Boot启动流程
加载启动类:加了SpringBootApplication的启动类的main 方法中,通过运行SpringApplication.run()方法启动 【SpringBootApplication是由EnableAutoConfiguration(导入自动配置AutoConfigurationSelector类从而加载加了Configuration的配置&am…...

ARM day5
三盏灯流水 .text .global _start _start: 1.LDR R0,0X50000A28LDR R1,[R0]ORR R1,R1,#(0X1<<4)STR R1,[R0] 1.LDR R0,0X50000A28LDR R1,[R0]ORR R1,R1,#(0X1<<5)STR R1,[R0] 2.LDR R0,0X50006000LDR R1,[R0]BIC R1,R1,#(0X3<<20)ORR R1,R1,#(0X1<<…...

流程引擎概述及组成
流程引擎概述及组成 一、流程引擎概述 流程,可以理解为步骤,一个有序的活动或动作; 引擎,可以理解为驱动,是一个程序或者一套系统。 所以,字面意思可以理解为,流程引擎是一套(或…...

定时任务Apscheduler实践案例
定时任务Apscheduler实践案例 参考文章 https://blog.csdn.net/weixin_44799217/article/details/127353134 实现案例 本案例是使用定时任务apscheduler实现的每个三分钟发送一次邮件的任务 实现代码 import time from apscheduler.schedulers.blocking import BlockingSched…...

C#学习系列相关之多线程(五)----线程池ThreadPool用法
一、线程池的作用 线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管…...

京东数据接口|电商运营中数据分析的重要性
在电商运营中,数据分析是非常重要的一环,它可以帮助电商企业更好地了解市场、了解消费者、了解产品、了解销售渠道等各种信息,从而制定更为科学有效的运营策略,提高销售效益。 数据方面用户可以直接选择使用数据接口来获取&#…...

C++入门(1)
目录 1.C关键字2.命名空间(namespace)2.1是什么2.2为什么2.3怎么用 3.C输入&输出4.缺省函数概念分类 5.函数重载6.引用6.1概念6.2特性6.3使用场景6.4引用和指针的不同点 1.C关键字 C总共有63个关键字 这里入门不多说,有需要的自行去了解 2.命名空间(namespac…...

redis-6.2.7 集群安装3主3从
因为资源有限准备了3 台 服务器,先查看防火墙的端口是否开放,如果没有开放先开放端口我使用的 6379 和 6380 这两个端口 所以将这两个端口放开。去redis 官网下载redis 安装包。下载地址 : redis 安装包下载 3. 安装redis 上传上去之后 3 台…...

【动态库】Ubuntu 添加动态库的搜索路径
在运行程序时,经常遇到下面这种动态库加载失败的情况,这时往往是系统在动态库的搜索路径下没有找到对应的库文件导致的。 目录 一、使用 LD_LIBRARY_PATH 二、修改 /etc/ld.so.conf 一、使用 LD_LIBRARY_PATH 环境变量 LD_LIBRARY_PATH是动态库的搜索…...

95740-26-4|用于体内DNA合成的探针F-ara-EdU
产品简介:(2S)-2-Deoxy-2-fluoro-5-ethynyluridine,一种用于体内DNA合成的探针,其毒性比EdU和BrdU都小。当需要延长细胞存活时间和不受干扰的细胞周期进展时,非常适合进行代谢DNA标记。 CAS号:95740-26-4 分子式&…...

Ajax使用流程
Ajax在不刷新页面的情况下,进行页面局部更新。 Ajax使用流程: 创建XmlHttpReqeust对象发送Ajax请求处理服务器响应 1. 创建XmlHttpReqeust对象 XmlHttpReqeust对象是Ajax的核心,使用该对象发起请求,接收响应 不同的浏览器创建…...

1808_ChibiOS基本的架构介绍
全部学习汇总: GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com) 简单看了一下ChibiOS的架构介绍,感觉这种OS以及组件非常适合快速构建一个应用。这里做一个简单的资料整理。。 1. 不同于其他的OS&#…...

曦力音视频转换工具Xilisoft Video Converter Ultimate mac中文版
Xilisoft Video Converter Ultimate mac是一款功能强大的视频转换软件,它可以将几乎所有流行的视频格式转换为其他格式,包括AVI、MPEG、WMV、DivX、MP4、H.264/AVC、AVCHD、MKV、RM、MOV、XviD、3GP等。此外,它还支持将视频转换为音频格式&am…...