关键原则
1. 编写清晰具体的指令
1.1 使用限定符区分prompt 和 文本
1.2 结构化输出
1.3 要求模型检查是否满足条件
1.4 小批量提示
2. 给模型时间来思考
2.1 指定完成任务的步骤
prompt_2 = f"""
Your task is to perform the following actions:
1 - Summarize the following text delimited by
<> with 1 sentence.
2 - Translate the summary into French.
3 - List each name in the French summary.
4 - Output a json object that contains the
following keys: french_summary, num_names.
Use the following format:
Text: <text to summarize>
Summary: <summary>
Translation: <summary translation>
Names: <list of names in Italian summary>
Output JSON: <json with summary and num_names>
Text: <{text}>
"""
response = get_completion(prompt_2)
print("\nCompletion for prompt 2:")
print(response)
2.2 指导模型(在急于得出结论之前)制定自己的解决方案
prompt = f"""
Your task is to determine if the student's solution \
is correct or not.
To solve the problem do the following:
- First, work out your own solution to the problem.
- Then compare your solution to the student's solution \
and evaluate if the student's solution is correct or not.
Don't decide if the student's solution is correct until
you have done the problem yourself.
Use the following format:
Question:
"""
question here
"""
Student's solution:
"""
"""
student's solution here
"""
Actual solution:
"""
steps to work out the solution and your solution here
"""
Is the student's solution the same as actual solution \
just calculated:
"""
yes or no
"""
Student grade:
"""
correct or incorrect
"""
Question:
"""
I'm building a solar power installation and I need help \
working out the financials.
- Land costs $100 / square foot
- I can buy solar panels for $250 / square foot
- I negotiated a contract for maintenance that will cost \
me a flat $100k per year, and an additional $10 / square \
foot
What is the total cost for the first year of operations \
as a function of the number of square feet.
"""
Student's solution:
"""
Let x be the size of the installation in square feet.
Costs:
1. Land cost: 100x
2. Solar panel cost: 250x
3. Maintenance cost: 100,000 + 100x
Total cost: 100x + 250x + 100,000 + 100x = 450x + 100,000
"""
Actual solution:
"""
response = get_completion(prompt)
print(response)
3 模型局限性
如果在其训练过程中,模型被暴露于大量的知识之中,那么它并没有完美地记忆所见到的信息,因此它并不十分清楚它的知识边界。 这意味着它可能会尝试回答有关深奥话题的问题,并且可能会虚构听起来很有道理但实际上不正确的东西。我们将这些捏造的想法称为幻觉。因此,我将向您展示一个例子,在这个例子中模型会产生幻觉。这是一个例子,展示了模型如何编造一个来自真实牙刷公司的虚构产品名称的描述。因此,这个提示是:“告诉我关于Boy的AeroGlide Ultra Slim智能牙刷的情况。”如果我们运行它,模型将为我们提供一个相当逼真的虚构产品的描述。
提示工程需要迭代
当我使用大型语言模型构建应用程序时,我认为我从来没有在第一次尝试中使用最终应用程序中使用的提示。这并不重要。只要您有一个良好的迭代过程来改进提示,那么你就能够找到对完成所需任务的好提示。您可能已经听我说过,当我训练机器学习模型时,它几乎从不在第一次工作。事实上,如果我第一次训练的模型能工作,我会非常惊讶。我认为在提示时,第一次能够得到有效结果的机会可能会更高一些,但与他所说的一样,第一个提示是否有效并不重要。最重要的是找到适合您的应用程序使用的提示的过程。因此,让我们进入代码中,让我展示一些框架,以思考如何迭代开发提示。好的,所以如果您以前曾与我一起上过机器学习课程,您可能会看到我使用的图表,即在机器学习开发中,您通常有一个想法,然后实现它。
因此,编写代码、获取数据、训练模型,这将给您带来实验结果。然后您可以查看该输出,进行误差分析,找出工作或不工作的地方,然后甚至可以更改您解决问题的确切想法或方法,再更改您的实现并运行另一个实验等等,不断迭代,以获得有效的机器学习模型。如果您不熟悉机器学习并且以前未见过此图表,则不用担心,对于本演示的其余内容并不重要。
但是当您编写使用LLM开发应用程序的提示时,该流程可能会非常类似,您有一个想法,想要完成的任务,然后可以尝试编写第一个提示,希望它的表述清晰具体,并且如果合适,可以给系统一些时间进行思考,然后运行它并查看结果。如果第一次效果不好,则迭代的过程中可以找出原因,例如:指示不够清晰或算法没有足够的时间进行思考,从而充实思路、改进提示,如此循环多次,直到开发应用程序所需的提示得以完成。
总结类应用
1. 文字总结
2. 针对某种信息总结
3. 尝试“提取”而不是“总结”
4. 针对多项信息总结
推理类应用
1. 产品评价文本情感分类
我要使用的最重要的示例是一个台灯的评论。因此,我要编写一个提示来分类这个评论的情感。
如果我想让系统告诉我,你知道的,这个评论的情感是什么,我可以编写以下产品评论的情感是什么,在常规的分隔符和评论文本等信息后运行它。然后让我们运行一下。它显示该产品评论的情感是积极的,这似乎是非常正确的。这个台灯并不完美,但这位顾客似乎很满意。看起来是一家关心顾客和产品的好公司。
2. 文本情感分类
3. 文本信息提取
4. 文本主体推断
5. 文本信息分析
转换类应用
1. 翻译任务
2. 通用翻译器
3. 语调转换
4. 格式转换
5. 语法拼写检查
扩展类应用
扩展是将短文本(例如一组指令或主题列表)扩展为较长的文本(例如有关某个主题的电子邮件或文章)的任务。这有一些很好的用途,比如如果你将大型语言模型用作头脑风暴的伙伴。但我也想承认一些有问题的用例,例如如果有人使用它,他们生成大量的垃圾邮件。
我们还将使用模型的另一个输入参数,称为温度,这允许你变化模型响应的探索程度和多样性的程度。所以让我们开始吧。在我们开始之前,我们将进行通常的设置。因此,设置OpenAI Python包,然后定义我们的助手函数getCompletion,现在我们要编写一个针对客户评论的自定义电子邮件响应,因此,鉴于客户评论和情感,我们将生成一个自定义响应。
1. 自定义对客户电子邮件的自动答复
2. 提醒模型使用客户电子邮件中的详细信息
打造聊天机器人
使用大型语言模型的其中一个令人兴奋的方面是,您只需投入适量的努力即可使用它来构建自定义聊天机器人。ChatGPT是一个Web界面,通过它你可以使用大型语言模型进行会话,从而拥有一个交互式的聊天界面。但是,其中的一个很酷的功能是,您也可以使用大型语言模型来构建自定义的聊天机器人,为餐厅扮演AI客户服务代理或AI点餐员等角色。
首先,我们将像往常一样设置OpenAI Python包。聊天模型(如ChatGPT)实际上是被训练成将一系列消息作为输入,并返回由模型生成的消息作为输出。虽然聊天格式旨在使此类多轮对话变得容易,但我们已经通过以前的视频看到,它对于没有对话的单一任务同样有用。
下一步,我们将定义两个辅助函数。第一个是我们在所有视频中都使用的 getCompletion 函数。但是,如果你仔细看一下,我们给出了一个提示,但实际上在函数内部,我们是将这个提示放置到类似用户消息的消息中。这是因为 ChatGPT 模型是一个聊天模型,意味着它被训练成将一系列消息作为输入,然后返回一个由模型生成的消息作为输出。因此,用户消息是输入,而助手消息是输出。 第二个辅助函数是 generateResponse。这个函数将接受一个用户消息,并生成一个 ChatGPT 模型生成的相应助手消息。 通过这两个函数,我们能够与 AIGPT 模型进行交互并生成对话。
1. 对话助手
这里,我们的信息有两条,一条是助手的信息:你是一个友好的聊天机器人,另一条信息是用户的第一条反馈:嗨,我的名字是伊莎。我们想要获取用户的第一条信息。所以,让我们执行一下第一条助手信息。第一条反馈是:你好伊莎,很高兴见到你。你今天需要我的帮助吗?现在,让我们尝试另一个例子。这里我们的信息还是有两条,一条是系统信息:你是一个友好的聊天机器人,另一条信息是第一条用户反馈:是的,你能提醒我我的名字是什么吗?我们想要得到回应。然而,你会发现,这个模型实际上还不知道我的名字。所以,每一次与语言模型的交互都是独立的。这意味着,在当前的交互中,你必须提供所有相关的信息,供模型从中获取。如果你想让模型在交互中从先前的对话中获取信息,你必须将之前的对话作为输入提供给模型,我们称之为“上下文”。
2. OrderBot
现在,你将会建立自己的聊天机器人。这个聊天机器人将被称为“订餐机器人”,我们将使用自动化的方式来收集用户的提示和助手的反馈来构建这个聊天机器人。订餐机器人将用于在一家比萨饼店中接收订单。首先,我们将定义这个“帮助函数”,它将会收集我们的用户消息,以便我们避免手动输入它们。与之前一样,这个函数将从用户界面中收集提示,并将它们附加到一个称为上下文的列表中,然后每次都会使用该上下文来调用模型。
标签:开发人员,提示,Pasted,image,solution,我们,note,chatgpt,模型 From: https://www.cnblogs.com/Leo2gooo/p/17369048.html