from langchain_core.pydantic_v1 import BaseModel, Field class QueryAnalysis(BaseModel): """Analyzing the user query""" esrs_type: str = Field( enum=[ "ESRS 1", "ESRS 2", "ESRS E1", "ESRS E2", "ESRS E3", "ESRS E4", "ESRS E5", "ESRS S1", "ESRS S2", "ESRS S3", "ESRS S4", "ESRS G1", ], description=""" Given a user question choose which documents would be most relevant for answering their question, - ESRS 1 is for questions about general principles for preparing and presenting sustainability information in accordance with CSRD - ESRS 2 is for questions about general disclosures related to sustainability reporting, including governance, strategy, impact, risk, opportunity management, and metrics and targets - ESRS E1 is for questions about climate change, global warming, GES and energy - ESRS E2 is for questions about air, water, and soil pollution, and dangerous substances - ESRS E3 is for questions about water and marine resources - ESRS E4 is for questions about biodiversity, nature, wildlife and ecosystems - ESRS E5 is for questions about resource use and circular economy - ESRS S1 is for questions about workforce and labor issues, job security, fair pay, and health and safety - ESRS S2 is for questions about workers in the value chain, workers' treatment - SRS S3 is for questions about affected communities, impact on local communities - ESRS S4 is for questions about consumers and end users, customer privacy, safety, and inclusion - ESRS G1 is for questions about governance, risk management, internal control, and business conduct """, ) sources: str = Field( enum=["ESRS", "External"], description=""" Given a user question choose which documents would be most relevant for answering their question, - ESRS is for questions about a specific environmental, social or governance topic, as well as CSRD's general principles and disclosures - External is for questions about how to implement the CSRD, or general questions about CSRD's context """, ) intent: str = Field( enum=[ "Specific topic", "Implementation reco", "KPI extraction", ], description=""" Categorize the user query in one of the following categories, Examples: - Specific topic: "What are the specificities of ESRS E1 ?" - Implementation reco: "How should I compute my scope 1 reduction target ?" - KPI extraction: "When will the CSRD be mandatory for my small French company ?" """, )