Ilyas KHIAT commited on
Commit
be13230
1 Parent(s): 5e72909
Files changed (4) hide show
  1. main.py +11 -1
  2. prompt.py +13 -0
  3. rag.py +23 -0
  4. requirements.txt +1 -0
main.py CHANGED
@@ -133,11 +133,21 @@ async def generate(user_input: UserInput):
133
  except Exception as e:
134
  return {"message": str(e)}
135
 
136
-
137
  @app.post("/whatif")
138
  async def generate_whatif(whatif_input: WhatifInput):
139
  try:
140
  print(whatif_input)
141
  return generate_whatif_stream(whatif_input["question"],whatif_input["response"])
 
 
 
 
 
 
 
 
 
 
142
  except Exception as e:
143
  return {"message": str(e)}
 
133
  except Exception as e:
134
  return {"message": str(e)}
135
 
136
+
137
  @app.post("/whatif")
138
  async def generate_whatif(whatif_input: WhatifInput):
139
  try:
140
  print(whatif_input)
141
  return generate_whatif_stream(whatif_input["question"],whatif_input["response"])
142
+ except Exception as e:
143
+ return {"message": str(e)}
144
+
145
+ @app.post("/whatif_chat")
146
+ async def generate_whatif_chat(user_input: UserInput):
147
+ try:
148
+ if user_input.stream:
149
+ return StreamingResponse(generate_stream_whatif_chat(user_input.query,user_input.messages,stream=True),media_type="application/json")
150
+ else:
151
+ return generate_stream_whatif_chat(user_input.query,user_input.messages,stream=False)
152
  except Exception as e:
153
  return {"message": str(e)}
prompt.py CHANGED
@@ -70,6 +70,19 @@ Présente la réponse de la façon suivante :
70
 
71
  '''
72
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  summary_text = '''
74
  Ce récit d'anticipation, se déroulant principalement en 2038, explore les tensions entre l'art, la technologie et les limites planétaires à travers une exposition visionnaire des œuvres de René Magritte. Anne-Hélène, nouvelle directrice des Musées Royaux des Beaux-Arts de Belgique, organise cette exposition avec plusieurs personnages clés comme Tristan, un guide discret mais observateur, Karla Madrigale, PDG de la start-up IA SIGNATURE, et Jad Wahid, un artiste engagé. L'exposition vise à confronter les œuvres de Magritte aux limites planétaires pour inspirer de nouvelles façons de penser la place du vivant et de l'art dans un futur dominé par l'IA. Cependant, un incident dramatique se produit lorsque Karla, en interaction avec une installation immersive, tombe dans le coma à la suite d'une réaction toxique des plantes. Les événements soulèvent des questions sur l'éthique, la responsabilité et les limites de l'IA et des technologies immersives. Le récit invite à réfléchir sur le potentiel et les risques de l'IA dans l'art et la société.
75
  '''
 
70
 
71
  '''
72
 
73
+ template_whatif_response = '''
74
+ Vous êtes un assistant IA très intelligent qui connaît tout sur le livre {name_book} de {writer}.
75
+ Vous allez répondre à la question de l'utilisateur, qui portera sur ce livre. Vous répondrez rigoureusement dans le style d'écriture de la nouvelle. Vos réponses seront courtes.
76
+
77
+ **Historique des messages :** {messages}
78
+
79
+ **l'utilisateur :** {query}
80
+
81
+ **Contexte récupéré (si pertinent pour votre réponse) :** {context}
82
+
83
+ **Sortie attendue :** Votre réponse doit être bien formatée, plaisante à lire et inclure des émojis.
84
+ '''
85
+
86
  summary_text = '''
87
  Ce récit d'anticipation, se déroulant principalement en 2038, explore les tensions entre l'art, la technologie et les limites planétaires à travers une exposition visionnaire des œuvres de René Magritte. Anne-Hélène, nouvelle directrice des Musées Royaux des Beaux-Arts de Belgique, organise cette exposition avec plusieurs personnages clés comme Tristan, un guide discret mais observateur, Karla Madrigale, PDG de la start-up IA SIGNATURE, et Jad Wahid, un artiste engagé. L'exposition vise à confronter les œuvres de Magritte aux limites planétaires pour inspirer de nouvelles façons de penser la place du vivant et de l'art dans un futur dominé par l'IA. Cependant, un incident dramatique se produit lorsque Karla, en interaction avec une installation immersive, tombe dans le coma à la suite d'une réaction toxique des plantes. Les événements soulèvent des questions sur l'éthique, la responsabilité et les limites de l'IA et des technologies immersives. Le récit invite à réfléchir sur le potentiel et les risques de l'IA dans l'art et la société.
88
  '''
rag.py CHANGED
@@ -186,6 +186,29 @@ def generate_whatif_stream(question:str,response:str, stream:bool = True) -> str
186
  return llm_chain.stream({"question":question,"response":response,"context":context})
187
  else:
188
  return llm_chain.invoke({"question":question,"response":response,"context":context})
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
189
  except Exception as e:
190
  print(e)
191
  return False
 
186
  return llm_chain.stream({"question":question,"response":response,"context":context})
187
  else:
188
  return llm_chain.invoke({"question":question,"response":response,"context":context})
189
+ except Exception as e:
190
+ print(e)
191
+ return False
192
+
193
+ def generate_stream_whatif_chat(query:str,messages = [], model = "gpt-4o-mini", max_tokens = 500, temperature = 1,index_name="",stream=True,vector_store=None):
194
+ try:
195
+ print("init chat")
196
+ print("init template")
197
+ prompt = PromptTemplate.from_template(template_whatif_response)
198
+
199
+ writer = "Laurent Tripied"
200
+ name_book = "Limites de l'imaginaire ou limites planétaires"
201
+ print("retreiving context")
202
+ context = retrieve_context_from_vectorestore(query)
203
+ print(f"Context: {context}")
204
+ llm_chain = prompt | llm | StrOutputParser()
205
+
206
+ print("streaming")
207
+ if stream:
208
+ return llm_chain.stream({"name_book":name_book,"writer":writer,"messages":messages,"context":context,"query":query})
209
+ else:
210
+ return llm_chain.invoke({"name_book":name_book,"writer":writer,"messages":messages,"context":context,"query":query})
211
+
212
  except Exception as e:
213
  print(e)
214
  return False
requirements.txt CHANGED
@@ -15,5 +15,6 @@ neo4j==5.24.0
15
  itext2kg==0.0.7
16
  langchain-community
17
  six
 
18
 
19
  pandas
 
15
  itext2kg==0.0.7
16
  langchain-community
17
  six
18
+ httpx==0.27.2
19
 
20
  pandas