環境
- Python 3.10.12
- LangChain 0.0.310
実装
Pythonの書式指定文字列(Format String)は、以下のように使います。
template_text = "こんにちは、{name1}さんと{name2}さん"
print(template_text.format(name1="ほげ", name2="ふが"))
#=> こんにちは、ほげさんとふがさん
この文字列から置換される変数であるname1
,name2
を抽出するには、string.Formatter
のparse()
メソッドを使います。
from string import Formatter
template_text = "こんにちは、{name1}さんと{name2}さん"
for parsed in Formatter().parse(format_string=template_text):
print(parsed)
出力
('こんにちは、', 'name1', '', None)
('さんと', 'name2', '', None)
('さん', None, None, None)
LangChainでの利用例
LangChainのPromptTemplateでは、この書式指定文字列の文法に従っています。
from langchain.prompts import PromptTemplate
template_text = "こんにちは、{name1}さんと{name2}さん"
prompt_template = PromptTemplate(template=template_text, input_variables=["name1", "name2"])
print(prompt_template.format(name1="ほげ", name2="ふが"))
#=> こんにちは、ほげさんとふがさん
PromptTemplate
を使うにあたってfrom_template()
を使うことで、input_variables=["name1", "name2"]
を指定しなくても自動で判断してくれます。
from langchain.prompts import PromptTemplate
template_text = "こんにちは、{name1}さんと{name2}さん"
prompt_template = PromptTemplate.from_template(template_text)
print(prompt_template.format(name1="ほげ", name2="ふが"))
#=>こんにちは、ほげさんとふがさん
このfrom_template()の実装では、先程紹介したstring.Formatter
のparse()
メソッドを利用して変数を抽出しています。
https://github.com/langchain-ai/langchain より引用
input_variables = {
v for _, v, _, _ in Formatter().parse(template) if v is not None
}
謝辞
この記事のコードの一部はColab Generative AIを用いて生成されました。