bots-garden/mini-mepublic Fork
⑂ main
Commits
⬇ Clone ▾
git clone https://git.rickub.com/bots-garden/mini-me.git
git clone ssh://git@rickub.com/bots-garden/mini-me.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

Download ZIP
🛟 Updated. bae2487 · on main · k33g · yesterday
fetch-a-web-page.md · 86 lines · 4.4 KBmarkdown
Blame HistoryOpen raw

Comment récupérer une page web en Markdown

Ce guide montre comment faire lire une page web au modèle, ou la faire enregistrer dans un fichier, avec l'outil intégré fetch_content. Il suppose que vous lancez déjà mm avec un fichier de configuration.

Étapes

  1. Activez l'outil dans votre fichier de configuration (il est désactivé par défaut) :

    fetchContentTool: true
    
  2. Lancez mm et vérifiez que la bannière de démarrage cite fetch_content parmi les outils.

  3. Demandez la page avec vos mots, dans la langue de votre choix :

    récupère le contenu de https://k33g.org
    
    fetch the content of https://k33g.org
    

    Le terminal affiche 🌐 fetch_content: https://k33g.org, puis les premières lignes du Markdown, et le modèle répond à partir de ce contenu.

Enregistrer la page dans un fichier sans l'afficher

Nommez le fichier et précisez de ne pas l'afficher :

récupère le contenu de https://hello.com mais ne l'affiche pas et sauve le dans hello.txt

Le modèle passe output: hello.txt. Le Markdown est écrit dans hello.txt (relatif au répertoire où tourne mm, ou au projet ouvert dans l'éditeur) et l'outil ne renvoie qu'une ligne :

[fetch_content: saved 9 lines of Markdown (421 bytes) from https://hello.com to hello.txt — the content is not shown]

La page n'entre pas dans la conversation : une page longue n'épuise donc pas la fenêtre de contexte.

Orienter l'agent vers une liste de pages

Pour que l'agent lise d'abord certaines pages, listez-les dans le prompt système. Aucun autre réglage n'est nécessaire :

fetchContentTool: true
system: |
  You answer questions about mini-me from its documentation.
  Before answering, call fetch_content on the page of this list that fits the
  question, and answer from it. Do not use any other URL.

  - How to add a skill: https://rickub.com/bots-garden/mini-me/blob/main/docs/en/how-to/add-a-skill.md
  - How to keep sessions: https://rickub.com/bots-garden/mini-me/blob/main/docs/en/how-to/keep-sessions.md

Donnez à chaque URL quelques mots qui disent quand l'utiliser : c'est sur cette base que le modèle choisit.

Cette liste guide le modèle, mais ne le limite pas. Si on lui demande un autre site, le modèle peut quand même le récupérer, même avec Do not use any other URL. Pour bloquer des URL, utilisez un hook : voir protéger l'agent avec des hooks.

La liste est envoyée à chaque requête. Au-delà de quelques pages, envisagez un skill : voir ajouter un skill.

Variantes

  • Une URL tapée à la va-vite. k33g.org et https//k33g.org fonctionnent : un schéma manquant devient https://, les deux-points oubliés sont remis.
  • Tableaux complexes. Les tableaux à cellules fusionnées sont gardés en HTML brut par défaut. Demandez des tableaux aplatis (« …en tableaux Markdown, aplatis-les ») et le modèle passe tables: flatten.
  • Texte barré et listes de tâches. Demandez-les explicitement (« garde le texte barré », « garde les cases à cocher ») et le modèle passe strikethrough: true ou taskList: true.
  • Liens relatifs à un autre site. Si la page est un miroir, demandez de résoudre les liens par rapport à l'original ; le modèle passe baseUrl.
  • Avec yolo: false. Lire une page ne demande aucune permission ; l'enregistrer dans un fichier la demande d'abord, comme write_file.

En cas d'échec

Le modèle reçoit [fetch_content: error N (…) — raison] et vous explique en général pourquoi :

  • error 2 (input) : le site est injoignable, a renvoyé une erreur HTTP, ou son robots.txt interdit aux robots de lire cette page. mm ne contourne pas le robots.txt.
  • error 1 (conversion) : l'URL n'est pas une page HTML (un PDF, du JSON, une image) ou dépasse 5 Mio.
  • error 3 (usage) : l'appel lui-même est faux, par exemple une URL ftp://.

Si le modèle utilise curl via bash à la place, l'outil n'est probablement pas déclaré : vérifiez fetchContentTool: true et la bannière.

Voir aussi

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# Comment récupérer une page web en Markdown

Ce guide montre comment faire lire une page web au modèle, ou la faire enregistrer dans un fichier, avec l'outil intégré `fetch_content`. Il suppose que vous lancez déjà `mm` avec un fichier de configuration.

## Étapes

1. Activez l'outil dans votre fichier de configuration (il est désactivé par défaut) :

   ```yaml
   fetchContentTool: true
   ```

2. Lancez `mm` et vérifiez que la bannière de démarrage cite `fetch_content` parmi les outils.

3. Demandez la page avec vos mots, dans la langue de votre choix :

   ```text
   récupère le contenu de https://k33g.org
   ```

   ```text
   fetch the content of https://k33g.org
   ```

   Le terminal affiche `🌐 fetch_content: https://k33g.org`, puis les premières lignes du Markdown, et le modèle répond à partir de ce contenu.

## Enregistrer la page dans un fichier sans l'afficher

Nommez le fichier et précisez de ne pas l'afficher :

```text
récupère le contenu de https://hello.com mais ne l'affiche pas et sauve le dans hello.txt
```

Le modèle passe `output: hello.txt`. Le Markdown est écrit dans `hello.txt` (relatif au répertoire où tourne `mm`, ou au projet ouvert dans l'éditeur) et l'outil ne renvoie qu'une ligne :

```text
[fetch_content: saved 9 lines of Markdown (421 bytes) from https://hello.com to hello.txt — the content is not shown]
```

La page n'entre pas dans la conversation : une page longue n'épuise donc pas la fenêtre de contexte.

## Orienter l'agent vers une liste de pages

Pour que l'agent lise d'abord certaines pages, listez-les dans le prompt système. Aucun autre réglage n'est nécessaire :

```yaml
fetchContentTool: true
system: |
  You answer questions about mini-me from its documentation.
  Before answering, call fetch_content on the page of this list that fits the
  question, and answer from it. Do not use any other URL.

  - How to add a skill: https://rickub.com/bots-garden/mini-me/blob/main/docs/en/how-to/add-a-skill.md
  - How to keep sessions: https://rickub.com/bots-garden/mini-me/blob/main/docs/en/how-to/keep-sessions.md
```

Donnez à chaque URL quelques mots qui disent quand l'utiliser : c'est sur cette base que le modèle choisit.

Cette liste guide le modèle, mais ne le limite pas. Si on lui demande un autre site, le modèle peut quand même le récupérer, même avec `Do not use any other URL`. Pour bloquer des URL, utilisez un hook : voir [protéger l'agent avec des hooks](guard-the-agent-with-hooks.md).

La liste est envoyée à chaque requête. Au-delà de quelques pages, envisagez un skill : voir [ajouter un skill](add-a-skill.md).

## Variantes

- **Une URL tapée à la va-vite.** `k33g.org` et `https//k33g.org` fonctionnent : un schéma manquant devient `https://`, les deux-points oubliés sont remis.
- **Tableaux complexes.** Les tableaux à cellules fusionnées sont gardés en HTML brut par défaut. Demandez des tableaux aplatis (« …en tableaux Markdown, aplatis-les ») et le modèle passe `tables: flatten`.
- **Texte barré et listes de tâches.** Demandez-les explicitement (« garde le texte barré », « garde les cases à cocher ») et le modèle passe `strikethrough: true` ou `taskList: true`.
- **Liens relatifs à un autre site.** Si la page est un miroir, demandez de résoudre les liens par rapport à l'original ; le modèle passe `baseUrl`.
- **Avec `yolo: false`.** Lire une page ne demande aucune permission ; l'enregistrer dans un fichier la demande d'abord, comme `write_file`.

## En cas d'échec

Le modèle reçoit `[fetch_content: error N (…) — raison]` et vous explique en général pourquoi :

- `error 2 (input)` : le site est injoignable, a renvoyé une erreur HTTP, ou son `robots.txt` interdit aux robots de lire cette page. `mm` ne contourne pas le `robots.txt`.
- `error 1 (conversion)` : l'URL n'est pas une page HTML (un PDF, du JSON, une image) ou dépasse 5 Mio.
- `error 3 (usage)` : l'appel lui-même est faux, par exemple une URL `ftp://`.

Si le modèle utilise `curl` via `bash` à la place, l'outil n'est probablement pas déclaré : vérifiez `fetchContentTool: true` et la bannière.

## Voir aussi

- Chaque champ, règle et code d'erreur : [référence des outils intégrés](../reference/tools.md#fetch_content)
- La clé de configuration : [référence de la configuration](../reference/configuration.md)
- Pourquoi l'outil fonctionne ainsi : [l'outil `fetch_content`](../explanation/fetch-content-tool.md)