国外文件传输网站,网站建设 今晟网络,关键词排名优化是什么意思,有没有做租赁的网站分类目录#xff1a;《自然语言处理从入门到应用》总目录 部分填充的提示模板
提示模板是一个具有.format方法的类#xff0c;它接受一个键值映射并返回一个字符串#xff08;一个提示#xff09;#xff0c;以传递给语言模型。与其他方法一样#xff0c;将提示模板进行…分类目录《自然语言处理从入门到应用》总目录 部分填充的提示模板
提示模板是一个具有.format方法的类它接受一个键值映射并返回一个字符串一个提示以传递给语言模型。与其他方法一样将提示模板进行部分填充可能是有意义的。例如传入所需值的子集以创建一个新的提示模板只需要剩余的子集值。
LangChain支持两种方式实现这个功能
使用字符串值使用返回字符串值的函数
这两种不同的方式支持不同的用例。在下面的文章中我们将介绍这两种用例的动机以及在LangChain中如何实现它。
使用字符串进行部分填充
部分填充提示模板的一个常见用例是如果我们先获得某些变量然后再获得其他变量。例如假设我们有一个需要两个变量foo和baz的提示模板。如果您先获得foo值但稍后获得 baz值那么等到两个变量都在同一个位置时再传递给提示模板可能会很麻烦。相反我们可以使用foo值部分填充提示模板然后将部分填充的提示模板传递下去并直接使用它。下面是一个示例
from langchain.prompts import PromptTemplate
prompt PromptTemplate(template{foo}{bar}, input_variables[foo, bar])
partial_prompt prompt.partial(foofoo);
print(partial_prompt.format(barbaz))
foobaz我们也可以使用部分变量初始化提示
prompt PromptTemplate(template{foo}{bar}, input_variables[bar], partial_variables{foo: foo})
print(prompt.format(barbaz))
foobaz使用函数进行部分填充
另一个常见的用例是使用函数进行部分填充这种情况下的用例主要针对当我们知道我们总是以相同方式获取某个变量时。一个典型的例子是日期或时间。想象一下我们有一个提示且我们总是希望其中包含当前日期。我们不能在提示中硬编码日期并且将其与其他输入变量一起传递也有些麻烦。在这种情况下使用一个函数进行部分填充该函数始终返回当前日期非常方便。
from datetime import datetimedef _get_datetime():now datetime.now()return now.strftime(%m/%d/%Y, %H:%M:%S)
prompt PromptTemplate(template告诉我一个{形容词}的关于{日期}的笑话,input_variables[形容词, 日期]
)
partial_prompt prompt.partial(date_get_datetime)
print(partial_prompt.format(形容词有趣))
告诉我一个有趣的关于02/27/2023, 22:15:16的笑话我们还可以直接使用部分填充的变量初始化提示模板这在这种工作流程中通常更有意义
prompt PromptTemplate(template告诉我一个{形容词}的关于{日期}的笑话,input_variables[形容词],partial_variables{日期: _get_datetime}
)
print(prompt.format(形容词有趣))
告诉我一个有趣的关于02/27/2023, 22:15:16的笑话提示合成
下文介绍的是如何将多个提示组合在一起。当我们想要重用提示的部分时这将非常有用。我们可以使用PipelinePrompt来实现这一点PipelinePrompt由两个主要部分组成
final_prompt这是返回的最终提示pipeline_prompts这是一个包含元组的列表每个元组都包含一个字符串name和一个Prompt模板。每个Prompt模板将被格式化然后作为与name相同名称的变量传递给未来的Prompt模板。
from langchain.prompts.pipeline import PipelinePromptTemplate
from langchain.prompts.prompt import PromptTemplate
full_template {introduction}{example}{start}
full_prompt PromptTemplate.from_template(full_template)
introduction_template You are impersonating {person}.
introduction_prompt PromptTemplate.from_template(introduction_template)
example_template Heres an example of an interaction: Q: {example_q}
A: {example_a}
example_prompt PromptTemplate.from_template(example_template)
start_template Now, do this for real!Q: {input}
A:
start_prompt PromptTemplate.from_template(start_template)
input_prompts [(introduction, introduction_prompt),(example, example_prompt),(start, start_prompt)
]
pipeline_prompt PipelinePromptTemplate(final_promptfull_prompt, pipeline_promptsinput_prompts)
pipeline_prompt.input_variables
[example_a, person, example_q, input]print(pipeline_prompt.format(personElon Musk,example_qWhats your favorite car?,example_aTelsa,inputWhats your favorite social media site?
))输出
You are impersonating Elon Musk.
Heres an example of an interaction: Q: Whats your favorite car?
A: Tesla
Now, do this for real!Q: Whats your favorite social media site?
A:参考文献 [1] LangChain ️ 中文网跟着LangChain一起学LLM/GPT开发https://www.langchain.com.cn/ [2] LangChain中文网 - LangChain 是一个用于开发由语言模型驱动的应用程序的框架http://www.cnlangchain.com/