balodhi commited on
Commit
9e8b3eb
·
1 Parent(s): 3590381

added first changes

Browse files
Files changed (1) hide show
  1. app.py +57 -3
app.py CHANGED
@@ -1,6 +1,47 @@
1
  import gradio as gr
2
  from huggingface_hub import InferenceClient
 
 
 
3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
 
5
  def respond(
6
  message,
@@ -16,10 +57,20 @@ def respond(
16
  """
17
  client = InferenceClient(token=hf_token.token, model="openai/gpt-oss-20b")
18
 
19
- messages = [{"role": "system", "content": system_message}]
 
20
 
21
- messages.extend(history)
 
 
 
 
 
 
 
22
 
 
 
23
  messages.append({"role": "user", "content": message})
24
 
25
  response = ""
@@ -47,7 +98,10 @@ chatbot = gr.ChatInterface(
47
  respond,
48
  type="messages",
49
  additional_inputs=[
50
- gr.Textbox(value="You are a friendly Chatbot.", label="System message"),
 
 
 
51
  gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
52
  gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
53
  gr.Slider(
 
1
  import gradio as gr
2
  from huggingface_hub import InferenceClient
3
+ from sentence_transformers import SentenceTransformer
4
+ import faiss
5
+ import numpy as np
6
 
7
+ # =========================
8
+ # Load and Prepare Gita Text
9
+ # =========================
10
+
11
+ with open("gita.txt", "r", encoding="utf-8") as f:
12
+ raw_text = f.read()
13
+
14
+ def chunk_text(text, chunk_size=500, overlap=50):
15
+ chunks = []
16
+ start = 0
17
+ while start < len(text):
18
+ end = start + chunk_size
19
+ chunks.append(text[start:end])
20
+ start += chunk_size - overlap
21
+ return chunks
22
+
23
+ documents = chunk_text(raw_text)
24
+
25
+ # Embedding model (small + free)
26
+ embedder = SentenceTransformer("all-MiniLM-L6-v2")
27
+
28
+ doc_embeddings = embedder.encode(documents)
29
+ dimension = doc_embeddings.shape[1]
30
+
31
+ index = faiss.IndexFlatL2(dimension)
32
+ index.add(np.array(doc_embeddings))
33
+
34
+
35
+ def retrieve(query, top_k=4):
36
+ query_embedding = embedder.encode([query])
37
+ distances, indices = index.search(np.array(query_embedding), top_k)
38
+ results = [documents[i] for i in indices[0]]
39
+ return "\n\n".join(results)
40
+
41
+
42
+ # =========================
43
+ # RAG Chat Function
44
+ # =========================
45
 
46
  def respond(
47
  message,
 
57
  """
58
  client = InferenceClient(token=hf_token.token, model="openai/gpt-oss-20b")
59
 
60
+ # Retrieve relevant Gita chunks
61
+ context = retrieve(message)
62
 
63
+ augmented_system_message = (
64
+ system_message
65
+ + "\n\nYou are RAGVeda, an expert in Indian philosophy."
66
+ + "\nAnswer ONLY using the Bhagavad Gita context below."
67
+ + "\nIf answer not found, say you do not know."
68
+ + "\n\nContext:\n"
69
+ + context
70
+ )
71
 
72
+ messages = [{"role": "system", "content": augmented_system_message}]
73
+ messages.extend(history)
74
  messages.append({"role": "user", "content": message})
75
 
76
  response = ""
 
98
  respond,
99
  type="messages",
100
  additional_inputs=[
101
+ gr.Textbox(
102
+ value="You are RAGVeda, a calm and wise assistant rooted in the Bhagavad Gita.",
103
+ label="System message",
104
+ ),
105
  gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
106
  gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
107
  gr.Slider(