设置变量
设置变量,以便与您的 LLM 的系统提示词一起使用。
配置聊天模型系统的提示词时,变量在增强灵活性和可重用性方面发挥着重要作用。使用变量,您可以动态调整发送给模型的系统提示词。在 RAGFlow 中,如果您已经在对话配置对话框中定义了变量(系统保留变量{knowledge}
除外),则需要通过 RAGFlow 的HTTP API或其Python SDK为其传递值。
在 RAGFlow 中,变量与系统提示词紧密关联。当您在变量部分添加变量时,请务必将其包含在系统提示词中。反之,删除变量时,请确保将其从系统提示词中移除;否则,将会发生错误。
何处设置变量
将鼠标悬停在您的对话助手上,点击编辑以打开其对话配置对话框,然后点击提示词引擎标签页。在这里,您可以在系统提示词字段和变量部分处理您的变量。
1. 管理变量
在变量部分,您可以添加、移除或更新变量。
{knowledge}
- 一个保留变量
{knowledge}
是系统保留变量,表示从助手设置标签页下由知识库指定的知识库中检索到的片段。如果您的对话助手关联了某些知识库,您可以保留此变量。
目前将{knowledge}
设置为可选或必选没有区别,但请注意,此设计将在后期进行更新。
从 v0.17.0 版本开始,您可以不指定知识库就启动 AI 对话。在这种情况下,我们建议删除{knowledge}
变量以避免不必要的引用,并保持空响应字段为空以避免错误。
自定义变量
除了{knowledge}
之外,您还可以定义自己的变量以与系统提示词配合使用。要使用这些自定义变量,您必须通过 RAGFlow 的官方 API 传入它们的值。可选开关决定了这些变量在相应的 API 中是否是必需的。
- 禁用 (默认):该变量是必选的,必须提供。
- 启用:该变量是可选的,如果不需要可以省略。
2. 更新系统提示词
在变量部分添加或移除变量后,请确保您的更改反映在系统提示词中,以避免不一致或错误。这是一个例子:
You are an intelligent assistant. Please answer the question by summarizing chunks from the specified knowledge base(s)...
Your answers should follow a professional and {style} style.
...
Here is the knowledge base:
{knowledge}
The above is the knowledge base.
如果您已经移除了{knowledge}
,请确保彻底审查和更新整个系统提示词,以达到最佳效果。
API
唯一为在对话配置对话框中定义的自定义变量传入值的方式是调用 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("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