跳到主要内容
注意

本教程由社区贡献,不由 Open WebUI 团队支持。它仅作为自定义 Open WebUI 以满足您的特定用例的示例。想要贡献?查看贡献教程。

💡 特殊参数

在开发您自己的 工具函数(如过滤器管道操作)、管道等时,可以使用特殊参数来探索 Open-WebUI 的全部功能。

本页面旨在详细说明每种特殊参数的类型和结构,并提供示例。

body

dict 通常直接传递给模型。虽然它并不严格是一个特殊参数,但为了便于参考并因为它自身包含一些特殊参数,因此在这里包括它。

示例

{
"stream": true,
"model": "my-cool-model",
# 小写字符串,单词之间以 - 分隔:这是模型的 ID
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "这张图片中有什么?"
},
{
"type": "image_url",
"image_url": {
"url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAdYAAAGcCAYAAABk2YF[REDACTED]"
# 图像以 base64 编码数据形式传递
}
}
]
},
{
"role": "assistant",
"content": "这张图片看起来是 [REDACTED]"
},
],
"features": {
"image_generation": false,
"code_interpreter": false,
"web_search": false
},
"stream_options": {
"include_usage": true
},
"metadata": "[与 __metadata__ 完全相同的字典]",
"files": "[与 __files__ 完全相同的列表]"
}


__user__

包含用户信息的 dict

请注意,如果定义了 UserValves 类,其实例需要通过 __user__["valves"] 访问。否则,valves 键值在 __user__ 中完全缺失。

示例
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"email": "[email protected]",
"name": "Patrick",
"role": "user",
# 角色可以是 `user` 或 `admin`
"valves": "[UserValve 实例]"
}

__metadata__

包含关于聊天、模型、文件等广泛信息的 dict

示例
{
"user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"chat_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"message_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"session_id": "xxxxxxxxxxxxxxxxxxxx",
"tool_ids": null,
# tool_ids 是字符串列表。
"tool_servers": [],
"files": "[与 body['files'] 相同]",
# 如果未提供文件,files 键将存在于 __metadata__ 中,其值为空 []
"features": {
"image_generation": false,
"code_interpreter": false,
"web_search": false
},
"variables": {
"{{USER_NAME}}": "cheesy_username",
"{{USER_LOCATION}}": "Unknown",
"{{CURRENT_DATETIME}}": "2025-02-02 XX:XX:XX",
"{{CURRENT_DATE}}": "2025-02-02",
"{{CURRENT_TIME}}": "XX:XX:XX",
"{{CURRENT_WEEKDAY}}": "星期一",
"{{CURRENT_TIMEZONE}}": "欧洲/柏林",
"{{USER_LANGUAGE}}": "en-US"
},
"model": "[与 __model__ 完全相同的字典]",
"direct": false,
"function_calling": "native",
"type": "user_response",
"interface": "open-webui"
}

__model__

包含关于模型信息的 dict

示例
{
"id": "my-cool-model",
"name": "我的酷模型",
"object": "模型",
"created": 1746000000,
"owned_by": "openai",
# 可以是 openai 或 ollama
"info": {
"id": "my-cool-model",
"user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"base_model_id": "gpt-4o",
# 这是模型端点提供的模型名称
"name": "我的酷模型",
"params": {
"system": "你是我最好的助手。你回答 [REDACTED]",
"function_calling": "native"
# 自定义选项出现在这里,例如 "Top K"
},
"meta": {
"profile_image_url": "/static/favicon.png",
"description": "my-cool-model 的描述",
"capabilities": {
"vision": true,
"usage": true,
"citations": true
},
"position": 17,
"tags": [
{
"name": "for_friends"
},
{
"name": "vision_enabled"
}
],
"suggestion_prompts": null
},
"access_control": {
"read": {
"group_ids": [],
"user_ids": []
},
"write": {
"group_ids": [],
"user_ids": []
}
},
"is_active": true,
"updated_at": 1740000000,
"created_at": 1740000000
},
"preset": true,
"actions": [],
"tags": [
{
"name": "for_friends"
},
{
"name": "启用视觉(vision_enabled)"
}
]
}

__消息__

一个包含先前消息的 列表

请参阅上述 body["messages"] 的值。

__聊天ID__

chat_id字符串

请参阅上述 __metadata__["chat_id"] 的值。

__会话ID__

session_id字符串

请参阅上述 __metadata__["session_id"] 的值。

__消息ID__

message_id字符串

请参阅上述 __metadata__["message_id"] 的值。

__事件发射器__

用于向用户展示事件信息的 可调用对象

__事件调用__

用于 动作可调用对象

__文件__

一个通过聊天发送的文件 列表。请注意,图片不被视为文件,并会直接作为 body["messages"] 列表的一部分发送至模型。

文件的实际二进制数据不会作为参数的一部分出于性能考虑,但如果需要仍然可以通过其路径访问。例如,使用 docker 时,获取路径的 Python 代码示例如下:

from pathlib import Path

the_file = Path(f"/app/backend/data/uploads/{__files__[0]["files"]["id"]}_{__files__[0]["files"]["filename"]}")
assert the_file.exists()

请注意,同样的文件字典也可以通过 __metadata__["files"] 访问(其值为 [] 如果没有文件被发送),或者通过 body["files"] 访问(但如果没有文件被发送,则 body 中会完全缺少 files 键)。

示例

[
{
"type": "文件",
"file": {
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"filename": "Napoleon - Wikipedia.pdf",
"user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"hash": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"data": {
"content": "Napoleon - Wikipedia\n\n\nNapoleon I\n\nThe Emperor Napoleon in His Study at the\nTuileries, 1812\n\nEmperor of the French\n\n1st reign 18 May 1804 – 6 April 1814\n\nSuccessor Louis XVIII[a]\n\n2nd reign 20 March 1815 – 22 June 1815\n\nSuccessor Louis XVIII[a]\n\nFirst Consul of the French Republic\n\nIn office\n13 December 1799 – 18 May 1804\n\nBorn Napoleone Buonaparte\n15 August 1769\nAjaccio, Corsica, Kingdom of\nFrance\n\nDied 5 May 1821 (aged 51)\nLongwood, Saint Helena\n\nBurial 15 December 1840\nLes Invalides, Paris\n\nNapoleon\nNapoleon Bonaparte[b] (born Napoleone\nBuonaparte;[1][c] 15 August 1769 – 5 May 1821), later\nknown [REDACTED]",
# 内容值来源于文档解析器,以上示例为使用 Tika 作为文档解析器
},
"meta": {
"name": "Napoleon - Wikipedia.pdf",
"content_type": "应用程序/pdf",
"size": 10486578,
# 单位为字节,这里约为 10MB
"data": {},
"collection_name": "file-96xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
# 总以'file'开头
},
"created_at": 1740000000,
"updated_at": 1740000000
},
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"url": "/api/v1/files/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Napoleon - Wikipedia.pdf",
"collection_name": "file-96xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
"status": "已上传(uploaded)",
"size": 10486578,
"error": "",
"itemId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
# itemId 与 file["id"] 不同
}
]


__请求__

fastapi.Request 的实例。你可以在 迁移页面fastapi'的文档 中阅读更多相关内容。

__任务__

任务类型字符串。其值是 __metadata__["task"] 的简写(如果存在),否则为 None

可能的值

[
"标题生成(title_generation)",
"标签生成(tags_generation)",
"表情生成(emoji_generation)",
"查询生成(query_generation)",
"图像提示生成(image_prompt_generation)",
"自动完成生成(autocomplete_generation)",
"函数调用(function_calling)",
"MOA响应生成(moa_response_generation)"
]

__任务体__

一个包含实现指定任务所需 body字典。其值是 __metadata__["task_body"] 的简写(如果存在),否则为 None

其结构与上述的 body 相同,带有修改以使用适当的模型和系统消息等。

__工具__

ToolUserModel 实例组成的 列表

有关 ToolUserModel 实例属性的详细信息,请参考 tools.py 中的代码。