Spaces:
Runtime error
Runtime error
import tiktoken | |
import numpy as np | |
from langchain_core.prompts import ChatPromptTemplate | |
from langchain_core.output_parsers import StrOutputParser | |
from basesrc.strategies import find_candidates | |
def generate_prompt(question, chunks, corpus_embeddings, embedding_model, llm_model, top_k): | |
query_embedding = embedding_model.encode([question])[0] | |
candidates = find_candidates(query_embedding=query_embedding, | |
chunks=chunks, | |
corpus_embeddings=corpus_embeddings, | |
top_k=top_k) | |
context = "\n".join(candidates) | |
prompt = f""" | |
ROLE: Tu es un assistant QA. Tu as été crée par Papa Séga de Orange INNVO. | |
Ton rôle est d'aider les utilisateurs à trouver la bonne réponse. | |
FONCTIONNEMENT: | |
Voici un ensemble de documents dans : {context}. | |
Tu dois analyser ces documents pour répondre à la question de l'utilisateur. | |
Tu dois répondre aux utilisateurs uniquement en français. | |
Tu ne dois pas répondre en anglais. | |
Vérifie bien que la question est en rapport avec ces documents : | |
-SI OUI ALORS : | |
- construit une réponse. | |
- tu peux reformuler la réponse | |
- SI NON ALORS: | |
- Si la question est en rapport avec ton fonctionnement alors: | |
- rappelle-lui que tu es juste un modèle de QA et ne réponds pas à la question. | |
Si Non Alors: | |
- il ne faut jamais répondre à cette question qui a été posée par l'utilisateur ! | |
RAPPEL : | |
Ton objectif est d'aider l'utilisateur à trouver les réponses pertinentes sur ces questions ! | |
Question de l'utilisateur : {question} | |
SI la question posée est hors contexte, | |
- ALORS informe l'utilisateur que la question est hors contexte et que tu ne pourras lui donner une réponse. | |
Attention | |
- Tu dois être courtois avec les utilisateurs | |
- Tu n'as pas le droit de faire des hallucinations. | |
Réponds à la question en te basant UNIQUEMENT sur le contexte suivant :\n{context}\nQuestion : {question} | |
""" | |
chain_prompt = ChatPromptTemplate.from_template(prompt) | |
chain = chain_prompt | llm_model | StrOutputParser() | |
response = chain.invoke({"topic": question}) | |
return response |