利用 ChatGPT 高效搜索:举一反三的思考方式,高效查找解决方案

2024-01-15-chatgpt-search-for-programmer.png

文章目录

    • 基础思路
    • 举一反三全面了解 GO 的 Web 框架
    • 系统方案建议 - 让 ChatGPT 推断
    • 我的一些微末思考
    • 结论

本文只是我的一些尝试,基于 ChatGPT 实现系统化快速搜索某编程语言的特定领域相关包或者基于其他语言类推荐落地方案的尝试。

这篇文章中描述的方式不一定是好方式,但应该会有一定的启示作用吧。让 ChatGPT 为我们的开发效率添砖加瓦。

基础思路

在学习和使用一门新的编程语言的过程中,找到合适的包对于解决特定问题至关重要。

在这里插入图片描述

传统上,还是主要依赖搜索引擎和社区资源来寻找这些包,但这个过程往往既耗时又充满挑战。现在,有了 ChatGPT,这一切都有了新的解决方案。

传统的搜索方法通常基于关键词搜索,但这种方法往往返回只是简单列举,我们要从大量不相关的结果找出我们想要的内容,需要花费大量时间去筛选。

ChatGPT 提供了一种更高效的方式:通过与 AI 对话来精确描述我们的需求,从而获得更加精准回答。不过我想说,不要像利用传统的搜索引擎一样利用 ChatGPT,ChatGPT 会思考。但毫无疑问,再聪明的好苗子,也是需要引导的。

举一反三全面了解 GO 的 Web 框架

为了最大化 ChatGPT 的效用,我采用固定句式来描述我的需求,这么做的目标主要是为了引导它思考。

例如,当寻找 Golang 的 web 开发框架时,我不是简单地问 “给我推荐一些 web 开发框架”,而是通过类比的方式地询问,想全访问了解不同情况下使用什么 HTTP 框架。

我知道在使用 Golang 的数据库时,可以直接使用 sql/database + 驱动连接数据库,也可以使用 ORM 方案,如 sqlx 或 GORM。HTTP 一般也是如此,有底层核心层,上层的用户体验较好的框架。

在这里插入图片描述

我按这个思考简单组织了一些语言。如下所示:

按我这个句式说下关于 Go 的 xxx 相关内容:
Go 语言中,处理数据库的包通常分为三个主要层次:底层实现、数据库驱动以及上层的 ORM(对象关系映射)框架。首先,底层核心包是 sql/database,它为数据库操作提供了基础的接口和功能。接着,针对不同数据库类型的驱动包各不相同,例如,用于 MySQL 的驱动包是 go-sql-driver/mysql。最后,在更高的层面上,有基于如 sqlbuilderactiverecord 模式的实现,Go 语言中的相应包包括 ent 和 gorm,这些包提供了更高级别的数据库操作和抽象。

这个写的稍微有点长,应该可以组织的更加精简一点。我主要想表达:

通过这种方式,引导 ChatGPT 去像人来一样地思考,举一反三,深入地理解需求。而不是像以前的 AI 一样,机械呆滞地返回固定问题的答案。

有些时候,语言直接表达的效果是没有这种类比效果好的。不仅仅这种方式适用于 ChatGPT,如果你和人类这样对话,也是更加容易让对方理解。

我就是通过这个方式,比较全方位了解 Go 语言不同场景下 Web 框架包的。如下是我具体的问题:

按我这个句式推荐下 Go 的 Web 框架。[句式如上,省略]*

GPT 的回答如下所示:

在这里插入图片描述

在 Go 语言中,HTTP 框架的组织也可以分为几个主要层次,类似于处理数据库的包的结构。首先,底层核心包是 net/http,提供了构建 HTTP 服务器和客户端的基本工具,如路由、请求处理和发送响应。接下来,针对不同需求的 HTTP 中间件和路由工具,例如 Gorilla Mux 提供了高级的路由功能,而 Negroni 提供了易用的中间件管理。在更高的层次上,存在着基于如 mvcrestful 模式的全功能 Web 框架,如 Go 语言中的 Gin 和 Echo,它们提供了路由、中间件、模板渲染等更丰富的功能,以支持复杂的 Web 应用开发。此外,还有针对特定性能优化的 HTTP 工具,例如 Fasthttp,它专注于提供高性能的 HTTP 服务,适用于处理大量并发请求。这样的层次划分帮助开发者根据具体需求选择合适的 Go 语言 HTTP 框架和库。

系统方案建议 - 让 ChatGPT 推断

类似的,我这里再举个例子。针对同一个问题,可能实现思路是一样的,但实现的工具就具体情况而异。这时候,我们可以通过提供对这个问题的一种方案,让 ChatGPT 衍生,提供我们想要的另一个场景条件的实施方案。

一个例子,比如我们习惯于使用 GO 开发 web 项目,也了解如何实施。但是现在公司希望转入 Python 或者 rust,如何最快的找到对标的实现呢?

我们可以说:

在 Go Web 开发时,要用到的库有:Web 框架使用 gin、 orm 使用 gorm,用户权限认证使用 golang-jwt/jwt,依次类推 python 开发 Web 项目的推荐库

ChatGPT 返回内容:

在这里插入图片描述

对于Go Web开发,您提到的库选择是很不错的。以下是一些在Python Web项目中常用的库的推荐:

  1. Web框架:

    • Flask:Flask是一个轻量级的Python Web框架,适用于小型到中型的项目。
    • Django:Django是一个功能强大的Python Web框架,适用于大型项目和快速开发。
  2. ORM(对象关系映射):

    • SQLAlchemy:SQLAlchemy是一个流行的Python ORM库,它提供了多种数据库后端的支持,并具有强大的查询和模型定义功能。
  3. 用户权限认证:

    • Flask-Login:用于用户会话管理和身份验证的Flask扩展。
    • Django-Allauth:Django的全功能身份验证和账户管理解决方案。
  4. JWT(JSON Web Tokens):

    • PyJWT:PyJWT是Python中处理JWT的库,可以用于用户身份验证和授权。

这些库在Python Web开发中广泛使用,可以根据项目的需求选择合适的库。希望这些推荐对您有所帮助。如果您需要更多信息或有其他问题,请随时提问。

它这里面还多了一部分关于权限认证,可能还是我的问题提的有点瑕疵,或者 chatgpt 自己的问题。反正是,多结果总觉少结果要好。

rust 是不熟悉的语言,我最近在尝试学习,同样的思路,还可以问 rust 的 web 开发套件。

chatGPT 回答如下:

当使用Rust进行Web项目开发时,以下是一些推荐的库和框架:

  1. Web框架:

    • Actix-web:Actix-web是一个高性能的、基于异步的Web框架,适用于构建快速、可伸缩的Web应用程序。
    • Rocket:Rocket是一个易于使用的Web框架,它提供了类型安全的路由和请求/响应处理。
  2. ORM(对象关系映射):

    • Diesel:Diesel是Rust的ORM库,它提供了类型安全的数据库查询和模型定义功能。
    • sqlx:sqlx是一个异步SQL库,允许您使用Rust进行数据库操作。
  3. 用户权限认证:

    • Keycloak:Keycloak是一个开源的身份和访问管理解决方案,可以用于用户身份验证和授权。
    • Auth0:Auth0是一个身份验证和授权服务,可以轻松集成到Rust应用程序中。
  4. JWT(JSON Web Tokens):

    • jsonwebtoken:jsonwebtoken是Rust中处理JWT的库,可用于身份验证和令牌生成。

这些库和框架可以帮助您构建高性能、安全的Rust Web应用程序。根据项目的需求和您的偏好,选择适合的库和框架进行开发。如果您需要更多信息或有其他问题,请随时提问。

不知道这个答案质量,你觉得如何呢?毫无疑问,这个答案,吊打搜索引擎。我这里只是简单举例,你还可以提供更复杂的需求,让它提供更多的推荐。

我的一些微末思考

通过上面的这些案例,我主要想说 ChatGPT 能像人类一样思考,但它的思考的模式是我们提供的。

这里面有一个非常简单的道理,如果你把 ChatGPT 想象是一个真正的人类,即使这个人类一个非常牛逼的大佬,但是如果他不是从教育你的角度出发,就不会说一些无关内容,一些的互动都是基于你的主动性,你的输入。如果你的问的简单,它必然是回答的简单。

同理,如果你想让 ChatGPT 思考,你需要告诉它如何思考。这就是你要提供的信息,这个信息最能体现你的个人能力了。ChatGPT 能思考,但是基于的内容是你的输入的扩展。

结论

我想说 ChatGPT 不仅是一个对话工具,更是一个强大的技术资源搜索助手,或者说,它可以成为你的朋友,导师,关键在于你是否了解如何与它交流,让它如何去做。

它改变了寻找技术解决方案的方式。我通过简单的对话,让它思考推导,而不是像以前的智障 AI 或搜索引擎一样针对问题固定返回某个回答。

这种结合 AI 技术的搜索方法不仅节省了我们的时间,还为我们提供了更加精确和深入的技术见解,而非是简单的列举。

博文地址:利用 ChatGPT 高效搜索:举一反三的思考方式,高效查找解决方案

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

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

相关文章

python高级(1): 迭代器详解

文章目录 1. 迭代器与可迭代对象(Iterable)1.1 可迭代对象(Iterable)1.2 迭代器( Iterator) 2. 自定义一个可迭代器2.1 实现迭代器2.2 for 遍历迭代器的过程 3. yolov8 Dataset实现案例 Python迭代器的作用是提供一种遍历数据集合的方式。它是一个可以被迭代的对象,…

【差分数组】【图论】【分类讨论】【整除以2】100213按距离统计房屋对数目

作者推荐 【动态规划】【数学】【C算法】18赛车 本文涉及知识点 差分数组 图论 分类讨论 整除以2 LeetCode100213按距离统计房屋对数目 给你三个 正整数 n 、x 和 y 。 在城市中&#xff0c;存在编号从 1 到 n 的房屋&#xff0c;由 n 条街道相连。对所有 1 < i < n…

ARM_Linux中GCC编译器的使用

目录 前言: GCC编译过程: 预处理&#xff1a; 编译阶段&#xff1a; 汇编&#xff1a; 链接阶段 GCC的常见使用 前言: 什么是GCC: gcc的全称是GNU Compiler Collection&#xff0c;它是一个能够编译多种语言的编译器。最开始gcc是作为C语言的编译器&#xff08;GNU C Co…

深度学习记录--指数加权平均

指数加权移动平均(exponentially weighted moving averages) 如何对杂乱的数据进行拟合&#xff1f; 通过指数加权平均可以把数据图近似拟合成一条曲线 公式&#xff1a; 其中表示第t个平均数&#xff0c;表示第t-1个平均数&#xff0c;表示第t个数据&#xff0c;表示变化参数…

tkinter绘制组件(40)——滚动选值框

tkinter绘制组件&#xff08;40&#xff09;——滚动选值框 引言布局函数结构文本展示选择器布局完整函数代码 效果测试代码最终效果 github项目pip下载结语 引言 2023年基本没有怎么更新TinUI组件部分&#xff0c;而滚动选值框&#xff08;picker&#xff09;&#xff0c;是在…

《WebKit 技术内幕》学习之七(4): 渲染基础

4 WebKit软件渲染技术 4.1 软件渲染过程 在很多情况下&#xff0c;也就是没有那些需要硬件加速内容的时候&#xff08;包括但不限于CSS3 3D变形、CSS3 03D变换、WebGL和视频&#xff09;&#xff0c;WebKit可以使用软件渲染技术来完成页面的绘制工作&#xff08;除非读者强行…

Vue基础入门 - Vue的快速创建、Vue的开发者工具安装及Vue的常用指令(v-model,v-bind,computed计算属性,watch侦听器)

Vue 文章目录 Vue1 什么是Vue2 创建Vue实例2.1 快速创建2.2 插值表达式 {{}}2.3 响应式特性2.3.1 访问与修改 3 Vue开发者工具安装4 Vue中的常用指令4.1 内容渲染指令4.2 条件渲染指令4.3 事件绑定指令4.4 属性绑定指令4.5 案例-上下页图片翻页4.6 列表渲染指令4.7 案例-能删除…

flink部署模式介绍

在一些应用场景中&#xff0c;对于集群资源分配和占用的方式&#xff0c;可能会有特定的需求。Flink 为各种场景提供了不同的部署模式&#xff0c;主要有以下三种&#xff0c;它们的区别主要在于&#xff1a; 集群的生命周期以及资源的分配方式&#xff1b;应用的 main 方法到…

谷歌浏览器通过network模拟HTTP中的GET/POST请求获取response

1、F12打开network选中需要模拟的方法Copy->Copy as fetch 2、通过AI帮你进行转换一下调用格式 原代码 fetch("https://mp.amap.com/api/forward/aggregate?mtop.alsc.kbt.intergration.toolkit.call.queryCallBlockInfo", {"headers": {"acce…

03--数据库连接池

1、数据库连接池 1.1 JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时&#xff0c;传统的模式基本是按以下步骤&#xff1a; 在主程序&#xff08;如servlet、beans&#xff09;中建立数据库连接进行sql操作断开数据库连接 这种模式开发&#xff0c;存在的问题:…

PyTorch 中的距离函数深度解析:掌握向量间的距离和相似度计算

目录 Pytorch中Distance functions详解 pairwise_distance 用途 用法 参数 数学理论公式 示例代码 cosine_similarity 用途 用法 参数 数学理论 示例代码 输出结果 pdist 用途 用法 参数 数学理论 示例代码 总结 Pytorch中Distance functions详解 pair…

Git学习笔记(第1章):Git概述

目录 1.1 版本控制 1.1.1 何为版本控制 1.1.2 为什么需要版本控制 1.1.3 版本控制工具 1.2 发展历史 1.3 工作机制 1.4 代码托管中心&#xff08;远程库&#xff09; Git是一个免费的、开源的分布式版本控制系统&#xff0c;可以快速高效地处理从小型到大型的各种项目。…

【UEFI基础】EDK网络框架(UDP4)

UDP4 UDP4协议说明 UDP的全称是User Datagram Protocol&#xff0c;它不提供复杂的控制机制&#xff0c;仅利用IP提供面向无连接的通信服务。它将上层应用程序发来的数据在收到的那一刻&#xff0c;立即按照原样发送到网络。 UDP报文格式&#xff1a; 各个参数说明如下&…

AD导出BOM表 导出PDF

1.Simple BOM: 这种模式下&#xff0c;最好在pcb界面&#xff0c;这样的导出的文件名字是工程名字&#xff0c;要是在原理图界面导出&#xff0c;会以原理图的名字命名表格。 直接在菜单栏 报告->Simple BOM 即可导出物料清单&#xff0c;默认导出 comment pattern qu…

【Java】学习一门开发语言,从TA的Hello World开始

欢迎来到《小5讲堂》 大家好&#xff0c;我是全栈小5。 这是《Java》序列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识点的理解和掌握…

【Redis】非关系型数据库之Redis的主从复制、哨兵和集群高可用

目录 一、主从复制、哨兵、集群的区别 二、主从复制 2.1主从复制的作用 2.2主从复制的原理 2.3主从复制的实操 步骤一&#xff1a;环境准备 步骤二&#xff1a;安装Redis以及配置文件修改 Redis的主从配置文件都一样 步骤四&#xff1a;验证主从复制 三、哨兵 3.1哨兵…

NODE介绍和环境安装

浏览器是JS的前端运行环境 Node.js是JS的后端运行环境 Node.js中无法调用DOM和BOM等浏览器内置API 基于Express框架&#xff0c;快速构建web应用 基于Electron框架&#xff0c;构建跨平台桌面应用 基于restify框架快速构建API接口项目 读写数据库 下载Node.js环境 网址&…

【分布式技术】注册中心zookeeper

目录 一、ZooKeeper是什么 二、ZooKeeper的工作机制 三、ZooKeeper特点 四、ZooKeeper数据结构 五、ZooKeeper应用场景 ●统一命名服务 ●统一配置管理 ●统一集群管理 ●服务器动态上下线 ●软负载均衡 六、ZooKeeper的选举机制 七、实操部署ZooKeeper集群 步骤一…

线性代数:矩阵运算(加减、数乘、乘法、幂、除、转置)

目录 加减 数乘 矩阵与矩阵相乘 矩阵的幂 矩阵转置 方阵的行列式 方阵的行列式&#xff0c;证明&#xff1a;|AB| |A| |B| 加减 数乘 矩阵与矩阵相乘 矩阵的幂 矩阵转置 方阵的行列式 方阵的行列式&#xff0c;证明&#xff1a;|AB| |A| |B|

续签KES证书

MiniO KES&#xff08;密钥加密服务&#xff09;是 MinIO 开发的一项服务&#xff0c;旨在弥合在 Kubernetes 中运行的应用程序与集中式密钥管理服务 &#xff08;KMS&#xff09; 之间的差距。中央 KMS 服务器包含所有状态信息&#xff0c;而 KES 在需要执行与获取新密钥或更新…