Spaces:
Runtime error
Runtime error
| import os | |
| from dotenv import load_dotenv | |
| import gradio as gr | |
| from langchain_groq import ChatGroq | |
| from extractor import Answerer, Store | |
| from pdf_processor.pdf_processor import ProcessorPDF | |
| from upload import Uploader | |
| load_dotenv() | |
| vec_store = Store("main", doc_k=3) | |
| vec_store.setup() | |
| llm = ChatGroq( | |
| model_name="llama-3.1-8b-instant", | |
| temperature=0.3, | |
| api_key=os.environ["GROQ_API_KEY"] | |
| ) | |
| q_answerer = Answerer(vec_store, model=llm) | |
| pdf_processor = ProcessorPDF() | |
| doc_uploader = Uploader(pdf_processor, vec_store) | |
| def process_query(message, history, context_docs): | |
| if len(history) == 0: | |
| result, new_context_docs, _ = q_answerer.answer_with_search(message) | |
| new_context_docs = [ | |
| {"id":f"{os.path.basename(res.metadata['source'])}_{res.metadata['page']}","text":res.page_content} | |
| for res in new_context_docs | |
| ] | |
| return "", result, new_context_docs, "\n".join([i["id"] for i in new_context_docs]) | |
| print(history[0]["role"]) | |
| return "", q_answerer.answer_without_search(message,history), context_docs, "\n".join([i["id"] for i in context_docs]) | |
| with gr.Blocks(fill_height=True) as demo: | |
| context_docs = gr.State([]) | |
| gr.Markdown( | |
| """ | |
| # Genomics Answering System | |
| ## **Every first question is used for the document query, and all questions after use the first question's context** | |
| """) | |
| # btw ini modelnya pake mistralai/Mixtral-8x7B-Instruct-v0.1 yg nilai IFEval nya 55.9% jadi wajar low quality xd | |
| with gr.Row(): | |
| with gr.Column(scale=2, min_width=400): | |
| chat = gr.Chatbot(type="messages") | |
| query_input = gr.Text(label="Chat input") | |
| btn = gr.Button("Send") | |
| with gr.Column(scale=1, min_width=100): | |
| show_context = gr.Textbox(label="Docs in context", interactive=False) | |
| doc_upload = gr.File(label="Upload a doc") | |
| doc_upload_btn = gr.Button("Upload") | |
| io_s = [query_input, chat, context_docs] | |
| btn.click(process_query, io_s, io_s+[show_context]) | |
| query_input.submit(process_query, io_s, io_s+[show_context]) | |
| doc_upload_btn.click(doc_uploader.get_upload, doc_upload, doc_upload) | |
| # Make it so every message makes a query, but filter for duplicate pages | |
| demo.launch(share=False) | |