微信扫码
与创始人交个朋友
我要投稿
译自
https://learn.codesignal.com/preview/courses/76/journey-into-format-control-in-prompt-engineering
因为内容比较简单,固一个主题下的5课一起翻译
这里是第3个主题: 输出格式控制
良心出品,干货满满,简单易懂
格式化基础:打造精确提示
清晰要点:在提示工程中构建列表回应
Markdown标题在输出格式化中的应用
结构化数据精通:LLM回应中的JSON和YAML格式
可执行代码精通:确保LLMs仅产生可运行的输出
欢迎来到“格式化基础:打造精确提示”,这是我们课程“深入格式控制的提示工程之旅”中的一个重要章节。本课程旨在向您介绍定制和控制大型语言模型(LLMs)输出格式所需的基本技能。了解如何有效地传达您的格式需求,无论您需要的是一个简单的列表还是一个结构化的JSON
对象,都可以极大地提高您收到的回应的可用性。让我们一起踏上这段探索之旅,揭开精确和定制提示结果的秘密。
我们向LLM
提出请求或指令的方式,可以显著影响我们收到的回应类型。正确格式化我们的提示就像提供清晰的指导一样,确保LLM
确切地知道我们在寻找什么。这里有一个简单的示范:
__ASK__
List the top three benefits of using LLMs.
列出使用LLMs的前三大好处。
__CONSTRAINTS__
- Use bulleted list format.
- 使用项目符号列表格式。
示例输出:
- 提高内容生成效率:LLMs可以快速生成书面材料,加速报告撰写、网站内容创建和电子邮件起草等任务。
- 信息获取的改善:它们可以总结复杂文档,翻译语言,并提供即时问题答案,使信息对用户更加可获取。
- 个性化学习和协助:LLMs可以适应个人用户需求,提供教育环境中的定制辅导或个性化内容推荐,从而增强用户体验。
就像食谱指导您完成每一道菜的步骤一样,提示中提供详细指令可以使LLM
产生您追求的确切格式。这可能包括指定使用项目符号、编号列表,甚至是像JSON
这样的复杂数据结构。为什么是JSON
?有时您的提示输出需要被计算机而不是人类消化,像JSON
这样的结构化格式对计算机来说更容易处理。
这里有一个例子:
__ASK__
Generate a JSON object representing a simple to-do list.
生成一个表示简单待办事项列表的JSON对象。
__CONSTRAINTS__
- Include keys for "task" and "priority".
- 包括“任务”和“优先级”的键。
- Limit to three items.
- 限制为三项。
然后,您可能会收到类似这样的输出:
[
{
"task": "完成提示工程课程",
"priority": "高"
},
{
"task": "准备会议议程",
"priority": "中等"
},
{
"task": "预约兽医",
"priority": "低"
}
]
掌握格式化提示的艺术不仅仅是为了达到特定的美学效果;它是关于增强与LLMs
的沟通,以获得最有效和可用的输出。随着我们继续这门课程,记住我们如何提问与我们提问什么同样重要。有了正确的格式化核心原则,我们更有能力探索提示工程的巨大潜力,确保我们与LLMs
的互动尽可能高效和有成效。
欢迎来到我们的下一课,名为 “清晰要点:在提示工程中构建列表回应”。在理解和掌握大型语言模型(LLMs)的提示工程的旅程中,引导模型以特定格式生成回应以满足我们多样化的需求至关重要。本课程重点介绍构建提示的方法,以产生有组织、项目符号列表的输出。无论是生成想法列表、流程步骤还是类别项目,掌握这项技能都将增强AI回应的清晰度和可用性。
清晰和精确是提示工程的基石。当要求LLM生成一个项目符号列表时,提示不仅需要传达信息的请求,还需要传达信息的期望结构。
以下是一些需要记住的核心原则:
明确格式要求:直接提及您希望输出为项目符号列表格式。
情境化提问:提供足够的背景信息,以确保回应的准确性和相关性。
简洁是关键:保持提示简单直接,避免混淆模型。
让我们比较两个提示。一个没有特定的格式化指令,而另一个包含了:
__ASK__
List the health benefits of drinking water.
列出喝水的健康益处。
这将返回一个相当长且不完全结构化的回应,可能包括引言和结论。
__ASK__
Provide a bulleted list of the health benefits of drinking water.
提供喝水的健康益处的项目符号列表。
__CONSTRAINTS__
- Do not include an introduction or a conclusion
- 不包括引言或结论
- Use a bulleted list to organize the list
- 使用项目符号列表组织列表
示例输出:
- 维持体液平衡
- 帮助控制卡路里
- 激活肌肉
- 支持皮肤健康与美容
- 确保肾脏功能正常
- 维持正常的肠道功能
如您所见,我们得到了一个更专注且结构更好的输出。
如果我们想进一步增强提示以包括子项目符号,我们可以通过约束和示例来实现。
__ASK__
Provide a bulleted list of the health benefits of drinking water.
提供喝水的健康益处的项目符号列表。
__CONSTRAINTS__
- Do not include an introduction or a conclusion
- 不包括引言或结论
- Use a bulleted list to organize the list.
- 使用项目符号列表组织列表。
- Include only a few top-level bullets but go one or more level deeper to add sub-bullets.
- 只包括少数顶级项目符号,但深入一个或多个级别以添加子项目符号。
__FORMAT EXAMPLE__
- **Hydration and Physical Health**
- **水分补充与身体健康**
- **Maintains balance of body fluids**
- **维持体液平衡**
- Aids in digestion
- 帮助消化
- Regulates body temperature
- 调节体温
- Transports nutrients
- 运输营养
- **Energizes muscles**
- **激活肌肉**
- Prevents muscle fatigue
- 预防肌肉疲劳
- Enhances exercise performance
- 提高运动表现
- **Ensures proper kidney function**
- **确保肾脏功能正常**
- Helps flush out toxins
- 帮助排出毒素
- Reduces risk of kidney stones
- 降低患肾结石的风险 22...
请注意,在这个示例中,我们将部分命名为__FORMAT EXAMPLE__
而不是__EXAMPLE__
,以指定这不是一个确切的例子,而是一个格式示范。还要注意,即使我们没有在要求中指定顶级项目符号应该加粗,格式示例足以得到这样的输出。
从LLM获取项目符号列表回应需要精确性、清晰度和对Markdown格式化的深入理解。通过明确表达您对项目符号列表的需求并提供清晰的上下文,您可以显著提高AI输出的有效性和可用性。这项技能在许多应用中都是无价的,从生成报告到以易于消化的格式总结信息。通过不同提示和场景的练习,将磨练您引导LLM产生结构化和有意义的项目符号列表的能力。
本课程旨在为提示工程师提供指导LLMs以Markdown标题结构化输出的技术。目标是通过精确的提示构建来提高回应的可读性和组织性。此外,在输出中使用Markdown标题可以使解析输出变得更加容易。
成功生成带有Markdown标题格式输出的关键在于提示中明确的指令以及提供示例:
让我们直接深入示例,展示如何将Markdown标题格式化指令整合到您的提示中。
假设您正在撰写一份生物学报告,并希望与LLM合作完成,但您希望报告能够以Markdown格式良好地结构化。您的初始提示可能是这样的:
__ASK__
Describe the process of photosynthesis.
描述光合作用的过程。
这个提示将产生一个叙述或列表,缺乏结构化的层级。
__ASK__
Outline the process of photosynthesis using markdown headers for each main step.
使用Markdown标题概述光合作用过程的每个主要步骤。
__FORMAT EXAMPLE__
# Photosynthesis Process
# 光合作用过程
## Light Absorption
## 光吸收
Description...
描述...
## Carbon Dioxide Fixation
## 二氧化碳固定
Description...
描述...
...
通过包含明确的格式化请求和结构示例,提示更有可能引发一个组织良好且易于导航的回应。
如果您只想使用特定的标题,如h2
类型标题(在Markdown中是##
),而不是上面提示产生的多样化标题,怎么办?
__ASK__
Detail the journey of a red blood cell through the human body using markdown headers for each organ system it passes through.
使用Markdown标题详细描述红细胞在人体中的旅程,它通过的每个器官系统。
__CONSTRAINTS__
- Only use h2 type headers (`##`) in the markdown.
- 只在Markdown中使用h2类型标题(`##`)。
- Also include markdown tables for better information organization.
- 还包括Markdown表格以更好地组织信息。
__FORMAT EXAMPLE__
## Journey of a Red Blood Cell
## 红细胞的旅程
## Heart
## 心脏
## Right Atrium to Right Ventricle
## 右心房到右心室
## Lungs
## 肺部
## Gas Exchange
## 气体交换
...
这个提示展示了如何通过添加约束部分可以使您期望的输出更加受控。
制作能够引导出带有Markdown标题组织的回应的提示是直接的,但需要明确的格式化请求。尝试不同级别的标题规范,以实现期望的信息结构深度。熟练度来自于实践,而您提示中的精确性将产生越来越结构化和有用的LLMs输出。
让我们进入《提示工程中的格式控制》课程中的“结构化数据精通”部分。在数据交换和系统集成的世界里,了解如何指导大型语言模型(LLMs)生成结构化数据格式至关重要。本课程将引导您了解如何提示LLMs返回定义良好、机器可读的格式数据的细微差别。无论您是在处理Web API、配置软件,还是仅仅在组织数据,掌握这些技能都将显著增强您的数据操作和自动化能力。
在我们深入具体内容之前,让我们把握构成生成结构化格式的基础原则:
指令的精确性:清晰地表达您期望作为输出的特定格式,无论是JSON
、YAML
还是任何其他结构化格式。
情境清晰性:提供足够的情境信息,以符合预期的结构化数据格式。
让我们通过一些示例的结果来探索这些原则。
假设您想以JSON格式检索用户数据。以下是您可能如何构建提示的方式:
__ASK__
Generate sample user information in JSON format.
生成JSON格式的样本用户信息。
__CONSTRAINTS__
- The information should include name, age, and email of the user.
- 信息应包括用户的姓名、年龄和电子邮件。
__EXAMPLE__
{
"name": "Jane Doe",
"age": 28,
"email": "jane.doe@example.com"
}
这个提示清晰地指导LLM以JSON格式格式化输出。让我们观察其输出:
{
"name": "Jane Doe",
"age": 28,
"email": "jane.doe@example.com"
}
现在,如果您需要以YAML格式获取相同信息,您的提示可能类似于这样:
__ASK__
Generate sample user information in YAML.
生成YAML格式的样本用户信息。
__CONSTRAINTS__
- The information should include name, age, and email of the user.
- 信息应包括用户的姓名、年龄和电子邮件。
- Include example for 5 users different from the examples provided by me.
- 包括5个与我提供的示例不同的用户的示例。
- Pay careful attention to spacing consistency shown in the __EXAMPLE__ to ensure proper YAML syntax.
- 注意在_EXAMPLE__中显示的间距一致性,以确保正确的YAML语法。
__EXAMPLE__
- name: Jane Doe
age: 28
email: jane.doe@example.com
- name: John Smith
age: 32
email: john.smith@example.com
让我们解释一下我们在这里做了什么。首先,我们包含了一个具有特定间距指南的示例。虽然我们可以尝试在约束部分解释这些要求,但这是一个例子胜过千言万语的情况。我们还包含了我们正在寻找的样本数量,并指导LLM注意_EXAMPLE__
部分中的间距,因为YAML对此非常敏感。
精通特定格式提示的艺术为您在提示工程中装备了一项强大的技能。本课程提供了所需的知识和示例,让您有信心从LLMs请求并接收像JSON
和YAML
这样的结构化格式数据。在您的提示构建中实施这些原则和示例,将确保您能够利用LLMs完成需要精确数据格式的任务,从而为数据操作和系统集成开辟新途径。
欢迎来到本课程的最后一课!本课程重点在于提升一项至关重要的技能集:构建提示,让LLMs生成的不仅仅是任何代码,而是可执行的代码。在我们学习这节课的过程中,让我们始终记住:对于可运行代码的提示工程艺术,并不依赖于复杂性,而是清晰和精确。
在LLMs的上下文中,可运行代码意味着代码可以立即执行,无需任何修改或纠正。它是即时的、可操作的,而且最重要的是,正确的。从LLM获取可运行代码需要深刻理解你正在请求代码的语言以及预期执行环境。
__ASK__
Generate a Python function that adds two numbers.
生成一个添加两个数字的Python函数。
__CONSTRAINTS__
- Use Python 3 syntax.
- 使用Python 3语法。
- Ensure the code can be run without any modifications.
- 确保代码可以无需任何修改即可运行。
这个提示将返回我们想要的函数,但很可能也会包括关于编写代码的介绍或结尾部分。这意味着,如果我们想要将这个输出输入到一个可以运行代码的编译器中,我们会遇到困难。
让我们看看如何完善上面的提示,只给我们代码,其他什么都不要。
__ASK__
Generate a Python function that adds two numbers.
生成一个添加两个数字的Python函数。
__CONSTRAINTS__
- Use Python 3 syntax.
- 使用Python 3语法。
- Ensure the code can be run without any modifications.
- 确保代码可以无需任何修改即可运行。
- Do not include an introduction or a conclusion, just give me the code.
- 不包括介绍或结论,只给我代码。
示例输出:
def add_numbers(a, b):
return a + b
通过添加新的约束,LLM理解到你只想要可运行的代码。你仍然可能会得到格式化为Markdown反引号的代码,所以如果你也想跳过这些,考虑包含一个示例。
总之,要直接从LLMs获取可运行的代码,提示的精确性和清晰性至关重要。通过明确指定不仅代码的要求,还有简洁性和排除任何非代码元素的需求,你引导LLM产生干净、可执行的代码。是时候动手实践这些了。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-03-30
2024-04-26
2024-05-10
2024-04-12
2024-05-28
2024-05-14
2024-04-25
2024-07-18
2024-04-26
2024-05-06
2024-12-22
2024-12-21
2024-12-21
2024-12-21
2024-12-21
2024-12-20
2024-12-20
2024-12-19