You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LangChain PromptTemplate中input variables(含context)工作机制咨询

关于LangChain PromptTemplate中context及相关变量的解答

1. context变量的具体运作方式

PromptTemplate本质是一个模板渲染工具,{context}是模板里的占位符。当你调用PROMPT.format(context="你的上下文文本", question="用户问题")时,模板会把{context}替换成传入的实际上下文内容,生成完整的提示词字符串,最终传给大模型作为输入。

举个实际渲染后的例子:

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.

意大利的首都是罗马,人口约280万。

Question: 意大利的首都是哪里?
Answer in Italian:

2. 为何能与嵌入数据库中的文档片段精准对应

这不是PromptTemplate的功能,而是LangChain检索增强生成(RAG)流程的配套逻辑:

  • 首先会把原始文档转换成向量,存储到向量数据库;
  • 当用户提出问题时,系统会先把问题也转换成向量,和数据库中的文档向量做相似度匹配,筛选出和问题最相关的文档片段;
  • 最后把这些检索到的片段作为context参数传入PromptTemplate的format方法,这样模板渲染后的提示词里就会带上精准匹配的文档内容。

3. 为何context要用大括号{}包裹

大括号是LangChain PromptTemplate约定的变量标记语法(兼容Jinja2模板语法),作用是告诉模板引擎:这个位置的内容需要用后续传入的input_variables中对应的值来替换。如果不用大括号,模板会直接把context当成普通文本输出,不会做变量替换。

4. 关于'summaries'变量

summaries是一个自定义输入变量,常见于处理长文档的场景(比如Map-Reduce链):

  • 当单篇文档过长,无法一次性传入大模型时,会先把文档拆分成多个片段,对每个片段单独生成摘要;
  • 这些摘要的集合就是summaries,将其传入模板后,大模型可以基于多个文档的摘要信息来生成最终回答;
  • 和context一样,使用时需要在PromptTemplate的input_variables中声明,调用时传入对应的值即可。

内容的提问来源于stack exchange,提问作者Morick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 14:10:01