Non puoi selezionare più di 25 argomenti
Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
84 righe
4.2 KiB
84 righe
4.2 KiB
from langchain.callbacks.manager import CallbackManager |
|
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler |
|
from langchain_community.chat_models import ChatOllama |
|
from langchain_community.document_loaders import TextLoader |
|
from langchain.chains import RetrievalQA |
|
from qdrant_client import QdrantClient |
|
from langchain_community.embeddings import OllamaEmbeddings |
|
from langchain_community.vectorstores import Qdrant |
|
from langchain_community.chat_models import ChatOllama |
|
from langchain_community.llms import Ollama |
|
from langchain.callbacks.manager import CallbackManager |
|
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler |
|
from langchain.prompts import PromptTemplate |
|
import json |
|
import datetime |
|
def extractDataFromDoc(collection_name): |
|
client = QdrantClient(path="./vectLlama3") |
|
embeddings = OllamaEmbeddings(model='llama3',base_url="http://10.128.0.3:11434") |
|
# set up the qdrant database |
|
qdrant = Qdrant( |
|
client=client, |
|
collection_name=collection_name, |
|
embeddings=embeddings |
|
) |
|
|
|
##### Ollama |
|
|
|
# model name can be any model you have installed with Ollama |
|
# complete list of models available @ Ollama: https://ollama.ai/library |
|
#llm = ChatOllama(model_name="llama3", temperature=0,base_url="http://10.128.0.3:11434" ) |
|
llm = Ollama( |
|
model="llama3", |
|
base_url="http://10.128.0.3:11434", |
|
temperature=0, |
|
callback_manager=CallbackManager( |
|
[StreamingStdOutCallbackHandler()] |
|
), |
|
stop=["<|eot_id|>"], |
|
) |
|
import json |
|
json_schema = { |
|
"authority-identification-code-civil-engineering-office": "restituisci il numero identificativo dell'ente pubblico, deve essere un numerico, ritorna stringa vuota se non presente", |
|
"applicants-0-tax-code":"restituiscimi il codice fiscale del richiedente della concessione", |
|
"applicants-0-vat-number" : "restituiscimi solo se presente, il numero di partita iva del richiedente, stringa vuota se non presente ", |
|
"concession-decree-number" : "restituisci il numero del decreto o della pratica, restituisci solo il numero", |
|
"release-date": "restituiscimi la data di rilascio del provvedimento", |
|
"expiration-date": "restituiscimi la data di scadenza della concessione, eventualmente somma la durata della concessione alla data di rilascio, restituisci solo la data" |
|
} |
|
|
|
|
|
#question_1 ="restituisci solo con il json utilizzando seguente schema: " + json.dumps(json_schema, indent=2) + "le date sono in formato italiano e vanno convertite in DD-MM-YYYY, lascia vuoti i campi che non trovi" |
|
question_1="restituisci il codice fiscale del richiedente concessione" |
|
question_2="restituisci il numero del decreto o della pratica" |
|
question_3="restituisci la data di inizio della concessione in formato dd/MM/yyyy. Restituisci solo la data" |
|
question_4="restituisci la data di fine dellla concessione di utilizzo, ritorna in formato dd/MM/yyyy. Restituisci solo la data" |
|
question_5="restituisci il numero identificativo dell'ente pubblico" |
|
question_6="restituisci il numero di partita iva del richiedente" |
|
# Build prompt |
|
template = """Give a precise answer to the question based on the context without stating so. Don't be verbose. |
|
{context} |
|
Question:{question}""" |
|
QA_CHAIN_PROMPT = PromptTemplate.from_template(template)# Run chain |
|
qa_chain = RetrievalQA.from_chain_type( |
|
llm, |
|
retriever=qdrant.as_retriever(), |
|
chain_type_kwargs={"prompt": QA_CHAIN_PROMPT} |
|
) |
|
cf = qa_chain.invoke({"query": question_1}) |
|
#return result["result"] |
|
dec = qa_chain.invoke({"query": question_2}) |
|
datar = qa_chain.invoke({"query": question_3}) |
|
datas = qa_chain.invoke({"query": question_4}) |
|
iduff=qa_chain.invoke({"query": question_5}) |
|
piva=qa_chain.invoke({"query": question_6}) |
|
response={} |
|
response['authority-identification-code-civil-engineering-office']=iduff["result"] |
|
response['applicants-0-tax-code']=cf["result"] |
|
response['applicants-0-vat-number']=piva["result"] |
|
response['concession-decree-number']=dec["result"] |
|
response['release-date']= datetime.datetime.strptime(datar["result"].strip(), '%d/%m/%Y').strftime('%Y-%m-%d') |
|
response['expiration-date']=datetime.datetime.strptime(datas["result"].strip(), '%d/%m/%Y').strftime('%Y-%m-%d') |
|
return json.dumps(response) |
|
# Check the result of the query |
|
#print(result["result"])
|
|
|