from langchain_community.document_loaders import TextLoader from langchain.text_splitter import RecursiveCharacterTextSplitter, CharacterTextSplitter from langchain.chains import ConversationalRetrievalChain from langchain_community.embeddings import HuggingFaceEmbeddings from langchain_community.llms import HuggingFaceEndpoint from langchain.prompts.prompt import PromptTemplate from pathlib import Path from langchain_core.output_parsers import StrOutputParser from unidecode import unidecode import tqdm from langchain_community.vectorstores import FAISS import accelerate # c_splitter = CharacterTextSplitter( # chunk_size = 350, # chunk_overlap = 4, # separator = """, # ]""", # ) # def load_doc(file_path): # loader = TextLoader(file_path) # pages = loader.load() # text_splitter = c_splitter # doc_splits = text_splitter.split_documents(pages) # return doc_splits llm = HuggingFaceEndpoint( repo_id='mistralai/Mixtral-8x7B-Instruct-v0.1', temperature = 0.17, max_new_tokens = 512, top_k = 30 ) # def process_data(): # splt = load_doc('intents_v2.txt') # embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2") # db = FAISS.from_documents(splt, embeddings) # return db # db = process_data() prompt = """Vous êtes un formateur de modèles GPT. Vous excellez dans l'affinement des modèles GPT, la lecture et l'analyse de documents ainsi que l'association de balises aux entrées utilisateur appropriées. Mon contexte consiste en un document {document} structuré comportant des balises et leurs réponses associées respectivement, servant de référence pour former un modèle GPT capable de produire des réponses pertinentes en fonction des entrées utilisateur. Votre tâche consiste à former un modèle GPT pour associer les entrées utilisateur aux balises adéquates et renvoyer les réponses correspondantes figurant dans le document de référence. Les étapes à suivre sont les suivantes : analyser le document et ses balises, entraîner le modèle GPT avec les exemples fournis, mapper les entrées utilisateur aux balises correspondantes et générer les réponses associées. Les caractéristiques du résultat attendu consistent en des réponses cohérentes et exactement adaptées aux balises fournies dans le document de référence. Si tout va bien, allez-y. Human: {input} AI Assistant: """ prompt_2 = PromptTemplate(input_variables=['input', 'document'], template = prompt) conversation_chain = prompt_2 | llm | StrOutputParser() # Set up a conversational chain to retrieve and generate responses. # conversation_chain = ConversationalRetrievalChain.from_llm( # llm=llm, # retriever=db.as_retriever(), # condense_question_prompt=PromptTemplate(input_variables=['input'], template=prompt), # )