Datawhale - AI冬令营 - AI Agent 学习笔记task2

249 阅读6分钟

如何写Prompt?

Prompt是什么?

Prompt指的是一个输入的文本段落或短语,作为生成模型输出的起点或引导。它可以是一个问题、一段文字描述、一段对话或任何形式的文本输入。模型会基于Prompt所提供的上下文和语义信息,生成相应的输出文本。

Prompt的作用

在大语言模型领域中,Prompt就是用户的输入,而模型会根据这个输入来预测下一个词出现的概率,从而逐字生成出下文。Prompt可以归类为多种不同的模式,以适应不同的应用场景和需求,例如:

  1. 特定指令:明确告诉模型需要执行的具体任务,如“生成一篇关于量子计算的科技新闻文章”。
  2. 指令模板:提供一种通用的指令格式,允许用户根据需要填入不同的内容,如“以‘红宝石咖啡馆,纵享每一口丝滑!’为标题写一篇小红书文案”。

如何写Prompt?

  1. 明确目标:确定你想要通过prompt实现的具体目标或结果。
  2. 分析缺陷:评估当前情况或已有方案,找出存在的问题或不足之处。
  3. 分析要素:详细思考为实现目标,prompt需要包含哪些关键信息或要素。
  4. 撰写prompt:基于前面的分析,开始撰写具体的prompt,确保语言清晰、准确。
  5. 测试:验证prompt是否满足需求,是否达到预期效果。如果测试结果不理想,需回到前面的步骤调整和优化。
  6. 引入案例:将prompt应用到具体场景中,通过实际案例验证其有效性和实用性,同时作为后续改进的基础。
  7. 辅助工具与资源:在流程中,可能使用到工具包(包含常用工具或资源)、prompt结构优(提供结构化的思考方式)和prompt框架(帮助组织prompt内容)等辅助手段。

Prompt流程.png

<图片引自Datawhale-AI Agent活动-task2>

工具包神器介绍

1. Prompt框架——CO-STAR 框架

Prompt框架中的CO-STAR框架是一种用于设计prompt结构的模板,它包含六个核心部分,旨在引导语言模型生成更加精准、贴合需求的响应内容。

  1. Context(上下文) :为任务提供背景信息,帮助语言模型理解讨论的具体场景,确保生成的反馈具有相关性。
  2. Objective(目标) :明确告诉语言模型需要执行的具体任务,即期望的输出结果。
  3. Style(风格) :设定语言模型的“语气”,比如正式、幽默或亲切等,以符合特定的交流氛围或要求。
  4. Tone(语调) :调整语言模型的“情感”,让回应更符合用户的情绪或期望的情感色彩。
  5. Audience(受众) :确定目标听众是谁,比如专家、新手或孩子等,以便生成适合该受众群体的内容。
  6. Response(响应) :规定语言模型输出的格式,如列表、故事、报告或文本段落等,以满足用户的需求。

给出一个例子:

任务背景:假设你是一名社交媒体经理,需要为公司的新产品——一款新型超快速吹风机,在社交媒体平台上创建一个吸引人的帖子。

CO-STAR框架应用

  1. Context(上下文) :公司即将推出一款新型超快速吹风机,需要在社交媒体上进行宣传。
  2. Objective(目标) :创建一个引人注目的帖子,吸引潜在客户的注意,并鼓励他们点击链接了解更多信息或购买产品。
  3. Style(风格) :采用轻松、幽默且富有创意的风格,以区别于其他竞争对手的严肃宣传方式。
  4. Tone(语调) :使用积极、乐观的语调,传递出产品的高效性和便捷性。
  5. Audience(受众) :目标受众是年轻、追求时尚和科技感的消费者,特别是那些对快速吹风机有需求的群体。
  6. Response(响应) :帖子应该包含吸引人的标题、简短的产品介绍、使用场景展示以及购买链接。同时,为了增加互动性,可以添加一些问答或投票元素。

2. Prompt结构优化

Prompt结构优化确实是为了让提示词(Prompt)更易读、更清晰地表达需求,同时方便智能体(Agent)或语言模型区分和处理内容。

  1. 使用分隔符

    • 分隔符就像是交通信号灯,在Prompt中起到明确区分各部分内容的作用。
    • 可以使用特殊的字符序列,如“###”、“====”或“”等,来标记Prompt的不同部分。
    • 例如,在Prompt中使用“### 目标”来标记目标的开始,使用“### 背景”来标记背景信息的开始,以此类推。
  2. 明确标注各部分内容

    • 在Prompt中明确标注出目标、背景、约束条件、风格、受众等关键信息。
    • 可以使用加粗、斜体、下划线或不同颜色等方式来突出这些关键信息,使其更加显眼。
  3. 使用有序列表或无序列表

    • 对于包含多个要点或步骤的Prompt,可以使用有序列表(如1、2、3……)或无序列表(如-、*、+等)来组织内容。
    • 这有助于智能体更清晰地理解Prompt的结构和顺序,从而提高生成内容的逻辑性。
  4. 保持简洁明了

    • Prompt应尽可能简洁明了,避免使用过多的修饰词或复杂的句式。
    • 这样可以减少智能体的计算量,提高生成速度,同时避免产生冗余或偏离主题的内容。

3. 引入案例

在设计复杂Prompt时引入案例是一种非常有效的策略,这主要得益于大型语言模型(LLM)强大的学习能力。引入案例可以为Agent提供了一个具体的参考或模板,使其更清楚地理解你的期望和需求,同时,Agent可以掌握处理类似问题的技巧和方法,从而在未来的任务中表现得更好。

  1. 选择合适的案例

    • 选择与你的Prompt主题相关、具有代表性和典型性的案例。
    • 确保案例能够清晰地展示你的期望和需求,同时避免过于复杂或模糊的描述。
  2. 在Prompt中明确标注

    • 在Prompt中明确标注出案例的位置和用途。
    • 可以使用分隔符、标题或特殊标记来突出案例部分,使其更易于被Agent识别和处理。
  3. 提供详细解释

    • 如果案例本身较为复杂或难以理解,可以提供详细的解释或说明。
    • 这有助于Agent更好地理解案例的意图和背景,从而更准确地生成符合期望的输出。