newrag-pine / app.py
decodingdatascience's picture
Update app.py
741af02 verified
# app.py
import os
import gradio as gr
import openai
import logging
from pinecone import Pinecone, ServerlessSpec
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, StorageContext
from llama_index.vector_stores.pinecone import PineconeVectorStore
# 1. Configure Logging
logging.basicConfig(level=logging.INFO)
# 2. Set API Keys (Use environment variables for security)
os.environ["OPENAI_API_KEY"]
os.environ["PINECONE_API_KEY"]
# 3. Initialize Pinecone
pc = Pinecone(api_key=os.environ["PINECONE_API_KEY"])
index_name = "quickstart"
# Delete & Create Index if needed
if index_name in [idx["name"] for idx in pc.list_indexes()]:
pc.delete_index(index_name)
pc.create_index(
name=index_name,
dimension=1536,
metric="euclidean",
spec=ServerlessSpec(cloud="aws", region="us-east-1"),
)
pinecone_index = pc.Index(index_name)
# 4. Load Documents
documents = SimpleDirectoryReader("./data").load_data()
# 5. Create Vector Index
vector_store = PineconeVectorStore(pinecone_index=pinecone_index)
storage_context = StorageContext.from_defaults(vector_store=vector_store)
index = VectorStoreIndex.from_documents(documents, storage_context=storage_context)
# 6. Create Query Engine
query_engine = index.as_query_engine()
# 7. Gradio Interface
def query_document(user_query):
response = query_engine.query(user_query)
return str(response)
# 8. Gradio App
interface = gr.Interface(
fn=query_document,
inputs=gr.Textbox(label="Enter your query", placeholder="Ask something about the essay..."),
outputs=gr.Textbox(label="Response"),
title="HR Chat Bot"
)
if __name__ == "__main__":
interface.launch()