Spaces:
Runtime error
Runtime error
mohamed.tsouli
commited on
Commit
·
01bf518
1
Parent(s):
df095e8
agent culture populaire hackathon SIA
Browse files- .gitignore +2 -0
- app.py +13 -9
- {chatbot-gaia-1 → chatbot_gaia}/__init__.py +0 -0
- {chatbot-gaia-1 → chatbot_gaia}/src/__init__.py +0 -0
- chatbot_gaia/src/crews/popular_culture_crew/config/agents.yaml +25 -0
- chatbot_gaia/src/crews/popular_culture_crew/config/tasks.yaml +29 -0
- chatbot_gaia/src/crews/popular_culture_crew/crew.py +71 -0
- chatbot_gaia/src/crews/weather_crew/config/agents.yaml +9 -0
- chatbot_gaia/src/crews/weather_crew/config/tasks.yaml +10 -0
- chatbot_gaia/src/crews/weather_crew/weather_crew.py +47 -0
- chatbot_gaia/src/main_flow.py +40 -0
- chatbot_gaia/src/tools/.cache.sqlite +0 -0
- chatbot_gaia/src/tools/__init__.py +0 -0
- chatbot_gaia/src/tools/custom_tool.py +139 -0
- chatbot_gaia/src/utils.py +16 -0
- data_rpg/data_prepared_rpg.csv +0 -0
- data_rpg/metadata.csv +373 -0
- poetry.lock +0 -0
- pyproject.toml +14 -3
- requirements.txt +0 -1
.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 = ["
|
10 |
-
|
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
|
24 |
messages = [{"role": "user", "content": user_input}]
|
25 |
-
|
|
|
26 |
|
27 |
iface = gr.ChatInterface(
|
28 |
-
fn=
|
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=
|
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
|
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 = "
|
8 |
|
9 |
|
10 |
|
11 |
[tool.poetry.dependencies]
|
12 |
-
python = "
|
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
|
|
|
|