mirror of
https://github.com/R0m1k3/TodoFlow.git
synced 2026-10-11 17:28:17 +02:00
docs: update AI agent integration guide with tool calling schemas and missing route
This commit is contained in:
1 parent
278f74326c
commit
1ca25917d4
2 files changed
+265
-4
No files matched your search
+253
-2
@@ -62,7 +62,23 @@ Permet à l'Agent IA d'ajouter un nouvel objectif pour l'utilisateur.
|
||||
```
|
||||
* **Réponse (201 Created) :** Renvoie l'objet créé avec son UUID unique généré par le serveur et son horodatage de création (`created_at`).
|
||||
|
||||
### C. Mettre à jour une tâche (PUT `/api/v1/tasks/{id}`)
|
||||
### C. Récupérer les détails d'une tâche (GET `/api/v1/tasks/{id}`)
|
||||
Permet à l'Agent IA d'obtenir les informations complètes d'une tâche spécifique à partir de son UUID.
|
||||
|
||||
* **Réponse (200 OK) :**
|
||||
```json
|
||||
{
|
||||
"id": "e1a77ff0-2c32-4f37-baef-e68b903f806e",
|
||||
"title": "Acheter du pain",
|
||||
"description": "Prendre une tradition bien cuite",
|
||||
"status": "A faire",
|
||||
"created_at": "2026-05-26T14:15:30Z",
|
||||
"updated_at": "2026-05-26T14:15:30Z"
|
||||
}
|
||||
```
|
||||
* **Réponse (404 Not Found) :** Si aucune tâche ne correspond à l'identifiant fourni.
|
||||
|
||||
### D. Mettre à jour une tâche (PUT `/api/v1/tasks/{id}`)
|
||||
Permet à l'Agent IA de marquer une tâche comme **"En cours"** ou **"Termine"**, ou d'en modifier le titre/description.
|
||||
|
||||
* **Request Body (JSON - Mise à jour partielle acceptée) :**
|
||||
@@ -73,7 +89,7 @@ Permet à l'Agent IA de marquer une tâche comme **"En cours"** ou **"Termine"**
|
||||
```
|
||||
* **Réponse (200 OK) :** Renvoie l'objet mis à jour avec son nouvel horodatage `updated_at`.
|
||||
|
||||
### D. Supprimer une tâche (DELETE `/api/v1/tasks/{id}`)
|
||||
### E. Supprimer une tâche (DELETE `/api/v1/tasks/{id}`)
|
||||
Permet à l'Agent IA de nettoyer la liste en supprimant une tâche.
|
||||
|
||||
* **Réponse (204 No Content) :** Succès de la suppression (aucun corps de réponse).
|
||||
@@ -125,6 +141,241 @@ if create_resp.status_code == 201:
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ 5. Définition des Outils pour Agents IA (Function Calling)
|
||||
|
||||
Si vous configurez un agent IA externe utilisant les API d'OpenAI, Anthropic ou Gemini, vous pouvez copier-coller les schémas de fonctions ci-dessous pour lui donner un accès direct et natif à la Todo List.
|
||||
|
||||
### A. Format OpenAI / Gemini (JSON Schema)
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"type": "function",
|
||||
"function": {
|
||||
"name": "get_tasks",
|
||||
"description": "Récupère la liste de toutes les tâches stockées dans TodoFlow. Permet de filtrer optionnellement par statut.",
|
||||
"parameters": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": ["A faire", "En cours", "Termine"],
|
||||
"description": "Filtre optionnel pour récupérer uniquement les tâches ayant ce statut ('A faire', 'En cours', 'Termine')."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "function",
|
||||
"function": {
|
||||
"name": "get_task",
|
||||
"description": "Récupère les détails précis d'une tâche existante à partir de son UUID.",
|
||||
"parameters": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"task_id": {
|
||||
"type": "string",
|
||||
"format": "uuid",
|
||||
"description": "L'UUID unique de la tâche à récupérer."
|
||||
}
|
||||
},
|
||||
"required": ["task_id"]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "function",
|
||||
"function": {
|
||||
"name": "create_task",
|
||||
"description": "Crée une nouvelle tâche dans la Todo list.",
|
||||
"parameters": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"title": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"maxLength": 100,
|
||||
"description": "Le titre court et descriptif de la tâche (ex: 'Acheter du pain')."
|
||||
},
|
||||
"description": {
|
||||
"type": "string",
|
||||
"description": "Description détaillée de la tâche ou consignes supplémentaires."
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": ["A faire", "En cours", "Termine"],
|
||||
"default": "A faire",
|
||||
"description": "Le statut initial de la tâche (par défaut 'A faire')."
|
||||
}
|
||||
},
|
||||
"required": ["title"]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "function",
|
||||
"function": {
|
||||
"name": "update_task",
|
||||
"description": "Met à jour une tâche existante (modifier le titre, la description, ou changer de statut comme passer à 'En cours' ou 'Termine').",
|
||||
"parameters": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"task_id": {
|
||||
"type": "string",
|
||||
"format": "uuid",
|
||||
"description": "L'UUID unique de la tâche à modifier."
|
||||
},
|
||||
"title": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"maxLength": 100,
|
||||
"description": "Nouveau titre pour la tâche."
|
||||
},
|
||||
"description": {
|
||||
"type": "string",
|
||||
"description": "Nouvelle description pour la tâche."
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": ["A faire", "En cours", "Termine"],
|
||||
"description": "Nouveau statut pour la tâche."
|
||||
}
|
||||
},
|
||||
"required": ["task_id"]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "function",
|
||||
"function": {
|
||||
"name": "delete_task",
|
||||
"description": "Supprime définitivement une tâche de la liste à partir de son UUID.",
|
||||
"parameters": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"task_id": {
|
||||
"type": "string",
|
||||
"format": "uuid",
|
||||
"description": "L'UUID unique de la tâche à supprimer."
|
||||
}
|
||||
},
|
||||
"required": ["task_id"]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
### B. Format Anthropic / Claude (Messages API Tools)
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"name": "get_tasks",
|
||||
"description": "Récupère la liste de toutes les tâches stockées dans TodoFlow. Permet de filtrer optionnellement par statut.",
|
||||
"input_schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": ["A faire", "En cours", "Termine"],
|
||||
"description": "Filtre optionnel pour récupérer uniquement les tâches ayant ce statut."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "get_task",
|
||||
"description": "Récupère les détails précis d'une tâche existante à partir de son UUID.",
|
||||
"input_schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"task_id": {
|
||||
"type": "string",
|
||||
"format": "uuid",
|
||||
"description": "L'UUID unique de la tâche à récupérer."
|
||||
}
|
||||
},
|
||||
"required": ["task_id"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "create_task",
|
||||
"description": "Crée une nouvelle tâche dans la Todo list.",
|
||||
"input_schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"title": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"maxLength": 100,
|
||||
"description": "Le titre court et descriptif de la tâche."
|
||||
},
|
||||
"description": {
|
||||
"type": "string",
|
||||
"description": "Description détaillée de la tâche."
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": ["A faire", "En cours", "Termine"],
|
||||
"default": "A faire",
|
||||
"description": "Le statut initial de la tâche."
|
||||
}
|
||||
},
|
||||
"required": ["title"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "update_task",
|
||||
"description": "Met à jour une tâche existante par son UUID (modifier le titre, la description, ou changer de statut).",
|
||||
"input_schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"task_id": {
|
||||
"type": "string",
|
||||
"format": "uuid",
|
||||
"description": "L'UUID unique de la tâche à modifier."
|
||||
},
|
||||
"title": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"maxLength": 100,
|
||||
"description": "Nouveau titre pour la tâche."
|
||||
},
|
||||
"description": {
|
||||
"type": "string",
|
||||
"description": "Nouvelle description."
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": ["A faire", "En cours", "Termine"],
|
||||
"description": "Nouveau statut."
|
||||
}
|
||||
},
|
||||
"required": ["task_id"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "delete_task",
|
||||
"description": "Supprime définitivement une tâche de la liste à partir de son UUID.",
|
||||
"input_schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"task_id": {
|
||||
"type": "string",
|
||||
"format": "uuid",
|
||||
"description": "L'UUID unique de la tâche à supprimer."
|
||||
}
|
||||
},
|
||||
"required": ["task_id"]
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 💡 Conseils pour le Prompt System de l'Agent IA
|
||||
|
||||
Si vous intégrez cette API à un LLM (comme GPT-4 ou Gemini), vous pouvez ajouter cette consigne dans son **System Prompt** :
|
||||
|
||||
@@ -4,10 +4,18 @@
|
||||
Développement d'un widget Windows moderne et simple connecté à un serveur centralisé hébergé dans un conteneur Docker. L'API du serveur doit être accessible par un agent IA pour piloter la liste de tâches. Les tâches doivent afficher leur date de création et pouvoir être marquées comme "En cours" ou "Terminé".
|
||||
|
||||
## Focus Actuel
|
||||
- Phase 3 : Développement du Widget Windows avec Tauri et design Glassmorphism.
|
||||
- Mise en place du démarrage automatique et de l'option "Toujours au premier plan".
|
||||
- Projet entièrement à jour et documenté pour les Agents IA externes.
|
||||
|
||||
## Master Plan
|
||||
- [x] **Synchronisation avec le Dépôt Distant**
|
||||
- [x] Mettre à jour `task.md` pour refléter la demande de l'utilisateur
|
||||
- [x] Effectuer un `git pull` pour appliquer les 20 commits de retard sur `origin/main`
|
||||
- [x] Valider l'état des fichiers locaux et s'assurer que la copie locale est propre et fonctionnelle
|
||||
- [x] **Phase 6 : Mise à Jour de la Documentation pour Agent IA Externe (README)**
|
||||
- [x] Concevoir le plan d'action simplifié (`implementation_plan.md`)
|
||||
- [x] Documenter la route manquante `GET /api/v1/tasks/{task_id}` dans `README_AI_AGENT.md`
|
||||
- [x] Ajouter les schémas d'outils (Function Calling) pour LLMs dans `README_AI_AGENT.md`
|
||||
- [x] Vérifier la cohérence de la documentation avec le code réel de l'API
|
||||
- [x] **Phase 1 : Conception & Architecture**
|
||||
- [x] Créer le fichier `task.md`
|
||||
- [x] Consulter le sous-agent `architecte` pour la structure de l'API et du conteneur
|
||||
@@ -42,3 +50,5 @@ Développement d'un widget Windows moderne et simple connecté à un serveur cen
|
||||
## Journal de Progression
|
||||
- **2026-05-26** : Plan validé par l'utilisateur. Ajout des spécifications : configuration de l'URL API dans le widget, création directe de tâches, mode toujours au premier plan, et démarrage automatique. Début du développement du serveur API.
|
||||
- **2026-05-26** : Implémentation du serveur API conteneurisé (FastAPI + SQLModel + Docker Compose) et du widget de bureau Tauri (HTML/CSS/JS, drag-region, always-on-top natif, autostart registre Windows, tray icon). Rédaction des tests unitaires et du guide d'intégration pour Agent IA. Début de la validation.
|
||||
- **2026-05-27** : Récupération des dernières modifications du dépôt distant (`origin/main`). Synchronisation de 20 commits incluant des améliorations de l'interface (style glassmorphic, redimensionnement natif, icônes premium 3D) et des correctifs pour l'intégration Docker/Tauri. La copie locale est désormais à jour.
|
||||
- **2026-05-27** : Mise à jour complète du guide d'intégration `README_AI_AGENT.md`. Ajout de la documentation pour la route `GET /api/v1/tasks/{task_id}` et création de schémas complets d'outils (Function Calling / Tools) pour OpenAI, Gemini et Anthropic Claude pour faciliter l'intégration immédiate d'un agent externe.
|
||||
Reference in new issue
Block a user