随着 AI 语言模型的不断进步,设计有效的提示对于获取期望的输出至关重要。提示模板(Prompt Template)和变量具有以下优势:
-
可复用性:模板可在不同场景下重复使用,节省时间并确保一致性。
-
灵活性:变量支持动态内容插入,使提示能够适应各种情况。
-
复杂性管理:模板可以处理复杂结构,包括条件逻辑和循环,使 AI 交互更加智能化。
-
可扩展性:随着应用规模扩大,结构良好的模板有助于管理和维护大量提示内容。
本教程旨在帮助学习者掌握创建强大且灵活的提示模板的技能,从而提升他们在 AI 语言模型中的应用能力。
本教程全面介绍了在 AI 语言模型中创建和使用带变量的提示模板的方法。重点讲解如何利用 Python 在 LangChain 和 JinJa2 中的提示模板引擎构建灵活、可复用的提示结构,以便动态插入内容。教程还演示了如何使用这些高级提示技巧与阿里的 Qwen 模型交互。
LangChain 字符串提示模板
LangChain 中的 PromptTemplate 将字典作为输入,其中每个键代表提示模板中要填写的变量。最终输出是一个字符串。

字典的键理论上可以任意多:

Jinja2 提示模板
Jinja2 是 Python 中的一个强大模板引擎,常用于动态生成文本,包括 HTML、配置文件,以及在 AI 领域中的提示模板。
在 LLM(大语言模型)应用中,Jinja2 允许动态插入变量、使用条件语句和循环,从而构建灵活、可复用的提示模板。
首先我们写一个 Jinja2PromptTemplate 类:

然后便可以像使用 LangChain 的 PromptTemplate 那样使用了,不过这里变量要放到两个花括号中,即 {{ var }}

接下来我们学习一下 Jinja2 的高级功能,这些功能目前 LangChain 的 PromptTemplate 是不具备的。
动态插入变量


在提示模板中使用列表
下面是在 LangChain 中使用列表的案例,现在你可能看不到有什么特殊:

但是 Jinja2 支持在提示模板中使用循环:

本文源代码:
https://github.com/realyinchen/PromptEngineering/blob/main/03-prompt-templates-variables.ipynb
查阅此前文章:
《提示工程101第二课:基础的提示结构》
《提示工程101第一课:基础入门》
文章来源:PyTorch研习社
(文:PyTorch研习社)