Spaces:
Sleeping
Sleeping
marcelo-castro-cardoso
commited on
Commit
•
2df300a
1
Parent(s):
655399f
deploy
Browse files- app.py +68 -2
- data/276376-convite-menor_preco_por_lote-false-obras.pdf +0 -0
- requirements.txt +3 -1
app.py
CHANGED
@@ -1,8 +1,74 @@
|
|
1 |
import gradio as gr
|
2 |
import os
|
3 |
|
4 |
-
|
5 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
iface = gr.Interface(fn=greet, inputs="text", outputs="text")
|
8 |
iface.launch(share=True)
|
|
|
1 |
import gradio as gr
|
2 |
import os
|
3 |
|
4 |
+
from llama_index import (
|
5 |
+
VectorStoreIndex,
|
6 |
+
SimpleDirectoryReader,
|
7 |
+
StorageContext,
|
8 |
+
ServiceContext,
|
9 |
+
load_index_from_storage,
|
10 |
+
)
|
11 |
+
from llama_index.llms import OpenAI
|
12 |
+
from llama_index.prompts import PromptTemplate
|
13 |
+
from llama_index.embeddings import LangchainEmbedding
|
14 |
+
import tiktoken
|
15 |
+
from llama_index.text_splitter import SentenceSplitter
|
16 |
|
17 |
+
from langchain.embeddings import HuggingFaceEmbeddings
|
18 |
+
|
19 |
+
# criação do embeding LangChain
|
20 |
+
lc_embed_model = HuggingFaceEmbeddings(
|
21 |
+
model_name="sentence-transformers/all-mpnet-base-v2"
|
22 |
+
)
|
23 |
+
# mapeamento do embeding LangChain para o embeding LlamaIndex
|
24 |
+
embed_model = LangchainEmbedding(lc_embed_model)
|
25 |
+
|
26 |
+
# max_tokens: o tamanho máximo da resposta a ser dada
|
27 |
+
llm = OpenAI(temperature=0.3, model='gpt-3.5-turbo', max_tokens=1024)
|
28 |
+
|
29 |
+
# quebra inteligênte das sentenças, combinando separadores, tokenizadores e chunks
|
30 |
+
text_splitter = SentenceSplitter(
|
31 |
+
separator=" ", chunk_size=1000, chunk_overlap=200,
|
32 |
+
paragraph_separator=" \n \n", secondary_chunking_regex="[^,.;。]+[,.;。]?",
|
33 |
+
tokenizer=tiktoken.encoding_for_model("gpt-3.5-turbo").encode
|
34 |
+
)
|
35 |
+
|
36 |
+
# verifica se a pasta storage existe localmente
|
37 |
+
PERSIST_DIR = "./storage"
|
38 |
+
if not os.path.exists(PERSIST_DIR):
|
39 |
+
# caso não exista lê os documentos da pasta e cria um índice
|
40 |
+
documents = SimpleDirectoryReader("./data").load_data()
|
41 |
+
|
42 |
+
# cria um serviço de contexto para configurar a criação do indice
|
43 |
+
service_context = ServiceContext.from_defaults(llm=llm, embed_model=embed_model, text_splitter=text_splitter)
|
44 |
+
|
45 |
+
# cria um indice utilizando um contexto de serviços
|
46 |
+
index = VectorStoreIndex.from_documents(documents, service_context=service_context)
|
47 |
+
|
48 |
+
# depois, armazena o índice na pasta
|
49 |
+
index.storage_context.persist(persist_dir=PERSIST_DIR)
|
50 |
+
else:
|
51 |
+
# caso a pasta exista, lê o índice existente
|
52 |
+
storage_context = StorageContext.from_defaults(persist_dir=PERSIST_DIR)
|
53 |
+
index = load_index_from_storage(storage_context)
|
54 |
+
|
55 |
+
# define um prompt
|
56 |
+
text_qa_template = PromptTemplate('''
|
57 |
+
Dado o seguinte contexto de informações:
|
58 |
+
---------
|
59 |
+
{context_str}
|
60 |
+
---------
|
61 |
+
Dado o contexto informado e sem o uso de nenhum conhecimento anterior,
|
62 |
+
responda a pergunta: {query_str}
|
63 |
+
''')
|
64 |
+
|
65 |
+
# cria o query_engine baseado no indice e no contexto
|
66 |
+
query_engine = index.as_query_engine(text_qa_template=text_qa_template)
|
67 |
+
|
68 |
+
# consulta o índice local
|
69 |
+
def greet(query):
|
70 |
+
return query_engine.query(query)
|
71 |
+
|
72 |
+
# cria a interface com o gradio
|
73 |
iface = gr.Interface(fn=greet, inputs="text", outputs="text")
|
74 |
iface.launch(share=True)
|
data/276376-convite-menor_preco_por_lote-false-obras.pdf
ADDED
Binary file (779 kB). View file
|
|
requirements.txt
CHANGED
@@ -1,3 +1,5 @@
|
|
1 |
-
|
2 |
gradio
|
3 |
llama-index==0.9.26
|
|
|
|
|
|
|
|
|
|
1 |
gradio
|
2 |
llama-index==0.9.26
|
3 |
+
langchain==0.0.348
|
4 |
+
pypdf
|
5 |
+
sentence_transformers
|