设置变量
设置与大语言模型(LLM)的系统提示词(System Prompt)一起使用的变量。
在配置聊天模型的系统提示词时,变量在增强灵活性和可重用性方面扮演着重要角色。通过使用变量,您可以动态调整发送给模型的系统提示词。在 RAGFlow 中,如果您已在**对话配置**对话框中定义了变量(系统保留变量 {knowledge}
除外),则需要通过 RAGFlow 的 HTTP API 或其 Python SDK 为这些变量传入值。
在 RAGFlow 中,变量与系统提示词密切相关。当您在**变量**部分添加变量时,也请将其包含在系统提示词中。反之,删除变量时,请确保也从系统提示词中移除它,否则会发生错误。
在哪里设置变量
将鼠标悬停在您的聊天助手上,点击**编辑**打开其**对话配置**对话框,然后点击**提示词引擎**选项卡。在这里,您可以在**系统提示词**字段和**变量**部分处理您的变量。
1. 管理变量
在**变量**部分,您可以添加、移除或更新变量。
{knowledge}
- 保留变量
{knowledge}
是系统的保留变量,代表从**助手设置**选项卡下的**知识库**中检索到的知识区块(chunks)。如果您的聊天助手关联了特定的知识库,可以保留该变量。
目前,将 {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