一文学会使用ChatGPT指令--OpenAI官方提示词最佳实践

一、使用提示词的小技巧(适用对象:GPT入门级玩家)  

 OpenAI 的文本生成模型(如GPT),已经过训练来理解自然语言。GPT的文本输出是响应其输入的,这些模型的输入也被称为 “ 提示词 ”,英文叫" prompts "。如何设计 prompts 本质上也是 “如何编程” GPT模型。为了更好的使用prompts,引导AI准确回答您的问题,我根据自己的使用习惯,总结了以下技巧,适用于GPT入门级玩家:

 1. 确保输入的信息清晰且明确,使AI可以理解你的需求
 2. 确保你提供了足够的上下文,可以帮助AI模型生成更相关的回答。
 3. 注意使用完整的句子和正确的语法,以提高AI模型的问答质量。
 4. 注意避免使用模糊和容易引起歧义的词汇,确保AI模型可以理解您的真实意图。
 5. 注意适当使用关键词,帮助AI模型更快找到相关信息。
 6. 如果您的问题比较复杂,可以分阶段提问,尝试将问题拆分为几个简单的句子。
 7. 交流的过程中,可以适当重复关键信息,确保AI模型可以更好的理解细节。

二、提示词写作技巧(适用对象:GPT入门级玩家)

对于入门级玩家来说,如果上述使用技巧比较抽象,可以使用写“prompts” 的万能公式:立角色+述问题+定目标+补要求。

  1. 立角色:为AI赋予行家的身份。
  2. 述问题:为AI补充问题所需要的背景信息。
  3. 定目标:告诉AI具体的需求是什么,描述希望AI为你做什么事情。
  4. 补要求:告诉AI回答问题时,需要注意什么,或者描述你需要让AI回答问题的具体形式。   

征集:如果您在使用的过程中,认为这个万能公式比较好用,欢迎您在评论区分享、补充您认为好的prompts。

 三、如何写出好的提示词(适用对象:ChatGPT初级、中级玩家)

使用ChatGPT时,好的提示词是非常关键的,目前最权威的提示词教程应该是OpenAI官网给出的官方文档里写提示词的6个策略,英文比较好的小伙伴建议直接去阅读原文,由于官方文档的描述比较长,我根据官方的说明,对文档做了翻译,并根据个人理解做了精简和提炼,以下适用的阅读对象:ChatGPT初级、中级玩家。

1、写下清晰的指示

模型无法读懂你的想法。如果输出太长,可以要求模型简短得答复。如果输出太简单,可以要求模型进行扩充答复。如果您不喜欢当前的格式,请提出您希望看到的格式。模型猜测你想要什么的次数越少,你得到理想答复的可能性就越大。

写下清晰指示的具体方法:

  • 输入详细信息以获得更相关的答案
  • 要求模型设定角色
  • 使用分隔符清晰地指示输入的不同部分
  • 指定完成任务所需的步骤
  • 提供例子
  • 指定所需的输出长度

具体示例:

1.输入详细信息以获得更相关的答案

为了获得高度相关的响应,请确保输入详细的信息。具体示例:

更差的输入更好的输入
如何在 Excel 中添加数字?如何在 Excel 中添加一行美元金额?我想对整张行自动执行此操作,所有总计都在右侧名为“总计”的列中结束。
谁是总统?谁是 2021 年墨西哥总统?选举频率如何?
编写代码来计算斐波那契数列。编写一个 TypeScript 函数来高效计算斐波那契数列。自由地注释代码以解释每部分的作用以及为什么这样编写。
总结会议记录。用一个段落总结会议记录。然后写下演讲者的 Markdown 列表以及他们的每个要点。最后,列出发言人建议的后续步骤或行动项目(如果有)。

2.要求模型设定角色

要求模型设定角色,用于指定模型在回复中的角色。具体示例:

系统当我请求帮助写一些东西时,你会回复一份文档,其中每个段落至少包含一个笑话或有趣的评论。
用户给我的钢螺栓供应商写一封感谢信,感谢他们在短时间内准时交货。这使我们能够交付一份重要的订单。

3.使用分隔符清晰地指示输入的不同部分。

三引号、XML 标签、节标题等分隔符可以帮助划分要区别对待的文本节,任务越复杂,使用分隔符消除任务细节的歧义就越重要。

示例1:

系统您将获得两篇关于同一主题的文章(用 XML 标签分隔)。首先总结每篇文章的论点。然后指出哪一个提出了更好的论点并解释原因。
用户<article> 在此插入第一篇文章 </article> <article> 在此插入第二篇文章 </article>

示例2:

系统您将获得两篇关于同一主题的文章(用 XML 标签分隔)。首先总结每篇文章的论点。然后指出哪一个提出了更好的论点并解释原因。
用户<article> 在此插入第一篇文章 </article> <article> 在此插入第二篇文章 </article>

4.指定完成任务所需的步骤

有些任务最好指定为一系列步骤。明确地写出这些步骤可以使模型更容易遵循它们。示例:

系统您将获得两篇关于同一主题的文章(用 XML 标签分隔)。首先总结每篇文章的论点。然后指出哪一个提出了更好的论点并解释原因。
用户<article> 在此插入第一篇文章 </article> <article> 在此插入第二篇文章 </article>

5.提供例子

提供适用于所有示例的一般说明,通常比通过示例演示任务的所有排列更有效,但在某些情况下提供示例说明可能更容易。如果您打算让模型复制响应用户查询的特定风格,而这种风格很难明确描述。这称为“几次”提示。

系统您将获得两篇关于同一主题的文章(用 XML 标签分隔)。首先总结每篇文章的论点。然后指出哪一个提出了更好的论点并解释原因。
用户<article> 在此插入第一篇文章 </article> <article> 在此插入第二篇文章 </article>
助手河流冲刷出最深的山谷,发源于温和的泉水;最伟大的交响乐源自一个音符;最复杂的挂毯都是从一根单独的线开始的。
用户
教我有关海洋的知识。

6.指定所需的输出长度

您可以要求模型生成给定目标长度的输出。目标输出长度可以根据单词、句子、段落、要点等的计数来指定。但请注意,指示模型生成特定数量的单词并不能高精度工作。该模型可以更可靠地生成具有特定数量的段落或要点的输出。

用户用大约 50 个单词总结由三引号分隔的文本。 """在此插入文字"""
用户总结两段中用三引号分隔的文本。 """在此插入文字"""
用户将由三引号分隔的文本总结为 3 个要点。 """在此插入文字"""

2、提供参考文本

GPT会输出无关的虚假答案,特别是当被问及深奥的主题或引文和 URL 时。就像一张笔记可以帮助学生在考试中取得更好的成绩一样,为这些模型提供参考文本可以帮助减少作答次数。

提供参考文本的具体方法:

  • 指示模型使用参考文本回答
  • 指示模型通过引用参考文本回答

具体示例:

1.指示模型使用参考文本回答

如果我们可以为模型提供与当前查询相关的可信信息,那么我们可以指示模型使用提供的信息来组成其答案。示例:

系统使用提供的由三重引号引起来的文章来回答问题。如果在文章中找不到答案,请写“我找不到答案”。
用户<插入文章,每篇文章均由三引号分隔> 问题:<在此处插入问题>

2.指示模型通过引用参考文本回答

如果输入已补充相关知识,则可以直接要求模型通过引用所提供文档中的段落来为其答案添加引用。
系统您将获得一份由三重引号和一个问题分隔的文档。您的任务是仅使用提供的文档回答问题,并引用用于回答问题的文档段落。如果文档不包含回答此问题所需的信息,则只需写:“信息不足”。如果提供了问题的答案,则必须附有引文注释。使用以下格式引用相关段落({“引用”:…})。
用户"""<在此处插入文档>""" 问题:<在此处插入问题>

3、将复杂的任务拆分为更简单的子任务

将复杂的任务拆分的具体方法:

  • 使用意图分类来识别与用户分类最相关的指令
  • 对于需要很长对话的应用,总结过滤对话
  • 分段总结长文档,并递归构建完整的摘要

具体使用说明与示例:

1.使用意图分类来识别与用户分类最相关的指令

对于需要大量独立指令集来处理不同情况的任务,首先要对查询类型进行分类,并且使用分类来确定需要哪些指令可能有益,还可以通过定义域处理给定类别中的人物相关的固定类别和硬编码指令来实现。这个过程可以递归地应用,将任务分解为一系列阶段。这种方法的优点是每个查询仅仅包含执行下阶段所需的 指令,与使用单个查询执行整个任务比较,可以降低错误率,还可以降低成本,因为较大的提示运行成本更高。

示例:假设对客户服务应用程序分类,查询可以有效地分类如下:

系统我们将向您提供客户服务查询。将每个查询分为主要类别和次要类别。提供 json 格式的输出,其中包含以下键:主要和次要。主要类别:计费、技术支持、帐户管理或一般查询。计费二级类别: - 取消订阅或升级 - 添加付款方式 - 收费说明 - 费用争议 技术支持二级类别: - 故障排除 - 设备兼容性 - 软件更新 帐户管理二级类别: - 密码重置 - 更新个人信息 - 关闭帐户 -帐户安全一般查询二级类别: - 产品信息 - 定价 - 反馈 - 与人交谈
用户我需要让我的互联网重新工作。
示例:根据客户查询的分类,可以向模型提供一组更具体的指令,以供其处理后续步骤。例如,假设客户需要“故障排除”方面的帮助。
系统您将收到需要在技术支持环境中进行故障排除的客户服务查询。通过以下方式帮助用户: - 要求他们检查进出路由器的所有电缆是否已连接。请注意,随着时间的推移,电缆松动是很常见的。 - 如果所有电缆均已连接并且问题仍然存在,请询问他们正在使用哪种路由器型号 - 现在您将建议他们如何重新启动其设备: - 如果型号是 MTD-327J,建议他们按红色按钮并按住 5 秒钟,然后等待 5 分钟后再测试连接。 -- 如果型号是 MTD-327S,建议他们拔下并重新插入,然后等待 5 分钟再测试连接。 - 如果客户的问题在重新启动设备并等待 5 分钟后仍然存在,请通过输出 {“IT 支持请求”} 将他们连接到 IT 支持。 - 如果用户开始询问与此主题无关​​的问题,请确认他们是否愿意结束当前有关故障排除的聊天,并根据以下方案对他们的请求进行分类:<在此处插入上面的主要/次要分类方案>
用户我需要让我的互联网重新工作。
模型发出特殊字符串来指示对话状态何时发生变化,这使我们能够将我们的系统变成一个状态机,其中状态决定注入哪些指令,通过跟踪状态、哪些指令与该状态相关,可选地允许从该状态进行哪些状态转换,我们可以为用户体验设置护栏,而使用不太结构化的方法很难实现这一点。

2.对于需要很长对话的应用,总结过滤对话

由于模型具有固定的上下文长度,因此用户和助手之间的对话(其中整个对话都包含在上下文窗口中)不会无限期继续,解决此类问题有多种方法,系统给出了2种。

一种是总结对话中的先前回合。一旦输入的大小达到预定的阈值长度,这可能会触发总结部分对话的查询,并且先前对话的摘要可以作为系统消息的一部分包括在内。或者,可以在整个对话过程中在后台异步总结之前的对话。

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

3.分段总结长文档,并递归构建完整的摘要

由于模型具有固定的上下文长度,因此它们不能用于总结长于上下文长度减去单个查询中生成的摘要长度的文本。

要总结一个很长的文档(例如一本书),我们可以使用一系列查询来总结文档的每个部分。章节摘要可以连接和总结,生成摘要的摘要。这个过程可以递归地进行,直到总结整个文档。如果有必要使用前面部分的信息来理解后面的部分,那么另一个有用的技巧是在总结该点的内容时,在书中任何给定点之前包含文本的运行摘要。OpenAI在之前的研究中已经使用 GPT-3 的变体研究了这种总结书籍的过程的有效性。

4、给模型时间“思考”

1.指示模型在得出结论之前,找出自己的解决方案

当我们明确指示模型在得出结论之前从第一原理推理时,我们会得到更好的结果。假设我们想要一个模型来评估学生对数学问题的解决方案。解决这个问题最明显的方法是简单地询问模型学生的解决方案是否正确。

系统确定学生的解决方案是否正确。
用户问题陈述:我正在建造一个太阳能发电装置,我需要帮助解决财务问题。 - 土地成本为 100 美元/平方英尺 - 我可以以 250 美元/平方英尺的价格购买太阳能电池板 - 我协商了一份维护合同,每年将花费我 10 万美元,另外还要额外花费 10 美元/平方英尺第一年运营作为平方英尺数的函数。学生的解决方案:设 x 为装置的尺寸(以平方英尺为单位)。 1. 土地成本:100x 2. 太阳能电池板成本:250x 3. 维护成本:100,000 + 100x 总成本:100x + 250x + 100,000 + 100x = 450x + 100,000
助手该学生的解决方案是正确的。
这位同学的解法其实不正确,我们通过模型,生成自己的解决方案,提示模型注意到这一点。
系统首先制定自己的问题解决方案。然后将你的解决方案与学生的解决方案进行比较,并评估学生的解决方案是否正确。在你自己完成问题之前,不要决定学生的解决方案是否正确。
用户问题陈述:我正在建造一个太阳能发电装置,我需要帮助解决财务问题。 - 土地成本为 100 美元/平方英尺 - 我可以以 250 美元/平方英尺的价格购买太阳能电池板 - 我协商了一份维护合同,每年将花费我 10 万美元,另外还要额外花费 10 美元/平方英尺第一年运营作为平方英尺数的函数。学生的解决方案:设 x 为装置的尺寸(以平方英尺为单位)。 1. 土地成本:100x 2. 太阳能电池板成本:250x 3. 维护成本:100,000 + 100x 总成本:100x + 250x + 100,000 + 100x = 450x + 100,000
助手设 x 为安装尺寸(以平方英尺为单位)。 1. 土地成本:100x 2. 太阳能电池板成本:250x 3. 维护成本:100,000 + 10x 总成本:100x + 250x + 100,000 + 10x = 360x + 100,000 学生的解决方案不正确。他们在维护成本计算中犯了一个错误,使用了 100x 而不是 10x。第一年运营的正确总成本是 360x + 100,000。

2.使用独白或一系列查询,隐藏推理过程

前面的策略表明,模型有时在回答特定问题之前详细推理问题很重要。对于某些应用程序,模型用于得出最终答案的推理过程不适合与用户共享。例如,在辅导应用程序中,我们可能希望鼓励学生得出自己的答案,但模型关于学生解决方案的推理过程可能会向学生揭示答案。

内心独白是一种可以用来缓解这种情况的策略。内心独白的想法是指示模型将原本对用户隐藏的部分输出放入结构化格式中,以便于解析它们。然后,在向用户呈现输出之前,将解析输出并且仅使部分输出可见。

系统请按照以下步骤回答用户的疑问。步骤 1 - 首先找出你自己的问题解决方案。不要依赖学生的解决方案,因为它可能是不正确的。将您此步骤的所有工作用三引号 (""") 括起来。第 2 步 - 将您的解决方案与学生的解决方案进行比较,并评估学生的解决方案是否正确。将您此步骤的所有工作用三引号 ("") 括起来”)。第 3 步 - 如果学生犯了错误,请确定在不泄露答案的情况下可以给学生什么提示。将这一步的所有工作用三引号 (""") 括起来。步骤 4 - 如果学生犯了错误,请向学生提供上一步的提示(在三引号之外)。而不是写“步骤 4 - ...”写“提示:”。
用户问题陈述:<插入问题陈述> 学生解决方案:<插入学生解决方案>

或者,这可以通过一系列查询来实现,其中除了最后一个查询之外,所有查询的输出都对最终用户隐藏。

首先,我们可以要求模型自己解决问题。由于这个初始查询不需要学生的解决方案,因此可以省略。这提供了额外的优势,即模型的解决方案不会因学生尝试的解决方案而产生偏差。

用户<插入问题陈述>
接下来,我们可以让模型使用所有可用信息来评估学生解决方案的正确性。
系统将您的解决方案与学生的解决方案进行比较,并评估学生的解决方案是否正确。
用户问题陈述:"""<插入问题陈述>""" 您的解决方案:"""<插入模型生成的解决方案>""" 学生的解决方案:"""<插入学生的解决方案>"""
最后,我们可以让模型使用自己的分析来以乐于助人的导师的角色构建回复。
系统你是一名数学导师。如果学生犯了错误,请以不透露答案的方式向学生提供提示。如果学生没有犯错,只需给他们一个鼓励性的评论。
用户问题陈述:"""<插入问题陈述>""" 您的解决方案:"""<插入模型生成的解决方案>""" 学生的解决方案:"""<插入学生的解决方案>""" 分析:"""<插入模型从上一步生成的分析>"""

3.询问模型在之前的过程中是否遗漏了任何内容

假设我们使用一个模型来列出与特定问题相关的来源的摘录。列出每个摘录后,模型需要确定是否应该开始编写另一个摘录或者是否应该停止。如果源文档很大,模型通常会过早停止并且无法列出所有相关摘录。在这种情况下,通过使用后续查询提示模型查找之前传递中错过的任何摘录,通常可以获得更好的性能。
系统您将获得一份由三重引号分隔的文档。你的任务是选择与以下问题相关的摘录:“人工智能历史上发生了哪些重大的范式转变。”确保摘录包含解释它们所需的所有相关上下文 - 换句话说,不要提取缺少重要上下文的小片段。提供 JSON 格式的输出,如下所示: [{"excerpt": "..."}, ... {"excerpt": "..."}]
用户"""<在此插入文档>"""
助手[{"excerpt": "模型在这里写一个摘录"}, ... {"excerpt": "模型在这里写另一个摘录"}]
用户
还有更多相关摘录吗?注意不要重复摘录。还要确保摘录包含解释它们所需的所有相关上下文 - 换句话说,不要提取缺少重要上下文的小片段。

5、使用外部工具

通过向模型提供其他工具的输出来弥补模型的弱点。例如,文本检索系统(有时称为 RAG 或检索增强生成)可以告诉模型相关文档。像 OpenAI 的代码解释器这样的代码执行引擎可以帮助模型进行数学运算并运行代码。如果一项任务可以通过工具而不是语言模型更可靠或更有效地完成,那么可以卸载它以充分利用两者。

具体使用方法:

  • 使用基于嵌入的搜索实现高效的知识检索
  • 使用代码执行来进行更准确的计算或调用外部API
  • 授予模型访问特定功能的权限

使用示例:

1.使用基于嵌入的搜索实现高效的知识检索

示例实现可以在 OpenAI Cookbook中找到。请参阅策略 “指示模型使用检索到的知识来回答查询”,了解如何使用知识检索来最大程度地减少模型编造不正确事实的可能性的示例。

2.使用代码执行来进行更准确的计算或调用外部API

不能依赖语言模型自行准确地执行算术或长时间计算。在需要的情况下,可以指示模型编写和运行代码,而不是进行自己的计算。特别是,可以指示模型将要运行的代码放入指定的格式,例如三重反引号。产生输出后,可以提取代码并运行。最后,如果有必要,可以将代码执行引擎(即Python解释器)的输出作为下一个查询的模型的输入。
系统您可以通过将Python 代码括在三个反引号中来编写和执行Python 代码,例如“此处代码为”。用它来执行计算。
用户求以下多项式的所有实值根:3*x**5 - 5*x**4 - 3*x**3 - 7*x - 10。
代码执行的另一个很好的用例是调用外部 API。如果模型接受了如何正确使用 API 的指导,它就可以编写使用该 API 的代码。通过向模型提供展示如何使用 API 的文档和/或代码示例,可以指导模型如何使用 API。
系统您可以通过将 Python 代码括在三个反引号中来编写和执行它。另请注意,您可以访问以下模块来帮助用户向朋友发送消息: ```python import message message.write(to="John", message="Hey,想在下班后见面吗?")`` `
警告:执行模型生成的代码本质上并不安全,任何试图执行此操作的应用程序都应采取预防措施。特别是,需要沙盒代码执行环境来限制不受信任的代码可能造成的危害。

3.授予模型访问特定功能的权限

聊天完成 API 允许在请求中传递功能描述列表,这使模型能够根据提供的模式生成函数参数,生成函数参数由 API 以 JSON 格式返回,可用于执行函数调用。然后,可以将函数调用提供的输出反馈到以下请求中的模型中以关闭循环。这是使用OpenAI模型调用外部函数的推荐方式。
具体请参阅我们的介绍性文本生成指南中的 函数调用部分以及OpenAI Cookbook 中的更多 函数调用示例。

6、系统地测试变更

如果您可以衡量性能,那么提高性能就会更容易。在某些情况下,对提示的修改将在一些孤立的示例上实现更好的性能,但会导致在一组更具代表性的示例上整体性能变差。因此,为了确保更改对性能产生净积极影响,可能有必要定义一个全面的测试套件(也称为“评估”)。

具体使用方法:

  • 参考黄金标准答案评估模型输出
具体示例:

假设已知问题的正确答案应参考一组特定的已知事实。然后我们可以使用模型查询来计算答案中包含多少必需的事实。

例如,使用以下系统消息:

系统
您将获得由三引号分隔的文本,该文本应该是问题的答案。检查答案中是否直接包含以下信息: - 尼尔·阿姆斯特朗是第一个登上月球的人。 - 尼尔·阿姆斯特朗 (Neil Armstrong) 首次在月球上行走的日期是 1969 年 7 月 21 日。对于每个点,请执行以下步骤: 1 - 重述该点。 2 - 提供最接近这一点的答案的引文。 3 - 考虑不知道主题的阅读引文的人是否可以直接推断出该点。在做出决定之前解释一下原因或原因。 4 - 如果 3 的答案是“是”,则写“是”,否则写“否”。最后,计算有多少个“是”答案。将此计数提供为 {"count": <在此处插入计数>}。
这是一个满足这两点的示例输入:
系统<在上面插入系统消息>
用户"""尼尔·阿姆斯特朗因成为第一个踏上月球的人类而闻名。这一历史性事件发生在 1969 年 7 月 21 日,阿波罗 11 号任务期间。"""
以下是仅满足一个点的示例输入:
系统<在上面插入系统消息>
用户“69 年夏天,一次伟大的航行,阿波罗 11 号,像传奇之手一样大胆。阿姆斯特朗迈出一步,历史展开,“一小步,”他说,为了一个新世界。”“”
这种基于模型的评估有许多可能的变体。考虑以下变体,它跟踪候选答案和黄金标准答案之间的重叠类型,并且还跟踪候选答案是否与黄金标准答案的任何部分相矛盾。
系统<在上面插入系统消息>
用户使用以下步骤响应用户输入。在继续之前充分重申每个步骤。即“第一步:原因...”。步骤 1:逐步推理所提交答案中的信息与专家答案相比是否是:不相交、相等、子集、超集或重叠(即存在交集,但不是子集/超集)。第2步:逐步推理提交的答案是否与专家答案的任何方面相矛盾。步骤 3:输出一个 JSON 对象,结构如下:{"type_of_overlap": "disjoint" or "equal" or "subset" or "superset" or "overlapping", "contradiction": true or false}
这是一个示例输入,其答案不合格,但与专家答案并不矛盾:
系统<在上面插入系统消息>
用户问题:“”“尼尔·阿姆斯特朗最著名的事件是什么?它发生在哪一天?假设 UTC 时间。”“”提交的答案:“”“1969 年 7 月 21 日,尼尔·阿姆斯特朗成为第二个在上面行走的人继巴兹·奥尔德林之后登上月球。"""专家解答:"""尼尔·阿姆斯特朗最著名的是第一个登上月球的人。这一历史性事件发生在 1969 年 7 月 21 日。"""
下面是一个带有正确答案的示例输入,它还提供了比必要的更多的细节:
系统<在上面插入系统消息>
用户问题:“”“尼尔·阿姆斯特朗最著名的事件是什么?它发生在哪一天?假设 UTC 时间。”“”提交的答案:“”“1969 年 7 月 21 日大约 02:56 UTC,尼尔·阿姆斯特朗成为第一个人类踏上月球表面,标志着人类历史上的一项里程碑式的成就。”“”专家解答:“”“尼尔·阿姆斯特朗最著名的是第一个登上月球的人。这一历史性事件发生在7月21日, 1969年。

四、其他资源(适用对象:ChatGPT高级玩家

ChatGPT功能非常强大,如果想更多掌握使用方法,可以访问OpenAI Cookbook,其中包含示例代码以及第三方资源的链接,这些链接内容我也会逐步放到后续博客,欢迎追踪。

**提示** 以上内容均来自OpenAI提供的ChatGPT的官方文档:https://platform.openai.com/docs/introduction,翻译不准确的地方,欢迎在评论区补充、交流。
 

  • 20
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值