Spaces:
Runtime error
Runtime error
| from langchain.chains import RetrievalQA | |
| from langchain.llms import OpenAI | |
| from langchain.prompts import PromptTemplate | |
| from modules.rag.vector_store import VectorStore | |
| from modules.analyzer import client | |
| import os | |
| class RAGChain: | |
| def __init__(self): | |
| self.vector_store = VectorStore() | |
| self.retriever = self.vector_store.vector_store.as_retriever( | |
| search_type="similarity", | |
| search_kwargs={"k": 5} | |
| ) | |
| # Custom prompt template optimized for your model | |
| self.prompt_template = """ | |
| You are an expert research assistant with access to relevant documents. | |
| Use the following context to answer the question accurately. | |
| If the context doesn't contain enough information, say so. | |
| Always cite specific parts of the context in your response. | |
| Context: {context} | |
| Question: {question} | |
| Answer: | |
| """ | |
| self.prompt = PromptTemplate( | |
| template=self.prompt_template, | |
| input_variables=["context", "question"] | |
| ) | |
| def query(self, question): | |
| """Query the RAG system""" | |
| try: | |
| # Search for relevant documents | |
| search_result = self.vector_store.search(question) | |
| if search_result["status"] != "success": | |
| return {"status": "error", "message": search_result["message"]} | |
| # Format context | |
| context = "\n\n".join([doc.page_content for doc in search_result["documents"]]) | |
| # Create enhanced prompt | |
| enhanced_prompt = self.prompt.format(context=context, question=question) | |
| # For streaming, we'll return the prompt for the analyzer to handle | |
| return { | |
| "status": "success", | |
| "prompt": enhanced_prompt, | |
| "context_docs": search_result["documents"] | |
| } | |
| except Exception as e: | |
| return {"status": "error", "message": str(e)} | |