Zubair67 commited on
Commit
fa3db56
·
verified ·
1 Parent(s): 39b0427

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -5
app.py CHANGED
@@ -6,9 +6,23 @@ from langchain.text_splitter import CharacterTextSplitter
6
  from langchain.embeddings import HuggingFaceEmbeddings
7
  from langchain.chains import RetrievalQA
8
  from langchain.prompts import PromptTemplate
 
9
  from PyPDF2 import PdfReader
10
  import requests
11
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  # Initialize Groq client
13
  client = Groq(api_key=os.environ.get("GROQ_API_KEY"))
14
 
@@ -34,17 +48,14 @@ for page in pdf_reader.pages:
34
  text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=100)
35
  chunks = text_splitter.split_text(text)
36
 
37
- # Use HuggingFace embeddings (Groq-compatible)
38
  embeddings = HuggingFaceEmbeddings()
39
  vectorstore = FAISS.from_texts(chunks, embeddings)
40
 
41
  # Set up retrieval-based QA
42
  retriever = vectorstore.as_retriever()
43
  qa_chain = RetrievalQA.from_chain_type(
44
- llm=lambda query: client.chat.completions.create(
45
- messages=[{"role": "user", "content": query}],
46
- model="llama-3.3-70b-versatile",
47
- ).choices[0].message.content,
48
  retriever=retriever,
49
  return_source_documents=True,
50
  )
 
6
  from langchain.embeddings import HuggingFaceEmbeddings
7
  from langchain.chains import RetrievalQA
8
  from langchain.prompts import PromptTemplate
9
+ from langchain.llms.base import LLM
10
  from PyPDF2 import PdfReader
11
  import requests
12
 
13
+ # Custom LLM wrapper for Groq
14
+ class GroqLLM(LLM):
15
+ def _call(self, prompt: str, stop: list = None) -> str:
16
+ response = client.chat.completions.create(
17
+ messages=[{"role": "user", "content": prompt}],
18
+ model="llama-3.3-70b-versatile",
19
+ )
20
+ return response.choices[0].message.content
21
+
22
+ @property
23
+ def _llm_type(self) -> str:
24
+ return "custom_groq"
25
+
26
  # Initialize Groq client
27
  client = Groq(api_key=os.environ.get("GROQ_API_KEY"))
28
 
 
48
  text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=100)
49
  chunks = text_splitter.split_text(text)
50
 
51
+ # Use HuggingFace embeddings
52
  embeddings = HuggingFaceEmbeddings()
53
  vectorstore = FAISS.from_texts(chunks, embeddings)
54
 
55
  # Set up retrieval-based QA
56
  retriever = vectorstore.as_retriever()
57
  qa_chain = RetrievalQA.from_chain_type(
58
+ llm=GroqLLM(), # Pass the custom Groq LLM here
 
 
 
59
  retriever=retriever,
60
  return_source_documents=True,
61
  )