跳到主要内容

设置变量

设置与 LLM 系统提示词一起使用的变量。


在为聊天模型配置系统提示词时,变量在增强灵活性和可重用性方面发挥重要作用。使用变量,您可以动态调整发送给模型的系统提示词。在 RAGFlow 的上下文中,如果您在聊天配置对话框中定义了变量,除了系统保留变量 {knowledge} 外,您需要通过 RAGFlow 的 HTTP API 或其 Python SDK 传入它们的值。

重要

在 RAGFlow 中,变量与系统提示词密切相关。当您在变量部分添加变量时,请将其包含在系统提示词中。相反,删除变量时,请确保将其从系统提示词中删除;否则会发生错误。

在哪里设置变量

将鼠标悬停在您的聊天助手上,点击编辑打开其聊天配置对话框,然后点击提示引擎选项卡。在这里,您可以在系统提示词字段和变量部分处理您的变量:

set_variables

1. 管理变量

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

{knowledge} - 保留变量

{knowledge} 是系统保留变量,代表从助手设置选项卡下知识库指定的知识库中检索的块。如果您的聊天助手与某些知识库关联,可以保持原样。

提示

{knowledge} 设置为可选或必需目前没有区别,但请注意此设计将在适当时候更新。

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

自定义变量

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

  • 禁用(默认):变量是必需的,必须提供。
  • 启用:变量是可选的,如果不需要可以省略。

2. 更新系统提示词

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

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

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

...

这是知识库:
{knowledge}
以上是知识库。
提示

如果您已删除 {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