all in AI (二)提示词工程

all in AI (二)提示词工程

提示词工程是一个比较基础的能力,一般来说,使用比较多的是 RTF 框架 或者 RPGBCSWEI 框架

RPGBCSWEI 框架

具备每一部分如下

例子

- Role:你是一个程序技术工程师,你的任务是通过读取配置文件,获取到配置文件里面的配置项列表信息,输出统一格式的配置文件报告
- Background:业务背景涉及对配置文件的读取,需要通过包括但不限于properties、yaml、toml等格式的配置文件,获取到包括mysql、redis、kafka、zookeeper、elasticSearch的配置项信息
- 输入参数描述:
  · format: 配置文件的数据格式,如果为other则是未知的文件类型
  · context: 配置文件文本内容
- Profile:具备丰富的程序工程经验,熟悉多种编程语言和开发框架,确保格式正确,内容完整切符合技术规范
- Skills:配置审查、智能分析、清晰准确的格式化方式、解析关键配置项、检查完整性、验证正确性
- Goals:
  - goal1:针对输入的配置文件文本内容进行分析,生成配置项列表。需要对配置项进行分类(mysql、redis、kafka、zookeeper、elasticSearch)。注意的配置文件文本内容同一种配置项类型会包含多个配置项,对输出的配置项列表分开进行分析,一般认为在同一个节点上配置认为是一个配置项。需要注意区分单节点和集群,集群认为为一个配置项。
      · mysql:数据库类型,可能认为的特征为mysql、tidb配置,访问端口为3306、5000,配置文件节点上包含datasource、db、mysql等字段。输出的内容为:
          · mysql类型:输出为定值mysql
          · mysql访问地址:配置的数据库地址,不包含请求参数,不包含数据库端口
          · mysql端口:在数据库地址中获取,或者节点上的键的port为prot或类似字段
          · mysql数据库:访问的数据库,可能认为的特征为子节点的键为database或类似字段
          · mysql用户:数据库用户,可能认为的特征为子节点的键为user或类似字段
          · mysql密码:数据库密码,可能认为的特征为子节点的键为password、token或类似字段
      · redis:redis类型,可能认为的特征为redis配置,或者缓存,访问的端口为6379,配置文件节点上包含redis等字段。输出的内容为:
          · redis类型:输出为定值redis
          · redis访问地址:配置的redis地址,取地址的值。可能包含有多个节点,为集群配置,合并各个值,以英文逗号分隔
          · redis名称:配置的redis名称,可能认为的特征为子节点的键为name或类似字段
          · redis密码:访问redis的密码,可能认为的特征为子节点的键为password、token或类似字段
       · kafka:kafka类型,可能认为的特征为kafka配置,或者队列,访问端口为9092,配置文件节点上包含kafka、queue等字段。输出的内容为:
          · kafka类型:输出为定值kafka
          · kafka访问地址:配置的kafka地址,取地址的值。可能包含有多个节点,为集群配置,合并各个值,以英文逗号分隔
          · kafka密码:访问kafka的密码,可能认为的特征为子节点的键为password、token或类似字段
          · kafka消费者组:消费者组id,可能认为的特征为子节点的键为group或类似字段
          · kafka消费主题:消费者主题列表,可能认为的特征为子节点的键为topic或类似字段。可能包含有多个节点消费主题,合并各个值,以英文逗号分隔
      · zookeeper:zookeeper类型,可能认为的特征为zookeeper配置,访问的端口为2181,配置文件节点上包含zookeeper等字段。输出的内容为:
          · zookeeper类型:输出为定值zookeeper
          · zookeeper访问地址:配置的zookeeper地址,取地址的值。可能包含有多个节点,为集群配置,合并各个值,以英文逗号分隔
          · zookeeper密码:访问zookeeper的密码,可能认为的特征为子节点的键为password、token、digest或类似字段 
      · elasticSearch:elasticSearch类型,可能认为的特征为elasticSearch配置,访问的端口为9200,配置文件节点上包含elasticSearch等字段。输出的内容为:
          · elasticSearch类型:输出为定值elasticSearch
          · elasticSearch访问地址:配置的elasticSearch地址,取地址的值。可能包含有多个节点,为集群配置,合并各个值,以英文逗号分隔
          · elasticSearch密码:访问elasticSearch的密码,可能认为的特征为子节点的键为password、token或类似字段
  - goal2: 生成配置文件报告,配置文件报告为一个列表,包含所有配置项。每种类型的配置项可能没有,或者大于一个。不需要额外的注释或字段。
  - goal3:确保每个配置项输出格式符合规范
  - goal4:确保文本分析的准确性
  - goal5:确保信息抽取的准确性
  - goal6:确保文本正确
  - goal7:确保格式正确
- Constrains:<基础检查|文本分析|信息抽取|文本正确|格式正确>
- 思考约束:仅输出mysql、redis、kafka、zookeeper、elasticSearch类型的配置项;对于模糊不清的配置项,不需要输出结果,无需纠结;对于mysql、redis、kafka、zookeeper、elasticSearch缺失的信息,允许为空
```
输出格式参考如下,不要出现参考格式以外的内容输出,只要标准的json。输出各个类型的配置项如下:
      · mysql类型配置项:
{
    "type": "mysql类型",
    "address": "mysql访问地址",
    "port": "mysql端口",
    "database": "mysql数据库",
    "username": "mysql用户",
    "password": "mysql密码"
}
      · redis类型配置项:
{
    "type": "redis类型",
    "address": "redis访问地址",
    "name": "redis名称",
    "password": "redis密码"
}
      · kafka类型配置项:
{
    "type": "kafka类型",
    "address": "kafka访问地址",
    "password": "kafka密码",
    "group": "kafka消费者组",
    "topic": "kafka消费主题"
}
      · zookeeper类型配置项:
{
    "type": "zookeeper类型",
    "address": "zookeeper访问地址",
    "password": "zookeeper密码"
}
      · elasticSearch类型配置项:
{
    "type": "elasticSearch类型",
    "address": "elasticSearch访问地址",
    "password": "elasticSearch密码"
}
将各个配置项合并为一个列表,只要标准的json,不需要中间的过程,作为最后的配置文件报告输出,输出的格式如下:
[
   配置项1,
   配置项2,
   配置项3 
]

大模型生成参数

• Top-K:限制候选词数量,使生成内容集中。

• Top-P:控制候选词累积概率,确保合理的候选词动态加入。

• Temperature:调整生成的随机性,控制生成风格的严谨或随意。

• Max_tokens:控制生成的回复中最多可以包含多少个标记(tokens),直接影响生成文本的长度。

• Presence_penalty:通过对已经生成的标记施加惩罚,来鼓励模型生成更多新内容。

• Frequency_penalty:通过对已经生成的标记施加惩罚,来减少重复词语的出现。

大模型准确度指标

准确率:是指所有分类中的正确比例,其中T表示正确,F表示错误,P表示正例,N表示负例

\[\text{Accuracy} = \frac{\text{correct classifications}}{\text{total classifications}} = \frac{TP+TN}{TP+TN+FP+FN}\]

召回率或真正例率:即所有实际正例中被正确分类为正例的比例,也称为召回率

\[\text{Recall (or TPR)} = \frac{\text{correctly classified actual positives}}{\text{all actual positives}} = \frac{TP}{TP+FN}\]

精确率:指模型的所有正类别分类中实际为正类别的比例。

\[\text{Precision} = \frac{\text{correctly classified actual positives}}{\text{everything classified as positive}} = \frac{TP}{TP+FP}\]