How seritiaymen/tool_calling works
Tool Calling est une application CLI qui transforme une question en réponse en laissant OpenRouter décider s’il faut consulter l’heure locale ou la météo. main configure les composants, puis le service orchestre les appels LLM et l’exécution des outils jusqu’à une réponse ou la limite d’étapes. Le provider valide les réponses et gère les retries; le registre convertit les erreurs d’outils en observations pour le LLM. Les relations ci-dessous s’appuient sur les extraits et le README; les intégrations externes sont représentées séparément.
Main entry points: main.py Point d’entrée · openrouter_provider.py Provider OpenRouter · tool_calling_service.py Boucle d’outils · registry.py Registre et exécution
Components 13
Entrée et configuration
- Point d’entrée
src/main.py - Configuration
src/config.py
Orchestration conversationnelle
- Boucle d’outils
src/services/tool_calling_service.py
Accès au LLM
- Provider OpenRouter
src/providers/openrouter_provider.py
Outils métier
- Registre et exécution
src/tools/registry.py - Heure et météo
src/tools/implementations.py - Schémas d’outils
src/tools/schemas.py
Contrats et observabilité
- Contrat provider
src/domain/protocols.py - Erreurs LLM
src/domain/exceptions.py - Logs JSON
src/utils/logger.py
Other components
- Utilisateur CLI
- OpenRouter API
- WeatherAPI
Connections 19
- Utilisateur CLI → Point d’entrée: lance
README.md - Point d’entrée → Configuration: charge
src/main.py - Point d’entrée → Provider OpenRouter: instancie
src/main.py - Point d’entrée → Registre et exécution: construit
src/main.py - Point d’entrée → Schémas d’outils: fournit
src/main.py - Point d’entrée → Boucle d’outils: configure et appelle
src/main.py - Point d’entrée → Logs JSON: initialise
src/main.py - Boucle d’outils → Provider OpenRouter: appelle LLM
src/services/tool_calling_service.py - Provider OpenRouter → OpenRouter API: requête HTTP
src/providers/openrouter_provider.py - Boucle d’outils → Registre et exécution: dispatch outil
src/services/tool_calling_service.py - Registre et exécution → Heure et météo: exécute outil
src/tools/registry.py - Heure et météo → WeatherAPI: requête météo
src/tools/implementations.py - Provider OpenRouter → Configuration: lit paramètres
src/providers/openrouter_provider.py - Point d’entrée → Configuration: lit clé météo
src/main.py - Boucle d’outils → Contrat provider: utilise contrat
src/services/tool_calling_service.py - Provider OpenRouter → Erreurs LLM: signale erreurs
src/providers/openrouter_provider.py - Provider OpenRouter → Logs JSON: journalise
src/providers/openrouter_provider.py - Boucle d’outils → Logs JSON: journalise
src/services/tool_calling_service.py - Registre et exécution → Logs JSON: journalise
src/tools/registry.py