# -*- coding: utf-8 -*- """app Automatically generated by Colab. Original file is located at https://colab.research.google.com/drive/1MuuKKNek3EmP5A5aGk8ail0MmT7w10f9 """ !pip install -U langchain-community !pip install langchain==0.3.0 llama-index==0.12.0 sentence-transformers faiss-cpu gradio import pandas as pd # Load your uploaded file data = pd.read_csv('/content/course.csv') # Combine TITLE, DESCRIPTION, and CURRICULUM for processing docs = [] for _, row in data.iterrows(): content = f"{row['TITLE']}\n{row['DESCRIPTION']}\n{row['CURRICULUM']}" docs.append({"content": content, "metadata": {"title": row['TITLE'], "url": row['URL']}}) from langchain.embeddings import HuggingFaceEmbeddings from langchain.vectorstores import FAISS # Create embeddings embedding_model = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2") texts = [doc["content"] for doc in docs] metadatas = [doc["metadata"] for doc in docs] # Create FAISS Index vectorstore = FAISS.from_texts(texts, embedding_model, metadatas=metadatas) import os # Replace 'YOUR_API_KEY' with your actual OpenAI API key os.environ["OPENAI_API_KEY"] = "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" from langchain.chains import RetrievalQA from langchain.llms import OpenAI retriever = vectorstore.as_retriever() qa_chain = RetrievalQA.from_chain_type(llm=OpenAI(model_name="text-davinci-003"), retriever=retriever) import gradio as gr def smart_search(query): results = retriever.get_relevant_documents(query) response = "" for result in results: title = result.metadata.get("title", "No Title") url = result.metadata.get("url", "No URL") response += f"**{title}**\n[Link to Course]({url})\n\n" return response.strip() interface = gr.Interface( fn=smart_search, inputs="text", outputs="markdown", title="Smart Search for Analytics Vidhya Free Courses", description="Enter a keyword or a query to find relevant free courses on Analytics Vidhya." ) # Launch the Gradio app interface.launch(share=True)