AdditionalInfoPrompt 附加信息提示¶
介绍¶
AdditionalInfoPrompt 是一个基于用户输出的结构化的附加信息生成对应提示模板的类。
在TFRobot整个生命周期中,所有的消息(包括用户/系统/LLM/Tool)均使用同一数据基类,其中包含了一个 additional_info 字段,用于存储用户输出的结构化信息。AdditionalInfoPrompt 会根据这个字段的内容,动态生成提示模板,用于向 LLM 发送内容。关于消息结构的定义参考消息基类。
Notes:
需要注意,在LLM的调用过程中,如果Chain明确约束了
output_schema,则LLM的返回会在通过output_schema的校验后,以其对应的数据结构同步更新到user_input的additional_info中去。
使用方法¶
from tfrobot.brain.chain.prompt.additional_info_prompt import AdditionalInfoPrompt
from tfrobot.brain.chain.prompt.template.f_string_template import FStrPromptTemplate
from tfrobot.schema.brain.chain.prompt.context_vars import (
PromptContext,
UserInput,
)
from tfrobot.schema.types import Locale
template = FStrPromptTemplate(templates={Locale.DEFAULT: "Hello, {additional_info}"})
prompt = AdditionalInfoPrompt(template=template)
assert prompt.template.params_schema == {
"properties": {
"additional_info": {
"anyOf": [{"type": "object"}, {"type": "null"}],
"title": "Additional Info",
}
},
"required": ["additional_info"],
"title": "A",
"type": "object",
}
user_input = UserInput(input="Hello, World", additional_info={"name": "JQQ"})
assert prompt.format_2_str(PromptContext(user_input=user_input)) == "Hello, {'name': 'JQQ'}"
如果FStrPromptTemplate无法满足需求,可以使用Jinja2PromptTemplate,在AdditionalInfoPrompt中,两种模板均被支持。
配置参数¶
| 参数 | 类型 | 说明 | 默认值 |
|---|---|---|---|
template |
BasePromptTemplate |
提示模板,用于生成提示语句。 | |
tips |
Optional[str] |
引导用户或者大模型填写当前模板所需信息的引导提示。但需要注意,这个引导会在适当的时机提示给用户或者大模型,但对方不一定保证填写,也不保证填充错误。所以模板需要处理好用户不填或者填错的情况。故而: 要求尽量简单,最好不要有嵌套的复杂结构。 做好为空的判断与兼容,可以配合always_render参数进行工作。 |
None |
always_render |
bool |
是否总是渲染提示语句,即使没有填写提示信息。如果为False,当提示信息为空时,不会渲染提示语句。 | False |