Spaces:
Running
Running
Ilyas KHIAT
commited on
Commit
·
060b78c
1
Parent(s):
92de14f
whatif
Browse files
main.py
CHANGED
@@ -57,6 +57,10 @@ class Artwork(BaseModel):
|
|
57 |
date: str
|
58 |
description: str
|
59 |
|
|
|
|
|
|
|
|
|
60 |
|
61 |
# Global variable to store the data
|
62 |
artworks_data = []
|
@@ -126,5 +130,13 @@ async def generate(user_input: UserInput):
|
|
126 |
return StreamingResponse(generate_stream(user_input.query,user_input.messages,stream=True),media_type="application/json")
|
127 |
else:
|
128 |
return generate_stream(user_input.query,user_input.messages,stream=False)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
129 |
except Exception as e:
|
130 |
return {"message": str(e)}
|
|
|
57 |
date: str
|
58 |
description: str
|
59 |
|
60 |
+
class WhatifInput(BaseModel):
|
61 |
+
question: str
|
62 |
+
response: str
|
63 |
+
|
64 |
|
65 |
# Global variable to store the data
|
66 |
artworks_data = []
|
|
|
130 |
return StreamingResponse(generate_stream(user_input.query,user_input.messages,stream=True),media_type="application/json")
|
131 |
else:
|
132 |
return generate_stream(user_input.query,user_input.messages,stream=False)
|
133 |
+
except Exception as e:
|
134 |
+
return {"message": str(e)}
|
135 |
+
|
136 |
+
@app.post("/whatif")
|
137 |
+
async def generate_whatif(whatif_input: WhatifInput):
|
138 |
+
try:
|
139 |
+
print(whatif_input)
|
140 |
+
return generate_whatif_stream(whatif_input["question"],whatif_input["response"])
|
141 |
except Exception as e:
|
142 |
return {"message": str(e)}
|
prompt.py
CHANGED
@@ -45,6 +45,32 @@ Vous allez répondre à la question de l'utilisateur, qui portera sur ce livre.
|
|
45 |
**Sortie attendue :** Votre réponse doit être bien formatée, plaisante à lire et inclure des émojis.
|
46 |
'''
|
47 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
summary_text = '''
|
49 |
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é.
|
50 |
-
'''
|
|
|
|
45 |
**Sortie attendue :** Votre réponse doit être bien formatée, plaisante à lire et inclure des émojis.
|
46 |
'''
|
47 |
|
48 |
+
template_whatif = '''
|
49 |
+
Prends le temps de bien lire la question posée par IA SIGNATURE au lecteur et la réponse faite par le lecteur :
|
50 |
+
* Question posée par IA SIGNATURE -> {question}
|
51 |
+
* Bonne réponse du lecteur -> {response}
|
52 |
+
|
53 |
+
Contexte :
|
54 |
+
{context}
|
55 |
+
|
56 |
+
**Instructions** :
|
57 |
+
Relis le passage correspondant dans le récit et propose cinq autres choix qu'auraient pu faire l'auteur et ayant un impact sur la suite du récit. Numérote les résultats de 1 à 5 en prenant en compte :
|
58 |
+
Choix 1 : Choix ayant un impact déterminant avec une suite totalement différente pour le récit
|
59 |
+
Choix 2 : Choix entraînant une suite du récit beaucoup plus sombre
|
60 |
+
Choix 3 : Choix entraînant une suite du récit beaucoup plus ouverte, gai et inspirante
|
61 |
+
Choix 4 : A toi de jouer
|
62 |
+
Choix 5 : Conserve la réponse actuelle
|
63 |
+
|
64 |
+
**CONTRAINTE** :
|
65 |
+
Présente la réponse de la façon suivante :
|
66 |
+
|
67 |
+
-> "Voici 5 suites différentes possibles à ce moment du récit :"
|
68 |
+
-> Affiche les 5 réponses sous forme de 5 bullets points en sautant une ligne entre chaque choix pour aérer le texte
|
69 |
+
-> Demande en fin de réponse :"QUELLE SUITE VEUX TU DONNER AU RÉCIT ? (1 ou 2 ou 3 ou 4 ou 5) ?"
|
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 |
+
'''
|
76 |
+
|
rag.py
CHANGED
@@ -75,7 +75,7 @@ class verification_score(BaseModel):
|
|
75 |
score: float = Field(description="The score of the user's response from 0 to 10 to the question")
|
76 |
|
77 |
|
78 |
-
llm = ChatOpenAI(model="gpt-4o", max_tokens=
|
79 |
|
80 |
def split_texts(text : str) -> list[str]:
|
81 |
splitter = RecursiveCharacterTextSplitter(
|
@@ -135,7 +135,6 @@ def generate_sphinx_response() -> sphinx_output:
|
|
135 |
|
136 |
return llm_chain.invoke({"writer":writer,"book_name":book_name,"summary":summary,"excerpt":excerpt})
|
137 |
|
138 |
-
|
139 |
#############################################################
|
140 |
### PAR ICI , CHOISIR LE DEGRE DE SEVERITE DE LA VERIFICATION
|
141 |
def verify_response(response:str,answers:list[str],question:str) -> bool:
|
@@ -173,6 +172,22 @@ def generate_stream(query:str,messages = [], model = "gpt-4o-mini", max_tokens =
|
|
173 |
else:
|
174 |
return llm_chain.invoke({"name_book":name_book,"writer":writer,"name_icon":name_icon,"kg":graph,"context":context,"query":query})
|
175 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
176 |
except Exception as e:
|
177 |
print(e)
|
178 |
return False
|
|
|
75 |
score: float = Field(description="The score of the user's response from 0 to 10 to the question")
|
76 |
|
77 |
|
78 |
+
llm = ChatOpenAI(model="gpt-4o", max_tokens=700, temperature=0.5)
|
79 |
|
80 |
def split_texts(text : str) -> list[str]:
|
81 |
splitter = RecursiveCharacterTextSplitter(
|
|
|
135 |
|
136 |
return llm_chain.invoke({"writer":writer,"book_name":book_name,"summary":summary,"excerpt":excerpt})
|
137 |
|
|
|
138 |
#############################################################
|
139 |
### PAR ICI , CHOISIR LE DEGRE DE SEVERITE DE LA VERIFICATION
|
140 |
def verify_response(response:str,answers:list[str],question:str) -> bool:
|
|
|
172 |
else:
|
173 |
return llm_chain.invoke({"name_book":name_book,"writer":writer,"name_icon":name_icon,"kg":graph,"context":context,"query":query})
|
174 |
|
175 |
+
except Exception as e:
|
176 |
+
print(e)
|
177 |
+
return False
|
178 |
+
|
179 |
+
def generate_whatif_stream(question:str,response:str, stream:bool = True) -> str:
|
180 |
+
try:
|
181 |
+
prompt = PromptTemplate.from_template(template_whatif)
|
182 |
+
llm_chain = prompt | llm | StrOutputParser()
|
183 |
+
print("Enter whatif")
|
184 |
+
context = retrieve_context_from_vectorestore(f"{question} {response}")
|
185 |
+
print(f"Context: {context}")
|
186 |
+
|
187 |
+
if generate_stream:
|
188 |
+
return llm_chain.stream({"question":question,"response":response,"context":context})
|
189 |
+
else:
|
190 |
+
return llm_chain.invoke({"question":question,"response":response,"context":context})
|
191 |
except Exception as e:
|
192 |
print(e)
|
193 |
return False
|