Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| import json | |
| from typing import List | |
| from langchain.output_parsers import PydanticOutputParser | |
| from pydantic.v1 import BaseModel, Field, validator | |
| from langchain.prompts import PromptTemplate | |
| from typing import List | |
| from pydantic import BaseModel, Field, validator, ValidationError | |
| from typing import List, Tuple | |
| from langchain.prompts import PromptTemplate | |
| from langchain_openai import OpenAI,ChatOpenAI | |
| # Modèles Pydantic pour la détection de fautes de style | |
| class StyleErrorDetection(BaseModel): | |
| erroneous_expression: str = Field(..., description="L'expression ou la tournure incorrecte détectée") | |
| correct_suggestion: str = Field(..., description="La correction ou suggestion correcte") | |
| occurrences: int = Field(..., description="Nombre d'occurrences de l'expression erronée") | |
| indices: List[Tuple[int, int]] = Field(..., description="Indices de début et de fin pour chaque occurrence") | |
| def to_dict(self): | |
| return { | |
| "erroneous_expression": self.erroneous_expression, | |
| "correct_suggestion": self.correct_suggestion, | |
| "occurrences": self.occurrences, | |
| "indices": self.indices | |
| } | |
| class StyleErrorSummary(BaseModel): | |
| total_style_errors_detected: int = Field(..., description="Nombre total de fautes de style détectées") | |
| def to_dict(self): | |
| return { | |
| "total_style_errors_detected": self.total_style_errors_detected | |
| } | |
| class StyleErrorResult(BaseModel): | |
| style_errors: List[StyleErrorDetection] = Field(..., description="Liste des fautes de style détectées") | |
| summary: StyleErrorSummary = Field(..., description="Résumé des fautes de style détectées") | |
| def to_dict(self): | |
| return { | |
| "style_errors": [error.to_dict() for error in self.style_errors], | |
| "summary": self.summary.to_dict() | |
| } | |
| # Création du prompt et du modèle LLMChain pour analyser les fautes de style | |
| prompt_template = """ | |
| Tu es un détecteur de texte AI très précis. Je vais te donner un texte, et ta mission est de repérer des fautes de style. | |
| Cela inclut les répétitions, les tournures de phrases maladroites, et les mauvais choix de mots. | |
| Pour chaque erreur détectée, tu dois fournir les informations suivantes : | |
| - L'expression ou la tournure incorrecte détectée | |
| - La correction ou suggestion correcte | |
| - Le nombre d'occurrences de l'expression erronée | |
| - Les indices de début et de fin pour chaque occurrence | |
| Le texte à analyser est le suivant : | |
| ```{text}``` | |
| """ | |
| # Utilisation de LangChain pour la détection des erreurs | |
| def get_llm_chain(): | |
| output_parser = PydanticOutputParser(pydantic_object=StyleErrorResult) | |
| prompt = PromptTemplate(input_variables=["text"], template=prompt_template) | |
| # Remplacez `llm` par votre modèle de langage préféré, tel que OpenAI GPT ou autre | |
| # llm = None # Remplacez ceci par votre modèle LLM | |
| # llm_chain = LLMChain(llm=llm, prompt=prompt, output_parser=output_parser) | |
| llm = ChatOpenAI(model='gpt-4o',temperature=0.5, api_key="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", verbose = True) | |
| llm_chain= gen_prompt_template | llm | output_parser | |
| return llm_chain | |
| # Fonction pour analyser les fautes de style | |
| def analyze_style_errors(text: str) -> dict: | |
| llm_chain = get_llm_chain() | |
| result = llm_chain.run(text=text) | |
| return result.to_dict() | |
| # Interface Streamlit | |
| st.title("Détection des fautes de style") | |
| # Champ de saisie de texte | |
| input_text = st.text_area("Entrez votre texte ici :", height=200) | |
| # Bouton d'analyse | |
| if st.button("Lancer l'analyse"): | |
| if input_text: | |
| try: | |
| # Analyse du texte pour détecter les fautes de style | |
| result = analyze_style_errors(input_text) | |
| # Affichage des résultats en JSON formaté | |
| st.subheader("Résultats de l'analyse") | |
| st.json(result) | |
| except Exception as e: | |
| st.error(f"Une erreur s'est produite lors de l'analyse : {str(e)}") | |
| else: | |
| st.error("Veuillez entrer du texte pour lancer l'analyse.") | |