translators-will commited on
Commit
ee8547e
·
verified ·
1 Parent(s): dedeb50

Upload RAG_prompt_enhancer.py

Browse files
Files changed (1) hide show
  1. RAG_prompt_enhancer.py +66 -0
RAG_prompt_enhancer.py ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Imports
2
+ from chromadb import Client, Settings
3
+ from langchain.vectorstores import Chroma
4
+ from langchain.embeddings import SentenceTransformerEmbeddings
5
+ import streamlit as st
6
+ import requests
7
+
8
+ # Vector Store setup
9
+ def init_vector_store():
10
+ embeddings = SentenceTransformerEmbeddings('paraphrase-MiniLM-L6-v2')
11
+ client = Client(Settings(
12
+ persist_directory = "./chroma_db"
13
+ ))
14
+ return Chroma(
15
+ client=client,
16
+ embeddings=embeddings
17
+ )
18
+
19
+ # Document processing
20
+ from langchain.text_splitter import RecursiveCharacterTextSplitter
21
+ from langchain.document_loaders import TextLoader, PyPDFLoader
22
+
23
+ def process_documents(file_path):
24
+ # Determine loader based on file extension
25
+ loader = TextLoader() if file_path.endswith('.txt') else PyPDFLoader()
26
+
27
+ # Load and split documents
28
+ splitter = RecursiveCharacterTextSplitter(
29
+ chunk_size = 1000,
30
+ chunk_overlap = 100
31
+ )
32
+
33
+ docs = loader.load()
34
+ chunks = splitter.split_documents(docs)
35
+ return chunks
36
+
37
+ # Prompt Template Management
38
+ from langchain.prompts import PromptTemplate
39
+
40
+ class PromptOptimizer:
41
+ def __init__(self):
42
+ self.base_template = PromptTemplate(
43
+ input_variables=["context", "prompt"],
44
+ template = "Use the following context to enhance the prompt provided."
45
+ template += "Context: {context}\n"
46
+ template += "Prompt: {prompt}\n"
47
+ template += "Generate an enhanced prompt that leverages the context provided\
48
+ while maintaining the original intent of the prompt."
49
+ )
50
+
51
+ def optimize_prompt(self, context, prompt):
52
+ return self.base_template.render(context=context, prompt=prompt)
53
+
54
+ # Streamlit frontend
55
+ st.title("RAG-based Prompt Enhancer")
56
+
57
+ # File upload
58
+ uploaded_file = st.file_uploader("Choose a file")
59
+ if uploaded_file:
60
+ files = {"file": uploaded_file}
61
+ response = requests.post("http://localhost:8000/upload", files=files)
62
+
63
+ prompt = st.text_area("Enter a prompt you'd like to enhance:")
64
+ if st.button("Enhance Prompt"):
65
+ st.write("Enhanced Prompt:")
66
+ st.write(response.json()["enhanced_prompt"])