Aller au contenu principal
attention

Ce tutoriel est une contribution de la communauté et n'est pas pris en charge par l'équipe Open WebUI. Il sert uniquement de démonstration sur la façon de personnaliser Open WebUI pour votre cas d'utilisation spécifique. Vous voulez contribuer ? Consultez le tutoriel de contribution.

💡 Arguments Spéciaux

Lors du développement de vos propres Outils, Fonctions (Filtres, Pipes ou Actions), Pipelines, etc., vous pouvez utiliser des arguments spéciaux pour explorer tout ce qu'Open-WebUI a à offrir.

Cette page vise à détailler le type et la structure de chaque argument spécial ainsi qu'à fournir un exemple.

body

Un dictionnaire généralement destiné à être transmis presque directement au modèle. Bien qu'il ne s'agisse pas strictement d'un argument spécial, il est inclus ici pour une référence plus facile et parce qu'il contient lui-même des arguments spéciaux.

Exemple

{
"stream": true,
"model": "mon-modèle-génial",
# chaîne en minuscules avec des mots séparés par des tirets : ceci est l'identifiant du modèle
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Que contient cette image ?"
},
{
"type": "image_url",
"image_url": {
"url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAdYAAAGcCAYAAABk2YF[REDACTED]"
# Les images sont transmises sous forme de données encodées en base64
}
}
]
},
{
"role": "assistant",
"content": "L'image semble être [REDACTED]"
},
],
"features": {
"image_generation": false,
"code_interpreter": false,
"web_search": false
},
"stream_options": {
"include_usage": true
},
"metadata": "[Le même dictionnaire que __metadata__]",
"files": "[La même liste que __files__]"
}


__user__

Un dictionnaire contenant des informations sur l'utilisateur.

Notez que si la classe UserValves est définie, son instance doit être accessible via __user__["valves"]. Sinon, la clé valves est entièrement absente de __user__.

Exemple
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"email": "[email protected]",
"name": "Patrick",
"role": "user",
# le rôle peut être soit `user` soit `admin`
"valves": "[l'instance de UserValve]"
}

__metadata__

Un dictionnaire contenant des informations diverses sur le chat, le modèle, les fichiers, etc.

Exemple
{
"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 est une liste de chaînes.
"tool_servers": [],
"files": "[Identique à body['files']]",
# Si aucun fichier n'est fourni, la clé files existe dans __metadata__ et sa valeur est []
"features": {
"image_generation": false,
"code_interpreter": false,
"web_search": false
},
"variables": {
"{{USER_NAME}}": "cheesy_username",
"{{USER_LOCATION}}": "Inconnu",
"{{CURRENT_DATETIME}}": "2025-02-02 XX:XX:XX",
"{{CURRENT_DATE}}": "2025-02-02",
"{{CURRENT_TIME}}": "XX:XX:XX",
"{{CURRENT_WEEKDAY}}": "Lundi",
"{{CURRENT_TIMEZONE}}": "Europe/Berlin",
"{{USER_LANGUAGE}}": "fr-FR"
},
"model": "[Identique à __model__]",
"direct": false,
"function_calling": "natif",
"type": "réponse_utilisateur",
"interface": "open-webui"
}

__model__

Un dictionnaire contenant des informations sur le modèle.

Exemple
{
"id": "mon-modèle-génial",
"name": "Mon Modèle Génial",
"object": "modèle",
"created": 1746000000,
"owned_by": "openai",
# soit openai soit ollama
"info": {
"id": "mon-modèle-génial",
"user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"base_model_id": "gpt-4o",
# c'est le nom du modèle desservi par le point d'accès du modèle
"name": "Mon Modèle Génial",
"params": {
"system": "Vous êtes mon meilleur assistant. Vous répondez [REDACTED]",
"function_calling": "natif"
# les options personnalisées apparaissent ici, par exemple "Top K"
},
"meta": {
"profile_image_url": "/static/favicon.png",
"description": "Description de mon-modèle-génial",
"capabilities": {
"vision": true,
"usage": true,
"citations": true
},
"position": 17,
"tags": [
{
"name": "pour_amis"
},
{
"name": "vision_activée"
}
],
"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": "pour_amis"
},
{
"name": "vision_enabled"
}
]
}

__messages__

Une liste des messages précédents.

Voir la valeur body["messages"] ci-dessus.

__chat_id__

La str de l’chat_id.

Voir la valeur __metadata__["chat_id"] ci-dessus.

__session_id__

La str de l’session_id.

Voir la valeur __metadata__["session_id"] ci-dessus.

__message_id__

La str de l’message_id.

Voir la valeur __metadata__["message_id"] ci-dessus.

__event_emitter__

Un Callable utilisé pour afficher les informations d’événement à l’utilisateur.

__event_call__

Un Callable utilisé pour des Actions.

__files__

Une liste de fichiers envoyés via le chat. Notez que les images ne sont pas considérées comme des fichiers et sont envoyées directement au modèle dans la liste body["messages"].

Le binaire réel du fichier ne fait pas partie des arguments pour des raisons de performance, mais le fichier reste accessible via son chemin si nécessaire. Par exemple, en utilisant docker, la syntaxe Python pour le chemin pourrait être :

from pathlib import Path

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

Notez que le même dictionnaire de fichiers peut également être accédé via __metadata__["files"] (et sa valeur est [] si aucun fichier n'est envoyé) ou via body["files"] (mais la clé files est totalement absente de body si aucun fichier n'est envoyé).

Details
Exemple

[
{
"type": "file",
"file": {
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"filename": "Napoléon - Wikipédia.pdf",
"user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"hash": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"data": {
"content": "Napoléon - Wikipédia\n\n\nNapoléon Ier\n\nL'Empereur Napoléon dans son bureau aux\nTuileries, 1812\n\nEmpereur des Français\n\n1er règne 18 mai 1804 – 6 avril 1814\n\nSuccesseur Louis XVIII[a]\n\n2ème règne 20 mars 1815 – 22 juin 1815\n\nSuccesseur Louis XVIII[a]\n\nPremier Consul de la République française\n\nEn fonction\n13 décembre 1799 – 18 mai 1804\n\nNé Napoleone Buonaparte\n15 août 1769\nAjaccio, Corse, Royaume de\nFrance\n\nDécédé 5 mai 1821 (51 ans)\nLongwood, Sainte-Hélène\n\nInhumation 15 décembre 1840\nLes Invalides, Paris\n\nNapoléon\nNapoléon Bonaparte[b] (né Napoleone\nBuonaparte;[1][c] 15 août 1769 – 5 mai 1821), plus tard\ndit [REDACTED]",
# La valeur de contenu est la sortie du parseur de document, l’exemple ci-dessus est avec Tika comme parseur de document
},
"meta": {
"name": "Napoléon - Wikipédia.pdf",
"content_type": "application/pdf",
"size": 10486578,
# en bytes, ici environ 10Mo
"data": {},
"collection_name": "file-96xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
# commence toujours par file
},
"created_at": 1740000000,
"updated_at": 1740000000
},
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"url": "/api/v1/files/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "Napoléon - Wikipédia.pdf",
"collection_name": "file-96xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
"status": "uploadé",
"size": 10486578,
"error": "",
"itemId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
# itemId est différent de file["id"]
}
]


__request__

Une instance de fastapi.Request. Vous pouvez en lire davantage sur la page de migration ou dans la documentation de fastapi.

__task__

Un str pour le type de tâche. Sa valeur est juste un raccourci pour __metadata__["task"] si présent, sinon None.

Details
Valeurs possibles

[
"title_generation",
"tags_generation",
"emoji_generation",
"query_generation",
"image_prompt_generation",
"autocomplete_generation",
"function_calling",
"moa_response_generation"
]

__task_body__

Un dictionnaire contenant le body nécessaire pour accomplir une donnée __task__. Sa valeur est juste un raccourci pour __metadata__["task_body"] si présent, sinon None.

Sa structure est la même que body ci-dessus, avec des modifications comme l’utilisation du modèle approprié et le message système, etc.

__tools__

Une liste d’instances ToolUserModel.

Pour plus de détails sur les attributs des instances de ToolUserModel, le code peut être trouvé dans tools.py.