写点什么

🌟ChatGPT 指南:六个最佳提示词使用技巧

  • 2023-09-02
    四川
  • 本文字数:9515 字

    阅读完需:约 31 分钟

大家好,我是星辰编程理财。很高兴能够与大家分享关于 ChatGPT 的最佳实践。作为一个热爱编程的技术爱好者,我曾经历了在学习和使用 ChatGPT 时遇到的一些挑战和困惑。然而,通过不断的探索和实践,我逐渐领悟到一些宝贵的经验和技巧。在这篇文章中,我想和大家聊聊指令的重要性。我还记得刚开始使用 ChatGPT 时,我提问的问题并不是很清晰,结果得到的回答也不尽如人意,模型无法理解我的意图。通过不断的尝试和总结,我得到了一些经验。结合 OpenAI GPT 官方使用最佳实践指南,我将与大家分享一些关于指令要清晰、提供参考文本、将复杂任务拆分为简单子任务、给 GPT 时间“思考”、使用外部工具以及系统地测试变化的最佳实践。无论你是新手开发者还是经验丰富的 AI 爱好者,我相信这些实用的技巧和建议将对你的 ChatGPT 编程之旅有所帮助。

第一章:指令要清晰

作为一个开发者,在使用 ChatGPT 时,指令的清晰度对于获得准确和有用的回答至关重要。在这一章中,我将分享一些最佳实践,给出明确的指令,让 ChatGPT 能够更好地理解你的需求。

1.1 提供更多细节的问题描述

当向 ChatGPT 提问时,提供更多细节的问题描述可以帮助模型更好地理解你的问题,并给出相关的答案。让我举个例子:


用户: 你好,我最近在前端开发中遇到一个问题,我想知道如何在 JavaScript 中创建一个动态生成的表格,每行有两列,一列显示数字,另一列显示对应的文字。


AI: 当然!在 JavaScript 中,你可以使用 DOM 操作动态创建表格。以下是一个简单的示例代码:


// 创建表格var table = document.createElement('table');
// 动态生成表格内容for (var i = 0; i < data.length; i++) { var row = document.createElement('tr'); var cell1 = document.createElement('td'); var cell2 = document.createElement('td');
cell1.innerHTML = data[i].number; cell2.innerHTML = data[i].text;
row.appendChild(cell1); row.appendChild(cell2); table.appendChild(row);}
// 将表格添加到页面中的某个元素document.getElementById('tableContainer').appendChild(table);
复制代码


这样,你就可以动态生成带有数字和文字的表格了。

1.2 让模型角色扮演,充当 ChatGPT 提示生成器

有时候,我们可能想要用 ChatGPT 作为一个提示生成器,向它提供一些提示词,然后让它生成一些相关的问题。这可以帮助我们更好地了解 ChatGPT 的思考过程并得到一些新的创意。


用户: 给我一些关于前端开发的问题的提示词,让我来挑战一下自己!


AI: 当然!以下是一些关于前端开发的问题提示词:


  • 响应式设计

  • 跨浏览器兼容性

  • 前端框架比较

  • 性能优化技巧

  • 前端安全性


试着使用这些提示词来生成一些有趣的问题吧!

1.3 使用分隔符来区分不同部分

当你的问题或指令需要包含多个部分时,使用分隔符可以帮助模型更好地理解你的意图,并将其分成合适的部分进行处理。比如:


用户: 我需要一个完整的前端开发教程,包括 HTML、CSS 和 JavaScript。请使用三个井号(###)作为分隔符划分各个部分。


AI: 好的,下面是一个完整的前端开发教程:

HTML

HTML 是一种标记语言,用于构建网页的结构。以下是一个简单的 HTML 示例:


<!DOCTYPE html><html><head>  <title>My First Web Page</title></head><body>  <h1>Hello, World!</h1>  <p>This is a paragraph.</p></body></html>
复制代码

CSS

CSS 用于为 HTML 元素添加样式和布局。以下是一个简单的 CSS 示例:


h1 {  color: blue;}
p { font-size: 14px;}
复制代码

JavaScript

JavaScript 是一种用于为网页添加交互功能的编程语言。以下是一个简单的 JavaScript 示例:


console.log("Hello, World!");
function sayHello(name) { console.log("Hello, " + name + "!");}
sayHello("John");
复制代码


希望这个教程能对你有所帮助!

1.4 指定任务完成所需的步骤

在某些情况下,你可能希望 ChatGPT 按照一定的步骤为你完成一个任务。这时,你可以明确指定任务所需的步骤,以帮助模型更好地理解并按照你的要求生成回答。


用户: 我想知道如何使用 React 创建一个简单的待办事项列表,包括添加、删除和完成任务的功能。请按照以下步骤完成:


  1. 创建一个 React 组件来显示待办事项列表。

  2. 实现添加任务的功能。

  3. 实现删除任务的功能。

  4. 实现完成任务的功能。


AI: 好的,按照你的要求,我将为你完成这个任务。以下是每个步骤的代码示例:


  1. 创建一个 React 组件来显示待办事项列表:


import React from 'react';
class TodoList extends React.Component { render() { return ( <ul> {this.props.todos.map(todo => ( <li key={todo.id}>{todo.text}</li> ))} </ul> ); }}
export default TodoList;
复制代码


  1. 实现添加任务的功能:


import React from 'react';
class TodoList extends React.Component { state = { todos: [], newTodo: '' };
handleInputChange = e => { this.setState({ newTodo: e.target.value }); };
handleAddTodo = () => { const { todos, newTodo } = this.state; const todo = { id: todos.length + 1, text: newTodo }; this.setState({ todos: [...todos, todo], newTodo: '' }); };
render() { return ( <div> <input type="text" value={this.state.newTodo} onChange={this.handleInputChange} /> <button onClick={this.handleAddTodo}>Add</button> <ul> {this.state.todos.map(todo => ( <li key={todo.id}>{todo.text}</li> ))} </ul> </div> ); }}
export default TodoList;
复制代码


  1. 实现删除任务的功能:


import React from 'react';
class TodoList extends React.Component { state = { todos: [] };
handleDeleteTodo = id => { this.setState(prevState => ({ todos: prevState.todos.filter(todo => todo.id !== id) })); };
render() { return ( <ul> {this.state.todos.map(todo => ( <li key={todo.id}> {todo.text} <button onClick={() => this.handleDeleteTodo(todo.id)}> Delete </button> </li> ))} </ul> ); }}
export default TodoList;
复制代码


  1. 实现完成任务的功能:


import React from 'react';
class TodoList extends React.Component { state = { todos: [] };
handleCompleteTodo = id => { this.setState(prevState => ({ todos: prevState.todos.map(todo => { if (todo.id === id) { return { ...todo, completed: true }; } return todo; }) })); };
render() { return ( <ul> {this.state.todos.map(todo => ( <li key={todo.id} style={{ textDecoration: todo.completed ? 'line-through' : 'none' }} > {todo.text} {!todo.completed && ( <button onClick={() => this.handleCompleteTodo(todo.id)}> Complete </button> )} </li> ))} </ul> ); }}
export default TodoList;
复制代码


希望这样的步骤指导能对你有所帮助!

1.5 提供示例来引导模型生成回答

有时,提供示例来引导模型生成回答是非常有效的。模型可以通过示例学习到一些模式,并生成更符合你期望的回答。


用户: 你是一个前端开发,我会在三引号内给你提供示例,你必须模仿示例的风格写出 3 个回答。提示词:介绍一下 vue3。 提示词:介绍一下React。 回答:React,就像是一门前端开发的魔法,它以其强大的组件化能力和高效的虚拟DOM操作征服了无数开发者的心。每一个React组件都是一个独特的存在,拥有自己的状态和属性,就像音符在乐谱上舞动。通过React,我们可以构建出华丽的用户界面,实现动态的数据渲染和交互效果。就像一场魔法表演,它让我们的网页焕发出生机和魅力。


AI: Vue 3,简直就是前端开发的一颗明星。它是一个轻量级、高效的 JavaScript 框架,专注于构建用户界面。Vue 3 的核心特点就是响应式数据绑定和组件化开发。通过使用 Vue 3,我们可以轻松地将数据和视图进行绑定,实现数据的自动更新和视图的动态渲染。而且,Vue 3 还引入了 Composition API,让我们能够更灵活地组织和复用代码。总的来说,Vue 3 是一个功能强大且易于学习的框架,它能够帮助我们构建出优雅、高效的用户界面。


Vue 3,是一款非常受欢迎的前端框架。它的特点是简单易用、灵活性强、性能出色。Vue 3 采用了虚拟 DOM 的方式进行渲染,可以快速地更新页面,并且能够根据数据变化自动更新视图。另外,Vue 3 还支持组件化开发,可以将页面拆分成多个独立的组件,方便代码的维护和复用。除此之外,Vue 3 还提供了丰富的工具和插件,可以帮助开发者更高效地开发应用。总的来说,Vue 3 是一款非常强大的前端框架,可以帮助我们快速构建出漂亮且高性能的用户界面。


Vue 3 是一款非常受欢迎的前端框架,它的设计理念是简单、灵活和高效。Vue 3 采用了响应式数据绑定的方式,可以让数据和视图保持同步,使得页面的更新变得非常高效。此外,Vue 3 还支持组件化开发,可以将页面拆分成多个独立的组件,方便代码的维护和复用。除此之外,Vue 3 还提供了丰富的生态系统,包括路由、状态管理、构建工具等,可以帮助开发者更好地开发和维护应用。总的来说,Vue 3 是一款非常优秀的前端框架,可以帮助我们构建出漂亮、高性能的用户界面。

1.6 设定回答的长度要求,如字数、段落数量、要点数量

有时候,你可能希望 ChatGPT 生成的回答具有一定的长度或包含特定数量的段落或要点。这时,你可以设定回答的长度要求,以帮助模型更好地满足你的需求。


用户: 作为一个前端开发,你怎么理解闭包?要求字数大于 200


AI: 闭包是 JavaScript 中一个非常重要且常用的概念。它是由函数和其相关引用环境组合而成的一种特殊对象。在理解闭包之前,我们需要先了解一下 JavaScript 的作用域和变量提升。


JavaScript 中存在全局作用域和局部作用域的概念。在函数内部定义的变量称为局部变量,只能在该函数内部访问。而在函数外部定义的变量称为全局变量,可以在任何地方访问。


当一个函数内部引用了外部的变量,并且该函数被外部的作用域引用或者返回时,就形成了闭包。闭包可以让函数访问外部作用域的变量,即使外部作用域已经执行完毕。


闭包的应用场景非常广泛。一方面,闭包可以用来创建私有变量,通过将变量定义在函数内部,外部无法直接访问,只能通过闭包提供的接口进行访问和修改。这种方式可以有效地隐藏变量,保护数据的安全性。另一方面,闭包还可以用来实现函数工厂,即通过闭包返回一个函数,每个返回的函数都可以访问自己的私有变量,实现了数据的封装和复用。


需要注意的是,闭包会带来内存的开销。由于闭包会保留对外部作用域的引用,因此外部作用域的变量无法被垃圾回收机制回收。如果闭包被滥用或者使用不当,可能导致内存泄漏的问题。


在实际开发中,理解闭包的概念和原理,能够更好地利用闭包的特性,编写出高效、安全的 JavaScript 代码。


用户: 请把上面回答的内容总结为三个要点。


AI: 闭包是由函数和其相关引用环境组合而成的一种特殊对象。 闭包可以让函数访问外部作用域的变量,即使外部作用域已经执行完毕。 闭包的应用场景包括创建私有变量和实现函数工厂,但需要注意内存开销和潜在的内存泄漏问题。

第二章:提供参考文本

这章我们将探讨如何使用参考文本来引导 ChatGPT 生成更准确和有用的回答。提供参考文本可以帮助模型理解问题的上下文,并提供相关的信息。

2.1 使用参考文本来引导模型回答问题

当你向 ChatGPT 提问时,你可以提供一些相关的参考文本,让模型在生成回答时参考这些文本,从而使回答更加准确和有针对性。


用户: 请解释一下什么是响应式设计。


AI: 响应式设计是一种网页设计的方法,它使网页能够根据用户的设备和屏幕尺寸进行自适应布局和显示。响应式设计可以通过使用 CSS 媒体查询和弹性布局来实现。以下是一个关于响应式设计的参考文本,帮助你更好地了解这个概念:


响应式设计旨在提供一致的用户体验,无论用户使用的是台式机、笔记本电脑、平板电脑还是手机。通过使用媒体查询,网页可以根据屏幕尺寸和设备功能应用不同的样式和布局,以适应不同的设备。这种方法可以提高网页的可用性和可访问性,并确保内容在各种设备上都能够清晰可见。
复制代码


希望这个回答能够帮助你更好地理解响应式设计!

2.2 让 ChatGPT 引用参考文本来生成答案

除了让 ChatGPT 参考参考文本来回答问题之外,你还可以让模型直接引用参考文本的内容来生成回答。这样可以确保回答的准确性和一致性。


用户: 请问,人类智能与机器智能有何区别?参考《人工智能:一种现代方法》


AI: 根据斯图尔特·罗素(Stuart Russell)和彼得·诺维格(Peter Norvig)在《人工智能:一种现代方法》一书中的定义,他们指出:“人类智能是指人类所表现出的智能,而机器智能是指机器所表现出的智能。”简而言之,人类智能是由人类所拥有的认知和思维能力组成,而机器智能则是指计算机和机器所具备的类似人类智能的能力。


在这个定义中,人类智能是基于生物学和心理学的研究,包括人类的感知、推理、学习、创造力等方面的能力。而机器智能是通过计算机和机器系统模拟人类智能的能力,包括机器学习、自然语言处理、计算机视觉等领域的技术与算法。


总的来说,人类智能和机器智能之间的主要区别在于其来源和实现方式。人类智能是基于生物学和心理学的研究,而机器智能是通过计算机科学和人工智能技术来实现的。

第三章:将复杂任务拆分为简单子任务

这章中我们将学习如何将复杂的任务拆分为简单的子任务,以便更好地处理问题并生成准确和有用的回答。

3.1 对问题进行分类

当面对复杂的问题时,对问题进行分类是一个有效的策略。通过将问题分解为多个子问题,我们可以更好地处理每个子问题,并生成相应的回答。我们可以先把这些任务按类型分类,然后给每一种类型的任务都制定一套相应的步骤或者指令。这样,当我们需要完成一个任务的时候,就可以直接根据任务的类型找到相应的步骤或者指令了。使用这种方法的好处就是,每一次我们只需要关注当前的任务和相应的步骤或者指令,这样就可以降低出错的几率,而且也能节省成本。因为处理大任务需要的电脑运行费用,通常会比处理小任务的费用要高。


用户:您将收到用户性能优化的查询。您需要将每个查询找到对应的主要类别和次要类别,然后以 json 格式输出:主要类别和次要类别。


主要类别:交互优化、网络优化交互优化次要类别:防抖节流懒加载 css3 动画无线加载骨架屏


网络优化次要类别:httpsgzipcdnhttp 缓存


用户查询:动画卡顿怎么办?


AI:{ "用户查询": "动画卡顿怎么办?", "主要类别": "交互优化", "次要类别": "css3 动画" }

3.2 处理长对话:总结或过滤信息

由于 GPT 有固定的上下文长度,用户和 ChatGPT 之间的对话,如果将整个对话内容都包含在上下文窗口中,是无法无限期地进行下去的。


ChatGPT 有点像一个记忆力有限的机器人。他只能记住一定长度的对话内容,所以用户和他的对话不能无限长。就像你和你的朋友聊天,如果你们聊得太久,他可能会忘记你们之前聊过什么。


但是我们有一些方法可以解决这个问题。一个办法就是把之前的对话内容进行概括。当对话的长度达到了一定的限度,这个机器人就会自动把一部分对话内容进行总结,然后把这个总结放在他的记忆里。就像你在写日记的时候,可能不会把每一天发生的所有事情都详细写下来,而是只写下最重要的部分。


另外一种办法就是在整个对话过程中,让机器人在背后不断地把对话内容进行总结。这就像你在读一本书的时候,可能会时不时地在脑子里回顾一下之前的情节,这样就不会忘记故事的主线。


这些方法就能帮助我们解决因为机器人的记忆力有限导致的问题,让用户和机器人的对话能够更顺畅。


另一种解决方案是动态选择与当前查询最相关的对话的先前部分。请参阅策略“使用基于嵌入的搜索来实现高效的知识检索”。


对于这个长文本的实际处理方法,如果靠提示词来完成的话,是一件很麻烦的事情:为了输入到 ChatGPT 的对话框里,必须首先对内容进行分段。

3.3 分段总结长文本并递归构建完整摘要

ChatGPT 是个有点像有记忆力限制的机器人,他记住的东西长度有限。因此,如果让他一口气读完一本非常长的书然后再总结,他可能会记不住所有的内容。那怎么办呢?


我们可以用一种“分段总结,再汇总”的方法来解决这个问题。就好比,你在学习很长的一篇文章或者一本书的时候,你可能会先总结每一小节的内容,然后再把这些小节的总结放在一起,再做一次总结,这样就能得到整个文章或者书的总结了。


但是有的时候,前面的内容和后面的内容可能有关系,为了理解后面的内容,我们可能需要知道前面的总结。这种时候,我们可以在总结每一部分内容的时候,都带上之前的总结,这样就能更好地理解整个文章或书的内容。


其实,这种方法就像我们读书学习的时候一样,通过把大的任务分解成小的任务,一步一步地完成,最后再把所有的小步骤的结果放在一起,就能得到最终的结果了。OpenAI 的科学家们已经用这种方法去研究过如何让 ChatGPT 总结一整本书,发现效果还不错呢!


处理长对话和长文的基本方法,基本是一样的:总结前一部分的时候,带上之前的内容。 不同点是:有的长文章节之间,关系较弱,可以用分段总结,再汇总的方法,不用每次总结都带上之前的总结。

第四章:给 GPT 时间“思考”

在这章中,我们将探讨如何给 ChatGPT 足够的时间来“思考”,以得出更准确和合理的答案。我们将涵盖引导 GPT 在得出结论前生成自己的答案、隐藏推理过程以及处理答案不完整的问题等内容。

4.1 引导 GPT 在得出结论前生成自己的答案

有时候,我们希望 ChatGPT 能够在得出最终答案之前,先生成一些自己的答案,然后再进行选择和调整。这样可以引导模型思考问题,并激发一些新的创意。


用户: 问题:1+1=3 是否正确 答案:正确,因为在三维空间里 1+1 则是立体的,所以等于 3。请判断答案是否正确。要求:判断之前先自己思考答案,然后再判断答案是否正确。


AI: 经过思考,我可以明确地告诉您,无论是在二维空间还是三维空间,1 加 1 的结果都是 2。数学中的加法运算是一种抽象的概念,与空间维度无关。在数学中,1 代表一个单位,将一个单位与另一个单位相加,得到的结果是两个单位,即 2。因此,答案是不正确的。通过引导模型在得出结论前生成自己的答案,我们可以激发模型的思考过程,并获得更加丰富和多样的回答。

4.2 隐藏推理过程,只展示最终答案

在某些情况下,我们可能更关注最终答案,而不是模型的推理过程。通过隐藏推理过程,我们可以简化回答,并使其更加直接和易于理解。


用户: 如何用 Python 反转一个字符串。要求:只需要输出代码,不输出其它任何文字。


AI:


string = "Hello, World!"reversed_string = string[::-1]print(reversed_string)
复制代码


通过隐藏推理过程,我们可以直接展示最终的代码和结果,使回答更加简洁和易于理解。

4.3 处理答案不完整的问题

有时,ChatGPT 可能会生成一些不完整的回答,缺少一些重要的细节或信息。在这种情况下,我们可以通过补充细节或提供额外的信息来完善回答。


用户: JavaScript 是世界上最好的语言吗?要求:只需要回答最终结论。


AI: 没有绝对的最好的编程语言,因为每种语言都有自己的优点和适用场景。不同的语言适用于不同的任务和需求。所以,JavaScript 并不是世界上最好的语言,但它在 Web 开发中具有广泛的应用和强大的生态系统。


用户: 在前端开发中,JavaScript 是世界上最好的语言吗?要求:只需要回答最终结论


AI: 在前端开发中,JavaScript 是最主要的语言,并且具有广泛的应用和强大的生态系统。因此,可以说在前端开发中,JavaScript 是世界上最好的语言之一。


通过补充细节和提供额外的信息,我们可以完善回答,使其更加全面和有用。

第五章:使用外部工具

在第五章中,我们将学习如何使用外部工具来增强 ChatGPT 的功能。具体包括使用嵌入(embedding)技术、进行计算操作以及让模型使用特定功能的外部工具。

5.1 使用嵌入(embedding)技术

嵌入(embedding)技术是一种将文本或其他类型的数据转换为向量表示的方法。通过将文本嵌入为向量,我们可以将其输入到模型中进行处理,从而获得更丰富的信息表示。


用户: 请告诉我如何使用嵌入技术来增强 ChatGPT 的文本处理能力。


AI: 使用嵌入技术可以将文本转换为向量表示,从而增强 ChatGPT 的文本处理能力。一种常见的嵌入技术是词嵌入(word embedding),它将单词映射为一个低维向量,捕捉了单词之间的语义和上下文关系。


例如,你可以使用预训练的词嵌入模型(如 Word2Vec、GloVe 或 BERT)将输入的文本转换为向量表示,并将这些向量输入到 ChatGPT 中进行处理。这样,模型可以更好地理解文本的语义和上下文,并生成更准确和有用的回答。

5.2 进行计算操作

除了处理文本之外,ChatGPT 还可以通过使用外部工具进行计算操作,从而扩展其功能。在长时间计算情况下,可以指示模型编写和运行代码,而不是进行自己的计算。


用户: 我想知道如何在 Python 中计算两个数的和。


AI: 你可以使用 Python 的基本算术运算符来计算两个数的和,例如:


num1 = 10num2 = 20sum = num1 + num2print("The sum is:", sum)
复制代码


这段代码会将变量num1num2相加,并将结果存储在变量sum中,然后打印输出结果。


通过使用外部工具进行计算操作,我们可以在回答中直接展示相应的代码示例,使回答更加全面和实用。

5.3 让模型使用特定功能的外部工具

另一种方法是让 ChatGPT 使用特定功能的外部工具来增加其能力。这些外部工具可以是专门用于某个领域的库、API 或服务。


用户: 请告诉我如何使用 ChatGPT 生成一个随机密码。


AI: 要生成一个随机密码,我们可以让 ChatGPT 调用一个密码生成器的外部工具,例如使用 Python 的secrets模块:


import secretsimport string
def generate_random_password(length): characters = string.ascii_letters + string.digits + string.punctuation password = ''.join(secrets.choice(characters) for _ in range(length)) return password
password = generate_random_password(10)print("Random password:", password)
复制代码


这段代码会生成一个由大小写字母、数字和标点符号组成的随机密码,长度为 10 个字符。


通过让模型使用特定功能的外部工具,我们可以扩展 ChatGPT 的功能范围,并使其能够执行更复杂的任务。

第六章:系统地测试变化

这章将学习介绍如何系统地测试 ChatGPT 的变化,以确保模型输出的准确性和质量。具体包括通过参考黄金标准答案评估模型输出,从而提供有针对性的反馈和改进。

6.1 通过参考黄金标准答案评估模型输出

为了评估 ChatGPT 的输出质量,我们可以使用参考黄金标准答案作为评估标准。通过将模型的输出与黄金标准答案进行比较,我们可以量化模型在不同问题上的准确性和一致性,并提供有针对性的反馈和改进。


用户: 我如何评估 ChatGPT 生成的回答是否准确?


AI: 为了评估 ChatGPT 生成的回答是否准确,你可以使用参考黄金标准答案进行比较。将模型生成的回答与标准答案进行对比,并计算它们之间的相似度或其他评估指标。


例如,你可以使用文本相似度度量(如 BLEU、ROUGE 等)或语义相似度模型(如 BERT、GPT 等)来比较模型输出和标准答案之间的相似程度。更具体的评估指标和方法取决于你的具体任务和需求。


通过参考黄金标准答案评估模型输出,我们可以获得关于模型性能和改进方向的有价值的反馈。这有助于提升模型的质量和准确性。


发布于: 刚刚阅读数: 4
用户头像

还未添加个人签名 2023-08-08 加入

还未添加个人简介

评论

发布
暂无评论
🌟ChatGPT指南:六个最佳提示词使用技巧_AI_星辰编程理财_InfoQ写作社区