---
title: Création de skill dans openwebui
author: Frederic AOUSTIN
version: 1.O
last_date: 05/07/2026
---

# Création de skill dans openwebui

![category](developpement)
![tag](python)
![tag](ia)

Il est possible de créer des **skill** dans **openWebUI**. Cet élément permet par la suite d'*automatiser*, *simplifier* des demandes qu'on fait à une IA.

## Définition

Une **skill** est en faite un prompt en *mardown* qui explicite ce que devrait faire comme étape un LLM pour résoudre un problème.

Cela permet en faite d'expliciter les étapes que doit suivre un LLM pour traiter la demande.

Pour rappel le LLM n'est pas intelligent, il sait identifier des **patterns** et les reproduire. Donc comme dans le cas d'un *RAG* si vous explicitez à un *LLM* que faire dans une situation précise ... lorsqu'il détectera la situation (= le **pattern**) alors il suivra simplement la recette de cuisine

## Exemple

Nous allons traiter un exemple concert: envoyer un message à toutes les personnes qui ne sont pas à la maison ... facile ;-)

### Les outils

J'ai crée dans **openWebUi** un modèle qui utilise des outils provenant de deux serveurs *mcp* personnel (mcphass et mcpfree).
Dans ces serveurs ont retrouve deux outils qui vont nous être utile

- get_localisation (dans mcphass) qui permet d'obtenir pour chaque personne de la famille sa localisation. Cette localisation peut être *maison* si sa position géographique correspond à la maison.
- send_sms (dans mcpfree) qui permet d'envoyer un message à une personne de la famille sur son téléphone. Cet outil prend en paramètre le nom de l'utilisateur et le message.

On voit déjà l'algorithme:

- demande la liste de localisation
- boucles sur les localisations
- si une localisation est différente de maison garde le nom de l'utilisateur
- pour chaque utilisateur identifié envoi un message

### Le skill

``````markdown
# Message aux personnes hors de la maison

Tu as accès aux outils suivants :

* `mcphass.get_localisation`
  Retourne un objet JSON de la forme :

  ```json
{
  "locations": [
    {
      "username": "Nathanaelle",
      "city": "Les Herbiers",
      "latitude": 46.8757233,
      "longitude": -1.0114678
    },
    {
      "username": "Penelope",
      "city": "maison",
      "latitude": 46.868373,
      "longitude": -0.9972142
    },
    {
      "username": "Arthur",
      "city": "maison",
      "latitude": 46.8683678,
      "longitude": -0.9972232
    },
    {
      "username": "Son",
      "city": "maison",
      "latitude": 46.8683678,
      "longitude": -0.9972232
    }
  ]
}
  ```
il contient pour chaque personne le nom (username), la localisation (city)


* `mcpfree.send_sms`
  Permet d’envoyer un message à une personne.
  Arguments :

  * `name` : nom de la personne
  * `message` : texte à envoyer

## Règle métier

Quand l’utilisateur demande de contacter les membres de la famille qui ne sont pas à la maison, tu dois :

1. appeler `mcphass.get_localisation`
2. lire `locations`
3. considérer qu’une personne est à la maison si `city` vaut `maison`
4. pour chaque personne dont `city != "maison"`, appeler `mcpfree.send_sms`
5. envoyer par défaut le message `Où es-tu ?` si l’utilisateur n’a pas fourni de message
6. répondre avec la liste des personnes contactées

## Contraintes

* N’envoie jamais de message avant d’avoir récupéré la liste des localisations.
* N’envoie jamais de message à une personne dont `city == "maison"`.
* Si tout le monde est à la maison, n’envoie rien.
* Si une localisation est vide ou absente, ne contacte pas la personne automatiquement et signale-le dans le compte-rendu.

## Exemples

Si l’utilisateur dit :
`Envoie un message aux personnes qui ne sont pas à la maison`

Tu dois :

1. appeler `mcphass.get_localisation`
2. filtrer les personnes dont `city != "maison"`
3. appeler `mcpfree.send_sms` pour chacune avec `message = "Où es-tu ?"`

Si l’utilisateur dit :
`Envoie "Tu rentres quand ?" à ceux qui ne sont pas à la maison`

Tu dois :

1. appeler `mcphass.get_localisation`
2. filtrer les personnes hors de la maison (dont `city != "maison"`)
3. appeler `mcpfree.send_sms` avec `message = "Tu rentres quand ?"`

``````

### le test


J'ai pu essayer avec succès les prompts suivant:

- Envoie "Test Papa ?" à ceux qui ne sont pas à la maison
- Envoie "Test Papa ?" à ceux qui sont à la maison


## Retour d'experience

Il faut vite prendre en compte quelques élements:

- il est préférable d'avoir des noms identiques: dans hass j'utilise la notion de username, dans mcpfree user uniquement ... pour un LLM qui recherche de la logique c'est trompeur
- si notre algo est déterministe il est peut être préférable (comme dans notre cas) de créer un tools spécifique ... il sera plus facile à valider et à tester
