mayzinoo commited on
Commit
573a91c
·
verified ·
1 Parent(s): 90ebbec

Upload 3 files

Browse files
app.py ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import zipfile
3
+ import gradio as gr
4
+ from langchain.chat_models import ChatOpenAI
5
+ from langchain.embeddings import HuggingFaceEmbeddings
6
+ from langchain.vectorstores import Chroma
7
+ from langchain.prompts import PromptTemplate
8
+ from langchain.chains import LLMChain
9
+
10
+ # Unzip vector DB if not already extracted
11
+ if not os.path.exists("geometry_chroma"):
12
+ with zipfile.ZipFile("geometry_chroma.zip", 'r') as zip_ref:
13
+ zip_ref.extractall(".")
14
+
15
+ # Load vector DB
16
+ embedding_model = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
17
+ vectordb = Chroma(persist_directory="geometry_chroma", embedding_function=embedding_model)
18
+ retriever = vectordb.as_retriever()
19
+
20
+ # Set OpenAI key (use Secrets or .env later)
21
+ os.environ["OPENAI_API_KEY"] = os.getenv("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")
22
+
23
+ llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0.2)
24
+
25
+ # Prompt templates
26
+ templates = {
27
+ "flashcard": PromptTemplate(
28
+ input_variables=["context", "query"],
29
+ template="""
30
+ {context}
31
+
32
+ Create 5 flashcards based on: "{query}"
33
+ Each card should have a question and short answer.
34
+ """
35
+ )
36
+ }
37
+
38
+ def generate_output(prompt_type, query):
39
+ docs = retriever.get_relevant_documents(query)
40
+ context = "\n\n".join([doc.page_content for doc in docs])
41
+ chain = LLMChain(llm=llm, prompt=templates[prompt_type])
42
+ return chain.run({"context": context, "query": query})
43
+
44
+ # Gradio UI
45
+ with gr.Blocks() as demo:
46
+ gr.Markdown("# 📐 Geometry Assistant")
47
+
48
+ query = gr.Textbox(label="Enter a geometry topic")
49
+ prompt_type = gr.Dropdown(["flashcard"], value="flashcard", label="Prompt Type")
50
+ output = gr.Textbox(label="Generated Output", lines=12)
51
+
52
+ btn = gr.Button("Generate")
53
+ btn.click(fn=generate_output, inputs=[prompt_type, query], outputs=output)
54
+
55
+ demo.launch()
geometry_chroma-20250723T162101Z-1-001.zip ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:decb4916bfa8365e4fc786480ccb611885f78674905a7d61da43104470fa7fdf
3
+ size 2272758
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ gradio
2
+ openai
3
+ langchain
4
+ sentence-transformers
5
+ chromadb
6
+ tqdm