当前,大多数关于AI应用的讨论都基于开放系统的视角,即如何让AI去适应千变万化的用户需求。然而,对于专业用户而言,更为迫切的需求是利用AI来完成目标明确、有预期结果的任务

大模型正变得越来越智能,但这并非降低了对用户的要求,反而是提出了更高的标准。普通用户可能面对一个空白的输入框感到无从下手,而专业用户则常常困惑于如何驯服AI的“灵光一现”或“胡思乱想”,让它严格在规定的范围内高效、可靠地工作。

这类任务可以类比为编写一个能调用AI的函数:设计一套规范流程,输入是明确的数据,输出结果也应在预期范围内。要做好这类任务,我们首先需要从根本上理解AI大模型是如何工作的。

1. 理解大模型的本质

尽管如今的AI能力惊人,但其名称,“大语言模型”已经说明了本质——语言模型。语言模型的根本任务,是评估一段文本的合理性

文本要先转换为数字序列才能参与计算。为了平衡模型的复杂度,输入文本被切分成最小的语义单元,即词元(Token)。对于中文,一个Token可能是一个汉字或一个词汇;对于英文,则可能是一个单词、词根或词缀。

早期基于n-gram的语言模型,是通过计算连续几个词元共同出现的频率来评估句子的连贯性。这种模型方法相对简单,主要用于在机器翻译、语音识别、OCR等任务中保证输出句子的流畅。

而现今的大语言模型采用了复杂的神经网络架构,能够从全局视角评估整段文本的上下文逻辑。大语言模型的生成目标,就是创作出一篇在内容上连贯、在逻辑上合理的完整文本

我们与大模型的一次交互,实质上就是构建这样一篇结构化的文本,其中包含了系统提示、对话历史、用户当前的问题、工具调用、模型需要生成的补全内容、特殊分隔符等。

大模型的文本结构
(图:大模型见到的实际文本格式)

语言模型的进步,就是模型的能力的提升,从之前的鹦鹉学舌(n-gram),到中专生(2023年左右),现在已经基本上达到了本科生水平。

我们可以将大模型视为一位刚毕业的985大学文科实习生。它博览群书,拥有海量的知识储备,但严重缺乏具体的项目经验和业务洞察力。因此,你不能像吩咐一位资深同事那样,只给一个模糊的指令,比如“做个PPT”。你需要像指导实习生一样,为其提供清晰的背景、明确的任务、具体的步骤。

2. 提出一个好问题

从AI那里获得理想的答案,最关键的因素往往在于提出一个好问题。一个优质的问题,本身就应该条件清晰、结构完整,足以让一位人类实习生看懂并执行。而一个糟糕的问题,背景缺失、指令模糊、逻辑混乱,只会让“实习生”迷失方向,最终答非所问。

要让人完成一项确定性的书面任务,最好的参考模型就是我们熟悉的考试中的“简答题”。

一道设计良好的简答题通常包含几个部分:

  1. 阅读材料,需要分析的大段文字,或提供参考资料
  2. 问题背景,阐述场景设计和主要目标,是简答题的题干
  3. 任务说明,清晰指出需要做什么,是简答题的小问
  4. 具体要求,列出答题规则和答案应包含的要点,是题型设计、得分点和括号中的内容

简答题的一般结构
(图:简答题的一般结构)

这个顺序符合人类的认知习惯:将需要泛读和总体了解的信息放在前面,而将答题时需要精确回忆和重点关注的核心指令放在最后,这样有助于减少来回翻阅和认知负担,提高答题的准确性。

将这个结构迁移到AI提示词的设计上,我们就得到了一个高效的方法论:设计提示词,就是在为这位“985实习生”设计一道简答题

提示词的开头应提供所有必要的“阅读材料”,例如需要分析的长篇文章或代码块、相关的原理介绍、历史对话上下文。对于编程任务,就应包括相关的数据库定义、业务对象结构、需要参考的模板代码或API文档。

接下来,需要阐明“问题背景”,用一两句话说明这项任务的总体目标和业务场景意义。比如,“这段代码在长期运行后可能导致内存泄漏。”

之后,“任务说明”部分要直截了当地告诉模型具体需要做什么。比如,“请重构 process_data 函数,使其正确释放资源。”

然后是“具体要求”,应详细列出需要遵循的规则、方法和要点。比如,目标函数的定义、需要处理的边界情况、不能用第三方库等。尽量多写“要做什么”,少写“不要做什么”。这不仅节省Token,更是为了将模型的注意力聚焦在目标上,避免其被复杂的禁止条件干扰。

最后,可以提供一个输出范例。一个清晰的输入输出样例,胜过千言万语的抽象描述。

在组织简答题结构时,一次只让AI处理一个核心任务或一组数据(即一套“背景+题干+一个小问”)。如果想修改代码的不同部分,最好分两次提问,确保每个任务都获得专注的处理。

提示词的结尾要和AI的答案开头能自然连贯。例如有简短(一两行)的输入内容,可以放在提示词的最后;如果是多语言任务,则将长篇外语输入作为“阅读材料”放在前面,目标语言的提示词放在后面。

用中文向国产大模型提问,就如同用母语指导实习生,沟通损耗最低,效果也最好。这不仅因为中文表达通常更简洁(省Token、省钱),逻辑更清晰;还避免了看不懂专业词汇形成的误解(英文专业词汇构词法复杂,训练数据见的少),使沟通更加高效。

用这种提示词结构,可以确保信息呈现的流畅性和逻辑性,让AI能够像考生一样,按部就班地理解题目并给出精准的答案。

3. 构建一个能处理复杂问题的函数

当我们将上述精心设计的“简答题”做成一个模板,就可以将其打包成一个可重复调用的函数。这正是专业应用开发中整合大模型的核心工作。

这个函数的流程可以概括为:

输入数据 → 填入提示词模板 → 调用大模型(LLM)→ 对输出内容进行提取和转换 → 得到最终所需的输出结果。

在实际操作中,需要将输入数据通过模板引擎(如Jinja2)填充到预设的提示词模板的占位符中。对于模型的输出,我们往往需要一步“内容提取和变换”的操作,将其从非结构化的文本转换为可程序处理的数据结构。在这一步,使用XML标签标记输出内容通常比JSON格式更具容错性,因为嵌套关系清晰,更容易生成正确的开关标记。

需要明确的是,大模型并非万能。对于那些有明确公式和固定逻辑的计算任务,就不应让大模型来完成,甚至为其提供计算工具也是画蛇添足。更合理的做法是,要么将这些计算好的数据作为已知条件直接放入提示词中,要么在获取大模型的答案后,再通过常规程序作后续处理。

4. 总结

从与AI进行开放式的对话,转变为向AI发布精确的派单,是提升其专业应用价值的关键。用简答题的形式构建提示词,我们可以确保指令的结构清晰、目标明确。再通过模板化、输出格式约定和任务拆解,我们就能将大模型可靠地集成到自动化工作流中,作为一个高效的工具人雇佣他干活。

采用这种方式,我们无需依赖复杂的第三方大模型框架、运行来源不明的代码,也不必急于引入各种Agent、MCP、上下文工程等听上去炫酷的复杂模式,因为我们已经掌握了将大模型应用到专业任务中的核心逻辑,也能设计出更适合具体应用的调用模式。

确定好了输入、提示词模板、输出解析和变换方式,只需一个回合,调用一次模型API,就能让它高质量地完成专业任务。这样包装好的函数,可以无缝嵌入到各种常规的程序架构中。

无论是进行工程化开发,还是日常希望AI成为得力助手,都不妨尝试将你的下一个任务编成一道考题,让你那几位知识渊博但缺乏经验的“985实习生”能够摆脱揣测出题人意图,明明白白地交出满意答卷。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐