乐于分享
好东西不私藏

如何更好地与小龙虾(Openclaw)交流(一)–提示词工程的基本原理

如何更好地与小龙虾(Openclaw)交流(一)–提示词工程的基本原理

大家小龙虾用一段时间后,可能会有一种感觉,为啥看别人的小龙虾好像挺聪明的,能够很专业的做事情,而自己的小龙虾则笨笨的,事情做的总是差点意思呢?
其实,不管是小龙虾还是Hermes,或者其他什么Agent应用,都只是一个Agent,帮我们实现了LangChain框架和ReAct架构,从而帮我们可以更好的和大模型进行交流。但本质上,我们还是在和大模型进行交流,通过提示词把我们的需求给小龙虾(或其他Agent)调用的大模型,让大模型生成我们需要的答案。所以,通过对提示词工程的掌握,用更合适的方式和模型交流,对于我们用好小龙虾、Hermes之类的Agent就变得非常重要。
虽然现在各个Agent应用,比如小龙虾、Hermes等,都号称是自然语言交流,都可以把对方看成一个电子人,但实际上,毕竟最终的大脑是背后调用的大模型,而大模型毕竟不是人类,对输入的提示词(Prompt)还是有一些要求的,也就是我们常说的提示词工程。

从技术上来讲,大模型是一个预测引擎。基于某个输入(即提示词),它试图预测可能跟随其后的词,这样循环出发生成,从它那庞大的训练好的高维数据空间中,根据概率,逐步生成给你的答案反馈 。从本质上讲,只需少数几个词,就能激发大模型做出响应。然而,实际应用的时候,我们提问的方式不同,往往会导致模型反馈的质量差别非常大。

为了让模型给我们更高质量的反馈,我们要用模型更能理解的方式和它交流。

首先,我们把提示词进行结构分解,以结构化的方式,来给模型输入更清晰的提示信息。

指令+数据+输出指示器的基本结构模式

这是最为基础的结构化Prompt的模式。其中,指令包括了明确我们需要模型做的事情的目标、需要的约束,构建模型精准的认知坐标系,从而让模型聚焦在我们的目标领域进行思考和生成。指令应该尽量是明确的,避免模糊的、矛盾的指令要求。

数据是给出模型的参考或处理对象,从而进一步约束模型的能力方向和边界。

输出指示器是用来约束模型产出内容的风格、质量、字数等的要求。

以下是三个典型的提示词不当导致模型能力受限及相应优化改进的案例:

案例1:模糊指令

原始提示:”写一个故事”

问题:未指定类型/背景/角色/基调,模型可能输出通用童话模板

改进:”用悬疑风格写一个关于AI考古学家发现远古外星遗迹的短篇,要求结尾有反转”

案例2:概念冲突

原始提示:”把这段文字翻译成更简洁的英文”

问题:”简洁”与”翻译准确性”的潜在矛盾导致结果失真

改进:”将这段技术文档用工程领域术语浓缩为300字英文摘要,保留所有关键参数”

案例3:隐含前提缺失

原始提示:”解释相对论”

问题:未说明受众基础(高中生/物理学者),未指定形式(数学推导/类比说明)

改进:”用日常物品类比向中学生解释狭义相对论的时间膨胀效应,配合2个简单计算示例”