ionosphere commited on
Commit
4223220
·
1 Parent(s): 3df952f

Update prompt and models

Browse files
Files changed (3) hide show
  1. config.yaml +5 -1
  2. model/selector.py +6 -6
  3. pages/form.py +70 -16
config.yaml CHANGED
@@ -15,10 +15,12 @@ variables:
15
  prompt_system: "
16
  Tu es un expert en gestion agricole des grandes cultures dans les régions Centre, Ile de france, Hauts de france et Grand est.
17
  Tu sais calculer une marge brute par hectare et un coût de revient par hectare à partir de documents statistiques agricoles français fournis ci-dessous.
18
- Tu utiliseras en priorité les documents provenant du reseau INOSYS.
19
  Si tu ne connais pas la réponse, ne réponds pas.
20
  Tu répondras toujours en Français.
21
 
 
 
22
  Le coût de production ou coût de revient (CR) est calculé en additionnant toutes les charges opérationnelles (engrais, produits phytosanitaires, semences) (CO) par hectare ainsi que les charges de structure (main d'œuvre, foncier, matériel, bâtiment) (CS) par hectare selon la formule CR = CO + CS
23
 
24
  Le coût de production en grande culture se situe en moyenne entre 500 € / hectare et 2000 € / hectare.
@@ -31,6 +33,8 @@ La marge nette (MN) est calculée en additionnant tous les produits (Ventes & in
31
 
32
  La marge nette (MN) en grande culture se situe en moyenne entre 100 € / hectare et 800 € / hectare.
33
 
 
 
34
  A partir des documents du contexte, tu vas produire des tableaux et des indicateurs de coût selon les cultures mentionnées par l'utilisateur.
35
  Tu mentionneras les sources utilisées.
36
  Pour le coût de production (CR), il est impératif de détailler l'ensemble des calculs poste par poste pour les charges opérationnelles (engrais, produits phytosanitaires, semences) (CO) et pour les charges de structure (main d'oeuvre, foncier, matériel, batiment) (CS).
 
15
  prompt_system: "
16
  Tu es un expert en gestion agricole des grandes cultures dans les régions Centre, Ile de france, Hauts de france et Grand est.
17
  Tu sais calculer une marge brute par hectare et un coût de revient par hectare à partir de documents statistiques agricoles français fournis ci-dessous.
18
+ Tu utiliseras en priorité les documents provenant du reseau INOSYS puis les documents les plus récents.
19
  Si tu ne connais pas la réponse, ne réponds pas.
20
  Tu répondras toujours en Français.
21
 
22
+ Les ventes par culture correspondent à la multiplication entre le rendement (R) à l’hectare exprimé en quintaux (q) ou en tonnes (t) et le prix de vente (PV) exprimé en euro par quintal ou en euros par tonne (t).
23
+
24
  Le coût de production ou coût de revient (CR) est calculé en additionnant toutes les charges opérationnelles (engrais, produits phytosanitaires, semences) (CO) par hectare ainsi que les charges de structure (main d'œuvre, foncier, matériel, bâtiment) (CS) par hectare selon la formule CR = CO + CS
25
 
26
  Le coût de production en grande culture se situe en moyenne entre 500 € / hectare et 2000 € / hectare.
 
33
 
34
  La marge nette (MN) en grande culture se situe en moyenne entre 100 € / hectare et 800 € / hectare.
35
 
36
+ Le prix planché (PP) ou seuil de rentabilité (SR) par culture correspond au prix moyen auquel doit être vendue la culture afin d’obtenir une marge nette dont la valeur est 0 € selon la formule PR = CR / R.
37
+
38
  A partir des documents du contexte, tu vas produire des tableaux et des indicateurs de coût selon les cultures mentionnées par l'utilisateur.
39
  Tu mentionneras les sources utilisées.
40
  Pour le coût de production (CR), il est impératif de détailler l'ensemble des calculs poste par poste pour les charges opérationnelles (engrais, produits phytosanitaires, semences) (CO) et pour les charges de structure (main d'oeuvre, foncier, matériel, batiment) (CS).
model/selector.py CHANGED
@@ -4,17 +4,17 @@ from .ModelIntegrations import ModelManager
4
  def ModelSelector():
5
  # Dictionnaire des modèles par fournisseur
6
  model_providers = {
7
- "Mistral": {
8
- "mistral-large-latest": "mistral.mistral-large-latest",
9
- "open-mixtral-8x7b": "mistral.open-mixtral-8x7b",
10
- },
11
  "OpenAI": {
12
  "gpt-4o": "openai.gpt-4o",
13
  },
14
  "Anthropic": {
15
  "claude-3-5-sonnet-20240620": "anthropic.claude-3-5-sonnet-20240620",
16
- "claude-3-opus-20240229": "anthropic.claude-3-opus-20240229",
17
- "claude-3-sonnet-20240229": "anthropic.claude-3-sonnet-20240229",
18
  },
19
  # "llama": {
20
  # "llama3.2-11b-vision": "llama.llama3.2-11b-vision",
 
4
  def ModelSelector():
5
  # Dictionnaire des modèles par fournisseur
6
  model_providers = {
7
+ # "Mistral": {
8
+ # "mistral-large-latest": "mistral.mistral-large-latest",
9
+ # "open-mixtral-8x7b": "mistral.open-mixtral-8x7b",
10
+ # },
11
  "OpenAI": {
12
  "gpt-4o": "openai.gpt-4o",
13
  },
14
  "Anthropic": {
15
  "claude-3-5-sonnet-20240620": "anthropic.claude-3-5-sonnet-20240620",
16
+ #"claude-3-opus-20240229": "anthropic.claude-3-opus-20240229",
17
+ #"claude-3-sonnet-20240229": "anthropic.claude-3-sonnet-20240229",
18
  },
19
  # "llama": {
20
  # "llama3.2-11b-vision": "llama.llama3.2-11b-vision",
pages/form.py CHANGED
@@ -1,6 +1,17 @@
1
  import streamlit as st
2
  from util import getYamlConfig
3
 
 
 
 
 
 
 
 
 
 
 
 
4
  def page():
5
  st.subheader("Définissez vos paramètres")
6
 
@@ -18,7 +29,9 @@ def page():
18
  for part, tab in zip(parts_sorted, tabs):
19
  with tab:
20
  for field in part['fields']:
21
- display_field(field)
 
 
22
  else:
23
  # Display fields directly if no parts are defined
24
  for field in st.session_state.data_dict:
@@ -27,26 +40,67 @@ def page():
27
 
28
  def display_field(field):
29
  """Helper function to create the correct input based on field 'nature'."""
 
30
  if field['nature'] == 'radio':
31
- value = st.radio(field['label'], field['options'], key=field['key'])
32
- field['value'] = value
 
 
 
 
 
 
 
33
  elif field['nature'] == 'selectbox':
34
- value = st.selectbox(field['label'], field['options'], key=field['key'])
35
- field['value'] = value
 
 
 
 
 
 
 
36
  elif field['nature'] == 'multiselect':
37
- value = st.multiselect(field['label'], field['options'], key=field['key'])
38
- field['value'] = value
 
 
 
 
 
 
39
  elif field['nature'] == 'date':
40
- value = st.date_input(field['label'], key=field['key'])
41
- field['value'] = value
 
 
 
 
 
 
42
  elif field['nature'] == 'numeric':
43
- value = st.number_input(field['label'], key=field['key'])
44
- field['value'] = value
 
 
 
 
 
45
  elif field['nature'] == 'text_area':
46
- value = st.text_area(field['label'], value=field['value'] if 'value' in field else "", key=field['key'])
47
- field['value'] = value
 
 
 
 
 
48
  else:
49
- value = st.text_input(label=field['label'], value=field['value'] if 'value' in field else "")
50
- field['value'] = value
 
 
 
 
51
 
52
- page()
 
1
  import streamlit as st
2
  from util import getYamlConfig
3
 
4
+ def update_session_state(key,):
5
+ # Get new value from session state and change key for save it in params
6
+ new_value = st.session_state[key]
7
+ key = key[5:]
8
+
9
+ for item in st.session_state.data_dict:
10
+ if item['key'] == key:
11
+ item['value'] = new_value
12
+ break
13
+
14
+
15
  def page():
16
  st.subheader("Définissez vos paramètres")
17
 
 
29
  for part, tab in zip(parts_sorted, tabs):
30
  with tab:
31
  for field in part['fields']:
32
+ for field_session in st.session_state.data_dict:
33
+ if field['key'] == field_session['key']:
34
+ display_field(field_session)
35
  else:
36
  # Display fields directly if no parts are defined
37
  for field in st.session_state.data_dict:
 
40
 
41
  def display_field(field):
42
  """Helper function to create the correct input based on field 'nature'."""
43
+ key = 'form_' + field['key']
44
  if field['nature'] == 'radio':
45
+ st.radio(
46
+ field['label'],
47
+ field['options'],
48
+ index=field['options'].index(field.get('value')) if field.get('value') in field['options'] else 0,
49
+ key=key,
50
+ on_change=update_session_state,
51
+ args=(key,)
52
+ )
53
+
54
  elif field['nature'] == 'selectbox':
55
+ st.selectbox(
56
+ field['label'],
57
+ field['options'],
58
+ index=field['options'].index(field.get('value')) if field.get('value') in field['options'] else 0,
59
+ key=key,
60
+ on_change=update_session_state,
61
+ args=(key,)
62
+ )
63
+
64
  elif field['nature'] == 'multiselect':
65
+ st.multiselect(
66
+ field['label'],
67
+ field['options'],
68
+ default=[field['options'].index(value) for value in field.get('value') if value in field['options']],
69
+ key=key,
70
+ on_change=update_session_state,
71
+ args=(key,)
72
+ )
73
  elif field['nature'] == 'date':
74
+ st.date_input(
75
+ field['label'],
76
+ value=field.get('value', None),
77
+ key=key,
78
+ on_change=update_session_state,
79
+ args=(key,)
80
+ )
81
+
82
  elif field['nature'] == 'numeric':
83
+ st.number_input(field['label'],
84
+ value=field.get('value', 0),
85
+ key=key,
86
+ on_change=update_session_state,
87
+ args=(key,)
88
+ )
89
+
90
  elif field['nature'] == 'text_area':
91
+ st.text_area(field['label'],
92
+ value=field.get('value', ""),
93
+ key=key,
94
+ on_change=update_session_state,
95
+ args=(key,)
96
+ )
97
+
98
  else:
99
+ st.text_input(label=field['label'],
100
+ value=field.get('value', ""),
101
+ key=key,
102
+ on_change=update_session_state,
103
+ args=(key,)
104
+ )
105
 
106
+ page()