工程师眼中的Prompt提示词

32 阅读5分钟

来自我的另一篇文章【Agent的ReAct(推理+行动)模式】

image.png

提示词的理解

从我个人开发的角度来说,提示词或者加一些约束(工程提示词)的定义

工程提示词 = 提示词微问题领域模版 + 数据

绝对不是聊天机器人那种一次性对话。

首页LLM具有很强的推理能力,但是提示词没有写好,那么获得结果往往差强人意。写好提示词,我觉得有在以下方面:

个体的主观经验

首先你本身带着问题出发,也就是你处于某个行业,领域,你有某个领域的熟悉度和问题的判断能力。这个完全是个人能力上的主观体现,能力经验上的差别。

针对点,没有什么好的办法,只能说是在一个领域深耕,不断打磨而来的经验。但是这种经验,可以让AI快速的减少认知差,但目前来说,个人的经验,业务经验,专业领域,这还是靠个人的能力。AI很强,但别搞错,这不代表你很强。

个体 + 大模型 > 个体

更强的个体 + 大模型 > 个体 + 大模型

要搞懂这层关系

提示词与LLM的深层关系

ChatGPT的出现,每个人体验的时候都是通过网页上的聊天窗口与大模型进行聊天,包括我自己,以为对话那就是提示词。严格上来说那的确是提示词,不过是提示词的一种,我叫它叫普通的提示词---日常对话。

重点:提示词不是一次对话,

需要澄清的是像ChatGPT与DeepSeek。我们很容易混淆大模型和基于大模型的聊天机器人。我们日常看到网页上的那种聊天窗口基本上是属于基于大模型的聊天机器人而已。所以我们发送的对话如此的日常。很少精心编辑设计提示词。

这很容易培养用户错误的使用习惯。以为对话=提示词。用户在聊天窗口精心设计的提示词,点击发送之后,模型进行回答。那么这个提示词顺着网页就划上去了。于是用户用久了之后就变成日常口语化。这不是用户的问题,而是那就是个聊天机器人而已,聊天产品。不过很多人误以为日常对话就是提示词。

网页上的基于大模型的聊天,那就是基于大模型开发出来的聊天机器人而。本质上,中间存在着一层应用,阻止了我们与大模型的直接对话。

从工程开发上,直接接触大模型,才是提示词彰显能力的地方,需要我们从聊天窗口的对话变成提示词工程的设计。


大模型是一种无状态的,我们每次与他沟通,他都不知道我们之前说了什么。它的核心能力是经过了大量的预料训练,有了像人一样的推导能力。

所以从技术上与大模型交互的时候,就要设计提示词,从而引导大模型推导。我们给到它更好更多的上下文,它就能更好的在我们的引导下进行推理输出。

提示词构成:模版结构+数据

首先大模型很喜欢结构化的东西,喜欢确定范式下的推理,以及你给他设置的引导,边界等。

好的结构设计能够让大模型清晰的解析出来我们的意图

下面这个提示词模版就很结构清晰,不需要很多文字,但是结构一定要清晰。这种提示词我管它叫微功能的提示词

Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.

Context:
{context}

Question: {question}
Helpful Answer:

在看一个引导LLM模型输出的提示词模版

For the following text, extract the following information:

gift: Was the item purchased as a gift for someone else? \
Answer True if yes, False if not or unknown.

delivery_days: How many days did it take for the product\
to arrive? If this information is not found, output -1.

price_value: Extract any sentences about the value or price,\
and output them as a comma separated Python list.

text: {text}

{format_instructions}

值得一提的是,提示词模版不是一次编写就能成功的,我们需要不断的迭代和更新。

接下就该填充数据了,关于什么是数据?这点边界不是很容易划分清楚。但是我们可以理解为填充到给LLM的上下文中的东西,能够引导LLM推理的就是数据。

  1. 为了让Agent智能体有记忆,我们提供了历史对话,让大模型进行推导。
  2. 为了利用大模型的自然语言理解能力和强大的推导能力,我们基于RAG工程流,将LLM聚焦我们的数据资料进行推理回答。
  3. 利用LLM的推理能力,我们提供我们的工具列表给他,让它帮忙决策调用哪些工具,我们的系统执行工具后的结果,在上下文中拼接继续给它。一套Agentic App的ReAct工作流形成。引导LLM不断的思考推理,它要什么了我们就提供给他。直到帮助我们解决问题。

总结

其实写到这里我也开始反应过来了,这篇文章是属于开发垂直领域Agent的提示词工程设计。哈哈哈