Mauro24's picture
Update app.py
5bb1c61 verified
raw
history blame
3.17 kB
import openai
import gradio as gr
from langchain_community.vectorstores import FAISS
from langchain_community.embeddings import HuggingFaceEmbeddings
import zipfile
import os
import torch
# Imposta la tua chiave API di OpenAI come variabile d'ambiente
openai.api_key = os.getenv("OPENAI_API_KEY")
# Percorsi ZIP per manuali e problemi
zip_path_m = "faiss_manual_index.zip"
faiss_manual_index = "faiss_manual_index"
zip_path_p = "faiss_problems_index.zip"
faiss_problems_index = "faiss_problems_index"
# Estrazione dei file ZIP se necessario
for zip_path, output_dir in [(zip_path_m, faiss_manual_index), (zip_path_p, faiss_problems_index)]:
if not os.path.exists(output_dir):
os.makedirs(output_dir)
if os.path.exists(zip_path):
with zipfile.ZipFile(zip_path, 'r') as zip_ref:
zip_ref.extractall(output_dir)
# Caricamento del modello di embedding
embedding_model = HuggingFaceEmbeddings(model_name="sentence-transformers/LaBSE")
# Caricamento dei vectorstore FAISS
manual_vectorstore = FAISS.load_local(faiss_manual_index, embedding_model, allow_dangerous_deserialization=True)
problems_vectorstore = FAISS.load_local(faiss_problems_index, embedding_model, allow_dangerous_deserialization=True)
# Funzione per la ricerca e il riassunto
def search_and_summarize(query):
# Ricerca nei manuali e problemi
manual_results = manual_vectorstore.similarity_search(query, k=2)
manual_output = "\n\n".join([doc.page_content for doc in manual_results])
problems_results = problems_vectorstore.similarity_search(query, k=2)
problems_output = "\n\n".join([doc.page_content for doc in problems_results])
combined_text = f"Manual Results:\n{manual_output}\n\nProblems Results:\n{problems_output}"
# Generazione del riassunto con OpenAI GPT-3 (nuova API)
input_text = f"Riassumi le seguenti informazioni:\n{combined_text}\n\nRiassunto:"
# Chiamata all'API OpenAI per generare il riassunto usando la nuova interfaccia
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo", # Puoi scegliere anche "gpt-4" o altri modelli
messages=[
{"role": "system", "content": "Sei un assistente che aiuta con la sintesi di informazioni."},
{"role": "user", "content": input_text}
],
max_tokens=150,
temperature=0.7
)
summary = response['choices'][0]['message']['content'].strip()
return manual_output, problems_output, summary
# Interfaccia Gradio
iface = gr.Interface(
fn=search_and_summarize,
inputs=gr.Textbox(lines=2, placeholder="Enter your question here..."),
outputs=[
gr.Textbox(label="Manual Results"),
gr.Textbox(label="Issues Results"),
gr.Textbox(label="Summary by GPT-3")
],
examples=[
["How to change the knife?"],
["What are the safety precautions for using the machine?"],
["How can I get help with the machine?"]
],
title="Manual Querying System with GPT-3 Summarization",
description="Enter a question to get information from the manual and the common issues, summarized by GPT-3."
)
# Avvia l'app Gradio
iface.launch()