


Dans ce didacticiel, nous allons créer un planificateur de tâches alimenté par l'IA à l'aide de ClientAI et d'Ollama. Notre planificateur décomposera les objectifs en tâches réalisables, créera des délais réalistes et gérera les ressources — tout cela s'exécutant sur votre propre machine.
Notre planificateur de tâches sera capable de :
- Décomposer les objectifs en tâches spécifiques et réalisables
- Créer des délais réalistes avec gestion des erreurs
- Gérer et allouer efficacement les ressources
- Fournir des plans structurés et formatés
Pour les documents de ClientAI, voir ici et pour Github Repo, ici.
Configurer notre environnement
Tout d'abord, créez un nouveau répertoire pour votre projet :
mkdir local_task_planner cd local_task_planner
Installez ClientAI avec le support d'Ollama :
pip install clientai[ollama]
Assurez-vous qu'Ollama est installé sur votre système. Vous pouvez l'obtenir sur le site Web d'Ollama.
Créez notre fichier Python principal :
touch task_planner.py
Commençons par nos principales importations :
from datetime import datetime, timedelta from typing import Dict, List import logging from clientai import ClientAI from clientai.agent import create_agent, tool from clientai.ollama import OllamaManager logger = logging.getLogger(__name__)
Chaque composant joue un rôle crucial :
- datetime : Nous aide à gérer les délais et la planification des tâches
- ClientAI : Fournit notre cadre d'IA
- OllamaManager : Gère notre modèle d'IA local
- Divers modules utilitaires pour les astuces de type et la journalisation
Construire le noyau du planificateur de tâches
Tout d'abord, créons notre classe TaskPlanner qui gérera l'interaction avec l'IA :
class TaskPlanner: """A local task planning system using Ollama.""" def __init__(self): """Initialize the task planner with Ollama.""" self.manager = OllamaManager() self.client = None self.planner = None def start(self): """Start the Ollama server and initialize the client.""" self.manager.start() self.client = ClientAI("ollama", host="http://localhost:11434") self.planner = create_agent( client=self.client, role="task planner", system_prompt="""You are a practical task planner. Break down goals into specific, actionable tasks with realistic time estimates and resource needs. Use the tools provided to validate timelines and format plans properly.""", model="llama3", step="think", tools=[validate_timeline, format_plan], tool_confidence=0.8, stream=True, )
Ce cours nous sert de base. Il gère le cycle de vie du serveur Ollama, crée et configure notre client IA et configure notre agent de planification avec des capacités spécifiques.
Créer nos outils de planification
Construisons maintenant les outils que notre IA utilisera. Tout d'abord, le validateur de chronologie :
@tool(name="validate_timeline") def validate_timeline(tasks: Dict[str, int]) -> Dict[str, dict]: """ Validate time estimates and create a realistic timeline. Args: tasks: Dictionary of task names and estimated hours Returns: Dictionary with start dates and deadlines """ try: current_date = datetime.now() timeline = {} accumulated_hours = 0 for task, hours in tasks.items(): try: hours_int = int(float(str(hours))) if hours_int <p>Ce validateur convertit les estimations de temps en jours ouvrables, gère les entrées non valides avec élégance, crée une planification séquentielle réaliste et fournit une journalisation détaillée pour le débogage.</p> <p>Ensuite, créons notre formateur de plan :<br> </p> <pre class="brush:php;toolbar:false">@tool(name="format_plan") def format_plan( tasks: List[str], timeline: Dict[str, dict], resources: List[str] ) -> str: """ Format the plan in a clear, structured way. Args: tasks: List of tasks timeline: Timeline from validate_timeline resources: List of required resources Returns: Formatted plan as a string """ try: plan = "== Project Plan ==\n\n" plan += "Tasks and Timeline:\n" for i, task in enumerate(tasks, 1): if task in timeline: t = timeline[task] plan += f"\n{i}. {task}\n" plan += f" Start: {t['start']}\n" plan += f" End: {t['end']}\n" plan += f" Estimated Hours: {t['hours']}\n" plan += "\nRequired Resources:\n" for resource in resources: plan += f"- {resource}\n" return plan except Exception as e: logger.error(f"Error formatting plan: {str(e)}") return "Error: Unable to format plan"
Ici, nous souhaitons créer un résultat cohérent et lisible avec une numérotation des tâches appropriée et un calendrier organisé.
Construire l'interface
Créons une interface conviviale pour notre agenda :
def get_plan(self, goal: str) -> str: """ Generate a plan for the given goal. Args: goal: The goal to plan for Returns: A formatted plan string """ if not self.planner: raise RuntimeError("Planner not initialized. Call start() first.") return self.planner.run(goal) def main(): planner = TaskPlanner() try: print("Task Planner (Local AI)") print("Enter your goal, and I'll create a practical, timeline-based plan.") print("Type 'quit' to exit.") planner.start() while True: print("\n" + "=" * 50 + "\n") goal = input("Enter your goal: ") if goal.lower() == "quit": break try: plan = planner.get_plan(goal) print("\nYour Plan:\n") for chunk in plan: print(chunk, end="", flush=True) except Exception as e: print(f"Error: {str(e)}") finally: planner.stop() if __name__ == "__main__": main()
Notre interface propose :
- Instructions d'utilisation claires
- Génération de forfaits en temps réel avec streaming
- Gestion appropriée des erreurs
- Gestion propre des arrêts
Exemple d'utilisation
Voici ce que vous verrez lorsque vous exécuterez le planificateur :
Task Planner (Local AI) Enter your goal, and I'll create a practical, timeline-based plan. Type 'quit' to exit. ================================================== Enter your goal: Create a personal portfolio website Your Plan: == Project Plan == Tasks and Timeline: 1. Requirements Analysis and Planning Start: 2024-12-08 End: 2024-12-09 Estimated Hours: 6 2. Design and Wireframing Start: 2024-12-09 End: 2024-12-11 Estimated Hours: 12 3. Content Creation Start: 2024-12-11 End: 2024-12-12 Estimated Hours: 8 4. Development Start: 2024-12-12 End: 2024-12-15 Estimated Hours: 20 Required Resources: - Design software (e.g., Figma) - Text editor or IDE - Web hosting service - Version control system
Améliorations futures
Considérez ces améliorations pour votre propre planificateur de tâches :
- Ajouter un suivi des dépendances entre les tâches
- Inclure les calculs de coûts pour les ressources
- Enregistrer les plans dans des fichiers ou dans des outils de gestion de projet
- Suivez les progrès par rapport au plan initial
- Ajouter une validation pour la disponibilité des ressources
- Mettre en œuvre la planification de tâches parallèles
- Ajouter la prise en charge des tâches récurrentes
- Inclure des niveaux de priorité pour les tâches
Pour en savoir plus sur ClientAI, accédez à la documentation.
Connectez-vous avec moi
Si vous avez des questions sur ce didacticiel ou si vous souhaitez partager vos améliorations apportées au planificateur de tâches, n'hésitez pas à nous contacter :
- GitHub : igorbenav
- X/Twitter : @igorbenav
- LinkedIn : Igor
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Vous pouvez apprendre les concepts de programmation de base et les compétences de Python dans les 2 heures. 1. Apprenez les variables et les types de données, 2. Flux de contrôle maître (instructions et boucles conditionnelles), 3. Comprenez la définition et l'utilisation des fonctions, 4. Démarrez rapidement avec la programmation Python via des exemples simples et des extraits de code.

Python est largement utilisé dans les domaines du développement Web, de la science des données, de l'apprentissage automatique, de l'automatisation et des scripts. 1) Dans le développement Web, les cadres Django et Flask simplifient le processus de développement. 2) Dans les domaines de la science des données et de l'apprentissage automatique, les bibliothèques Numpy, Pandas, Scikit-Learn et Tensorflow fournissent un fort soutien. 3) En termes d'automatisation et de script, Python convient aux tâches telles que les tests automatisés et la gestion du système.

Vous pouvez apprendre les bases de Python dans les deux heures. 1. Apprenez les variables et les types de données, 2. Structures de contrôle maître telles que si les instructions et les boucles, 3. Comprenez la définition et l'utilisation des fonctions. Ceux-ci vous aideront à commencer à écrire des programmes Python simples.

Comment enseigner les bases de la programmation novice en informatique dans les 10 heures? Si vous n'avez que 10 heures pour enseigner à l'informatique novice des connaissances en programmation, que choisissez-vous d'enseigner ...

Comment éviter d'être détecté lors de l'utilisation de FiddlereVerywhere pour les lectures d'homme dans le milieu lorsque vous utilisez FiddlereVerywhere ...

Chargement des fichiers de cornichons dans Python 3.6 Rapport de l'environnement Erreur: modulenotFoundError: NomoduLenamed ...

Comment résoudre le problème de la segmentation des mots jieba dans l'analyse des commentaires pittoresques? Lorsque nous effectuons des commentaires et des analyses pittoresques, nous utilisons souvent l'outil de segmentation des mots jieba pour traiter le texte ...

Comment utiliser l'expression régulière pour correspondre à la première étiquette fermée et à s'arrêter? Lorsque vous traitez avec HTML ou d'autres langues de balisage, des expressions régulières sont souvent nécessaires pour ...


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Télécharger la version Mac de l'éditeur Atom
L'éditeur open source le plus populaire

Dreamweaver CS6
Outils de développement Web visuel

ZendStudio 13.5.1 Mac
Puissant environnement de développement intégré PHP

Version crackée d'EditPlus en chinois
Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code