import gradio as gr import os from langchain.document_loaders import OnlinePDFLoader from langchain.text_splitter import CharacterTextSplitter from anthropic import LanguageModel # Set API keys from environment variables os.environ['ANTHROPIC_API_KEY'] = os.getenv("Your_Anthropic_API_Key") # Initialize the Anthropic model anthropic_model = LanguageModel(api_key=os.environ['ANTHROPIC_API_KEY'], model="some_model") pdf_content = "" def load_pdf(pdf_doc): global pdf_content try: if pdf_doc is None: return "No PDF uploaded." # Load and split PDF content loader = OnlinePDFLoader(pdf_doc.name) documents = loader.load() text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=100) pdf_content = ' '.join(text_splitter.split_documents(documents)) return "PDF Loaded Successfully." except Exception as e: return f"Error processing PDF: {e}" def chat_with_pdf(question): context = [{"role": "system", "content": pdf_content}] response = anthropic_model.query(question, context=context) return response['answer'] # Define Gradio UI def gradio_interface(pdf_doc, question): if not pdf_content: return load_pdf(pdf_doc) else: return chat_with_pdf(question) gr.Interface(fn=gradio_interface, inputs=[gr.File(label="Load a pdf", file_types=['.pdf'], type="file"), gr.Textbox(label="Ask a question about the PDF")], outputs="text", live=True, title="Chat with PDF content using Anthropic", description="Upload a .PDF and interactively chat about its content." ).launch()