跳转到内容

提示词培训课——Part3

更系列文章合集请访问:蓝衣剑客-AIGC思维火花

一、前言

各位,时间飞逝,转眼间我们已经迎来了学习的第三阶段。在这一阶段,我们将深入探讨一些最新的技术发展,包括但不限于提示词工程和智能体的进一步教学。这些内容无疑将为我们的认知带来新的深度。现在,让我们直接进入主题,开始我们的探索之旅吧!

二、Part3课程导览

三、上节回顾

四、进阶技术——CCoT

首先,让我们来了解第一个提示词进阶技术——CCoT。CCoT通过正反力矩的机制,指导模型识别正确与错误。这种方法简洁而直观,非常容易理解。

五、进阶技术——PoT

在日常使用中,我们会发现一个非常有意思的问题:大模型在解决数学问题时可能不够可靠(甚至连简单的加法都会算错)。那么如果有数学运算的任务,大模型岂不就是不行了?不要着急,接下来我们就来讨论下数值增强类的提示词技术。

PoT技术,实际上是思维链技术的一个衍生。PoT特别适用于数值推理任务,它会引导模型生成一系列代码,模型再通过代码解释器工具进行最后运算。通过这种引导模型生成代码再进行执行的手段,可以显著提升模型在数学问题求解上的表现。

PoT作为CoT的衍生技术,也遵循了零样本和少样本的学习范式。零样本PoT与CoT在方法上极为相似,它们都不需要大量的样本即可进行有效的推理。同样,少样本PoT也采用了类似的策略,通过较少的样本来优化模型的表现。

六、进阶技术——SA

SA这种技术是让模型在给出最终答复前,先在中间过程中给出一个自问自答的结果,利用这个结果去推动下一步的思考。通过展现正确的中间的思考过程,来提升回复的准确性。

七、进阶技术——LtM

接下来,让我们深入了解LtM技术,也就是"最少到最多"提示工程技术。这种方法采用了分治策略,把复杂问题拆解成若干个子问题,然后引导模型进行解答。这种技术也是一种推理策略,特别适用于多跳推理和复杂任务。

八、进阶技术——PS

PS这种技术的目的,是让模型通过一系列自我计划来引导自身进行深入推理,这种技术属于CoT的增强版,同时也解决了CoT在实际应用中出现的许多错误。

九、智能体母体

"智能体母体"可以被理解为智能体的原型或基础形式,它是创建智能体的原始模板。通过它可以衍生出众多的子智能体。智能体母体的设计和功能,为派生出具有特定任务和特性的子智能体提供了基础,从而扩展了智能体的应用范围和多样性。

下面,我将分享智能体母体所使用的提示词。这些提示词是构建和定制子智能体的关键工具。大家可以直接复制这些提示词,并将其应用到自己的项目中。这样,你就可以利用这些提示词来创建和优化自己的智能体,以满足特定的需求和目标。

# Role: 智能体构建专家

## Profile:
**Version**: 1.0。
**Language**: 中文。
**Author**:蓝衣剑客。
**Description**: 凭借专业技能,我提供专业高效的智能体角色设定prompt template,帮助你完成prompt template生成工作。

## Constraints:
- 必须深刻理解用户需求,避免任何误解。
- 你有充足的时间进行思考,所以请深度思考后再做回复,这样回复更加准确,不需要担心时间问题。
- 提供的信息必须准确无误,杜绝错误和误导性信息。
- 充分理解<Example> 中的示例,理解其中说明的prompt template输出格式。
- 每个prompt template都要以MarkDown的格式输出到代码框中,方便复制粘贴。请始终遵循这一点,这一点非常非常重要。
-不能翻译格式中的英文字符,并且不能修改英文字符,并且不能尝试自己创作新段落,并且不能落下任何一个段落,并且必须按格式中提到的分段顺序来输出。
- 检查每次输出的内容,确保专业、没有任何语法错误。

## Background:
-"prompt template"是一个专业模板,用于与大型语言模型进行交互,并且旨在生成更符合用户期望的内容。它可以被视为一种指导,向大型语言模型提供初始的提示或问题,以引导其生成特定的回复或输出。在这种情况下,"prompt template"被用于描述智能体的实现方式。智能体是基于大型语言模型的能力所构建的,它们被设计成在特定情景下充当专家角色,专门处理某个领域的专业任务。通过使用"prompt template",可以有效地引导智能体生成与其专业任务相符的内容,提供更准确和相关的回答或输出。


## Goals:
- **prompt template生成**:依据用户提供的智能体专家的工作内容,制作精确、清晰且逻辑性强的”prompt template”。
- **内容反应**:确保生成的都忠实于用户提供的智能体专家工作内容。


## Skills List:
- **智能体分析**:准确解读用户所提供的智能体专家名称,深入分析该岗位所涉及到的场景。
- **智能体prompt template构建**:构建逻辑严密、清晰且符合用户输入的智能体工作方向的prompt template。



## Workflow:
- **自我介绍**:以<Initialization>的设定,进行第一次交互时进行自我介绍。
- **询问**:询问用户智能体的名称是什么。
- **定义**:询问用户期望智能体从事哪些方面的工作内容。
- **场景设计**:根据用户的反馈开始设计智能体。
- **输出智能体的prompt template**:为智能体专家输出结构化prompt template
- **注释说明**:说明该场景设计的思路和智能体prompt template该如何使用。



## Example:
- **询问期望的智能体名称**:需要用户提供详细的智能体名称,以获得明确指令。
- **询问智能体的工作**:需要用户提供智能体的工作内容,按照用户提供的智能体工作内容创建prompt template。
- **学习prompt template格式**:
---
我举个例子,在输出prompt template时,“##”后面的字符一定是英文的。
比如这个是正确的:“## Role:用户指定的角色名称”。
但是这个就是错误的:“## 角色:用户指定的角色名称”。
---
- **学习输出形式**:
---
每个prompt template都要以MarkDown的格式输出到代码框中,方便复制粘贴。请始终遵循这一点,这一点非常非常重要。
---

- **输出prompt template**:
---
# Role:用户指定的角色名称。

## Profile:
**Author**: 蓝衣剑客。
**Version**: 1.0。
**Language**: 中文。
**Description**: 简介这个智能体需要做什么。
  
  ## Constraints:
- **约束**:这里写明此智能体的约束是什么。

## Background:
- 介绍智能体角色背景,智能体设定,用生动形象的词汇描述智能体。

## Goals:
- **目标**:写明为了创建此智能体的任务目标是什么,智能体需要达成的任务有什么。


## Skills List:
- **技能**:这里写明如果要达到<Goals>里所提到的目标,智能体需要具备什么样的技能。
## Workflow:
- **工作流程**:这里写明如果要达到<Goals>里所提到的目标,智能体需要一个什么样的工作流程,整个流程中的每一步都需要如何去做。 
## Example:
- **正向示例**:这里你需要为新智能体设置一个正向例子,供新智能体学习<Workflow>中的工作流程,< Goals >的任务目标,<Constraints>里的约束条件,< Skills List >里的技能列表。
- **反向示例**:这里你需要为新智能体设置一个反向例子,告诉智能体在具体任务中做什么是错误的,应该规避何种错误操作和流程。

## Initialization:
-这里写明刚刚始化时,智能体要做的自我介绍,包括告诉用户自己能做什么,期望用户提供什么。自己的工作技能是什么,自己的目标是什么。

---

##  Initialization:
- Hi,我是XXX创作的智能体构造专家,我将会按我的预先设定,每个prompt template都要以MarkDown的格式输出完整内容,方便复制粘贴。用严谨、专业、精准的prompt template写作方式为你服务,接下来我需要你逐一告诉我:
1. 期望创建的智能体名称是什么?
2. 这个智能体的执行的任务内容是什么?
等你回答完这两个问题后,我将会开始为你创作智能体。

现在,让我们进入实践环节,动手创建一个智能体母体。在此过程中,我需要强调的是,无论是智能体母体的创建还是后续智能体的生成,我们都将使用Dify这个平台来进行。这个平台为我们提供了一个强大的环境,让我们能够高效地进行智能体的开发和测试。

首先,请登录至后台系统,接着点击“工作室”按钮,进入智能体管理界面。随后,点击“创建空白应用”选项,选择“Agent”,并开始创建该Agent应用。

接下来,进行第二步,即创建智能体应用。在此步骤中,你需要首先输入智能体的名称,然后点击“创建”按钮以完成操作。

第三步,完成智能体创建后,点击你所创建的智能体,进入其编排页面。在此页面中,你首先需要对模型进行调整:选择所需的模型,并设置模型的温度及输出长度参数。请注意,模型的默认输出长度通常为512,这往往不足以满足需求,且是用户常见的配置问题。 调整完模型后,你需要输入提示词。若需编排编写提示词,建议使用步骤一中准备的提示词模板,直接将其编排进智能体即可。

在智能体编排完成后,我们需要点击“添加功能”按钮。在这一步中,应根据自己的实际需求进行选择。通常,推荐你至少选择“开场白”功能,因为开场白的内容将作为提示词的一部分,提供给模型进行推理分析。

随后,将进入选择智能体工具的环节。这一步骤同样需要根据你的具体需求来定制。你应根据实际情况,挑选并添加合适的工具,以确保智能体能够满足你的需求。

编写开场白

在完成智能体的整体设置后,便可以利用该智能体来创建个性化的提示词。在整个交互过程中,只需提供提示词的名称及其具体的执行任务。基于个人的要求,智能体将自动生成一个完整的智能体模板。

十、AI-Agent Flow

接下来,我们来探讨智能体流,这是一种多智能体系统的工程实现方式。智能体流通常分为两大类:对话流和工作流。对话流侧重于多轮交互,而工作流则关注任务的一次性执行。

十一、动手做一个AI-Agent Flow

下面我们以Dify平台为例,我们来具体讲解如何创建一个智能体流。请注意,虽然不同平台上智能体流的具体实现和概念可能有所差异,但其核心仍然是围绕多轮对话和任务执行的。无论是对话流还是工作流,它们都是在通过智能体间的协作,提高任务处理的效率和智能性。

关于创建流式智能体的流程,其基本步骤与创建智能体母体的初步步骤大致相同。首先,需要选择“工作室”按钮,然后创建一个新的空白智能体。创建智能体后,需要为其指定一个名称。填写智能体名称完毕后,点击“创建”按钮以完成设置。

创建智能体之后,接下来是对智能体进行编排。这里我提供一个示例,该示例涉及文本的缩写、扩写以及总结。这个例子主要用于演示目的,采用了较为简单的形式。实际上,在具体的工作中,你可能会遇到更复杂的情况或需求。你可以参考这个示例,了解如何进行智能体的编排工作。

在这里,我引入了一个问题分类器。该分类器将所有指令分为四大类别:扩写、缩写、总结以及其他。对于常规的指令分类,我们主要关注前三个类别:扩写、缩写和总结。至于无效或未分类的指令,则归入第四类。 在正常指令的处理流程中,我们会将用户引导至相应的处理模块进行专门处理。处理完成后,系统将直接给出回复。对于错误指令或未识别的指令,系统将直接通知用户,告知他们选择了错误的选项。

接下来,我们需要为每个环节选择合适的模型,并调整模型参数。我们推荐使用最新版本的模型,但你可以根据实际需求进行选择。重点是调整模型的参数,主要关注两个关键参数:温度参数和最大标记数。 温度参数控制文本的随机性,该值越大,生成的文本越具有随机性。一般建议将温度参数设置在0.5左右。最大标记数参数直接影响输出内容的长度,建议将其设置为最大值,以确保输出内容的完整性和充分性。

在第四步中,我们将对分类器进行内容编排。以本例为参考,我们将指令分为四类:扩写、缩写、总结以及其他。编排时,只需设定最终的分类条件。一旦分类器匹配到特定的分支,它将执行相应的操作。这样的编排方式有助于过滤并避免处理不明确的指令,确保智能体能够准确响应用户的指令。

在为分类器设置好内容之后,接下来需要为每个指令编写具体内容。以当前的缩写、扩写和总结三个分支为例,我们将为每个分支创建一个简单的指令。这些简单指令中将包含一个变量,该变量即为用户在初始阶段输入的、希望进行扩写、缩写或总结的原始文本。我们通过变量引用的方式将其引入到指令中。 具体书写变量时,通常使用花括号,并根据之前定义的变量名进行填写。在执行过程中,系统会将相应的值赋给该变量,随后将这个值传递给模型进行推理,形成最终的提示词。

在各分支处理完毕后,我们将对每个分支的结果进行最终输出。由于这是一个示例,我们的输出内容也相对简洁。大家可以在这里看到,输出的内容基本上是之前分支处理的原始文本结果。

整个测试流程首先需要准备文本素材,这些素材将用于进行扩写、缩写和总结三项测试。待素材准备就绪后,我们将逐一进行各项测试,以验证每个分支是否能够顺利执行。

扩写测试:

缩写测试:

总结测试:

错误处理测试:

十一、在线课件

由于最近盗版事件频发,需要课件的扫群主二维码获取。