Spaces:
Runtime error
Runtime error
| import os | |
| import gradio as gr | |
| import pinecone | |
| from langchain.embeddings import OpenAIEmbeddings | |
| from langchain.vectorstores import Pinecone | |
| from langchain.chat_models import ChatOpenAI | |
| from langchain.chains import ConversationalRetrievalChain | |
| from langchain.memory import ConversationBufferMemory | |
| from langchain.document_loaders import PyPDFLoader | |
| from langchain.text_splitter import RecursiveCharacterTextSplitter | |
| # Load your keys from environment variables (set in HF Space secrets) | |
| OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY") | |
| PINECONE_API_KEY = os.environ.get("PINECONE_API_KEY") | |
| PINECONE_ENV = os.environ.get("PINECONE_ENV") # e.g., 'us-east1-gcp' | |
| # Initialize Pinecone | |
| pinecone.init(api_key=PINECONE_API_KEY, environment=PINECONE_ENV) | |
| index_name = "workflow-helper-index" | |
| embedding = OpenAIEmbeddings(openai_api_key=OPENAI_API_KEY) | |
| # Connect to Pinecone index or create if it doesn't exist | |
| if index_name not in pinecone.list_indexes(): | |
| pinecone.create_index(index_name, dimension=1536) | |
| vectorstore = Pinecone.from_existing_index(index_name, embedding) | |
| # Setup LLM and memory | |
| llm = ChatOpenAI(model_name="gpt-4o", temperature=0, openai_api_key=OPENAI_API_KEY) | |
| memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True) | |
| # Create Conversational Retrieval Chain | |
| qa_chain = ConversationalRetrievalChain.from_llm( | |
| llm=llm, | |
| retriever=vectorstore.as_retriever(search_type="similarity", k=4), | |
| memory=memory, | |
| return_source_documents=False, | |
| ) | |
| def chat(message, chat_history): | |
| response = qa_chain.run(message) | |
| chat_history.append((message, response)) | |
| return chat_history, chat_history | |
| with gr.Blocks() as demo: | |
| gr.Markdown("# 💬 Workflow Approvals Assistant") | |
| chatbot = gr.Chatbot() | |
| msg = gr.Textbox(placeholder="Ask about a PO or approval process...") | |
| clear = gr.Button("Clear Chat") | |
| state = gr.State([]) | |
| msg.submit(chat, [msg, state], [chatbot, state]) | |
| clear.click(lambda: ([], []), None, [chatbot, state]) | |
| if __name__ == "__main__": | |
| demo.launch() | |