4.4 写ChatGPT提示时应避免的常见错误
写有效的 ChatGPT Prompt
需要仔细考虑并注意细节。然而,很容易犯错误,这可能会妨碍你的提示的有效性和对话的整体质量。以下是制作ChatGPT提示时要避免的几个常见错误:
- 在提示中加入过多的信息 —— 为
ChatGPT
提供足够的信息以了解对话的背景和目的是很重要的,但是过多的信息会让人不知所措和困惑。一定要保持你的提示简洁和集中,避免包括不必要的细节或指示。 - 使用行话或模棱两可的语言 —— 使用清晰易懂的语言很重要,尤其是在与
ChatGPT
这样的机器学习模型交流时。避免使用行话或可能对ChatGPT
不熟悉或有歧义的语言。 - 过于模糊或开放式 —— 尽管开放式问题对于鼓励更详细的回答很有帮助,但过于模糊或开放式的提示会让人困惑,并且让
ChatGPT
难以理解。要确保提供足够的背景和方向,以有意义的方式引导对话。 - 忽略了必要的指示或约束 —— 为
ChatGPT
提供任何必要的指示或约束是很重要的,这样才能使对话有效。例如,如果你想让ChatGPT扮演一个特定电影或书籍中的人物,你应该在提示中说明。
在制作 ChatGPT
提示时,重要的是要避免包含过多的信息或使用过于开放的问题,因为这些会让 ChatGPT
感到困惑和难以理解。以下是避免这些陷阱的一些策略:
- 使用具体的、有针对性的问题,而不是开放式的问题 —— 不要问一个广泛的、开放式的问题,如 "你对这个话题有什么看法?",试着问一个更具体的问题,集中在话题的某一方面。例如,"这种方法的主要好处是什么?"或 "你认为这种方法有什么挑战?"
- 简明扼要,切中要害 —— 避免在你的提示中包括不必要的细节或指示。坚持基本信息,避免漫无边际或偏离主要话题。
- 使用清晰、简明的语言 —— 仔细选择你的词语,避免使用专业术语或模棱两可的语言。一定要使用容易让
ChatGPT
理解的语言。
遵循这些提示,你可以帮助确保您的 ChatGPT
提示清晰、简明、有效,并使对话顺利、自然。
5、来试试?
古语云:“纸上得来终觉浅,绝知此事要躬行”,上面花了几千字说得神乎其技,真的有用吗?于是乎,Let me have a try! 我用上面的技巧随便编写了一个简单的 chatGPT Prompt
:
我希望你充当一个资深的前端开发者,教我用TypeScript写一个基于axios的接口请求方法,这个方法必须要包含请求和相应拦截。
I want you to be an experienced front-end developer and teach me how to write an Axios-based interface request method in TypeScript, which must include request intercept and response intercept.
这是完整的答案,我将其翻译成了中文,以便阅读:
当然,这里有一个使用请求和响应拦截器在 TypeScript 中编写基于 Axios 的接口请求方法的示例:
import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'; interface ApiResponse<T> { success: boolean; data: T; message: string; } class ApiService { private axiosInstance: AxiosInstance; constructor(baseURL: string, headers: Record<string, string>) { this.axiosInstance = axios.create({ baseURL, headers, }); // Add a request interceptor this.axiosInstance.interceptors.request.use( (config: AxiosRequestConfig) => { // Do something before request is sent console.log(`Request sent to ${config.url}`); return config; }, (error) => { // Do something with request error return Promise.reject(error); } ); // Add a response interceptor this.axiosInstance.interceptors.response.use( (response: AxiosResponse<ApiResponse<any>>) => { // Do something with response data console.log(`Response received from ${response.config.url}`); if (!response.data.success) { throw new Error(response.data.message); } return response.data.data; }, (error) => { // Do something with response error console.error(`Error occurred while receiving response: ${error.message}`); return Promise.reject(error); } ); } public async get<T>(url: string, config?: AxiosRequestConfig): Promise<T> { const response = await this.axiosInstance.get<ApiResponse<T>>(url, config); return response; } public async post<T>(url: string, data: any, config?: AxiosRequestConfig): Promise<T> { const response = await this.axiosInstance.post<ApiResponse<T>>(url, data, config); return response; } public async put<T>(url: string, data: any, config?: AxiosRequestConfig): Promise<T> { const response = await this.axiosInstance.put<ApiResponse<T>>(url, data, config); return response; } public async delete<T>(url: string, config?: AxiosRequestConfig): Promise<T> { const response = await this.axiosInstance.delete<ApiResponse<T>>(url, config); return response; } } export default ApiService;
让我们逐步分析代码:
- 首先,我们导入 Axios 及其类型,以及将用作 API 请求的响应类型的
ApiResponse
接口。 - 接下来,我们定义一个名为
“ApiService”
的类,它将负责向我们的 API 发出请求。构造函数采用两个参数:API 的“baseURL”
和应随每个请求发送的“headers”
。 - 在构造函数中,我们使用传入的
baseURL
和headers
创建了一个 Axios 实例。我们还定义了两个拦截器:一个用于请求,一个用于响应。 - 请求拦截器使用
axiosInstance.interceptors.request.use
定义。它需要一个函数,该函数将在发送每个请求之前调用,并且可以修改请求配置对象。在此示例中,我们只是将请求的 URL 记录到控制台。 - 响应拦截器使用
axiosInstance.interceptors.response.use
定义。它有两个功能:一个用于成功响应,一个用于错误。成功的响应函数以响应对象为参数,必要时可以修改响应数据或抛出错误。在此示例中,我们将响应的 URL 记录到控制台,并使用ApiResponse
接口的success
属性检查响应是否成功。如果不成功,我们会使用ApiResponse
的message
属性抛出错误。如果请求失败,将调用错误函数,我们只需将错误记录到控制台即可。 - 接下来,我们定义四种发出请求的方法:
get
、post
、put
和delete
。每个方法都接受一个 URL、可选数据和可选配置对象,并返回一个包含响应数据的 Promise。 Promise 使用“T”类型参数进行类型化,该参数用作“ApiResponse”的“数据”属性的类型。 - 最后,我们导出
ApiService
类,以便它可以在我们应用程序的其他部分使用。
要使用 ApiService
,您首先要使用要使用的 baseURL
和 headers
创建一个实例,如下所示:
const apiService = new ApiService('https://example.com/api', { Authorization: 'Bearer YOUR_TOKEN_HERE', });
然后,您可以在 apiService
实例上调用 get
、post
、put
和 delete
方法来向您的 API 发出请求:
// GET request example const data = await apiService.get<User[]>('/users'); console.log(data); // POST request example const newUser = { name: 'John Doe', email: 'john.doe@example.com' }; const createdUser = await apiService.post<User>('/users', newUser); console.log(createdUser); // PUT request example const updatedUser = { id: 1, name: 'Jane Doe', email: 'jane.doe@example.com' }; const savedUser = await apiService.put<User>('/users/1', updatedUser); console.log(savedUser); // DELETE request example const deletedUser = await apiService.delete<User>('/users/1'); console.log(deletedUser);
我希望这个例子能帮助你理解如何使用请求和响应拦截器在 TypeScript 中编写基于 Axios 的接口请求方法!
NB!