# app.py import gradio as gr from langchain_community.embeddings import HuggingFaceEmbeddings from langchain.vectorstores import FAISS from langchain.llms import HuggingFacePipeline from langchain.chains import RetrievalQA from langchain.text_splitter import CharacterTextSplitter from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM # 🔹 Sample logs (inline dataset) sample_logs = """ [ERROR] Disk usage exceeded 90% on node-3 [WARNING] High memory usage detected on node-2 [INFO] Backup completed successfully on node-1 [ERROR] Service 'auth-api' failed to start due to missing env vars [ERROR] Timeout while connecting to database from node-4 """ # 🔹 Split logs into chunks text_splitter = CharacterTextSplitter(chunk_size=200, chunk_overlap=20) docs = text_splitter.create_documents([sample_logs]) # 🔹 Embed and index with FAISS embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2") db = FAISS.from_documents(docs, embeddings) # ✅ Use DeepSeek Coder (fast, public, code-tuned) model_id = "deepseek-ai/deepseek-coder-1.3b-instruct" tokenizer = AutoTokenizer.from_pretrained(model_id) model = AutoModelForCausalLM.from_pretrained(model_id) llm_pipeline = pipeline("text-generation", model=model, tokenizer=tokenizer, max_new_tokens=256) llm = HuggingFacePipeline(pipeline=llm_pipeline) # 🔹 Retrieval QA chain qa_chain = RetrievalQA.from_chain_type(llm=llm, retriever=db.as_retriever()) # 🔹 Gradio chatbot UI def chat(query): return qa_chain.run(query) gr.ChatInterface(chat, title="Incident RCA Bot 🚨", description="Ask about logs, errors, and root causes").launch()