ChatGPT可以取代搜索引擎吗?

news2024/12/23 23:23:28

ChatGPT对于一些简单的问题,可以完美的完成任务。但是我让它写一篇完整的文章,看看它能否代替我进行写作地的时候,我确定它不能完全取代人类。

但是我们可以使用更多的指导来让AI在日常工作流程为我们工作,所以本文将讨论如何有效利用ChatGPT。这个想法是从简单的日常用例开始,然后进入更复杂的阶段。最后让我们看看ChatGPT能否替代搜索引擎,给我们提供日常需要的信息。

从Google迁移到ChatGPT

Google是用来显示其他人类似的问题,而ChatGPT是来回答你确切的问题的。

像大多数人一样,当我不知道的时候,我会谷歌。标准的工作流程是去谷歌,点击最上面的结果,然后阅读,直到感觉你已经得到了正确的答案。如果幸运的话,有人已经问过你同样的问题了,那我们能够直接得到答案。但更多的时候,我们需要看很多结果,并将答案拼接在一起。

让我们问一个非常简单的问题:

这些Google搜索结果主要回答了这个问题:“如何从DynamoDB表中删除项。”接下来,我们需要将搜索重写为“如何向DynamoDB表中添加项”。然后我们需要自己拼凑答案,得到最终结果。

那么让ChatGPT呢

ChatGPT提供了Python和AWS CLI的描述和确切的代码。这就是我们上面说的:Google尽其所能返回与我的问题相似的内容,而ChatGPT则尽其所能生成答案。

ChatGPT自动化了顶级结果并过滤出答案(当然是它认为的答案)。

对于这种简单的问题

  • 可以通过谷歌得到同样的答案吗? 是的。
  • 可以通过ChatGPT更快地得到答案吗? 没问题。
  • 人工智能能取代我的工作吗? 无法取代
  • 人工智能能提高我的速度吗? 绝对可以

那么再复杂一点的问题呢

使用ChatGPT进行结对编程

我们要完整以下的任务

使用Databricks调查S3中的数据。Databricks非常依赖sql,这意味着要执行多个表连接、条件和复杂的分组。

ChatGPT是肯定可以回答一些简单的问题,比如“如何在SQL中连接两个表”。但是你可以用ChatGPT做更多的事情,就需要把上下文的信息给他

回应如下:

ChatGPT可以根据提供的输入形成响应。

可以看到,ChatGPT根据所提供的上下文定制其响应,这远远超过了Google所能做的。没有任何搜索的结果会给出上面的代码。所以就算我们有答案,也需要将多个不同的文章内容拼接在一起。

ChatGPT在制定响应时考虑整个对话的上下文,所以对于一个问题,越深入我们得到的答案越确切:

ChatGPT会记住前面的对话,就像结对编程一样。提供新的输入,可以回滚到以前的步骤,或者尝试一个实验性的路径。但是ChatGPT也会犯错误,就像人类一样,所以还是需要我们人工来进行最终的判断和对ChatGPT进行提示。

如果需要使用ChatGPT构建一个复杂的解决方案。需要从简单的开始,逐步增加复杂性。

我现在我们可以使用ChatGPT回答简单的问题或构建小的代码片段。还能更进一步吗?

使用ChatGPT进行头脑风暴

这里一个很好的例子是使用ChatGPT为项目提供额外的思路。

比如说:如何能够将程序许可文件自动传输到远程开发环境中

ChatGPT给了一个可靠的答案,说明了上传和下载文件的过程,以及管理AWS Secrets管理器所需的AWS IAM策略等等。每个部分都包括示例代码和解释。

然后我问了ChatGPT一个更普遍的问题:

它还提出了另外八件需要考虑的事情:权限、成本、加密、密钥轮换、区域、资源策略、密钥版本控制和初始帐户设置。每一篇文章都有一段对主题的总结。

这些问题有一些是我们可能没想到的,所以我们可以使用ChatGPT作为头脑风暴的伙伴吗?

 I am a software engineer at a software company with a public REST API.  I want to start stress-testing it, and I am evaluating several frameworks.  What are the important features I should be looking for?
 
 I am a software company that runs a SaaS product.  I need to add SSO to my product so each company can log in with its authentication platform.  I’m trying to compare tools like Auth0 and WorkOS.  What are some important features to consider?
 
 I’m a software engineer at a company building an enterprise (self-hosted) application.  In my case, the customers manage the entire product themselves without me.  I am worried about the maintenance burden of supporting my app long term.  What should I consider?

上面这几个问题返回的答案非常有用,这是一个很好的例子,因为这些无法在谷歌上搜索到。

使用ChatGPT对的工作进行头脑风暴是可行的,因为他的预料集我们可能一辈子都看不完

使用ChatGPT编写复杂代码

当涉及到编写自定义代码库(私有)代码时,ChatGPT绝对是错误的工具(所以我这里会用GitHub Copilot替代)。但是当涉及到编写针对公共api的集成时,ChatGPT的表现非常出色。

如果仔细想想,这是有道理的。因为ChatGPT无法访问你的自定义代码库,而Copilot会扫描本地的代码。

我们问ChatGPT一个公共API的问题:

这里是它生成的代码如下:

 import requests
 import os
 
 GITHUB_TOKEN = 'YOUR_GITHUB_TOKEN'
 ASANA_TOKEN = 'YOUR_ASANA_TOKEN'
 ASANA_PROJECT_ID = 'YOUR_ASANA_PROJECT_ID'
 GITHUB_REPOS = ["user/repo1", "user/repo2", ...]  # List your repos here
 
 HEADERS_GITHUB = {
     'Authorization': f'token {GITHUB_TOKEN}',
     'Accept': 'application/vnd.github.v3+json',
 }
 
 HEADERS_ASANA = {
     'Authorization': f'Bearer {ASANA_TOKEN}',
     'Accept': 'application/json',
     'Content-Type': 'application/json',
 }
 
 def fetch_github_issues(repo):
     url = f"https://api.github.com/repos/{repo}/issues"
     response = requests.get(url, headers=HEADERS_GITHUB)
     return response.json()
 
 def find_or_create_asana_section(project_id, name):
     # Check if section exists
     sections_url = f"https://app.asana.com/api/1.0/projects/{project_id}/sections"
     response = requests.get(sections_url, headers=HEADERS_ASANA)
     for section in response.json().get("data", []):
         if section["name"] == name:
             return section["gid"]
     
     # Create new section
     data = {
         "data": {
             "name": name,
         }
     }
     response = requests.post(sections_url, headers=HEADERS_ASANA, json=data)
     return response.json()["data"]["gid"]
 
 def create_asana_task(project_id, section_gid, issue):
     url = f"https://app.asana.com/api/1.0/tasks"
     data = {
         "data": {
             "projects": [project_id],
             "memberships": [
                 {
                     "project": project_id,
                     "section": section_gid,
                 }
             ],
             "name": issue["title"],
             "notes": issue["body"],
         }
     }
     requests.post(url, headers=HEADERS_ASANA, json=data)
 
 def main():
     for repo in GITHUB_REPOS:
         issues = fetch_github_issues(repo)
         section_name = repo.split("/")[-1]  # Assuming you want the repo name as the section name
         section_gid = find_or_create_asana_section(ASANA_PROJECT_ID, section_name)
         for issue in issues:
             create_asana_task(ASANA_PROJECT_ID, section_gid, issue)
 
 if __name__ == "__main__":
     main()

看着非常不错,下面我们提高难度让ChatGPT构建一个具有以下限制的小软件程序:

我不输入任何代码。只能执行ChatGPT生成的。然后错误也会让ChatGPT自己更正。

一开始,ChatGPT做得很好。它很容易编写一个RESTful客户端。我告诉ChatGPT需要更多的调试语句,它在整个代码中添加了打印语句。在其他库中封装函数调用也很漂亮。

但是我想到,如果下载和重新上传大文件,时间会很长,所以我问ChatGPT是否可以在命令行上用进度条可视化包装它们。它是这样做的:

略显臃肿,但是可以用。

对于要求ChatGPT重构代码并添加抽象,得到的答案都出现了拼写错误和逻辑错误。所以需要花费很多的时间与ChatGPT进行沟通修改(前面说了,为了测试,所有代码都让ChatGPT写)

对于这个问题,盲猜原因是ChatGPT的每个问题只得到有限的计算时间。情况越复杂,ChatGPT不能完全完善它的响应,只是抛出了一个未经修饰的结果,还有可能是因为token大小的限制。

ChatGPT擅长编写单个函数,但在处理抽象或多个方法时很快就会崩溃。

但是对于ChatGPT,一个非常好的表现是他可以帮我们转换代码,比如:

将Python代码翻译成Typescript。将linux的shell脚本变为windows的cmd脚本

总结

ChatGPT可以用来增强你的能力,而不是取代你的工作

将ChatGPT融入到日常工作中,这是一个很酷的噱头,也许它适用于其他人的工作流程,但不适用于我的。因为有一些工作要么太复杂,要么太专业,外部AI工具无法发挥作用。

最后还有一个问题,ChatGPT数据的更新时间是2022年,所以最近数据它是没有的,这对于经常需要最新数据的行业来说基本就没什么帮助了。

所以回到我们的标题:进行头脑风暴,并作为简单代码的结对程序员是一个非常好应用场景,可以提高我们的效率,但是它并不能代替谷歌,除了时间以外,对于一些信息我们更看重的是准确性。

https://avoid.overfit.cn/post/cb049c14e06441f98063d8d478ff1474

作者:Elliot Graebert

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

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

相关文章

Spimes x5.0主题模板全开源源码

Spimes主题为博客、自媒体、资讯类的网站设计开发,自适应兼容手机、平板设备的团队,工作室门户主题,精心打磨的一处处细节。只为让您的站点拥有速度与优雅兼具的极致体验。小灯泡自媒体博客免授权 安装教程: 1.模板目录usr/them…

[管理与领导-102]:经营与管理的关系:攻守关系;武将文官关系;开疆拓土与守护城池的关系;战斗与练兵的关系;水涨船高,水落船低的关系。

目录 前言: 一、手中拿着锤子,一切看起来都像钉子 1.1 企业经营中过渡强调管理的表现? 1.2 企业经营中过渡强调管理的误区(背后深层次的原因) 二、无知者的无畏,独断者的自high 2.1 企业经营中过度忽律管理的表…

5个顶级的Blender生成式AI插件

推荐:用 NSDT编辑器 快速搭建可编程3D场景 Blender 以其强大的 3D 建模和动画工具而闻名。 但你知道它也可以用来制作令人难以置信的纹理和背景吗? 当然,使用正确的插件。 在本文中,我们将了解 Blender 的顶级 AI 插件。 这些插…

普通卷积、转置卷积详细介绍以及用法

转置卷积(普通卷积、转置卷积详细介绍以及用法 1、普通卷积操作2、转置卷积2.1 Pytorch转置卷积实验 1、普通卷积操作 首先回顾下普通卷积,下图以stride1,padding0,kernel_size3为例,假设输入特征图大小是4x4的&#…

Kotlin只截取Float小数点后数值DecimalFormat

Kotlin只截取Float小数点后数值DecimalFormat import java.text.DecimalFormatfun main(args: Array<String>) {val pi 3.141516Fvar p pi - pi.toInt()println(p)val decimalFormat DecimalFormat("00.0000")val format decimalFormat.format(p)println(…

ajax method to retrieve images as a blob

go 服务端&#xff1a; 就是先把这个图片读出来 然后返回二进制的数据 byteFile, err : ioutil.ReadFile("." "/processed/" uuidStr"processed.png")if err ! nil {fmt.Println(err)}c.Header("Content-Disposition", "att…

[Linux] 2.Linux开发环境的搭建(Ubuntu)

虚拟机&#xff1a;VMare安装、Ubuntu、VitualBox 真机&#xff1a;公司的研发服务器 Linux虚拟机安装所需文件&#xff1a; 网盘资源&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1WN-tizjHpOgNF0tjbvcZsA?pwd2itd 提取码&#xff1a;2itd 文件解压&#xff…

聊聊设计模式——命令模式

目录 命令模式定义 优点 缺点 命令模式结构说明 工作流程 代码练习 应用场景 本质 涉及的设计原则 相关设计模式 开源框架中的应用 命令模式定义 将一个请求封装为一个对象&#xff0c;从而使你可用不同的请求对客户进行参数化&#xff1b;对请求排队或记录请求日志…

【内网穿透】隐蔽通信隧道技术之建立ICMP隧道

一、基础知识 1、概述 一般的网络通信、先在两台机器之间建立 TCP 连接&#xff0c;然后进行正常的数据通信。在知道P 地址的情况下、可以直接发送报文:如果不知道 P 地址&#xff0c;就需要将域名解析成P 地址。在实际的网络中、通常会通过各种边界设备、软/硬件防火墙甚至人…

React(react18)中组件通信06——redux-toolkit + react-redux

React&#xff08;react18&#xff09;中组件通信06——redux-toolkit react-redux 1 前言1.1 redux 和 react-redux1.2 关于redux-toolkit1.2.1 官网1.2.2 为什么要用Redux Toolkit&#xff1f; 1.3 安装 Redux Toolkit1.4 Redux Toolkit相关API 2. 开始例子——官网例子2.1 …

【Windows】 Windows 10 等系统如何关闭文件夹预览模式

在Windows系统进行文件操作时&#xff0c;由于屏幕尺寸有限&#xff0c;有时感觉文件夹右侧的预览模式很占位置&#xff0c;因此想预览时打开&#xff0c;想关闭时就关闭。 以下是两种解决方案&#xff1a; 方案一&#xff1a;彻底关闭预览模式 方案二&#xff1a;可通过快捷键…

Leetcode 1379.找出克隆二叉树中的相同节点

给你两棵二叉树&#xff0c;原始树 original 和克隆树 cloned&#xff0c;以及一个位于原始树 original 中的目标节点 target。 其中&#xff0c;克隆树 cloned 是原始树 original 的一个 副本 。 请找出在树 cloned 中&#xff0c;与 target 相同 的节点&#xff0c;并返回对…

JDK 21 — JDK 21发布及多项新特性!

一、JDK 21 新特性说明 JDK 21 已经于 2023 年 9 月 19 日正式发布&#xff0c;Java 21 / JDK 21 已正式 GA&#xff0c;此版本是继 JDK 17 后的长期支持版本 (LTS)&#xff0c;Oracle 将为其提供至少八年的技术支持和更新。本文总结了 JDK 21 发布的新特性。 二、JDK 21 正式…

基于PyTorch3D的GeoAI实现【ESRI】

Esri 的 AI 原型团队正在以 PyTorch3D API 的一系列 PR 的形式分享一些功能增强功能。 这些功能支持 obj 格式的网格的输入/输出 (I/O)&#xff0c;该网格具有多个纹理和代表真实世界几何形状的顶点坐标。 对于 GeoAI 任务&#xff0c;这些功能支持跨网格分割管道的任务&#x…

第36节——useDebugValue+React Developer Tools——了解

一、概念 勾住”React开发调试工具中的自定义hook标签&#xff0c;让useDebugValue勾住的自定义hook可以显示额外的信息。useDebugValue的目的是“在react开发者工具自定义hook标签中显示额外信息”&#xff0c;方便我们“一眼就能找到”对应的自定义hook。useDebugValue(valu…

信息安全:网络物理隔离技术原理与应用.

信息安全&#xff1a;网络物理隔离技术原理与应用. 随着网络攻击技术不断增强&#xff0c;恶意入侵内部网络的风险性也相应急剧提高。满足内外网信息及数据交换需求&#xff0c;又能防止网络安全事件出现的安全技术就应运而生了&#xff0c;这种技术称为“物理隔离技术” 基本原…

如何用Postman做接口自动化测试

前言 什么是自动化测试 把人对软件的测试行为转化为由机器执行测试行为的一种实践。 例如GUI自动化测试&#xff0c;模拟人去操作软件界面&#xff0c;把人从简单重复的劳动中解放出来。 本质是用代码去测试另一段代码&#xff0c;属于一种软件开发工作&#xff0c;已经开发完…

应用开发平台集成工作流系列之12——流程导航功能设计与实现

背景 流程模板主要是用于流程建模的&#xff0c;对于业务用户而言&#xff0c;需要一个业务流程的导航页&#xff0c;分门别类展示业务流程清单&#xff0c;用于发起新的流程。 并且需要根据当前用户过滤&#xff0c;只显示有权限发起的流程。 业务流程类别的处理 一个企业的…

OCR -- 文本检测

目标检测&#xff1a; 不仅要解决定位问题&#xff0c;还要解决目标分类问题&#xff0c;给定图像或者视频&#xff0c;找出目标的位置&#xff08;box&#xff09;&#xff0c;并给出目标的类别&#xff1b; 文本检测&#xff1a; 给定输入图像或者视频&#xff0c;找出文本的…

基于 SpringBoot+Vue 的口腔管理平台,附源码,数据库

第一章 简介 本项目&#xff0c;是基于 Java SpringBoot 开发的&#xff0c;主要功能包括首页、个人中心、病例就诊信息管理、复查提醒管理、预约挂号管理、我的收藏管理、订单管理&#xff0c;前台首页&#xff1b;首页、牙齿保健产品、牙齿保护小知识、留言反馈、个人中心、…