跳到主要内容

设置变量

设置与系统提示一起使用的变量,以增强LLM的灵活性和可重用性。


在配置聊天模型的系统提示时,变量对于提高灵活性和复用性起着重要作用。通过使用变量,您可以动态调整发送给模型的系统提示。在RAGFlow中,如果您已经在Chat Configuration对话框中定义了变量(除了系统的保留变量{knowledge}以外),您需要从RAGFlow的HTTP API或其Python SDK传递这些变量的值。

重要

在RAGFlow中,变量与系统提示紧密相关。当您在Variable部分添加一个变量时,请将其包含在系统提示中;相反,在删除变量时,请确保从系统提示中移除它,否则可能会出现错误。

设置变量的位置

将鼠标悬停在您的聊天助手上,点击Edit以打开其Chat Configuration对话框,然后点击Prompt engine选项卡。在这里,您可以在System prompt字段和Variable部分中管理变量:

set_variables

1. 管理变量

Variable部分中,您可以添加、移除或更新变量。

{knowledge} - 保留变量

{knowledge}是系统的保留变量,表示从指定的知识库(位于Assistant settings选项卡下的Knowledge bases)检索的块。如果您已将聊天助手与某些知识库关联,则可以保留该设置不变。

注意

目前,无论是否将{knowledge}设置为必需或可选,都不会产生影响,但请注意这种设计将来会进行更新。

从v0.17.0版本开始,您可以不指定知识库而启动AI聊天。在这种情况下,我们建议移除{knowledge}变量以避免不必要的引用,并确保Empty response字段为空以防止出现错误。

自定义变量

除了{knowledge}之外,您还可以定义自己的变量来与系统提示配对。使用这些自定义变量时,必须通过RAGFlow的官方API传递它们的值。Optional开关确定这些变量在相应API中是否是必需的:

  • Disabled(默认):该变量是必需的,并且必须提供。
  • Enabled:该变量是可选的,在不需要时可以省略。

2. 更新系统提示

添加或移除Variable部分中的变量后,请确保在系统提示中反映这些更改,以避免出现不一致或错误。以下是一个示例:

您是一个智能助手。请通过总结指定的知识库中的块来回答问题...

您的答案应遵循专业和{style}的风格。

...

这是知识库:
{knowledge}
上述是知识库。
注意

如果您已经移除了{knowledge},请确保彻底审查并更新整个系统提示以实现最佳效果。

APIs

传递在Chat Configuration对话框中定义的自定义变量值的唯一方式是调用RAGFlow的HTTP API或通过其Python SDK

HTTP API

参见与聊天助手交互。以下是一个示例:

curl --request POST \
--url http://{address}/api/v1/chats/{chat_id}/completions \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <YOUR_API_KEY>' \
--data-binary '
{
"question": "xxxxxxxxx",
"stream": true,
"style":"hilarious"
}'

Python API

参见与聊天助手对话。以下是一个示例:

from ragflow_sdk import RAGFlow

rag_object = RAGFlow(api_key="<YOUR_API_KEY>", base_url="http://<YOUR_BASE_URL>:9380")
assistant = rag_object.list_chats(name="Miss R")
assistant = assistant[0]
session = assistant.create_session()

print("\n==================== Miss R =====================\n")
print("你好。我能为你做些什么?")

while True:
question = input("\n==================== 用户 =====================\n> ")
style = input("请输入您喜欢的风格(例如,正式、随意、搞笑):")

print("\n==================== Miss R =====================\n")

cont = ""
for ans in session.ask(question, stream=True, style=style):
print(ans.content[len(cont):], end='', flush=True)
cont = ans.content