Featured image of post String Template in Prompt.md

String Template in Prompt.md

prompt 中 template 的使用一则

我在尝试编写 prompt 的时候,遇到了一个问题:KeyError: '\n "filename"'.

原因是我在 prompt 中是这样编写的:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
请以JSON格式返回结果,格式如下:
[
  {
    "filename": "文件名.csv", // 如果没有明确提到文件名,填写null
    "content": "第一行第一列,第一行第二列\n第二行第一列,第二行第二列\n..."
  },
  // 更多CSV数据...
]

文本内容如下:"""
{text}
"""

我是采用这种方式来调用的:

1
2
3
# 获取上面的 prompt
prompt = get_prompt()
prompt.format(text=text)

发现问题之后,我想能不能用langchainStringTemplate绕过。

1
2
3
from langchain_core.prompts import PromptTemplate

prompt_template = PromptTemplate.from_template(prompt)

结果也是报了同样的错误。KeyError: '\n "filename"'

才发觉 StringTemplate 底层应该也是用 string.format 的方法去实现的。

那么怎么办呢?用 jinja2

1
2
3
4
import jinja2

prompt = get_prompt()
prompt = jinja2.Template(prompt).render(text=text)

这样一来 render 就没有问题了。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计