前言

Prompt系列的第二期文章已经将所有的Prompt工程主流策略讲解完毕,共涉及到六种Prompt类别模型以及具体生产内容详解。再结合系列第一篇文章具体对Prompt工程的详细介绍,也就可以达到Prompt工程师的初步入门,现在如果掌握了这些基础技能那么就可以去学习一些更高阶的Prompt技能,伴随GPT-4 Turbo达到可生成自定义的GPTs,能够搭建属于业务目标的知识数据库,我们现在需要结合知识库的种类和数据形式,去做Prompt的迭代以达到我们想要的语言生成结果。

大模型应用总体架构

一般来说我们所掌握的Prompt技能都是要结合业务逻辑去构建,因此我们了解了整个Prompt Engineering之后就不能只拿Prompt局部做实验,而是要看整体的大模型落地运用时Prompt工程所处地位。以AI Agent实际项目搭建为例,我们进行整个大模型开发剖析:

Prompt提示工程上手指南:基础原理及实践(三)-Prompt个性知识库引导-LMLPHP

上图清晰可见Prompt Engineering在整体AI原生开发流程中的应用,模型微调一次和训练一次的成本还是比较大的,想要在已经训练完毕的模型上不进行过多微调的情况下,迭代Prompt是最优的策略。生产的文本一般都需要专业业务对接人员进行评估,根据评估结果再进行迭代Prompt,直到业务方基本满意再进行套件开发,最后上线。上线维护也需要根据用户体验反馈来不断迭代Prompt。

额外数据库引导

Prompt构建无非是对业务流程的具体总结,其中涉及到最多的是对业务数据进行提取最后返回给业务对接的客户,那么这些业务数据对于AI能否真正利用得到是整个AI搭建里面重要关键的验证功能之一。个性化的AI知识问答或者是AI Agent一般都具备自己业务那块的知识库,我们在一些常见的大模型开发平台都能看到:

Prompt提示工程上手指南:基础原理及实践(三)-Prompt个性知识库引导-LMLPHP

需要注意的是,这些知识数据库和transformer训练过程中的数据库是不同的,后者是从这些文本中学习语言模型,包括词汇、语法、事实信息以及不同领域的专业知识。而前者则是额外可以通过代码接收器来调用下载的额外数据,也就是说你可以通过强化Prompt使得AI模型可以去调用你的数据库进行一系列操作,这对于小型咨询业务涉及不到大规模垂直领域数据来说会十分快捷好用。我们仅需要上传需要处理的文件,然后设置发出指令的prompt就好。结合prompt策略可以起到联动效果。较为成熟的产品比如: 

 Prompt提示工程上手指南:基础原理及实践(三)-Prompt个性知识库引导-LMLPHP

原理就是如此。

Prompt引导策略

如果我们现在需要分析荒漠植物群落空间格局变化,用于科研论文创作。这里大家如果有其他的业务数据集可以先按照此步骤来实验,首先明确业务逻辑,此业务逻辑为我拿到荒漠植物群落空间格局变化的数据之后,先去了解该数据的形态和行列数据特征,将这些行列特征字段说明大体清楚一遍,之后确定好目标方向和结果产出应该达到的内容,我们就可以进行prompt工程构建了,参考paper:

Prompt提示工程上手指南:基础原理及实践(三)-Prompt个性知识库引导-LMLPHP

 这篇论文中AI主体prompt格式撰写:

 从提取出的数据回答来看,很明显GPTs可以从我们提供的数据集来进行分析,结合语言模型自带训练知识库之上再进行分析,效果类似于行业垂直领域的数据分析师:

 需要注意的是这里需要开启代码解释器,AI会自动通过python代码读取并分析,其中分析逻辑也会展示:

import pandas as pd

# Load the provided Excel file to review the data related to 泡泡刺植物 (Bubble Thorn Plant)
file_path = '/mnt/data/荒漠植物群落空间分布格局变化.xls'
data = pd.read_excel(file_path)

# Display the column names to find relevant information about 泡泡刺植物's height
data.columns
# Filter data for 泡泡刺植物 (assuming the common name or Latin name would be listed under '植物种名' or '拉丁名')
# Without the exact Chinese name or Latin name, I'm assuming "泡泡刺植物" is the name we're looking for.
# This step is speculative due to lack of exact match criteria in the user's request.

# Check if 泡泡刺植物 is directly mentioned in either '植物种名' or '拉丁名'
bubble_thorn_plant_data = data[(data['植物种名'].str.contains('泡泡刺')) | (data['拉丁名'].str.contains('泡泡刺', na=False))]

# If the dataframe is empty, this means "泡泡刺植物" might not be the exact term used in the dataset.
# For demonstration, I'll proceed assuming we've found relevant records. If not, we would need the exact term from the user.

# Check if we found any data
found_data = not bubble_thorn_plant_data.empty

# If found, we'll analyze the height data
if found_data:
    # Summary statistics of height to understand the range and average height
    height_stats = bubble_thorn_plant_data['高度(cm)'].describe()
else:
    height_stats = "No data found for 泡泡刺植物. Please provide the exact name as listed in the dataset."

height_stats

Chain-of-Thought Prompting

此时根据GPTs的要求,我们再次传输数据集上去,之后迭代Prompt:

 

以上可通过Prompt工程的Chain-of-Thought Prompting策略进行引导AI模式化链接二张表格进行处理分析:

Prompt提示工程上手指南:基础原理及实践(三)-Prompt个性知识库引导-LMLPHP

 

链式思考(CoT)提示通过中间推理步骤实现了复杂的推理能力,可以将其与少样本提示相结合,以获得更好的结果,以便在回答之前进行推理的更复杂的任务。在此类数据分析中尤为实用。

本篇文章到这里就结束,有了Chain-of-Thought的思想于Prompt的知识库结合可以发挥出进一步的提升效果,那么下一篇我们就可以来进一步探索Prompt的多模态思维链问题以及生产环境的生成数据规范问题。

点关注,防走丢,如有纰漏之处,请留言指教,非常感谢

以上就是本期全部内容。我是fanstuck ,有问题大家随时留言讨论 ,我们下期见。

03-22 00:23