ChatGPT自动化

news/2024/5/7 7:08:12/文章来源:https://blog.csdn.net/m0_60964321/article/details/128564128

目录

一、前言

 二、Selenium反反爬操作

2.1、隐藏“正在受到自动软件的控制”

 2.2、禁用 Blink 渲染引擎

2.3、Cookies 和 UA伪装

 2.4、控制已打开的浏览器

三、自动化操作

3.1、问题遍历

3.2、获取回答

四、源码


一、前言

近日, ChatGPT在圈内大火。那么什么是ChatGPT呢?

ChatGPT是一种自然语言生成模型,由OpenAI开发。它基于GPT(Generative Pre-training Transformer)的技术架构,旨在更好地模拟人类的自然语言表达方式。

与GPT相比,ChatGPT具有更强的上下文感知能力,可以在继续对话的基础上生成文本。它的应用包括聊天机器人、对话系统、智能邮件助手等。

ChatGPT通过对大量的自然语言文本进行预训练,然后使用这些预训练权重来解决具体的任务。这种基于预训练的方法可以在计算资源有限的情况下获得很好的效果。

值得注意的是,ChatGPT仅是一种技术,并不能独立于特定的应用场景或者产品中使用。开发人员需要根据自己的需求设计应用程序,并使用ChatGPT来实现自然语言生成功能。


 二、Selenium反反爬操作

2.1、隐藏“正在受到自动软件的控制”

当我们在使用webdriver时,浏览器上方总会出现 “正在受到自动软件控制” 字样

from selenium import webdriver
from selenium.webdriver.chrome.options import Optionsoptions = Options()
# 隐藏 正在受到自动软件的控制 这几个字
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)

 2.2、禁用 Blink 渲染引擎

"--disable-blink-features" 是一个命令行标志,可以传递给 Chrome 浏览器以禁用 Blink 渲染引擎的某些功能。Blink 渲染引擎被 Chrome 和其他基于 Chromium 的浏览器用来显示网页内容。

"--disable-blink-features" 标志接受一个由逗号分隔的要禁用的功能列表。可以使用此标志禁用的一些功能示例包括:

"AutomationControlled":禁用仅在 Chrome 由自动化控制时启用的功能(例如,在无头模式下运行或在 Selenium 控制下运行)。
"PreciseMemoryInfo":禁用准确测量内存使用情况的能力。
"PreciseTimeInfo":禁用准确测量时间的能力。

opt = webdriver.ChromeOptions()
# opt.add_argument("--incognito")
# opt.add_experimental_option('excludeSwitches', ['enable-automation'])
# opt.add_experimental_option('useAutomationExtension', False)
opt.add_argument("--disable-blink-features")
opt.add_argument("--disable-blink-features=AutomationControlled")

2.3、Cookies 和 UA伪装

 这个很简单,爬虫基本都会用到两者,通过添加Cookies可以让你的程序省去登陆步骤

cookies = {'domain': ".chat.openai.com",'name': '__Secure-next-auth.session-token','value': 'xxx','expires': 'Sat, 23-Dec-23 04:23:54 GMT','path': '/','HttpOnly': True,# 'HostOnly': True,'Secure': True,'SameSite': None
}
driver.get('https://chat.openai.com/chat')
driver.add_cookie(cookie_dict=cookies)

 2.4、控制已打开的浏览器

当使用一个新的web驱动器时会遇到很多问题,不如直接去控制一个已经打开的浏览器,就不用去设置那么多繁琐的参数。

首先,在你的谷歌输入如下网址

chrome://version/

 

 找到可执行文件路径,就是你的驱动器安装地址,在CMD中输入

"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222

 此时,你的谷歌就会打开一个新的窗口,下面在程序中输入


from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver.chrome.options import Optionsoptions = Options()
options.add_experimental_option("debuggerAddress", "localhost:9222")driver = webdriver.Chrome(executable_path=r"C:\Users\THUNDEROBOT\PycharmProjects\douban\Mr.Ding\chromedriver.exe", chrome_options=options)

 这样你就可以直接控制一个已打开的浏览器了。


三、自动化操作

3.1、问题遍历

观察网页结构,不难发现,类似于大多数网站输入,通过Key实现。这时我们可以想到用Selenium来实现

 由此可以得到核心代码

question = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[2]/form/div/div[2]/textarea').send_keys('hello')

 进入对话框,同样观察网页结构,进行Xpath定位,可以得到如下的核心代码。其中,我们可以把要遍历的问题通过csv存储。

question_from_csv = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[2]/form/div/div[2]/textarea').send_keys(df['问题'][i]

3.2、获取回答

当输入问题后,GPT就会进行回答,那如何判断是否回答完成并且可以进行下一个问题的提问呢

观察右下角,当GPT在回答问题时,右下角是省略号,表示在进行回答;在回答完毕时,右下角是发送箭头,如下所示

 可以通过检测是否存在该发送箭头来判断是否回答完毕

有如下核心代码

if driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[2]/form/div/div[2]/button') == True:

当然,有时回答问题时间过长,我们可能只获取了一部分消息,那如何去获取完整的信息呢

睡眠嘛 

回答一个问题大概时间是在一分钟多一点,我们可以让程序睡眠2个60s,来判断是否输出完成

四、源码

欢迎评论区技术交流哦~

# -*- coding = utf-8 -*-# "C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222
import time
import pandas as pd
import time
import os
from docx import Document
from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.webdriver.chrome.options import Optionsoptions = Options()options.add_experimental_option("debuggerAddress", "localhost:9222")driver = webdriver.Chrome(executable_path=r"C:\Users\THUNDEROBOT\PycharmProjects\douban\Mr.Ding\chromedriver.exe", chrome_options=options)
# driver.implicitly_wait(10)
print("hello")
driver.get('https://chat.openai.com/chat')df = pd.read_csv('./问题合集.csv')
print(df['问题'][0])
print('等个5s')
print('Waiting........')
time.sleep(5)
question = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[2]/form/div/div[2]/textarea').send_keys('hello')
botton = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[2]/form/div/div[2]/button').click()
print('再等个5s, 还没出来')
print('Waiting........')
time.sleep(5)
if driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[2]/form/div/div[2]/button') == True:answer = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[1]/div/div/div/div[2]/div/div[2]/div[1]/div/div/p').textprint(answer)
else:print('第三个15s')print('Waiting........')time.sleep(15)answer = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[1]/div/div/div/div[2]/div/div[2]/div[1]/div/div/p').textprint(answer)print('Waiting........')
for i in range(0, 20):# 提问save_path = os.path.join(r"C:\Users\THUNDEROBOT\Desktop\百度文库", df['问题'][i] + ".docx")# 创建一个新的文档document = Document()question_from_csv = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[2]/form/div/div[2]/textarea').send_keys(df['问题'][i] + ' (详细描述并用中文回答,不要让我说继续,一口气说完)')# time.sleep(5)# 点击发送botton_new = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[2]/form/div/div[2]/button').click()# 主页面回答问题time.sleep(50)if driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[2]/form/div/div[2]/button') == True:answer_1 = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[1]/div/div/div/div[{}]/div'.format(4+i*2)).textprint(answer_1)document.add_paragraph(answer_1)document.save(save_path)print('在第一个30s内完成')print('Waiting........')else:time.sleep(60)answer_1 = driver.find_element(by=By.XPATH, value='//*[@id="__next"]/div/div/main/div[1]/div/div/div/div[{}]/div'.format(4+i*2)).textprint(answer_1)document.add_paragraph(answer_1)document.save(save_path)print('在第二个30s内完成')print('Next question')

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

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

相关文章

pytorch--在本地搭建chatGpt简化版,实现聊天,写代码功能

文章目录前言效果搭建环境安装编译环境安装anaconda,python3.8.8环境安装vs2019vs2019安装完毕后开始安装cuda安装cudnn安装pytorch前言 体验了一下new bing,很不错,但是最近觉得这种模型还是搭建在自己电脑上最好,看了下github上…

ChatGPT 常见错误原因及解决方案:报错、回答不完整、网络错误等

最近,由人工智能实验室 OpenAI 发布的对话式大型语言模型 ChatGPT 火得一塌糊涂。它可以与人类轻松地对话,无论是多么奇葩的问题 ChatGPT 都不在话下。在体验 ChatGPT 的同时我们也会遇到各种各样的问题,这里我总结了其对话过程中可能会发生的…

【ChatGPT】是一个危机与机遇并存的时代

ChatGPT是一个危机与机遇并存的时代前言一、ChatGPT是什么二、ChatGPT的恐怖之处三、ChatGPT真的会取代程序员吗四、ChatGPT对未来的影响前言 ChatGPT,横空出世,从去年12月,ChatGPT以最快速度(5天)突破百万用户。今年2…

【ChatGPT初体验与Android的集成使用】

ChatGPT初体验与Android的集成使用前言创建自己的API KEYAndroid端的集成代码总结前言 ChatGPT凭借着强大的AI功能火的一塌糊涂,由于其官网在国内不能访问,很多小伙伴不能很友好的体验及使用,现在就来分享一下其简单的集成使用,最…

ChatGPT 为 Midjourney 或 DALL-E 等 AI 艺术生成提示

人工智能为创意产业开辟了一个充满可能性的全新世界。人工智能最令人兴奋的应用之一是生成独特的原创艺术作品。Midjourney 和 DALL-E 是人工智能生成艺术的两个突出例子,它们已经引起了艺术家和艺术爱好者的关注。在本文中,将探索如何使用 ChatGPT 为 A…

探索ChatGPT技术在文本生成、机器翻译领域的简单应用

自然语言处理技术——文本生成 ChatGPT的应用领域越来越广泛,关于文本生成,我们可以使用Python中的文本生成库来实现。其中,最常用的是基于深度学习的文本生成模型,如循环神经网络(RNN)和长短时记忆网络(LSTM)。 可以使用Python中…

我用ChatGPT做直播技术选型,卷死了同事

摘要 近两年即时通讯/直播产品炙手可热,市场上针对ToB的产品日益增多,企业该如何去选型呢?本文分享了笔者对于直播产品的思考,将从直播SDK实例功能特性、常见业务场景、注意事项及最佳实践等方面介绍如何进行实例选型,…

ChatGPT开源平替(2)llama

最近,FacebookResearch 开源了他们最新的大语言模型 LLaMA,训练使用多达14,000 tokens 语料,包含不同大小参数量的模型 7B、13B 、30B、 65B,研究者可以根据自身算力配置进行选择。 经过测试,(1&#xff09…

「ChatGPT」爆火背后的大语言模型到底是什么?

点击上方关注 “终端研发部”设为“星标”,和你一起掌握更多数据库知识本文首发于我的知乎,终端研发部!链接:https://www.zhihu.com/question/585248111/answer/2903130554说起chatGPT,我们都知道非常的火爆&#xff0…

建议收藏:超详细ChatGPT(GPT 4.0)论文润色指南+最全提示词/咒语

在这篇文章中,我将分享如何利用ChatGPT 4.0辅助论文写作的技巧,并根据网上的资料和最新的研究补充更多好用的咒语技巧。 本篇文章持续更新,祝大家写作顺利,如果对你有帮助,记得三连! 欢迎大家在评论区补充…

ChatGPT兴起,这20种职业将迎来失业潮

OpenAI新近推出的ChatGPT已经爆火出圈,它的回答之智能之流畅让众人惊艳。据媒体报道,ChatGPT还通过了美国部分高校的法律、医学考试,并顺利通过了谷歌软件工程师入职测试,岗位年薪18万美元。当全球科技圈被 ChatGPT牵动&#xff0…

使用 ChatGPT 启发游戏创意|基于 AI 5 天创建一个农场游戏,第 2 天

欢迎使用 AI 进行游戏开发! 在本系列中,我们将使用各种 AI 工具,在 5 天内创建一个功能完备的农场游戏。到本系列结束时,你将了解到如何将多种 AI 工具整合到游戏开发流程中。本系列文章将向你展示如何将 AI 工具用于:美术风格游戏…

ChatGPT与Discord无缝接入指南,创建自己的聊天机器人(保姆级教程)

ChatGPT和Discord都非常流行,而在Discord内使用AI绘画也很受欢迎。如何将ChatGPT与Discord对接,在Discord内实现一个聊天机器人。 第一步:获取OpenAI API密钥。请按照以下步骤操作: 打开此链接 https://platform.openai.com/acco…

基础入门-ChatGPT结合安全融入技术高效赋能拓展需求

文章目录Chatgpt科普利用:安全开发逆向免杀代码审计蓝队应急APT社工学其他相关:Chatgpt科普 ChatGPT是什么? ChatGPT–可能很多人被这个缩写的名字搞糊涂了,第一眼无法看出到底什么意思,GPT 的英文原文是 Generative Pre-trainin…

基于Docker如何快速部署自己的ChatGPT

背景 随着OpenAI在2022年底发布的LLM模型-ChatGPT展现出的强大效果,ChatGPT无疑成为了当下炙手可热的明星模型。 现有的基于GPT的开源项目已经非常多,本文以现有的高热度github开源项目chatgpt-web为例,教大家简单快速地搭建属于自己的Chat…

windows-中科院学术ChatGPT优化安装记录

搭建中科院学术专业版 ChatGPT记录 1、git仓库获取 > git clone https://github.com/binary-husky/chatgpt_academic.git(在git bash 中打开输入就行) 打开后输入命令即可 然后你便得到了它,进入该文件夹 打开命令终端,为他配…

基于ChatGPT搭建公司内部ChatGPT服务器

一、前言 我是ChatGPT,一个由OpenAI训练的大型语言模型。我被设计用于回答各种问题并生成文本,可以处理多种自然语言任务,例如问答、摘要和翻译等。在我的学习过程中,我阅读了数百万篇文本,并使用这些文本来提高我的理…

赶上ChatGPT的车,百度文心一言和阿里通义千问上线

百度“文心一言”,地址:https://yiyan.baidu.com 阿里“通义千问”,地址:https://tongyi.aliyun.com 以下介绍来自官方: 一、“文心一言”介绍: 你好,我是文心一言 ERNIE Bot 作为一个人工…

ChatGPT火了,将给网络安全行业带来什么影响?

一、简介 作为全新的人工智能(AI)聊天机器人,ChatGPT被认为正在“掀起新一轮AI革命”。在股市上甚至出现了“ChatGPT概念股”的当下,ChatGPT究竟对于网络安全行业会产生怎样的影响,是值得思考的一个问题。 ChatGPT由…

你的 ChatGPT Not available in your country?教你如何解决

ChatGPT Not available 文章目录ChatGPT Not available问题描述解决方法一解决方法二教程图示方法一方法二相关文章问题描述 如果你使用科学上网却发现自己的页面上显示 OpenAIs services are not available in your country.,你可能会换其他地区,但是换…