mohamed.tsouli commited on
Commit
01bf518
·
1 Parent(s): df095e8

agent culture populaire hackathon SIA

Browse files
.gitignore ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ .env
2
+ __pycache__/
app.py CHANGED
@@ -1,17 +1,20 @@
1
  import gradio as gr
2
- from mistralai import Mistral, UserMessage
 
 
3
 
4
  import os
5
 
6
  title = "Gaia Mistral Chat Demo"
7
  description = "Example of simple chatbot with Gradio and Mistral AI via its API"
8
  placeholder = "Posez moi une question sur l'agriculture"
9
- examples = ["Comment fait on pour produire du maïs ?", "Rédige moi une lettre pour faire un stage dans une exploitation agricole", "Comment reprendre une exploitation agricole ?"]
10
- api_key = os.environ.get("MISTRAL_API_KEY")
11
 
 
12
  #client = MistralClient(api_key=api_key)
13
- client = Mistral(api_key=api_key)
14
- model = 'open-mixtral-8x7b'
15
  """
16
  def chat_with_mistral(user_input, history):
17
  messages = [{"role": "user", "content": user_input}]
@@ -20,19 +23,20 @@ def chat_with_mistral(user_input, history):
20
  return chat_response.choices[0].message.content
21
  """
22
 
23
- def chat_with_mistral(user_input, history):
24
  messages = [{"role": "user", "content": user_input}]
25
- return "This is a dummy response"
 
26
 
27
  iface = gr.ChatInterface(
28
- fn=chat_with_mistral,
29
  chatbot=gr.Chatbot(height=300),
30
  textbox=gr.Textbox(placeholder=placeholder, container=False, scale=7),
31
  title=title,
32
  description=description,
33
  theme="soft",
34
  examples=examples,
35
- cache_examples=True,
36
  )
37
 
38
  iface.launch(share=True)
 
1
  import gradio as gr
2
+ #from mistralai import Mistral, UserMessage
3
+ from chatbot_gaia.src.main_flow import kickoff
4
+
5
 
6
  import os
7
 
8
  title = "Gaia Mistral Chat Demo"
9
  description = "Example of simple chatbot with Gradio and Mistral AI via its API"
10
  placeholder = "Posez moi une question sur l'agriculture"
11
+ examples = ["Je suis un agriculture basé pas loin de bordeaux et je cultive du mais et je cherche des recommandations d'autres cultures mieux adapté aux changements climatique ?",
12
+ "Je suis un agriculteur basé au sud de la France vers Nice, je cherche des recommandations de cultures mieux adapté aux changements climatiques ?",]
13
 
14
+ #api_key = os.environ.get("MISTRAL_API_KEY")
15
  #client = MistralClient(api_key=api_key)
16
+ #client = Mistral(api_key=api_key)
17
+ #model = 'open-mixtral-8x7b'
18
  """
19
  def chat_with_mistral(user_input, history):
20
  messages = [{"role": "user", "content": user_input}]
 
23
  return chat_response.choices[0].message.content
24
  """
25
 
26
+ def chat_with_agrienergy(user_input, history):
27
  messages = [{"role": "user", "content": user_input}]
28
+ result = kickoff(user_input=user_input)
29
+ return f"{result}"
30
 
31
  iface = gr.ChatInterface(
32
+ fn=chat_with_agrienergy,
33
  chatbot=gr.Chatbot(height=300),
34
  textbox=gr.Textbox(placeholder=placeholder, container=False, scale=7),
35
  title=title,
36
  description=description,
37
  theme="soft",
38
  examples=examples,
39
+ cache_examples=False,
40
  )
41
 
42
  iface.launch(share=True)
{chatbot-gaia-1 → chatbot_gaia}/__init__.py RENAMED
File without changes
{chatbot-gaia-1 → chatbot_gaia}/src/__init__.py RENAMED
File without changes
chatbot_gaia/src/crews/popular_culture_crew/config/agents.yaml ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ agent_extract_info:
2
+ role: >
3
+ Agent Extracteur d'informations
4
+ goal: >
5
+ Traiter les requêtes des utilisateurs {user_input} et extraire les informations pertinentes telles que la localisation, la région, le type de culture et reformuler la demande.
6
+ Agent spécialisé dans le domaine de l'agriculture et capacple de relier les requêtes des utilisateurs à ce domaine.
7
+ backstory: >
8
+ Vous êtes un expert en agriculture avec une connaissance approfondie des différentes cultures et des pratiques agricoles.
9
+ Vous avez la capacité de comprendre les besoins des utilisateurs et de fournir des réponses précises et utiles en relation avec l'agriculture.
10
+ vous êtes capable de fournir une réponse au format suivant:
11
+ Région: nom de la région de l'utilisateur en France qui doit être une parmis la liste des régions de France suivante ["île-de-france", "centre-val de loire", "bourgogne-franche-comté", "normandie", "hauts-de-france", "grand est", "pays de la loire", "bretagne", "nouvelle-aquitaine", "occitanie", "auvergne-rhône-alpes", "provence-alpes-côte d'azur", "corse"]
12
+ longitude: longitude de la localisation de l'utilisateur, si pas disponible trouve la longitude de la ville la plus proche
13
+ latitude: latitude de la localisation de l'utilisateur, si pas disponible trouve la latitude de la ville la plus proche
14
+ Surface cultivée: surface cultivée par l'utilisateur
15
+ Type de culture: le type de culture dont l'utilisateur a besoin d'informations
16
+ Reformulation de la demande: reformulation de la demande de l'utilisateur
17
+
18
+ agent_retrieve_popular_cultures:
19
+ role: >
20
+ Agent de récupération des cultures populaires
21
+ goal: >
22
+ Récupérer les informations sur les cultures les plus populaires dans la région de l'utilisateur et les présenter de manière claire et concise.
23
+ backstory: >
24
+ Vous êtes un expert en agriculture avec une connaissance approfondie des différentes cultures et des pratiques agricoles.
25
+ Vous avez la capacité de fournir des informations sur les cultures les plus populaires dans la région de l'utilisateur et de les présenter de manière claire et concise.
chatbot_gaia/src/crews/popular_culture_crew/config/tasks.yaml ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ extract_info:
2
+ description: >
3
+ Extraire les informations pertinentes de la requêtes de l'utilisateur {user_input} en relation avec l'agriculture.
4
+ Les informations doivent inclure la localisation, la région, le type de culture et une reformulation de la demande.
5
+ l'utilisalteru peut fournir une indication de la zone géographique où il se trouve, il peut vous fournir la ville la plus proche ou même les coordonnées GPS.
6
+ Tu dois identifier la région de la France où se trouve l'utilisateur qui doit être une parmis la liste des régions de France suivante,
7
+ ["île-de-france", "centre-val de loire", "bourgogne-franche-comté", "normandie", "hauts-de-france", "grand est", "pays de la loire", "bretagne", "nouvelle-aquitaine", "occitanie", "auvergne-rhône-alpes", "provence-alpes-côte d'azur", "corse"]
8
+ Tu dois aussi reformuler la demande de l'utilisateur pour une meilleure compréhension.
9
+ expected_output: >
10
+ la réponse doit suivre le format suivant:
11
+ Région: nom de la région de l'utilisateur en France qui doit être une parmis la liste des régions de France suivante ["île-de-france", "centre-val de loire", "bourgogne-franche-comté", "normandie", "hauts-de-france", "grand est", "pays de la loire", "bretagne", "nouvelle-aquitaine", "occitanie", "auvergne-rhône-alpes", "provence-alpes-côte d'azur", "corse"]
12
+ longitude: longitude de la localisation de l'utilisateur, si pas disponible trouve la longitude de la ville la plus proche
13
+ latitude: latitude de la localisation de l'utilisateur, si pas disponible trouve la latitude de la ville la plus proche
14
+ Surface cultivée: surface cultivée par l'utilisateur
15
+ Type de culture: le type de culture dont l'utilisateur a besoin d'informations
16
+ Reformulation de la demande: reformulation de la demande de l'utilisateur
17
+ agent: agent_extract_info
18
+
19
+ retrieve_popular_cultures:
20
+ description: >
21
+ L'agent agent_extract_info va te donner les informations extraites de la requête de l'utilisateur qui incluent la localisation, la région, le type de culture et une reformulation de la demande.
22
+ Ton role est de récupérer les informations sur les cultures les plus populaires dans la région de l'utilisateur et les présenter de manière claire et concise.
23
+ Tu dois aussi donner un avais sur la culture de l'utilisateur en fonction de sa région et des cultures populaires.
24
+ Tu as à ta disposition le tool rgp_cultures_regions qui te frournie les cultures les plus populaires dans chaque région de
25
+ France.
26
+ expected_output: >
27
+ la réponse doit ressembler à un rapport avec les informations de la liste des cultures les plus populaires données par rgp_cultures_regions avec respect de l'order de popularité
28
+ Puis un avis sur la culture de l'utilisateur en fonction de sa région et des cultures populaires
29
+ agent: agent_retrieve_popular_cultures
chatbot_gaia/src/crews/popular_culture_crew/crew.py ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from crewai import Agent, Crew, Process, Task, LLM
2
+ from crewai.project import CrewBase, agent, crew, task
3
+ from pydantic import BaseModel, Field
4
+ from typing import List
5
+ from chatbot_gaia.src.utils import get_openai_api_key
6
+ from chatbot_gaia.src.tools.custom_tool import rgp_cultures_regions
7
+
8
+ class Info(BaseModel):
9
+ """Information to be extracted"""
10
+ region: str = Field(..., title="Region", description="Region de la localisation de la ferme", example="Nouvelle-Aquitaine")
11
+ longitude: float = Field(..., title="Longitude", description="Longitude de la localisation de la ferme", example=0.0)
12
+ latitude: float = Field(..., title="Latitude", description="Latitude de la localisation de la ferme", example=0.0)
13
+ surface: str = Field(..., title="Surface", description="Surface of the farm", example="100 hectares")
14
+ type_culture : str = Field(..., title="Type", description="Type of the farm", example="mais")
15
+ query: str = Field(..., title="Query", description="reformulated query")
16
+
17
+ class ListInfo(BaseModel):
18
+ """List of Information to be extracted"""
19
+ info: List[Info] = Field(..., title="List of Information", description="List of Information to be extracted")
20
+
21
+ @CrewBase
22
+ class PopularCultureCrew:
23
+ """AgriEnergy Crew"""
24
+
25
+ agents_config = "config/agents.yaml"
26
+ tasks_config = "config/tasks.yaml"
27
+
28
+ llm = LLM(
29
+ model="openai/o1-mini",
30
+ base_url="https://api.openai.com",
31
+ api_key=get_openai_api_key()
32
+ )
33
+
34
+ @agent
35
+ def agent_extract_info(self) -> Agent:
36
+ return Agent(
37
+ config=self.agents_config["agent_extract_info"],
38
+ )
39
+
40
+ @agent
41
+ def agent_retrieve_popular_cultures(self) -> Agent:
42
+ return Agent(
43
+ config=self.agents_config["agent_retrieve_popular_cultures"],
44
+ )
45
+
46
+ @task
47
+ def task_extract_info(self) -> Task:
48
+ return Task(
49
+ config=self.tasks_config["extract_info"],
50
+ output_pydantic=ListInfo,
51
+
52
+ )
53
+
54
+ @task
55
+ def task_retrieve_popular_cultures(self) -> Task:
56
+ return Task(
57
+ config=self.tasks_config["retrieve_popular_cultures"],
58
+ context=[self.task_extract_info()],
59
+ tools=[rgp_cultures_regions()],
60
+ )
61
+
62
+ @crew
63
+ def crew(self) -> Crew:
64
+ """Creates the Research Crew"""
65
+
66
+ return Crew(
67
+ agents=self.agents, # Automatically created by the @agent decorator
68
+ tasks=self.tasks, # Automatically created by the @task decorator
69
+ process=Process.sequential,
70
+ verbose=True,
71
+ )
chatbot_gaia/src/crews/weather_crew/config/agents.yaml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ agent_retreive_history_weather:
2
+ role: >
3
+ Agent de récupération de l'historique météorologique
4
+ goal: >
5
+ Récupérer les informations sur l'historique météorologique dans la région de l'utilisateur et les présenter de manière claire et concise.
6
+ backstory: >
7
+ Vous êtes un expert en météorologie avec une connaissance approfondie des différents phénomènes météorologiques et de leurs impacts sur l'agriculture.
8
+ Vous avez la capacité de fournir des informations sur l'historique météorologique dans la région de l'utilisateur et de les présenter de manière claire et concise.
9
+ Vous êtes capable de fournir une analyse sur les données hostoriques des dix dernières années de la région de l'utilisateur, en incluant les températures, les précipitations, l'ensoleillement et les événements météorologiques majeurs.
chatbot_gaia/src/crews/weather_crew/config/tasks.yaml ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ retrieve_history_weather:
2
+ description: >
3
+ L'agent agent_extract_info va te donner les informations extraites de la requête de l'utilisateur qui incluent la localisation, la région, le type de culture et une reformulation de la demande.
4
+ Ton role est de récupérer les informations sur l'historique météorologique dans la région de l'utilisateur et les présenter de manière claire et concise.
5
+ Tu dois aussi donner une analyse sur les données hostoriques des dix dernières années de la région de l'utilisateur, en incluant les températures, les précipitations, l'ensoleillement et les événements météorologiques majeurs.
6
+ Tu as à ta disposition le tool MeteoTool qui te frournie les données météorologiques des dix dernières années pour un localisation donnée.
7
+ expected_output: >
8
+ la réponse doit être une section de rapport intituler, "Analyse de l'histoqrique de la méto de la région" et doit inclure une analyse de l'évolution des différents paramètres météorologiques au cours des dix dernières années.
9
+ et l'impact de ces paramètres sur l'agriculture, ainsi que les effets marquants du changement climatique.
10
+ agent: agent_retreive_history_weather
chatbot_gaia/src/crews/weather_crew/weather_crew.py ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from crewai import Agent, Crew, Process, Task, LLM
2
+ from crewai.project import CrewBase, agent, crew, task
3
+ from pydantic import BaseModel, Field
4
+ from typing import List
5
+ from chatbot_gaia.src.utils import get_openai_api_key
6
+ from chatbot_gaia.src.tools.custom_tool import MeteoTool
7
+
8
+
9
+
10
+
11
+ @CrewBase
12
+ class WeatherCrew:
13
+ """Weather Crew"""
14
+
15
+ agents_config = "config/agents.yaml"
16
+ tasks_config = "config/tasks.yaml"
17
+
18
+ llm = LLM(
19
+ model="openai/o1-mini",
20
+ base_url="https://api.openai.com",
21
+ api_key=get_openai_api_key()
22
+ )
23
+
24
+ @agent
25
+ def agent_retreive_history_weather(self) -> Agent:
26
+ return Agent(
27
+ config=self.agents_config["agent_retreive_history_weather"],
28
+ )
29
+
30
+ @task
31
+ def task_retrieve_history_weather(self) -> Task:
32
+ return Task(
33
+ config=self.tasks_config["retrieve_history_weather"],
34
+ tools=[MeteoTool()],
35
+
36
+ )
37
+
38
+ @crew
39
+ def crew(self) -> Crew:
40
+ """Creates the Weather Crew"""
41
+
42
+ return Crew(
43
+ agents=self.agents, # Automatically created by the @agent decorator
44
+ tasks=self.tasks, # Automatically created by the @task decorator
45
+ process=Process.sequential,
46
+ verbose=True,
47
+ )
chatbot_gaia/src/main_flow.py ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python
2
+ from random import randint
3
+
4
+ from pydantic import BaseModel
5
+
6
+ from crewai.flow import Flow, listen, start
7
+
8
+ from chatbot_gaia.src.crews.popular_culture_crew.crew import PopularCultureCrew
9
+
10
+
11
+ class AgriEnergyFlow(Flow):
12
+ def __init__(self, user_input: str):
13
+ super().__init__()
14
+ self.user_input = user_input
15
+
16
+ @start()
17
+ def extract_info_from_query(self):
18
+ print("Extracting information from query")
19
+ result = (
20
+ PopularCultureCrew()
21
+ .crew()
22
+ .kickoff(inputs={"user_input": self.user_input})
23
+ )
24
+ return result
25
+
26
+
27
+ def kickoff(user_input: str = None):
28
+ agrienergy_flow = AgriEnergyFlow(user_input=user_input)
29
+ result = agrienergy_flow.kickoff()
30
+ return result
31
+
32
+
33
+ def plot():
34
+ agrienergy_flow = AgriEnergyFlow()
35
+ agrienergy_flow.plot()
36
+
37
+
38
+ if __name__ == "__main__":
39
+ query = "Je suis un agriculture basé pas loin de bordeaux et je cultive du mais et je cherche des recommandations d'autres cultures mieux adapté aux changements climatiques"
40
+ kickoff(user_input=query)
chatbot_gaia/src/tools/.cache.sqlite ADDED
Binary file (135 kB). View file
 
chatbot_gaia/src/tools/__init__.py ADDED
File without changes
chatbot_gaia/src/tools/custom_tool.py ADDED
@@ -0,0 +1,139 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from typing import Type
2
+
3
+ from crewai.tools import BaseTool
4
+ from pydantic import BaseModel, Field
5
+
6
+ import openmeteo_requests
7
+ import requests_cache
8
+ from retry_requests import retry
9
+
10
+ import pandas as pd
11
+
12
+ class MyCustomToolInput(BaseModel):
13
+ """Input schema for MyCustomTool."""
14
+
15
+ argument: str = Field(..., description="Description of the argument.")
16
+
17
+
18
+ class MyCustomTool(BaseTool):
19
+ name: str = "Name of my tool"
20
+ description: str = (
21
+ "Clear description for what this tool is useful for, your agent will need this information to use it."
22
+ )
23
+ args_schema: Type[BaseModel] = MyCustomToolInput
24
+
25
+ def _run(self, argument: str) -> str:
26
+ # Implementation goes here
27
+ return "this is an example of a tool output, ignore it and move along."
28
+
29
+ class rgp_cultures_regions(BaseTool):
30
+ name: str = "rgp_cultures_regions"
31
+ description: str = "Extraite les cultures les plus populaires en terme de surface cultuvé en hectare pour une région donnée en france métropolitaine"
32
+
33
+ def _run(self, region: str) -> pd.DataFrame:
34
+ """
35
+ Extract the most popular cultures in terms of cultivated area in hectares for a given region in metropolitan France
36
+ schema of the DataFrame:
37
+ CODE_CULTU : code of the culture
38
+ REGION: name of the region
39
+ SURF_PARC: cultivated area in hectares
40
+ CODE_CULTURE: code of the culture
41
+ LIBELLE_CULTURE: name of the culture
42
+ LIBELLE_GROUPE_CULTURE: name of the culture group
43
+ ACTIF: oui or non
44
+
45
+ Args:
46
+ region (str): name of region in metropolitan France
47
+ Returns:
48
+ pd.DataFrame: DataFrame containing the most popular cultures in terms of cultivated area in hectares for a given region in metropolitan France
49
+ """
50
+
51
+ # load the data
52
+ df_rpg = pd.read_csv("data_rpg/data_prepared_rpg.csv")
53
+
54
+ # filter the data (lower case)
55
+ df_rpg["REGION"] = df_rpg["REGION"].str.lower()
56
+ region = region.lower()
57
+ df_rpg = df_rpg[df_rpg["REGION"] == region]
58
+ # kepp only the top 10 more cultivae cultures
59
+ df_rpg = df_rpg.sort_values(by="SURF_PARC", ascending=False).head(10)
60
+ return df_rpg
61
+
62
+ class MeteoTool(BaseTool):
63
+ name: str = "meteo_tool"
64
+ description: str = "Extraite les données météorologiques des dix dernières années pour la région identifiée en utilisant des localisations GPS du centre de la région"
65
+
66
+ def _run(self, latitude: float, longitude: float) -> pd.DataFrame:
67
+ """
68
+ Extract the meteorological data for the last ten years for the identified region using GPS locations of the center of the region
69
+ schema of the DataFrame:
70
+ year_month : month and year
71
+ month : month
72
+ year : year
73
+ temperature_2m_max : temperature in celsius at 2m height
74
+ temperature_2m_min : temperature in celsius at 2m height
75
+ precipitation_sum : precipitation in mm
76
+ sunchine_duration : sunshine duration in hours
77
+
78
+ Args:
79
+ latitude (float): latitude of the center of the region
80
+ longitude (float): longitude of the center of the region
81
+ Returns:
82
+ pd.DataFrame: DataFrame containing the meteorological data for the identified region using GPS locations of the center of the region
83
+ """
84
+ cache_session = requests_cache.CachedSession('.cache', expire_after = 300)
85
+ retry_session = retry(cache_session, retries = 5, backoff_factor = 0.2)
86
+ openmeteo = openmeteo_requests.Client(session = retry_session)
87
+ url = "https://archive-api.open-meteo.com/v1/archive"
88
+ params = {
89
+ "latitude": latitude,
90
+ "longitude": longitude,
91
+ "start_date": "2015-01-01",
92
+ "end_date": "2024-12-31",
93
+ "daily": ["temperature_2m_max", "temperature_2m_min", "sunshine_duration", "precipitation_sum"] }
94
+ responses = openmeteo.weather_api(url, params=params)
95
+
96
+ # Process first location. Add a for-loop for multiple locations or weather models
97
+ response = responses[0]
98
+ print(f"Coordinates {response.Latitude()}°N {response.Longitude()}°E")
99
+ print(f"Elevation {response.Elevation()} m asl")
100
+ print(f"Timezone {response.Timezone()} {response.TimezoneAbbreviation()}")
101
+ print(f"Timezone difference to GMT+0 {response.UtcOffsetSeconds()} s")
102
+
103
+ # Process daily data. The order of variables needs to be the same as requested.
104
+ daily = response.Daily()
105
+ daily_temperature_2m_max = daily.Variables(0).ValuesAsNumpy()
106
+ daily_temperature_2m_min = daily.Variables(1).ValuesAsNumpy()
107
+ daily_sunshine_duration = daily.Variables(2).ValuesAsNumpy()
108
+ daily_precipitation_sum = daily.Variables(3).ValuesAsNumpy()
109
+
110
+ daily_data = {"date": pd.date_range(
111
+ start = pd.to_datetime(daily.Time(), unit = "s", utc = True),
112
+ end = pd.to_datetime(daily.TimeEnd(), unit = "s", utc = True),
113
+ freq = pd.Timedelta(seconds = daily.Interval()),
114
+ inclusive = "left"
115
+ )}
116
+
117
+ daily_data["temperature_2m_max"] = daily_temperature_2m_max
118
+ daily_data["temperature_2m_min"] = daily_temperature_2m_min
119
+ daily_data["sunshine_duration"] = daily_sunshine_duration
120
+ daily_data["precipitation_sum"] = daily_precipitation_sum
121
+
122
+ daily_dataframe = pd.DataFrame(data = daily_data)
123
+ daily_dataframe["sunshine_duration"] = daily_dataframe["sunshine_duration"] / 3600
124
+
125
+ # aggregate data to monthly
126
+ daily_dataframe["month"] = daily_dataframe["date"].dt.month
127
+ daily_dataframe["year"] = daily_dataframe["date"].dt.year
128
+ daily_dataframe["year_month"] = daily_dataframe.apply(lambda x: x["date"].strftime("%Y%m"), axis=1)
129
+ monthly_dataframe = daily_dataframe.groupby(["year_month","year","month"]).agg(
130
+ temperature_2m_max = ("temperature_2m_max", "mean"),
131
+ temperature_2m_min = ("temperature_2m_min", "mean"),
132
+ precipitation_sum = ("precipitation_sum", "sum"),
133
+ sunchine_duration = ("sunshine_duration", "sum")
134
+ ).reset_index()
135
+ return monthly_dataframe
136
+
137
+
138
+
139
+
chatbot_gaia/src/utils.py ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ from dotenv import load_dotenv, find_dotenv
3
+
4
+ # these expect to find a .env file at the directory above the lesson. # the format for that file is (without the comment) #API_KEYNAME=AStringThatIsTheLongAPIKeyFromSomeService
5
+ def load_env():
6
+ _ = load_dotenv(find_dotenv())
7
+
8
+ def get_openai_api_key():
9
+ load_env()
10
+ openai_api_key = os.getenv("OPENAI_API_KEY")
11
+ return openai_api_key
12
+
13
+ def get_deepseek_api_key():
14
+ load_env()
15
+ deepseek_api_key = os.getenv("DEEPSEEK_API_KEY")
16
+ return deepseek_api_key
data_rpg/data_prepared_rpg.csv ADDED
The diff for this file is too large to render. See raw diff
 
data_rpg/metadata.csv ADDED
@@ -0,0 +1,373 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ CODE_CULTURE,LIBELLE_CULTURE,CODE_GROUPE_CULTURE,LIBELLE_GROUPE_CULTURE,ACTIF
2
+ BTH,Blé tendre d’hiver,1,Blé tendre,oui
3
+ BTP,Blé tendre de printemps,1,Blé tendre,oui
4
+ MID,Maïs doux,2,Maïs grain et ensilage,non
5
+ MIE,Maïs ensilage,2,Maïs grain et ensilage,non
6
+ MIS,Maïs (hors maïs doux),2,Maïs grain et ensilage,non
7
+ ORH,Orge d'hiver,3,Orge,oui
8
+ ORP,Orge de printemps,3,Orge,oui
9
+ AVH,Avoine d’hiver,4,Autres céréales,oui
10
+ AVP,Avoine de printemps,4,Autres céréales,oui
11
+ BDH,Blé dur d’hiver,4,Autres céréales,oui
12
+ BDP,Blé dur de printemps,4,Autres céréales,oui
13
+ BDT,Blé dur de printemps semé tardivement (après le 31/05),4,Autres céréales,non
14
+ CAG,"Autre céréale ou pseudo-céréale secondaire de printemps (alpiste, quinoa, chia, …)",4,Autres céréales,oui
15
+ CAH,Autre céréale ou pseudo-céréale secondaire d'hiver,4,Autres céréales,oui
16
+ CGF,Autre céréale de genre Fagopyrum,4,Autres céréales,non
17
+ CGH,Autre céréale de genre Phalaris,4,Autres céréales,non
18
+ CGO,Autre céréale de genre Sorghum,4,Autres céréales,non
19
+ CGP,Autre céréale de genre Panicum,4,Autres céréales,non
20
+ CGS,Autre céréale de genre Setaria,4,Autres céréales,non
21
+ CHA,Autre céréale d’hiver de genre Avena,4,Autres céréales,non
22
+ CHH,Autre céréale d’hiver de genre Hordeum,4,Autres céréales,non
23
+ CHS,Autre céréale d’hiver de genre Secale,4,Autres céréales,non
24
+ CHT,Autre céréale d’hiver de genre Triticum,4,Autres céréales,non
25
+ CPA,Autre céréale de printemps de genre Avena,4,Autres céréales,non
26
+ CPH,Autre céréale de printemps de genre Hordeum,4,Autres céréales,non
27
+ CPS,Autre céréale de printemps de genre Secale,4,Autres céréales,non
28
+ CPT,Autre céréale de printemps de genre Triticum,4,Autres céréales,non
29
+ CPZ,Autre céréale de printemps de genre Zea,4,Autres céréales,non
30
+ EPE,Epeautre (petit épeautre ou engrain et grand épeautre),4,Autres céréales,oui
31
+ MCR,Mélange de céréales ou pseudo-céréales d'hiver entre elles,4,Autres céréales,oui
32
+ MCS,Mélange de céréales ou pseudo-céréales de printemps entre elles,4,Autres céréales,oui
33
+ MLT,Millet,4,Autres céréales,oui
34
+ SGH,Seigle d’hiver,4,Autres céréales,oui
35
+ SGP,Seigle de printemps,4,Autres céréales,oui
36
+ SOG,Sorgho,4,Autres céréales,oui
37
+ SRS,Sarrasin,4,Autres céréales,oui
38
+ TTH,Triticale d’hiver,4,Autres céréales,oui
39
+ TTP,Triticale de printemps,4,Autres céréales,oui
40
+ CZH,Colza d’hiver,5,Colza,oui
41
+ CZP,Colza de printemps,5,Colza,oui
42
+ TRN,Tournesol,6,Tournesol,oui
43
+ ARA,Arachide,7,Autres oléagineux,oui
44
+ LIH,Lin non textile d’hiver,7,Autres oléagineux,non
45
+ LIP,Lin non textile de printemps,7,Autres oléagineux,non
46
+ MOL,Mélange d’oléagineux,7,Autres oléagineux,non
47
+ NVE,Navette d’été,7,Autres oléagineux,non
48
+ NVH,Navette d’hiver,7,Autres oléagineux,non
49
+ OAG,"Autres oléagineux ou mélange d'oléagineux de printemps et d'été (dont moutarde ou navette d'été, sésame et nyger)",7,Autres oléagineux,oui
50
+ OEH,Autre oléagineux d’espèce Helianthus,7,Autres oléagineux,non
51
+ OEI,Oeillette (pavot),7,Autres oléagineux,oui
52
+ OHN,Autre oléagineux d’hiver d’espèce Brassica napus,7,Autres oléagineux,non
53
+ OHR,Autres oléagineux ou mélange d'oléagineux d'hiver (dont navette d'hiver),7,Autres oléagineux,oui
54
+ OPN,Autre oléagineux de printemps d’espèce Brassica napus,7,Autres oléagineux,non
55
+ OPR,Autre oléagineux de printemps d’espèce Brassica rapa,7,Autres oléagineux,non
56
+ SOJ,Soja,7,Autres oléagineux,oui
57
+ FEV,Fève,8,Protéagineux,oui
58
+ FVL,Féverole d'hiver,8,Protéagineux,oui
59
+ FVP,Féverole de printemps,8,Protéagineux,oui
60
+ FVT,Féverole semée tardivement (après le 31/05),8,Protéagineux,non
61
+ LDH,Lupin doux d’hiver,8,Protéagineux,oui
62
+ LDP,Lupin doux de printemps semé avant le 31/05,8,Protéagineux,oui
63
+ LDT,Lupin doux de printemps semé tardivement (après le 31/05),8,Protéagineux,non
64
+ MPC,Mélange de protéagineux (pois et/ou lupin et/ou féverole) prépondérants semés avant le 31/05 et de céréales,8,Protéagineux,oui
65
+ MPP,Mélange de protéagineux (pois et/ou lupin et/ou féverole),8,Protéagineux,non
66
+ MPT,Mélange de protéagineux semés tardivement (après le 31/05),8,Protéagineux,non
67
+ PAG,Autre légumineuse à graines ou fourragères,8,Protéagineux,oui
68
+ PHF,Pois et haricot frais (alimentation humaine),8,Protéagineux,oui
69
+ PHI,Pois protéagineux d'hiver (alimentation animale),8,Protéagineux,oui
70
+ PHS,Pois et haricot secs (alimentation humaine),8,Protéagineux,oui
71
+ PPR,Pois protéagineux de printemps (alimentation animale),8,Protéagineux,oui
72
+ PPT,Pois de printemps semé tardivement (après le 31/05),8,Protéagineux,non
73
+ CHV,Chanvre,9,Plantes à fibres,oui
74
+ CSE,Chanvre sans étiquette conforme,9,Plantes à fibres,oui
75
+ LIF,Lin fibres,9,Plantes à fibres,oui
76
+ J5M,Jachère de 5 ans ou moins,11,Gel (surfaces gelées sans production),non
77
+ J6P,Jachère de 6 ans ou plus,11,Gel (surfaces gelées sans production),non
78
+ J6S,Jachère de 6 ans ou plus déclarée comme Surface d’intérêt écologique,11,Gel (surfaces gelées sans production),non
79
+ JAC,Jachère (terre arable),11,Gel (surfaces gelées sans production),oui
80
+ JNO,Jachère sanitaire imposée par l'administration,11,Gel (surfaces gelées sans production),oui
81
+ RIZ,Riz,14,Riz,oui
82
+ LEC,Lentille,15,Légumineuses à grains,oui
83
+ PCH,Pois chiche,15,Légumineuses à grains,oui
84
+ AFG,"Autre plante fourragère annuelle (ni légumineuse, ni graminée, ni céréale, ni oléagineux)",16,Fourrage,oui
85
+ BVF,Betterave fourragère,16,Fourrage,non
86
+ CAF,Carotte fourragère,16,Fourrage,non
87
+ CHF,Chou fourrager,16,Fourrage,non
88
+ CPL,"Mélange multi-espèces (céréales, oléagineux, légumineuses, …) sans graminées prairiales et sans prédominance de légumineuses",16,Fourrage,oui
89
+ DTY,Dactyle de 5 ans ou moins,16,Fourrage,non
90
+ FAG,Autre fourrage annuel d’un autre genre,16,Fourrage,non
91
+ FET,Fétuque de 5 ans ou moins,16,Fourrage,non
92
+ FF5,Féverole fourragère implantée pour la récolte 2015,16,Fourrage,non
93
+ FF6,Féverole fourragère implantée pour la récolte 2016,16,Fourrage,non
94
+ FF7,Féverole fourragère implantée pour la récolte 2017,16,Fourrage,non
95
+ FF8,Féverole fourragère implantée pour la récolte 2018,16,Fourrage,non
96
+ FFO,Autre féverole fourragère,16,Fourrage,non
97
+ FLO,Fléole de 5 ans ou moins,16,Fourrage,non
98
+ FSG,Autre plante fourragère sarclée d’un autre genre,16,Fourrage,non
99
+ GAI,Gaillet,16,Fourrage,non
100
+ GES,"Cornille, dolique (y/c lablab), gesse",16,Fourrage,oui
101
+ GFP,Autre graminée fourragère pure de 5 ans ou moins,16,Fourrage,non
102
+ JO5,Jarosse implantée pour la récolte 2015,16,Fourrage,non
103
+ JO6,Jarosse implantée pour la récolte 2016,16,Fourrage,non
104
+ JO7,Jarosse implantée pour la récolte 2017,16,Fourrage,non
105
+ JO8,Jarosse implantée pour la récolte 2018,16,Fourrage,non
106
+ JOD,Jarosse déshydratée,16,Fourrage,non
107
+ JOS,Autre jarosse,16,Fourrage,non
108
+ LEF,Lentille fourragère,16,Fourrage,non
109
+ LFH,Autre lupin fourrager d’hiver,16,Fourrage,non
110
+ LFP,Autre lupin fourrager de printemps,16,Fourrage,non
111
+ LH5,Lupin fourrager d’hiver implanté pour la récolte 2015,16,Fourrage,non
112
+ LH6,Lupin fourrager d’hiver implanté pour la récolte 2016,16,Fourrage,non
113
+ LH7,Lupin fourrager d’hiver implanté pour la récolte 2017,16,Fourrage,non
114
+ LH8,Lupin fourrager d'hiver implanté pour la récolte 2018,16,Fourrage,non
115
+ LO7,Lotier implanté pour la récolte 2017,16,Fourrage,non
116
+ LO8,Lotier implanté pour la récolte 2018,16,Fourrage,non
117
+ LOT,"Lotier, minette",16,Fourrage,oui
118
+ LP5,Lupin fourrager de printemps implanté pour la récolte 2015,16,Fourrage,non
119
+ LP6,Lupin fourrager de printemps implanté pour la récolte 2016,16,Fourrage,non
120
+ LP7,Lupin fourrager de printemps implanté pour la récolte 2017,16,Fourrage,non
121
+ LP8,Lupin fourrager de printemps implanté pour la récolte 2018,16,Fourrage,non
122
+ LU5,Luzerne implantée pour la récolte 2015,16,Fourrage,non
123
+ LU6,Luzerne implantée pour la récolte 2016,16,Fourrage,non
124
+ LU7,Luzerne implantée pour la récolte 2017,16,Fourrage,non
125
+ LU8,Luzerne implantée pour la récolte 2018,16,Fourrage,non
126
+ LUD,Luzerne déshydratée,16,Fourrage,non
127
+ LUZ,Autre luzerne,16,Fourrage,oui
128
+ MC5,Mélange de légumineuses fourragères prépondérantes au semis implantées pour la récolte 2015 et de céréales,16,Fourrage,non
129
+ MC6,Mélange de légumineuses fourragères prépondérantes au semis implantées pour la récolte 2016 et de céréales,16,Fourrage,non
130
+ MC7,Mélange de légumineuses fourragères prépondérantes au semis implantées pour la récolte 2017 et de céréales,16,Fourrage,non
131
+ MC8,Mélange de légumineuses fourragères prépondérantes implantées pour la récolte 2018 et de céréales et d’oléagineux,16,Fourrage,non
132
+ ME5,Mélilot implanté pour la récolte 2015,16,Fourrage,non
133
+ ME6,Mélilot implanté pour la récolte 2016,16,Fourrage,non
134
+ ME7,Mélilot implanté pour la récolte 2017,16,Fourrage,non
135
+ ME8,Mélilot implanté pour la récolte 2018,16,Fourrage,non
136
+ MED,Mélilot déshydraté,16,Fourrage,non
137
+ MEL,Autre mélilot,16,Fourrage,non
138
+ MH5,Mélange de légumineuses fourragères prépondérantes au semis implantées pour la récolte 2015 et d’herbacées ou de graminées fourragères,16,Fourrage,non
139
+ MH6,Mélange de légumineuses fourragères prépondérantes au semis implantées pour la récolte 2016 et d’herbacées ou de graminées fourragères,16,Fourrage,non
140
+ MH7,Mélange de légumineuses fourragères prépondérantes au semis implantées pour la récolte 2017 et d’herbacées ou de graminées fourragères,16,Fourrage,non
141
+ MI7,Minette implanté pour la récolte 2017,16,Fourrage,non
142
+ MI8,Minette implanté pour la récolte 2018,16,Fourrage,non
143
+ MIN,Minette,16,Fourrage,non
144
+ ML5,Mélange de légumineuses fourragères implantées pour la récolte 2015 (entre elles),16,Fourrage,non
145
+ ML6,Mélange de légumineuses fourragères implantées pour la récolte 2016 (entre elles),16,Fourrage,non
146
+ ML7,Mélange de légumineuses fourragères implantées pour la récolte 2017 (entre elles),16,Fourrage,non
147
+ ML8,Mélange de légumineuses fourragères implantées pour la récolte 2018 (entre elles),16,Fourrage,non
148
+ MLC,Mélange multi-espèces avec légumineuses fourragères prépondérantes sans graminées prairiales,16,Fourrage,non
149
+ MLD,Mélange de légumineuses déshydratées (entre elles),16,Fourrage,non
150
+ MLF,Mélange de légumineuses à graines ou fourragères pures,16,Fourrage,non
151
+ MLG,Mélange de légumineuses prépondérantes et de graminées fourragères de 5 ans ou moins,16,Fourrage,oui
152
+ MOH,Moha,16,Fourrage,oui
153
+ NVF,Navet fourrager,16,Fourrage,non
154
+ PAT,Pâturin commun de 5 ans ou moins,16,Fourrage,non
155
+ PFH,Autre pois fourrager d’hiver,16,Fourrage,non
156
+ PFP,Autre pois fourrager de printemps,16,Fourrage,non
157
+ PH5,Pois fourrager d’hiver implanté pour la récolte 2015,16,Fourrage,non
158
+ PH6,Pois fourrager d’hiver implanté pour la récolte 2016,16,Fourrage,non
159
+ PH7,Pois fourrager d’hiver implanté pour la récolte 2017,16,Fourrage,non
160
+ PH8,Pois fourrager d’hiver implanté pour la récolte 2018,16,Fourrage,non
161
+ PP5,Pois fourrager de printemps implanté pour la récolte 2015,16,Fourrage,non
162
+ PP6,Pois fourrager de printemps implanté pour la récolte 2016,16,Fourrage,non
163
+ PP7,Pois fourrager de printemps implanté pour la récolte 2017,16,Fourrage,non
164
+ PP8,Pois fourrager de printemps implanté pour la récolte 2018,16,Fourrage,non
165
+ RDF,Radis fourrager,16,Fourrage,non
166
+ SA5,Sainfoin implanté pour la récolte 2015,16,Fourrage,non
167
+ SA6,Sainfoin implanté pour la récolte 2016,16,Fourrage,non
168
+ SA7,Sainfoin implanté pour la récolte 2017,16,Fourrage,non
169
+ SA8,Sainfoin implanté pour la récolte 2018,16,Fourrage,non
170
+ SAD,Sainfoin déshydraté,16,Fourrage,non
171
+ SAI,Sainfoin,16,Fourrage,oui
172
+ SE5,Serradelle implantée pour la récolte 2015,16,Fourrage,non
173
+ SE6,Serradelle implantée pour la récolte 2016,16,Fourrage,non
174
+ SE7,Serradelle implantée pour la récolte 2017,16,Fourrage,non
175
+ SE8,Serradelle implantée pour la récolte 2018,16,Fourrage,non
176
+ SED,Serradelle déshydratée,16,Fourrage,non
177
+ SER,Autre serradelle,16,Fourrage,non
178
+ TR5,Trèfle implanté pour la récolte 2015,16,Fourrage,non
179
+ TR6,Trèfle implanté pour la récolte 2016,16,Fourrage,non
180
+ TR7,Trèfle implanté pour la récolte 2017,16,Fourrage,non
181
+ TR8,Trèfle implanté pour la récolte 2018,16,Fourrage,non
182
+ TRD,Trèfle déshydraté,16,Fourrage,non
183
+ TRE,Autre trèfle,16,Fourrage,oui
184
+ VE5,Vesce implantée pour la récolte 2015,16,Fourrage,non
185
+ VE6,Vesce implantée pour la récolte 2016,16,Fourrage,non
186
+ VE7,Vesce implantée pour la récolte 2017,16,Fourrage,non
187
+ VE8,Vesce implantée pour la récolte 2018,16,Fourrage,non
188
+ VED,Vesce déshydratée,16,Fourrage,non
189
+ VES,"Vesce, mélilot, jarosse, serradelle",16,Fourrage,oui
190
+ XFE,X-Felium de 5 ans ou moins,16,Fourrage,non
191
+ BOP,Bois pâturé,17,Estives et landes,non
192
+ SPH,Prairie avec herbe prédominante et ressources fourragères ligneuses présentes,17,Estives et landes,oui
193
+ SPL,Surface pastorale - Ressources fourragères ligneuses prédominantes,17,Estives et landes,oui
194
+ PPH,Prairie de 6 ans ou plus (couvert herbacé),18,Prairies permanentes,oui
195
+ PRL,Prairie en rotation longue (6 ans ou plus),18,Prairies permanentes,non
196
+ PTR,Prairie temporaire de moins de 5 ans et autre mélange avec graminées,19,Prairies temporaires,oui
197
+ RGA,Ray-grass de 5 ans ou moins,19,Prairies temporaires,non
198
+ AGR,Agrume,20,Vergers,oui
199
+ ANA,Ananas,20,Vergers,oui
200
+ AVO,Avocat,20,Vergers,non
201
+ BCA,Banane (hors export),20,Vergers,oui
202
+ BCF,Banane créole (fruit et légume) - fermage,20,Vergers,non
203
+ BCI,Banane créole (fruit et légume) - indivision,20,Vergers,non
204
+ BCP,Banane créole (fruit et légume) - propriété ou faire valoir direct,20,Vergers,non
205
+ BCR,Banane créole (fruit et légume) - réforme foncière,20,Vergers,non
206
+ BEA,Banane export - autre,20,Vergers,non
207
+ BEF,Banane (export),20,Vergers,oui
208
+ BEI,Banane export - indivision,20,Vergers,non
209
+ BEP,Banane export - propriété ou faire valoir direct,20,Vergers,non
210
+ BER,Banane export - réforme foncière,20,Vergers,non
211
+ CAC,Café et cacao,20,Vergers,oui
212
+ CBT,Cerise,20,Vergers,oui
213
+ PFR,Petit fruit à baie (hors fraise),20,Vergers,oui
214
+ PRU,"Prune (y compris mirabelle, quetsche, reine-claude, …)",20,Vergers,oui
215
+ PVT,"Pêche (y compris nectarine, brugnon)",20,Vergers,oui
216
+ PWT,Poire,20,Vergers,oui
217
+ VGD,Verger (DOM),20,Vergers,non
218
+ VRG,Autre verger (y compris verger DOM),20,Vergers,oui
219
+ RVI,Restructuration du vignoble,21,Vignes,non
220
+ VRC,Vigne (sauf vigne rouge),21,Vignes,oui
221
+ VRN,Vigne : raisins de cuve non en production,21,Vignes,non
222
+ VRT,Vigne : raisins de table,21,Vignes,non
223
+ CAB,Caroube,22,Fruits à coque,non
224
+ CTG,Châtaigne,22,Fruits à coque,oui
225
+ NOS,Noisette,22,Fruits à coque,oui
226
+ NOX,Noix (y compris noix de coco),22,Fruits à coque,oui
227
+ PIS,Pistache,22,Fruits à coque,non
228
+ OLI,Olive,23,Oliviers,oui
229
+ AME,Plantes médicinales et à parfum non pérennes (< 5 ans),24,Autres cultures industrielles,oui
230
+ ANE,Aneth,24,Autres cultures industrielles,non
231
+ ANG,Angélique,24,Autres cultures industrielles,non
232
+ ANI,Anis,24,Autres cultures industrielles,non
233
+ AAR,Plantes aromatiques herbacées non pérennes (< 5 ans) autres que persil,24,Autres cultures industrielles,oui
234
+ ARP,Plante aromatique pérenne non arbustive ou arborée autre que la vanille,24,Autres cultures industrielles,oui
235
+ BAR,Bardane,24,Autres cultures industrielles,non
236
+ BAS,Basilic,24,Autres cultures industrielles,non
237
+ BRH,Bourrache de 5 ans ou moins,24,Autres cultures industrielles,non
238
+ BTN,Betterave,24,Autres cultures industrielles,oui
239
+ CAV,Carvi,24,Autres cultures industrielles,non
240
+ CHR,Chardon Marie,24,Autres cultures industrielles,non
241
+ CIB,Ciboulette,24,Autres cultures industrielles,non
242
+ CML,Cameline,24,Autres cultures industrielles,oui
243
+ CMM,Camomille,24,Autres cultures industrielles,non
244
+ CRD,Coriandre,24,Autres cultures industrielles,non
245
+ CRF,Cerfeuil,24,Autres cultures industrielles,non
246
+ CUM,Cumin,24,Autres cultures industrielles,non
247
+ CUR,Curcuma,24,Autres cultures industrielles,non
248
+ EST,Estragon,24,Autres cultures industrielles,non
249
+ FNO,Fenouil,24,Autres cultures industrielles,non
250
+ FNU,Fenugrec,24,Autres cultures industrielles,oui
251
+ HBL,Houblon,24,Autres cultures industrielles,oui
252
+ LAV,Lavande et lavandin,24,Autres cultures industrielles,oui
253
+ MAV,Mauve,24,Autres cultures industrielles,non
254
+ MLI,Mélisse,24,Autres cultures industrielles,non
255
+ MLP,Millepertuis,24,Autres cultures industrielles,non
256
+ MOT,Moutarde d'hiver,24,Autres cultures industrielles,oui
257
+ MRJ,Marjolaine / Origan,24,Autres cultures industrielles,non
258
+ MTH,Menthe,24,Autres cultures industrielles,non
259
+ ORT,Ortie,24,Autres cultures industrielles,non
260
+ OSE,Oseille,24,Autres cultures industrielles,non
261
+ PAR,Plante aromatique (autre que vanille),24,Autres cultures industrielles,non
262
+ PMD,Plante médicinale,24,Autres cultures industrielles,non
263
+ PME,Plantes médicinales pérennes (autres que arbres),25,Autres cultures industrielles,oui
264
+ PPA,Autre plante à parfum,24,Autres cultures industrielles,non
265
+ PPF,Plante à parfum (autre que géranium et vétiver),24,Autres cultures industrielles,non
266
+ PPP,Plantes médicinales pérennes (arbres ou arbustes) sauf cassis,24,Autres cultures industrielles,oui
267
+ PRF,Plantes à parfum pérennes autres que lavande et lavandin,24,Autres cultures industrielles,oui
268
+ PSL,Persil,24,Autres cultures industrielles,oui
269
+ PSN,Psyllium noir de Provence,24,Autres cultures industrielles,non
270
+ PSY,Plantain psyllium,24,Autres cultures industrielles,non
271
+ ROM,Romarin,24,Autres cultures industrielles,non
272
+ SGE,Sauge,24,Autres cultures industrielles,oui
273
+ SRI,Sarriette,24,Autres cultures industrielles,non
274
+ TAB,Tabac,24,Autres cultures industrielles,oui
275
+ THY,Thym,24,Autres cultures industrielles,non
276
+ TOT,Tomate pour transformation,24,Autres cultures industrielles,non
277
+ VAL,Valériane,24,Autres cultures industrielles,non
278
+ VNB,Vanille sous bois,24,Autres cultures industrielles,non
279
+ VNL,Vanille,24,Autres cultures industrielles,oui
280
+ VNV,Vanille verte,24,Autres cultures industrielles,non
281
+ YLA,Ylang-ylang,24,Autres cultures industrielles,non
282
+ AIL,Aïl,25,Légumes ou fleurs,oui
283
+ ART,Artichaut,25,Légumes ou fleurs,oui
284
+ AUB,Aubergine,25,Légumes ou fleurs,non
285
+ BLT,Bleuet,25,Légumes ou fleurs,non
286
+ BUR,Bugle rampante,25,Légumes ou fleurs,non
287
+ CAR,Carotte,25,Légumes ou fleurs,oui
288
+ CCN,"Concombre, cornichon et courgette",25,Légumes ou fleurs,oui
289
+ CCT,Courgette / Citrouille,25,Légumes ou fleurs,non
290
+ CEL,Céleri,25,Légumes ou fleurs,oui
291
+ CES,Chicorée / Endive / Scarole,25,Légumes ou fleurs,non
292
+ CHU,Chou,25,Légumes ou fleurs,oui
293
+ CMB,Courge musquée / Butternut,25,Légumes ou fleurs,non
294
+ CRA,Cresson alénois de 5 ans ou moins,25,Légumes ou fleurs,non
295
+ CRN,Cornille,25,Légumes ou fleurs,non
296
+ CRS,Cresson,25,Légumes ou fleurs,non
297
+ CSS,Culture sous serre hors sol,25,Légumes ou fleurs,oui
298
+ DOL,Dolique,25,Légumes ou fleurs,non
299
+ EPI,"Epinard, oseille et bette",25,Légumes ou fleurs,oui
300
+ FLA,Autre légume ou fruit annuel,25,Légumes ou fleurs,oui
301
+ FLP,Autre légume ou fruit pérenne (hors petit fruit à baie),25,Légumes ou fleurs,oui
302
+ FRA,Fraise (en pleine terre),25,Légumes ou fleurs,oui
303
+ GER,Géranium,25,Légumes ou fleurs,non
304
+ HAR,Haricot / Flageolet,25,Légumes ou fleurs,non
305
+ HPC,Horticulture ornementale,25,Légumes ou fleurs,oui
306
+ HSA,Horticulture ornementale sous abri,25,Légumes ou fleurs,non
307
+ LBF,"Laitue, endive et autres salades",25,Légumes ou fleurs,oui
308
+ LSA,Légume sous abri,25,Légumes ou fleurs,non
309
+ MAC,Mâche,25,Légumes ou fleurs,non
310
+ MDI,Maraîchage diversifié (plusieurs espèces de fruits et légumes majoritairement non pérennes),25,Légumes ou fleurs,oui
311
+ MLO,Melon et pastèque,25,Légumes ou fleurs,oui
312
+ MRG,Marguerite,25,Légumes ou fleurs,non
313
+ NVT,"Navet, rutabaga et autres légumes racines (hors carotte, radis, betterave)",25,Légumes ou fleurs,oui
314
+ OIG,Oignon et échalote,25,Légumes ou fleurs,oui
315
+ PAN,Panais,25,Légumes ou fleurs,non
316
+ PAQ,Pâquerette,25,Légumes ou fleurs,non
317
+ PAS,Pastèque,25,Légumes ou fleurs,non
318
+ PMV,Primevère,25,Légumes ou fleurs,non
319
+ POR,Poireau,25,Légumes ou fleurs,oui
320
+ POT,"Potiron, citrouille et autres courges",25,Légumes ou fleurs,oui
321
+ PPO,Petits pois,25,Légumes ou fleurs,non
322
+ PSE,Pensée,25,Légumes ou fleurs,non
323
+ PTC,Pomme de terre,25,Légumes ou fleurs,oui
324
+ PTF,Pomme de terre féculière,25,Légumes ou fleurs,non
325
+ PVP,"Poivron, piment et aubergine",25,Légumes ou fleurs,oui
326
+ RDI,Radis,25,Légumes ou fleurs,oui
327
+ ROQ,Roquette,25,Légumes ou fleurs,non
328
+ RUT,Rutabaga,25,Légumes ou fleurs,non
329
+ SFI,Salsifis,25,Légumes ou fleurs,non
330
+ TOM,Tomate (en pleine terre),25,Légumes ou fleurs,oui
331
+ TOP,Topinambour,25,Légumes ou fleurs,non
332
+ VER,Véronique,25,Légumes ou fleurs,non
333
+ CSA,Canne à sucre,26,Canne à sucre,oui
334
+ CSF,Canne à sucre - fermage,26,Canne à sucre,non
335
+ CSI,Canne à sucre - indivision,26,Canne à sucre,non
336
+ CSP,Canne à sucre - propriété ou faire valoir direct,26,Canne à sucre,non
337
+ CSR,Canne à sucre - réforme foncière,26,Canne à sucre,non
338
+ ACA,Autre culture non précisée dans la liste (admissible),28,Divers,non
339
+ BFP,Bande admissible le long d’une forêt avec production,28,Divers,non
340
+ BFS,Bordure le long d'une forêt sans production,28,Divers,oui
341
+ BOR,Bordure de champ,28,Divers,oui
342
+ BRO,Brome de 5 ans ou moins,28,Divers,non
343
+ BTA,Bande tampon,28,Divers,oui
344
+ CAE,Châtaigneraie entretenue par des porcins ou des petits ruminants,28,Divers,oui
345
+ CEE,Chênaie entretenue par des porcins ou des petits ruminants,28,Divers,oui
346
+ CNE,Chênaie non entretenue par des porcins ou des petits ruminants,28,Divers,oui
347
+ CID,Cultures conduites en inter-rangs (bandes de cultures différentes) - 2 cultures représentant chacune plus de 25 %,28,Divers,oui
348
+ CIT,Cultures conduites en inter-rangs (bandes de cultures différentes) - 3 cultures représentant chacune plus de 25 %,28,Divers,oui
349
+ CUA,Culture sous abattis,28,Divers,non
350
+ GRA,Graminée pure exclusivement pour gazon ou pour production de semences certifiées,28,Divers,oui
351
+ MCT,Miscanthus,28,Divers,non
352
+ MPA,Autre mélange de plantes fixant l’azote,28,Divers,non
353
+ MRS,Marais salants,28,Divers,oui
354
+ MSW,"Culture pérenne à forte biomasse (miscanthus, switchgrass, silphie, canne fourragère, …)",28,Divers,oui
355
+ NYG,Nyger,28,Divers,non
356
+ PCL,Phacélie de 5 ans ou moins,28,Divers,non
357
+ PEP,Pépinière (plants laissés en terre plus d’un an),28,Divers,oui
358
+ PEV,Pépinière (plants laissés en terre moins d’un an),28,Divers,oui
359
+ ROS,Roselière,28,Divers,non
360
+ SAG,Roselière (récolte de sagnes),28,Divers,oui
361
+ SBO,Boisement aidé d'une surface agricole,28,Divers,oui
362
+ SHD,Surfaces hautement diversifiées (DOM),28,Divers,oui
363
+ SIN,Surface pastorale ou parcours non utilisé l'année en cours,28,Divers,oui
364
+ SNA,Surface non agricole non visible sur l’orthophotographie,28,Divers,non
365
+ SNE,"Surface agricole temporairement non admissible, autre que surface pâturable",28,Divers,oui
366
+ SNU,"Parc d'élevage de monogastriques avec couvert dégradé, voire sol nu",28,Divers,oui
367
+ TBT,Tubercule tropical,28,Divers,oui
368
+ TCR,Taillis à courte rotation,28,Divers,oui
369
+ TRU,Truffière (chênaie de plants mycorhizés),28,Divers,oui
370
+ VET,Vétiver,28,Divers,non
371
+ ZZZ,Culture inconnue,28,Divers,oui
372
+ MLS,Mélange de légumineuses non fourragères prépondérantes et de céréales et/ou d'oléagineux,8,Protéagineux,non
373
+ ACP,Autre culture pérenne et jachère dans les bananeraies,28,Divers,oui
poetry.lock CHANGED
The diff for this file is too large to render. See raw diff
 
pyproject.toml CHANGED
@@ -1,17 +1,28 @@
1
  [tool.poetry]
2
- name = "chatbot-gaia-1"
3
  version = "0.1.0"
4
  description = "chatebot level 1 GAIA generative AI for Agriculture"
5
  authors = ["mohamed.tsouli"]
6
  readme = "README.md"
7
- packages = [{include = "chatbot-gaia-1"}]
8
 
9
 
10
 
11
  [tool.poetry.dependencies]
12
- python = "^3.11"
13
  mistralai = "^1.5.0"
14
  gradio = "^5.15.0"
 
 
 
 
 
 
 
 
 
 
 
15
 
16
 
17
  [build-system]
 
1
  [tool.poetry]
2
+ name = "chatbot-gaia"
3
  version = "0.1.0"
4
  description = "chatebot level 1 GAIA generative AI for Agriculture"
5
  authors = ["mohamed.tsouli"]
6
  readme = "README.md"
7
+ packages = [{include = "chatbot_gaia"}]
8
 
9
 
10
 
11
  [tool.poetry.dependencies]
12
+ python = ">=3.11,<3.13"
13
  mistralai = "^1.5.0"
14
  gradio = "^5.15.0"
15
+ ipykernel = "^6.29.5"
16
+ fiona = "^1.10.1"
17
+ chardet = "^5.2.0"
18
+ crewai = "^0.100.0"
19
+ crewai-tools = "^0.33.0"
20
+ pydantic = "^2.10.6"
21
+ openmeteo-requests = "^1.3.0"
22
+ requests-cache = "^1.2.1"
23
+ retry-requests = "^2.0.0"
24
+ plotly = "^6.0.0"
25
+ nbformat = ">=4.2.0"
26
 
27
 
28
  [build-system]
requirements.txt DELETED
@@ -1 +0,0 @@
1
- mistralai