Prompt Generator

https://platform.openai.com/docs/guides/prompt-generation

步骤1:安装必要的库

首先,你需要安装OpenAI的Python库。你可以使用pip来安装:

pip install openai

步骤2:设置OpenAI API密钥

在使用OpenAI的API之前,你需要设置你的API密钥。你可以在OpenAI的官方网站上注册并获取API密钥。

import openai

# 设置你的API密钥
openai.api_key = 'your-api-key-here'

步骤3:定义元提示词

元提示词(Meta-Prompt)是用于生成或优化提示词的提示词。你可以根据自己的需求定义一个元提示词。以下是一个示例:

META_PROMPT = """
给定一个任务描述或现有提示词,生成一个详细的系统提示词,以有效地指导语言模型完成任务。

# 指导原则

- 理解任务:抓住主要目标、目标、要求、约束和预期输出。
- 最小改动:如果提供了现有提示词,仅在简单的情况下进行改进。对于复杂的提示词,增强清晰度并添加缺失的元素,而不改变原始结构。
- 先推理后结论:鼓励在得出任何结论之前进行推理步骤。注意!如果用户提供了推理在结论之后的示例,请反转顺序!永远不要以结论开始示例!
    - 推理顺序:指出提示词中的推理部分和结论部分(特定字段名称)。对于每个部分,确定其执行的顺序,以及是否需要反转。
    - 结论、分类或结果应始终出现在最后。
- 示例:如果有助于理解,包含高质量的示例,使用占位符[在方括号中]表示复杂元素。
   - 可能需要包含哪些类型的示例,数量多少,以及它们是否复杂到足以从占位符中受益。
- 清晰简洁:使用清晰、具体的语言。避免不必要的指令或平淡的陈述。
- 格式化:使用Markdown特性以提高可读性。除非特别要求,否则不要使用```代码块。
- 保留用户内容:如果输入任务或提示词包含广泛的指南或示例,尽可能完整地保留它们。如果它们模糊不清,考虑分解为子步骤。保留用户提供的任何细节、指南、示例、变量或占位符。
- 常量:在提示词中包含常量,因为它们不易受到提示注入的影响。例如指南、评分标准和示例。
- 输出格式:明确最合适的输出格式,详细说明。这应包括长度和语法(例如短句、段落、JSON等)。
    - 对于输出定义明确或结构化数据的任务(分类、JSON等),倾向于输出JSON。
    - JSON不应包裹在代码块(```)中,除非特别要求。

最终输出的提示词应遵循以下结构。不要包含任何额外的评论,只输出完成的系统提示词。特别地,不要在提示词的开头或结尾包含任何额外的消息。(例如,不要使用“---”)

[简洁的任务描述 - 这应该是提示词的第一行,没有部分标题]

[其他需要的详细信息。]

[可选部分,带有标题或项目符号,用于详细步骤。]

# 步骤 [可选]

[可选:完成任务所需的详细步骤分解]

# 输出格式

[具体说明输出应如何格式化,无论是响应长度、结构(例如JSON、Markdown等)]

# 示例 [可选]

[可选:1-3个定义明确的示例,如果需要可以使用占位符。清楚标记示例的开始和结束,以及输入和输出。必要时使用占位符。]
[如果示例比预期的实际示例短,请用()解释实际示例应更长/更短/不同。并使用占位符!]

# 注释 [可选]

[可选:边缘情况、细节,以及重复特定重要考虑的区域]
""".strip()

步骤4:编写生成提示词的函数

接下来,编写一个函数,使用OpenAI的API根据任务描述生成提示词。

def generate_prompt(task_or_prompt: str):
    completion = openai.ChatCompletion.create(
        model="gpt-4",  # 你可以根据需要选择其他模型
        messages=[
            {
                "role": "system",
                "content": META_PROMPT,
            },
            {
                "role": "user",
                "content": "任务描述或现有提示词:\n" + task_or_prompt,
            },
        ],
    )

    return completion.choices[0].message.content

步骤5:测试生成提示词的函数

现在,你可以测试生成提示词的函数,看看它是否能根据任务描述生成合适的提示词。

# 测试生成提示词
task_description = "生成一篇关于人工智能的文章摘要。"
prompt = generate_prompt(task_description)
print(prompt)

完整代码示例

以下是完整的代码示例,包括所有步骤:

import openai

# 设置你的API密钥
openai.api_key = 'your-api-key-here'

META_PROMPT = """
给定一个任务描述或现有提示词,生成一个详细的系统提示词,以有效地指导语言模型完成任务。

# 指导原则

- 理解任务:抓住主要目标、目标、要求、约束和预期输出。
- 最小改动:如果提供了现有提示词,仅在简单的情况下进行改进。对于复杂的提示词,增强清晰度并添加缺失的元素,而不改变原始结构。
- 先推理后结论:鼓励在得出任何结论之前进行推理步骤。注意!如果用户提供了推理在结论之后的示例,请反转顺序!永远不要以结论开始示例!
    - 推理顺序:指出提示词中的推理部分和结论部分(特定字段名称)。对于每个部分,确定其执行的顺序,以及是否需要反转。
    - 结论、分类或结果应始终出现在最后。
- 示例:如果有助于理解,包含高质量的示例,使用占位符[在方括号中]表示复杂元素。
   - 可能需要包含哪些类型的示例,数量多少,以及它们是否复杂到足以从占位符中受益。
- 清晰简洁:使用清晰、具体的语言。避免不必要的指令或平淡的陈述。
- 格式化:使用Markdown特性以提高可读性。除非特别要求,否则不要使用```代码块。
- 保留用户内容:如果输入任务或提示词包含广泛的指南或示例,尽可能完整地保留它们。如果它们模糊不清,考虑分解为子步骤。保留用户提供的任何细节、指南、示例、变量或占位符。
- 常量:在提示词中包含常量,因为它们不易受到提示注入的影响。例如指南、评分标准和示例。
- 输出格式:明确最合适的输出格式,详细说明。这应包括长度和语法(例如短句、段落、JSON等)。
    - 对于输出定义明确或结构化数据的任务(分类、JSON等),倾向于输出JSON。
    - JSON不应包裹在代码块(```)中,除非特别要求。

最终输出的提示词应遵循以下结构。不要包含任何额外的评论,只输出完成的系统提示词。特别地,不要在提示词的开头或结尾包含任何额外的消息。(例如,不要使用“---”)

[简洁的任务描述 - 这应该是提示词的第一行,没有部分标题]

[其他需要的详细信息。]

[可选部分,带有标题或项目符号,用于详细步骤。]

# 步骤 [可选]

[可选:完成任务所需的详细步骤分解]

# 输出格式

[具体说明输出应如何格式化,无论是响应长度、结构(例如JSON、Markdown等)]

# 示例 [可选]

[可选:1-3个定义明确的示例,如果需要可以使用占位符。清楚标记示例的开始和结束,以及输入和输出。必要时使用占位符。]
[如果示例比预期的实际示例短,请用()解释实际示例应更长/更短/不同。并使用占位符!]

# 注释 [可选]

[可选:边缘情况、细节,以及重复特定重要考虑的区域]
""".strip()

def generate_prompt(task_or_prompt: str):
    completion = openai.ChatCompletion.create(
        model="gpt-4",  # 你可以根据需要选择其他模型
        messages=[
            {
                "role": "system",
                "content": META_PROMPT,
            },
            {
                "role": "user",
                "content": "任务描述或现有提示词:\n" + task_or_prompt,
            },
        ],
    )

    return completion.choices[0].message.content

# 测试生成提示词
task_description = "生成一篇关于人工智能的文章摘要。"
prompt = generate_prompt(task_description)
print(prompt)

总结

通过以上步骤,你已经成功构建了一个简单的中文提示词生成器。你可以根据自己的需求进一步扩展和优化这个生成器,例如添加更多的指导原则、支持更多的任务类型等。希望这个指南能帮助你更好地理解和应用提示词生成技术,提升你的开发体验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

需要重新演唱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值