设置变量 (Set Variables)
设置可与您的大语言模型 (Large Language Model, LLM) 系统提示词 (System Prompt) 配合使用的变量。
在为聊天模型配置系统提示词时,变量在增强灵活性和可重用性方面起着重要作用。通过变量,您可以动态调整发送给模型的系统提示词。在 RAGFlow 的语境中,如果您在**聊天设置 (Chat setting)**中定义了变量,除了系统的保留变量 {knowledge} 之外,您必须从 RAGFlow 的 HTTP API 或其 Python SDK 传入这些变量的值。
在 RAGFlow 中,变量与系统提示词紧密相连。当您在变量区域中添加变量时,请将其包含在系统提示词中。相反,在删除变量时,请确保已将其从系统提示词中移除;否则,会发生错误。
何处设置变量

1. 管理变量
在变量区域中,您可以添加、删除或更新变量。
{knowledge} - 保留变量
{knowledge} 是系统的保留变量,表示从**助手设置 (Assistant settings)选项卡下的知识库 (Knowledge bases)**指定的数据集 (Dataset) 中检索到的块 (Chunk)。如果您的聊天助手关联了某些数据集,您可以保持原样。
目前,无论将 {knowledge} 设置为可选还是必填,都没有实质区别,但请注意此设计在适当时机会进行更新。
自 v0.17.0 起,您可以在不指定数据集的情况下开始 AI 聊天。在这种情况下,我们建议移除 {knowledge} 变量以防止不必要的引用,并保持**空回复 (Empty response)**字段为空以避免错误。
自定义变量
除了 {knowledge} 外,您还可以定义自己的变量来与系统提示词配合使用。要使用这些自定义变量,您必须通过 RAGFlow 的官方 API 传入它们的值。**可选 (Optional)**开关决定了在相应的 API 中这些变量是否为必填:
- 禁用 (Disabled)(默认):该变量是必填的,必须提供。
- 启用 (Enabled):该变量是可选的,如果不需要可以省略。
2. 更新系统提示词
在变量区域中添加或删除变量后,请确保您的更改反映在系统提示词中,以避免不一致或错误。以下是一个示例:
您是一个智能助手。请通过总结指定数据集中的内容来回答问题...
您的回答应该符合专业且 {style} 的风格。
...
以下是知识库:
{knowledge}
以上是知识库。
如果您移除了 {knowledge},请确保彻底审查并更新整个系统提示词以达到最佳效果。
API
为聊天配置对话框中定义的自定义变量传入值的唯一方法是调用 RAGFlow 的 HTTP API 或通过其 Python SDK。
HTTP API
参见与聊天助手对话。以下是一个示例:
curl --request POST \
--url http://{address}/api/v1/chat/completions \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <YOUR_API_KEY>' \
--data-binary '
{
"chat_id": "{chat_id}",
"stream": true,
"messages": [
{
"role": "user",
"content": "xxxxxxxxx"
}
],
"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("Hello. What can I do for you?")
while True:
question = input("\n==================== User =====================\n> ")
style = input("Please enter your preferred style (e.g., formal, informal, hilarious): ")
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