Spaces:
Sleeping
Sleeping
Cyril Dupland
Add Merithalle API integration with new service and tools for fetching site indicators. Update settings to include Merithalle API keys and base URL. Enhance A2 payload with site identifier and update prompts to utilize new indicators tool. Introduce example request JSON for A3 analysis.
533bf4d | """Tool for fetching site indicators from the Merithalle API.""" | |
| from typing import Literal | |
| from langchain_core.tools import tool | |
| from services.merithalle_api_service import ( | |
| merithalle_api_service, | |
| VALID_ENJEUX_SLUGS, | |
| ) | |
| # Type alias for valid enjeux slugs | |
| EnjeuxSlug = Literal[ | |
| "presentation", | |
| "biodiversite", | |
| "dechets_effluents", | |
| "eau", | |
| "energie", | |
| "zonessensibles", | |
| "formation", | |
| "ressourceshumaines", | |
| "santesecurite", | |
| "contexte_environnemental", | |
| "nonconformite", | |
| "parties_prenantes_environnementales", | |
| "systeme_environnemental", | |
| "systeme_securite_travail", | |
| "fertilisation", | |
| "herbicide", | |
| "protectionvignoble", | |
| "travail_sol", | |
| ] | |
| def get_site_indicators(id_site: int, enjeux: str) -> str: | |
| """ | |
| Récupère les indicateurs d'un site pour un enjeu spécifique depuis l'API Mérithalle. | |
| Utilisez cet outil UNIQUEMENT pour : | |
| - Comparer les données actuelles avec celles d'un AUTRE enjeu du même site | |
| - Obtenir des données de contexte supplémentaires sur le site | |
| - Répondre à une demande explicite d'informations sur un enjeu spécifique | |
| NE PAS utiliser cet outil pour : | |
| - L'enjeu en cours d'analyse (les données sont déjà fournies dans le contexte) | |
| - De manière systématique (uniquement sur demande ou besoin de comparaison) | |
| Args: | |
| id_site: Identifiant numérique du site Mérithalle | |
| enjeux: Slug de l'enjeu. Valeurs possibles : | |
| - presentation : Présentation et Contexte | |
| - biodiversite : Biodiversité | |
| - dechets_effluents : Déchets et Effluents | |
| - eau : Eau | |
| - energie : Énergie | |
| - zonessensibles : Sensibilité du milieu | |
| - formation : Formation | |
| - ressourceshumaines : Ressources humaines | |
| - santesecurite : Santé Sécurité | |
| - contexte_environnemental : Contexte Environnemental | |
| - nonconformite : Non conformité | |
| - parties_prenantes_environnementales : Parties prenantes environnementales | |
| - systeme_environnemental : Système environnemental | |
| - systeme_securite_travail : Système de gestion de la sécurité au travail | |
| - fertilisation : Fertilisation | |
| - herbicide : Traitements herbicides | |
| - protectionvignoble : Protection du vignoble | |
| - travail_sol : Gestion de l'enherbement et travail du sol | |
| Returns: | |
| Texte formaté contenant les indicateurs avec valeurs N, N-1 et variations. | |
| Format : | |
| ``` | |
| Sous-enjeu : NOM_SOUS_ENJEU | |
| GROUP | |
| - [LABEL_CHAMP] : [VALEUR] [UNIT] (N-1 : [VALEUR_N1] [UNIT] | Var. : [VARIATION]%) | |
| ``` | |
| En cas d'erreur, retourne un message d'erreur lisible. | |
| """ | |
| # Validate enjeux parameter | |
| if enjeux not in VALID_ENJEUX_SLUGS: | |
| valid_slugs = ", ".join(sorted(VALID_ENJEUX_SLUGS)) | |
| return ( | |
| f"Erreur : Le slug d'enjeu '{enjeux}' n'est pas valide. " | |
| f"Valeurs acceptées : {valid_slugs}" | |
| ) | |
| # Validate id_site | |
| if not isinstance(id_site, int) or id_site <= 0: | |
| return f"Erreur : L'identifiant de site doit être un entier positif. Reçu : {id_site}" | |
| # Fetch and format indicators | |
| return merithalle_api_service.get_indicators_text(id_site, enjeux) | |