CoolFace
Apppublic

krishshharma/Code-Explainer

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
app.py82 linesDownload Raw Back to root
1from langchain_community.vectorstores import Chroma2from langchain_community.embeddings import HuggingFaceEmbeddings3from langchain_text_splitters import CharacterTextSplitter4from langchain.chains import RetrievalQA5from langchain_huggingface import HuggingFaceEndpoint6import gradio as gr7import os8from dotenv import load_dotenv9 10# Load environment variables11load_dotenv()12 13# 1. Load and prepare documents14def load_docs():15    docs = []16    # Load code examples17    try:18        with open("data/sample_code.py", "r") as f:19            code = f.read()20            docs.append(code)21    except FileNotFoundError:22        print("Warning: data/sample_code.py not found")23    24    # Load documentation25    try:26        with open("data/docs.txt", "r") as f:27            text = f.read()28            docs.append(text)29    except FileNotFoundError:30        print("Warning: data/docs.txt not found")31    32    if not docs:33        raise ValueError("No documents found to process")34    35    # Split into chunks36    text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=50)37    return text_splitter.split_text("\n\n".join(docs))38 39# 2. Create vector database40def setup_vectordb():41    documents = load_docs()42    # Using HuggingFace embeddings43    embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")44    return Chroma.from_texts(documents, embeddings)45 46# 3. Initialize LLM47llm = HuggingFaceEndpoint(48    repo_id="mistralai/Mistral-7B-Instruct-v0.2",49    task="text-generation",50    temperature=0.5,51    max_length=51252)53 54# 4. Create RAG chain55db = setup_vectordb()56qa_chain = RetrievalQA.from_chain_type(57    llm,58    retriever=db.as_retriever(search_kwargs={"k": 2}),59    chain_type="stuff"60)61 62# 5. Gradio interface63def explain_code(code_snippet):64    if not code_snippet.strip():65        return "Please enter some code to explain."66    67    response = qa_chain.invoke({68        "query": f"Explain this code: {code_snippet}. Include time complexity and common use cases."69    })70    return response["result"]71 72interface = gr.Interface(73    fn=explain_code,74    inputs=gr.Textbox(lines=5, placeholder="Paste code here..."),75    outputs="text",76    title="AI Code Explainer",77    description="Enter code to get an explanation of how it works, its time complexity, and common use cases."78)79 80if __name__ == "__main__":81    interface.launch()82