Spaces:
Runtime error
Runtime error
| from pinecone.grpc import PineconeGRPC as Pinecone | |
| from dotenv import load_dotenv | |
| import os | |
| from langchain_community.document_loaders import TextLoader | |
| from langchain_google_genai import GoogleGenerativeAI | |
| from langchain_core.prompts import PromptTemplate | |
| from langchain_google_genai import GoogleGenerativeAIEmbeddings | |
| from langchain_pinecone import PineconeVectorStore | |
| from langchain_community.embeddings import SentenceTransformerEmbeddings | |
| from sentence_transformers import SentenceTransformer | |
| load_dotenv() | |
| PINECONE_API_KEY = os.getenv('PINECONE_API_KEY') | |
| PINECONE_API_ENV = os.getenv('PINECONE_API_ENV') | |
| GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY") | |
| os.environ['PINECONE_API_ENV'] = PINECONE_API_ENV | |
| os.environ['PINECONE_API_KEY'] = PINECONE_API_KEY | |
| os.environ["GOOGLE_API_KEY"] = GOOGLE_API_KEY | |
| # Initialize Pinecone | |
| pinecone = Pinecone(api_key=PINECONE_API_KEY) | |
| def query_pinecone(index_name, query, embeddings): | |
| try: | |
| docsearch = PineconeVectorStore(index_name=index_name, embedding=embeddings) | |
| result = docsearch.similarity_search(query) | |
| return result | |
| except Exception as e: | |
| print(f"Error querying Pinecone: {e}") | |
| return [] | |
| def get_context_from_pinecone(query): | |
| INDEX_NAME_1 = "cve-data-googlembeddings" | |
| INDEX_NAME_2 = "cve-data" | |
| embeddings1 = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2") | |
| embeddings2 = GoogleGenerativeAIEmbeddings(model="models/embedding-001") | |
| results_1 = query_pinecone(INDEX_NAME_1, query, embeddings2) | |
| results_2 = query_pinecone(INDEX_NAME_2, query, embeddings1) | |
| context = "" | |
| for match in results_1 + results_2: | |
| context += match.page_content | |
| return context | |
| def get_chatbot_response(user_question): | |
| llm = GoogleGenerativeAI(model="gemini-1.5-pro", google_api_key=os.getenv("GOOGLE_API_KEY")) | |
| context = get_context_from_pinecone(user_question) | |
| template = """Context: {context} | |
| Question: {user_question} | |
| Answer: Let's think step by step. | |
| """ | |
| prompt = PromptTemplate.from_template(template) | |
| chain = prompt | llm | |
| template_data = { | |
| "context": context, | |
| "user_question": user_question | |
| } | |
| res = chain.invoke(template_data) | |
| return res | |