File size: 2,932 Bytes
f28182b
267b2e4
f28182b
 
 
 
 
a9899cb
f28182b
 
d5f8b4a
f28182b
 
267b2e4
 
 
 
 
 
 
 
 
f28182b
 
 
af50e9c
f28182b
 
 
 
 
 
 
d704cac
f28182b
 
 
 
 
50979c9
f28182b
 
 
 
 
 
 
 
 
a9899cb
f28182b
 
 
 
 
 
 
 
 
 
 
 
a9899cb
 
f28182b
a9899cb
 
 
 
 
f28182b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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=['document','input'], 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),
#         )