christophebourguignat commited on
Commit
73f994d
1 Parent(s): 8781bb0

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +67 -0
app.py ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ import gradio as gr
3
+ from datasets import load_dataset
4
+ from langchain.document_loaders import DataFrameLoader
5
+ from langchain.text_splitter import CharacterTextSplitter
6
+ from langchain.vectorstores import FAISS
7
+ from langchain.embeddings import OpenAIEmbeddings
8
+ from langchain.chains import RetrievalQA
9
+ from langchain.chat_models import ChatOpenAI
10
+
11
+ def llm_response(insurer1, insurer2, question):
12
+ qa_chain1 = RetrievalQA.from_chain_type(llm1, retriever=db_dict[insurer1].as_retriever(search_kwargs={'k': 15}))
13
+ qa_chain2 = RetrievalQA.from_chain_type(llm2, retriever=db_dict[insurer2].as_retriever(search_kwargs={'k': 15}))
14
+ return qa_chain1({"query": question})['result'], qa_chain2({"query": question})['result']
15
+
16
+ examples = [
17
+ [None, None, "Est-il possible de choisir son avocat ?"],
18
+ [None, None, "Les problèmes de divorce sont-ils couverts ?"],
19
+ [None, None, "Que se passe-t-il en cas de désaccord sur les mesures à prendre pour régler le litige ?"],
20
+ [None, None, "Comment résilier le contrat ?"]
21
+ ]
22
+
23
+ dataset_names = ["zelros/pj-ca", "zelros/pj-ce", "zelros/pj-da",
24
+ "zelros/pj-groupama", "zelros/pj-sg", "zelros/pj-lbp"]
25
+
26
+ insurers = ["Crédit Agricole","Caisse d'Epargne","Direct Assurance","Groupama","Société Générale","La Banque Postale"]
27
+
28
+ db_dict = {}
29
+
30
+ for i, name in enumerate(dataset_names):
31
+ dataset = load_dataset(name)
32
+
33
+ df = dataset['train'].to_pandas()
34
+ df['text'] = df["title"] + df["content"]
35
+
36
+ loader = DataFrameLoader(df, 'text')
37
+ documents = loader.load()
38
+ text_splitter = CharacterTextSplitter(chunk_size=5000, chunk_overlap=0)
39
+ texts = text_splitter.split_documents(documents)
40
+ embeddings = OpenAIEmbeddings()
41
+
42
+ db = FAISS.from_documents(texts, embeddings)
43
+ db_dict[insurers[i]] = db
44
+
45
+ llm1 = ChatOpenAI(model_name="gpt-4")
46
+ llm2 = ChatOpenAI(model_name="gpt-4")
47
+
48
+ demo = gr.Interface(llm_response,
49
+ inputs=[
50
+ gr.Dropdown(choices=insurers,
51
+ label="Assureur 1",
52
+ value="Société Générale",
53
+ info="De nouveaux assureurs seront disponibles prochainement !"),
54
+ gr.Dropdown(choices=insurers,
55
+ label="Assureur 2",
56
+ value="La Banque Postale"),
57
+ gr.Textbox(label="Question",
58
+ info="Quelques exemples ci-dessous :)")
59
+ ],
60
+ outputs=[gr.Textbox(label="Réponse assureur 1"),
61
+ gr.Textbox(label="Réponse assureur 2")
62
+ ],
63
+ title='Pour une Assurance plus accessible et compréhensible',
64
+ description='### <center>Comparez les assurances protection juridique',
65
+ examples=examples)
66
+
67
+ demo.launch()