File size: 1,855 Bytes
5d6114e
a46bece
89db571
5d6114e
 
 
 
 
89db571
 
a46bece
 
 
 
 
 
 
89db571
5d6114e
a46bece
5d6114e
 
 
 
 
 
a46bece
5d6114e
 
 
 
89db571
a46bece
5d6114e
 
a46bece
 
5d6114e
 
 
 
89db571
5d6114e
 
 
 
89db571
5d6114e
89db571
5d6114e
 
89db571
a46bece
5d6114e
 
 
a46bece
 
89db571
5d6114e
a46bece
 
5d6114e
a46bece
 
89db571
 
5d6114e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import os
import pandas as pd
import gradio as gr
from langchain.document_loaders import CSVLoader
from langchain.vectorstores import FAISS
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.chains import RetrievalQA
from langchain_groq import ChatGroq


api_key = os.environ.get("GROQ_API_KEY")
if not api_key:
    raise ValueError("Api key not found")

os.environ["GROQ_API_KEY"] = api_key
embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")  


llm = ChatGroq(
    model="mixtral-8x7b-32768", 
    temperature=0,
    max_tokens=None,
    timeout=None,
    max_retries=2
)

#  function to process query and CSV
def process_query(file, query):
    try:
        loader = CSVLoader(file_path=file.name)
        documents = loader.load()

        # FAISS vector store
        vector_store = FAISS.from_documents(documents, embeddings)
        retriever = vector_store.as_retriever()
        
        qa_chain = RetrievalQA.from_chain_type(  #RetrievalQA pipeline
            llm=llm,
            retriever=retriever,
            return_source_documents=True
        )

        # Get the response
        response = qa_chain({"query": query})
        result = response["result"]
        sources = "\n".join([doc.page_content for doc in response["source_documents"]])

        return result, sources

    except Exception as e:
        return f"An error occurred: {str(e)}", ""

# Gradio interface
interface = gr.Interface(
    fn=process_query,
    inputs=[
        gr.File(label="Upload CSV File"), 
        gr.Textbox(label="Enter your query") 
    ],
    outputs=[
        gr.Textbox(label="Answer"), 
        gr.Textbox(label="Source Documents")  # 
    ],
    title="DataScope.ai",
    description="Upload & Unlock Insights from Your Data – Ask, Query, Discover!"
)

interface.launch(share=True)