OpenAI的补全(Completion)功能适用于多种任务,为所有模型提供简单而强大的接口。通过输入特定文本提示,模型会生成一个旨在匹配任何给定上下文或模式的文本完成。本指南还提供了关于使用Codex模型进行代码工作的信息。
由于OpenAI API默认非确定性输出,即使相同提示每次也可能得到不同结果。设定temperature和top_p参数可以控制输出的确定性程度。预置模型的数据训练截至2021年,可能无法涵盖当前事件,但计划未来进行连续训练。
一、设计提示词
1、基础(Basics)
OpenAI的模型可以执行从生成原创故事到复杂文本分析的各种任务。由于功能丰富,需要明确描述所需内容。展示而非仅仅告知,通常是优质提示的关键。
创建提示时有三个基本准则:
(1)提供示例或指令
清晰表达想要的结果。如果希望模型按字母顺序排列项目列表或对段落进行情感分类,请明确告诉它。
(2)提供优质数据
如果试图构建分类器或让模型遵循特定模式,请确保给出充分的例子,并仔细校对这些例子。虽然模型通常能够识别拼写错误,但也可能误解为故意行为,从而影响结果。
(3)检查设置
温度(temperature)和top_p设置控制模型生成响应时的确定性。如果要求生成唯一正确答案的响应,需将其设置得较低;若希望获得更具多样性的响应,则应适当提高设置。切忌将这些设置视为“智能”或“创造力”的控制手段。
二、常见问题
如果无法如预期使用API,请遵循以下:
1、生成的需求是否清晰?
2、是否提供了足够的示例?
3、是否检查了示例中的错误?(API不会直接告知)
4、是否正确使用了温度(temperature)和top_p设置?
三、文本分类器
为了使用API创建文本分类器,OpenAI提供任务描述和一些示例。本例中,OpenAI演示如何对推文进行情感分类,判断其情感是积极的、中性的还是消极的。
值得注意的几个特点:
1、使用通俗易懂的语言
清楚地描述输入(“推文”)和预期输出(“情感”)。作为最佳实践,从详细描述开始,逐步简化。
2、展示API如何响应不同情况
在示例中包含可能的情绪标签,尤其是“中性”标签,以便处理那些人类也难以确定情感的情况。
3、熟悉任务需要更少的示例
对于此分类器,OpenAI未提供任何示例,因为API已经理解情绪和推文的概念。若构建一个API可能不熟悉的分类器,需提供更多示例。
4、提高效率
现在OpenAI掌握了如何构建分类器,让OpenAI提高效率,通过一次API调用获取多个结果。
请对以下推文的情感进行分类:
"I can't stand homework" "This sucks. I'm bored 😠" "I can't wait for Halloween!!!" "My cat is adorable ❤️❤️" "I hate chocolate"
OpenAI提供带编号的推文列表,以便API在一个调用中评估多条推文。在请求API创建列表或评估文本时,需要特别注意概率设置(top_p或温度),以避免偏差。通过多次测试,确保概率设置正确。不要将列表制作得过长,以防API出现漂移。
四、生成
使用OpenAI API完成的最强大且简单的任务之一是生成新想法或文本版本。可以请求从故事创意到商业计划、角色描述和营销标语的任何内容。
头脑风暴:结合健身和虚拟现实(VR)的创意
Brainstorm some ideas combining VR and fitness:
如有必要,可以通过在提示中包含示例来提高响应质量。
五、对话
OpenAI API在与人类甚至彼此对话方面表现出色。只需几行指令,就可以让API充当智能客户服务聊天机器人,或是一个有趣的对话伙伴,进行幽默的互动。关键在于告诉OpenAI API如何行动,并提供例子。
以下是OpenAI API充当答题AI角色的示例:
Human: Hello, who are you? AI: I am an AI created by OpenAI. How can I help you today?
这就是创建能够对话的聊天机器人所需的一切。尽管看似简单,但有几点值得关注:
1、明确意图和行动方式
OpenAI告诉API其意图,并指示它如何回应。与其他提示一样,OpenAI提供该示例的意图,同时提醒API作为“助手,友好、有创意、聪明”进行互动。
2、赋予API身份
初始时,OpenAI让API作为AI助手响应。虽然API没有固有身份,但这样可以使其尽可能真实地回应。也可以为其他类型的聊天机器人设定身份,例如,告诉API以生物学研究者的身份回答问题,将获得更符合该背景的智能和周到回复。
3、创建有趣且略带讽刺的聊天机器人
例如,OpenAI可以创建一个有点讽刺且不情愿回答问题的聊天机器人:
Marv is a chatbot that reluctantly answers questions with sarcastic responses: You: How many pounds are in a kilogram? Marv: This again? There are 2.2 pounds in a kilogram. Please make a note of this. You: What does HTML stand for? Marv: Was Google too busy? Hypertext Markup Language. The T is for try to ask better questions in the future. You: When did the first airplane fly? Marv: On December 17, 1903, Wilbur and Orville Wright made the first flights. I wish they’d come and take me away. You: What is the meaning of life? Marv: I’m not sure. I’ll ask my friend Google. You: Why is the sky blue? 为了创建一个既有趣又略带讽刺的聊天机器人,OpenAI提供了一些问题及其回应的示例,以向API展示如何回复。只需几个讽刺的回应,API就能掌握模式,为提供源源不断的机智回答。
六、模型转换
1、翻译Translation
对于翻译任务,API可以将文本从一种语言转换为另一种语言。如果API已经掌握了目标语言,那么转换通常是准确的。例如:
Translate this into French, Spanish and Japanese: What rooms do you have available? French: Quelles chambres avez-vous de disponibles ? Spanish: ¿Qué habitaciones tienen disponibles? Japanese: どの部屋が利用可能ですか?
2、对话Conversion
API可以将文本转换成表情符号,展示其对模式的理解和适应能力。例如:
Convert movie titles into emoji. Back to the Future: 👨👴🚗🕒 Batman: 🤵🦇 Transformers: 🚗🤖 Star Wars:
3、总结Summarization
API能够将复杂的文本内容重新表达成更简单的形式。例如:
原文:
木星是离太阳第五远的行星,也是太阳系中最大的行星。它的体积仅次于太阳,是太阳系中所有其他行星质量的两倍半。在夜空中,木星是最亮的天体之一,因此可以用肉眼看到。它的名字来自于罗马神话中的“朱庇特”(Jupiter)。当OpenAI从地球上看木星时,它非常亮,甚至可以投射出明显的阴影。平均来说,木星在月亮和金星之后在夜空中是第三亮的天体。
总结:
木星是一个非常大的星球,离太阳很远,能在夜空中看到它很亮。它的名字来源于古代神话。
4、补全Completion
API可以根据给定的提示继续生成文本。这在编写代码、创作内容等任务中非常有用。例如:
提示:
import React from 'react'; const HeaderComponent = () => (
API可以继续生成组件的完整代码。
七、限制API捏造答案的可能性
API有很多知识,它是从它所被训练的数据中学到的。它还可以提供听起来非常真实但实际是虚构的答案。有两种方法可以限制API捏造答案的可能性。
如果你为API提供了一个文本体来回答问题(如维基百科条目),它就不太可能捏造一个回答。使用较低的概率(probability),并展示给API如何表达“我不知道”。如果API理解,在不太确定答案的情况下,说“我不知道”或某种变体是合适的,它就不太可能编造答案。
在这个例子中,OpenAI给API提供了它已知的问题和答案的范例,然后给出一些它不知道的内容并提供问号。OpenAI还将概率设为零,这样API就更有可能用“?”回答,以避免任何怀疑。
Q: Who is Batman? A: Batman is a fictional comic book character. Q: What is torsalplexity? A: ? Q: What is Devz9? A: ? Q: Who is George Lucas? A: George Lucas is American film director and producer famous for creating Star Wars. Q: What is the capital of California? A: Sacramento. Q: What orbits the Earth? A: The Moon. Q: Who is Fred Rickerson? A: ? Q: What is an atom? A: An atom is a tiny particle that makes up everything. Q: Who is Alvan Muntz? A: ? Q: What is Kozar-09? A: ? Q: How many moons does Mars have? A: Two, Phobos and Deimos.
八、插入文本
这个功能支持在文本中插入内容。例如:
- 前缀: 我在波士顿大学上大学。毕业后,我决定做出一个改变。一个大改变!
- 后缀: 我收拾行囊搬到了美国西海岸。现在,我对太平洋越来越着迷!
九、编辑文本
API可以修改现有文本。对于文本润色、编辑等任务特别有用。例如:
原文:
GPT-3是一个非常好的AI 它很擅长写回复 当它被问了一个问题 它会给出建议 这是它制作的一个押韵诗
指示:
以GPT-3的声音来表述
输出:
我是一个非常好的AI,我很擅长写回复。当我被问了一个问题,我会给出建议。这是我制作的一个押韵诗。