diff --git a/week1/community-contributions/day1-article-pdf-reader.ipynb b/week1/community-contributions/day1-article-pdf-reader.ipynb index 28af4e3..d1b5e3f 100644 --- a/week1/community-contributions/day1-article-pdf-reader.ipynb +++ b/week1/community-contributions/day1-article-pdf-reader.ipynb @@ -24,6 +24,17 @@ "Without further ado, here's the PDF Summarizer!" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "14e98361-f302-423d-87a5-f2f5d570f4ac", + "metadata": {}, + "outputs": [], + "source": [ + "### Prerequisite - Install below package\n", + "#--> !pip install PyPDF2 --user" + ] + }, { "cell_type": "code", "execution_count": null, @@ -38,7 +49,8 @@ "from IPython.display import Markdown, display\n", "from openai import OpenAI\n", "from io import BytesIO\n", - "from PyPDF2 import PdfReader" + "from PyPDF2 import PdfReader\n", + "import logging" ] }, { @@ -81,54 +93,104 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "3a053092-f4f6-4156-8721-39353c8a9367", + "execution_count": 60, + "id": "b6f2967e-4779-458f-aea8-c47147528f77", "metadata": {}, "outputs": [], "source": [ - "# Step 0: Create article class\n", + "# Step 1: Defince calss for article pdf document\n", + "\n", "class Article:\n", " def __init__(self, url):\n", - " \"\"\"\n", - " Create this Article object from the given url using the PyPDF2 library\n", - " \"\"\"\n", - " self.url = url \n", - " response = requests.get(self.url)\n", - " if response.status_code == 200:\n", + " # Configure logging\n", + " logging.basicConfig(level=logging.ERROR)\n", + "\n", + " # Comprehensive headers to mimic browser\n", + " headers = {\n", + " 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',\n", + " 'Accept': 'application/pdf,text/html,application/xhtml+xml,application/xml',\n", + " 'Accept-Language': 'en-US,en;q=0.5',\n", + " 'Referer': self._extract_base_url(url)\n", + " }\n", + "\n", + " try:\n", + " # Enhanced download attempt with multiple strategies\n", + " response = self._download_pdf(url, headers)\n", + " \n", + " # Process PDF\n", " pdf_bytes = BytesIO(response.content)\n", " reader = PdfReader(pdf_bytes)\n", - " \n", - " text = \"\"\n", - " for page in reader.pages:\n", - " text += page.extract_text()\n", - " \n", - " self.text = text\n", - " self.title = reader.metadata.get(\"/Title\", \"No title found\")\n", - " else:\n", - " print(f\"Failed to fetch PDF. Status code: {response.status_code}\")\n", + " \n", + " # Efficient text extraction\n", + " self.text = \" \".join(page.extract_text() for page in reader.pages)\n", + " \n", + " # Safe metadata extraction\n", + " self.title = (reader.metadata or {}).get(\"/Title\", \"No title found\") or \"No title found\"\n", + "\n", + " except Exception as error:\n", + " logging.error(f\"PDF Processing Error: {error}\")\n", " self.text = \"No text found\"\n", - " self.title = \"No title found\"" + " self.title = \"No title found\"\n", + "\n", + " def _download_pdf(self, url, headers):\n", + " \"\"\"\n", + " Multiple download strategies to handle different access scenarios\n", + " \"\"\"\n", + " try:\n", + " # Primary download attempt\n", + " response = requests.get(url, headers=headers, timeout=10)\n", + " response.raise_for_status()\n", + " return response\n", + "\n", + " except requests.RequestException as primary_error:\n", + " logging.warning(f\"Primary download failed: {primary_error}\")\n", + " \n", + " try:\n", + " # Fallback strategy: Disable SSL verification\n", + " response = requests.get(url, headers=headers, verify=False, timeout=10)\n", + " response.raise_for_status()\n", + " return response\n", + " \n", + " except requests.RequestException as fallback_error:\n", + " logging.error(f\"All download attempts failed: {fallback_error}\")\n", + " raise\n", + "\n", + " def _extract_base_url(self, url):\n", + " \"\"\"\n", + " Extract base URL for Referer header\n", + " \"\"\"\n", + " from urllib.parse import urlparse\n", + " parsed_url = urlparse(url)\n", + " return f\"{parsed_url.scheme}://{parsed_url.netloc}\"" + ] + }, + { + "cell_type": "markdown", + "id": "95933aab-54df-4afc-a19c-46033f51378f", + "metadata": {}, + "source": [ + "#####user_prompt_input = input(\"Explain how you would like me to summarise the document? \\n\")" ] }, { "cell_type": "code", - "execution_count": null, - "id": "adc528f2-25ca-47b5-896e-9d417ba0195f", + "execution_count": 61, + "id": "821acbfa-ad06-4afd-9ac1-b9f68b7a418e", "metadata": {}, "outputs": [], "source": [ - "# Step 1: Create your prompts\n", + "# General Research Analyst\n", + "#### Step 1: Create your prompts\n", "\n", "def craft_user_prompt(article):\n", - " user_prompt = f\"You are looking at a research article titled {article.title}\\n Based on the body of the article, how are micro RNAs produced in the cell? State the function of the proteins \\\n", - " involved. The body of the article is as follows.\"\n", + " user_prompt = f\"You are looking at a document titled {article.title}\\n Based on the body of the document, provide an impactful summary. The body of the article is as follows.\"\n", " user_prompt += article.text\n", " return user_prompt\n", "\n", - "# Step 2: Make the messages list\n", + "### Step 2: Make the messages list\n", "def craft_messages(article):\n", - " system_prompt = \"You are an assistant that analyses the contents of a research article and provide answers to the question asked by the user in 250 words or less. \\\n", - " Ignore text that doesn't belong to the article, like headers or navigation related text. Respond in markdown. Structure your text in the form of question/answer.\"\n", + " system_prompt = '''You are a research assistant specialising in processing documents. You have been tasked with analysing the contents of the articel and call out the important points as bullets and highlights. \\\n", + " Ignore text that doesn't belong to the article, like headers or navigation related text. Respond in markdown. Structure your text in the form of question/answer.'''\n", " return [\n", " {\"role\": \"system\", \"content\": system_prompt},\n", " {\"role\": \"user\", \"content\": craft_user_prompt(article)}\n", @@ -137,7 +199,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 62, "id": "81ab896e-1ba9-4964-a477-2a0608b7036c", "metadata": {}, "outputs": [], @@ -152,17 +214,185 @@ " return response.choices[0].message.content" ] }, + { + "cell_type": "markdown", + "id": "ccdfdd33-652f-4ecf-9a0d-355197aba9d5", + "metadata": {}, + "source": [ + "# Results below:" + ] + }, { "cell_type": "code", - "execution_count": null, - "id": "a7a98cdf-0d3b-477d-8e39-a6a4264b9feb", + "execution_count": 63, + "id": "008c03fd-9cc5-4449-a054-7bbef1863b01", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdin", + "output_type": "stream", + "text": [ + "Please input the pdf URL: \n", + " https://www.binasss.sa.cr/bibliotecas/bhm/ago22/32.pdf\n" + ] + }, + { + "data": { + "text/markdown": [ + "## Summary of **Bronchiectasis — A Clinical Review**\n", + "\n", + "### What is bronchiectasis?\n", + "- Bronchiectasis is a clinical syndrome characterized by:\n", + " - Chronic cough \n", + " - Sputum production\n", + " - Abnormal thickening and dilation of bronchial walls, visible on lung imaging.\n", + "\n", + "### Historical Background\n", + "- First reported by René Laënnec in 1819.\n", + "- Radiographic characteristics understood more clearly since the 1950s.\n", + "\n", + "### Current Trends\n", + "- Significantly increasing incidence and prevalence over the last 20 years.\n", + "- Diagnosed across a wide age range, with geographic variability in prevalence (as high as 1.5% in some populations).\n", + "- Improved recognition, partly due to advanced imaging technologies like CT scans.\n", + " \n", + "### Clinical Presentation\n", + "- Symptoms include chronic productive cough, chest pain, and shortness of breath.\n", + "- Often misdiagnosed as chronic bronchitis or asthma, leading to delayed diagnosis.\n", + "- Intermittent exacerbations are common, defined by a worsening of cough and sputum characteristics for 48 hours or more.\n", + "\n", + "### Diagnostic Approaches\n", + "- High-resolution CT scans are essential for diagnosis, seeking specific airway abnormalities.\n", + "- A systematic evaluation to identify underlying causes (such as congenital disorders or autoimmune diseases) is critical.\n", + "\n", + "### Pathobiology\n", + "- Multiple factors lead to airway dysfunction, inflammatory responses, and cyclical deterioration.\n", + "- Neutrophils and neutrophil elastase play significant roles in disease progression and exacerbations.\n", + "\n", + "### Microbiological Features\n", + "- **Common pathogens**:\n", + " - Pseudomonas aeruginosa (notably linked to exacerbations and worse prognosis)\n", + " - Staphylococcus aureus and other bacteria.\n", + "- Non-tuberculous mycobacterial infections are reported increasingly.\n", + "\n", + "### Treatment Strategies\n", + "- Emphasizes education about the disease and its management.\n", + "- Goals include symptom management, quality of life improvement, and reduction of exacerbation frequency.\n", + "- Options include:\n", + " - Airway-clearance therapies\n", + " - Antibiotics (macrolides or inhaled antibiotics)\n", + " - Addressing any treatable underlying conditions.\n", + "\n", + "### Prognostic Indicators\n", + "- Disease severity scores like the Bronchiectasis Severity Index and FACED scale are used for predicting outcomes.\n", + "\n", + "### Future Directions\n", + "- Emphasis on research into novel therapies targeting inflamatory pathways and innovative diagnostic tools.\n", + "\n", + "### Conclusion\n", + "- Bronchiectasis represents a complex clinical challenge that requires a multidisciplinary approach for effective management and treatment improvements. Further understanding of the disease mechanisms, enhancing diagnostic processes, and tailored therapies are vital for future advancements in the care of patients." + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Step 4: Print the result of an example pdf\n", - "summary = summarize(\"https://www.nature.com/articles/s12276-023-01050-9.pdf\")\n", + "article_url=input('Please input the pdf URL: \\n')\n", + "summary = summarize(article_url)\n", "display(Markdown(summary))" ] + }, + { + "cell_type": "markdown", + "id": "fd2cb395-9e29-438e-9388-5555673b4689", + "metadata": {}, + "source": [ + "# Financial Report Analyst\n", + "#### Step 1: Create your prompts\n", + "\n", + "def craft_user_prompt(article):\n", + " user_prompt = f\"You are looking at a document titled {article.title}\\n Based on the body of the document, provide an impactful summary. Call out important points as bullets and highlughts . The body of the article is as follows.\"\n", + " user_prompt += article.text\n", + " return user_prompt\n", + "\n", + "#### Step 2: Make the messages list\n", + "def craft_messages(article):\n", + " system_prompt = '''You are a financial report research assistant that specialises in analysing the contents of a financial report and provide summary for investors to \\ \n", + " help adjust investment strategies. Call out important points as bullets and highlights. \\\n", + " Ignore text that doesn't belong to the article, like headers or navigation related text. Respond in markdown. Structure your text in the form of question/answer.'''\n", + " return [\n", + " {\"role\": \"system\", \"content\": system_prompt},\n", + " {\"role\": \"user\", \"content\": craft_user_prompt(article)}\n", + " ]" + ] + }, + { + "cell_type": "markdown", + "id": "70cbbffd-bf70-47d1-b5d6-5f929bdd89eb", + "metadata": {}, + "source": [ + "# Medical Report Analyst\n", + "#### Step 1: Create your prompts\n", + "\n", + "def craft_user_prompt(article):\n", + " user_prompt = f\"You are looking at a research article titled {article.title}\\n Based on the body of the article, Summarise the research article while highliting, Introduction, the problem, possible solution and conclusion. The body of the article is as follows.\"\n", + " user_prompt += article.text\n", + " return user_prompt\n", + "\n", + "#### Step 2: Make the messages list\n", + "def craft_messages(article):\n", + " system_prompt = \"You are a medical research assistant that analyses the contents of a research article and provides a summary while calling out important points as bullets and quotes. \\\n", + " Ignore text that doesn't belong to the article, like headers or navigation related text. Respond in markdown. Structure your text in the form of question/answer.\"\n", + " return [\n", + " {\"role\": \"system\", \"content\": system_prompt},\n", + " {\"role\": \"user\", \"content\": craft_user_prompt(article)}\n", + " ]" + ] + }, + { + "cell_type": "markdown", + "id": "c0bb9579-686a-4277-a139-7dff2c64cc9f", + "metadata": {}, + "source": [ + "# QA Format\n", + "#### Step 1: Create your prompts\n", + "\n", + "def craft_user_prompt(article):\n", + " user_prompt = f\"You are looking at a research article titled {article.title}\\n Based on the body of the article, how are micro RNAs produced in the cell? State the function of the proteins \\\n", + " involved. The body of the article is as follows.\"\n", + " user_prompt += article.text\n", + " return user_prompt\n", + "\n", + "#### Step 2: Make the messages list\n", + "def craft_messages(article):\n", + " system_prompt = \"You are an assistant that analyses the contents of a research article and provide answers to the question asked by the user in 250 words or less. \\\n", + " Ignore text that doesn't belong to the article, like headers or navigation related text. Respond in markdown. Structure your text in the form of question/answer.\"\n", + " return [\n", + " {\"role\": \"system\", \"content\": system_prompt},\n", + " {\"role\": \"user\", \"content\": craft_user_prompt(article)}\n", + " ]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "680b45ae-6f3d-43b5-b69a-4e7f4fcca268", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "988864cc-08a2-4cfb-a09b-524504ee3803", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -181,7 +411,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.10" + "version": "3.11.11" } }, "nbformat": 4, diff --git a/week1/day1.ipynb b/week1/day1.ipynb index 4e52465..2495a82 100644 --- a/week1/day1.ipynb +++ b/week1/day1.ipynb @@ -75,7 +75,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "4e2a9393-7767-488e-a8bf-27c12dca35bd", "metadata": {}, "outputs": [], @@ -114,10 +114,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "7b87cadb-d513-4303-baee-a37b6f938e4d", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "API key found and looks good so far!\n" + ] + } + ], "source": [ "# Load environment variables in a file called .env\n", "\n", @@ -138,7 +146,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "id": "019974d9-f3ad-4a8a-b5f9-0a3719aea2d3", "metadata": {}, "outputs": [], @@ -160,10 +168,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "id": "a58394bf-1e45-46af-9bfd-01e24da6f49a", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello! Welcome! I'm glad to be here and assist you. How can I help you today?\n" + ] + } + ], "source": [ "# To give you a preview -- calling OpenAI with these messages is this easy:\n", "\n", @@ -182,7 +198,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "id": "c5e793b2-6775-426a-a139-4848291d0463", "metadata": {}, "outputs": [], @@ -212,10 +228,119 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "id": "2ef960cf-6dc2-4cda-afb3-b38be12f4c97", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "TechnicallySimple.Me – confessions of a techie!\n", + "Skip to Content\n", + "Looking to 𝗚𝗶𝘃𝗲𝗕𝗮𝗰𝗸 by volunteering my time and skills to help individuals or businesses who can benefit from my life experiences:\n", + "𝗟𝗲𝘁'𝘀 𝗰𝗼𝗻𝗻𝗲𝗰𝘁\n", + "Home\n", + "subscribe\n", + "Give Back\n", + "About\n", + "Contact\n", + "TechnicallySimple.Me\n", + "confessions of a techie!\n", + "TechnicallySimple.Me\n", + "confessions of a techie!\n", + "Home\n", + "subscribe\n", + "Give Back\n", + "About\n", + "Contact\n", + "life's hard, tech should be Simple.\n", + "Impacting lives through personal experiences & lessons learnt.\n", + "Subscribe\n", + "How to fix software supply chain integrity with CIS Benchmarks and Aqua Security\n", + "Software (application) development lifecycle (SDLC) processes have followed the wild-west approach where security has been an afterthought to speedy delivery and race to market, however the recent supply chain attacks have more than highlighted the criticality and the need to ensure security is part of the design in the development and delivery process.\n", + "Aqua Security and CIS collaborate to publish industry’s first ever CIS Benchmarks framework guide for Supply Chain Security.\n", + "Read More ..\n", + "Share\n", + "Get complete coverage with Rapid7 security platform\n", + "The Rapid7 Platform difference means, you ‘the executive team’ can focus on the innovation and growth of your business without having to task your teams to become security ninjas and figure out the latest threats and vulnerabilities on their own while fighting fires.\n", + "REMEMBER: If you are not in the security business, don’t make security your primary business!\n", + "Read More ..\n", + "Share\n", + "IAM is the new security perimeter, guard it with Rapid7 insightCloudSec.\n", + "The perimeter has shifted in the cloud where IAM policies is all that sits between the outside world and cloud resources critical to your business.\n", + "In this article I share how organisations can use DivvyCloud’s Access Explorer to gain visibility into IAM policies, drive remediation and reporting. Enjoy!\n", + "Read More ..\n", + "Share\n", + "Cloud Security Posture and Compliance with Rapid7 insightCloudSec\n", + "A consolidated view of multi cloud environments is no longer a ‘nice to have’ as the enemies in this cyber warfare are often invisible.\n", + "In this article I share how organisations can use DivvyCloud to protect themselves against mis-configurations, policy violations and other threats. Enjoy!\n", + "Read More ..\n", + "Share\n", + "Keeping cyber-criminals at bay with DNS filtering\n", + "With cybercrime becoming a mainstream source of revenue for criminal organisation and individuals across the globe, cyber-attacks are a daily occurrence. It’s only a matter for time before you are compromised.\n", + "In this article, I share how to boost your security posture against cyber attacks within minutes for free. Enjoy!\n", + "Read More ..\n", + "Share\n", + "How secure is your password?\n", + "You are just one bad password away from unwanted access to your information. Once they have access to your information, they have access to your digital identity i.e. basically, your life. Protecting yourself starts with good password hygiene.\n", + "In this article I share a life hack that you can use to ensure your passwords cannot be cracked in your lifetime. Enjoy!\n", + "Read More ..\n", + "Share\n", + "Architecting your apps to scale on demand with Docker containers\n", + "Being able to scale business applications on-demand provides organisations greater ROI and much needed agility.\n", + "In this article I will deep dive into how to architect your applications to scale on-demand using docker containers along with an example scenario. Hope you enjoy it.\n", + "Read More ..\n", + "Share\n", + "Ransomware – Are you ready?\n", + "Being in the industry, I could be forgiven for thinking that everyone is aware of what Ransomware is and the risks involved. With everyone working form home these days due to the COVID-19 outbreak, the risks increase exponentially. We don’t think much of letting our kids access our computer while we make a cup of …\n", + "Read More ..\n", + "Share\n", + "What is your smart meter reporting about your electricity consumption?\n", + "Data is often neglected but it is generally the only source of truth.\n", + "In this article, I took up a little project to examine the data that my smart electricity meter is reporting back to my energy provider about my consumption behaviour.\n", + "The end result was eye opening and beautiful at the same time. I hope you find it as valuable as I did. Enjoy!\n", + "Read More ..\n", + "Share\n", + "Subscribe for Updates\n", + "Latest posts sent to your Inbox:\n", + "Recommendations Received:\n", + "Christopher Hertz - Rapid7\n", + "Vice President, Cloud Security Sales - Chris managed Madhul directly\n", + "\"I had the privilege of working with Madhul at 𝐑𝐚𝐩𝐢𝐝7 where he played a key and important role in helping enterprise customers achieve continuous security and compliance for their public cloud systems using the DivvyCloud/ InsightCloudSec product.\n", + "He impressed me with his dedication to delivering great experiences and value to customers. Additionally, he is one of the rare people who can take complex technical and security concepts and make them accessible to a diverse audience from technical professionals to executives. He helped make Rapid7 a leader in the cloud security category through his ability to understand customers complex challenges and needs, and solve these using Rapid7 technologies.\"\n", + "Bharat Bhooshan - VicTrack\n", + "Senior Systems Engineer - Bharath was a client of Madhul’s\n", + "\"Madhul is a brilliant Pre-Sales Engineer. His technical and interpersonal skills as well as his outstanding communication skills helped us deliver a complex DRaaS solution to a project on time and to our customers best satisfaction. Madhul is highly knowledgeable in his domain of expertise and has an innate ability to lead and deliver high-quality solutions.\n", + "I enjoyed working with Madhul both professionally and as a friend, I would highly recommend Madhul and his work to anyone.\"\n", + "Alan Marshall - Fujitsu Australia\n", + "ICT Infrastructure Professional with NV1 Security Clearance - Alan was a client of Madhul’s\n", + "\"Madhul has provided architectural and technical guidance to me on a number of Veeam based projects at Fujitsu, the largest being design of a new BaaS solution.\n", + "I've found Madhul to be very knowledgeable and extremely diligent in providing design reviews, responding to queries etc. and if he doesn't know the answer straight away he will certainly find it for me quickly. He has an excellent ability to be able to clearly explain complex technologies and the pros and cons of the different available options.\n", + "Madhul is highly professional and has been very flexible in providing timely assistance where this has been urgently required and his assistance has been immense. Madhul has been very personable and easy to work with and I look forward to working together with him on more projects in future.\"\n", + "Ganesh Doddi - BUPA\n", + "Senior Infrastructure Engineer - Ganesh was a client of Madhul\n", + "\"Madhul is a highly dedicated professional in the Disaster Recovery area who demonstrated the ability to communicate at all levels, manage complex relationships and show respect for stakeholders at all times.\n", + "He assisted us in the deployment of Zerto and associated with developing a DR solution based on Zerto and continually showed professionalism, always going the extra mile.\"\n", + "Lambros Pasialis - Insurance Australia Group\n", + "Server Engineer at IAG - Lambros was a client of Madhul's\n", + "\"Madhul is hard worker and a very motivated professional who has exceptional skills in working with customers and achieving goals set in an enterprise business.\n", + "As a contact, Madhul always strives to be available and get things done, knowing that this is key to supporting large businesses. I highly recommend his skill sets and his professional attitude towards all parties involved, and makes a hard task at hand much more manageable.\"\n", + "Nikolay Dzhilinskiy - NTT\n", + "Senior Systems Engineer - Madhul worked with Nikolay in the same group at Telstra\n", + "\"I have worked with Madhul for quite some time now and really value his skills and knowledge in the field of ICT Solutions architecture/design. Madhul is one of few people who keep on top of things and is always working to keep his skills updated in this rapidly changing ICT industry.\n", + "I would like to endorse him for his in-depth knowledge of ICT Solutions/technologies and Project Management skills. Moreover his readiness to share his experience/knowledge by taking the initiative to organise cross-skill training sessions with other SMEs and members of the team is highly appreciated and valued.\"\n", + "© Copyright 2023 TechnicallySimple.Me All Rights Reserved.\n", + "Our Privacy Policy\n", + "| Home |\n", + "| Privacy Policy |\n", + "| Terms of Service |\n", + "| Send Feedback |\n", + "Looking for Something?\n", + "Search anything and hit enter.\n" + ] + } + ], "source": [ "# Let's try one out. Change the website and add print statements to follow along.\n", "\n", @@ -244,7 +369,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "id": "abdb8417-c5dc-44bc-9bee-2e059d162699", "metadata": {}, "outputs": [], @@ -258,7 +383,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "id": "f0275b1b-7cfe-4f9d-abfa-7650d378da0c", "metadata": {}, "outputs": [], @@ -276,10 +401,121 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "id": "26448ec4-5c00-4204-baec-7df91d11ff2e", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "You are looking at a website titled TechnicallySimple.Me – confessions of a techie!\n", + "The contents of this website is as follows; please provide a short summary of this website in markdown. If it includes news or announcements, then summarize these too.\n", + "\n", + "Skip to Content\n", + "Looking to 𝗚𝗶𝘃𝗲𝗕𝗮𝗰𝗸 by volunteering my time and skills to help individuals or businesses who can benefit from my life experiences:\n", + "𝗟𝗲𝘁'𝘀 𝗰𝗼𝗻𝗻𝗲𝗰𝘁\n", + "Home\n", + "subscribe\n", + "Give Back\n", + "About\n", + "Contact\n", + "TechnicallySimple.Me\n", + "confessions of a techie!\n", + "TechnicallySimple.Me\n", + "confessions of a techie!\n", + "Home\n", + "subscribe\n", + "Give Back\n", + "About\n", + "Contact\n", + "life's hard, tech should be Simple.\n", + "Impacting lives through personal experiences & lessons learnt.\n", + "Subscribe\n", + "How to fix software supply chain integrity with CIS Benchmarks and Aqua Security\n", + "Software (application) development lifecycle (SDLC) processes have followed the wild-west approach where security has been an afterthought to speedy delivery and race to market, however the recent supply chain attacks have more than highlighted the criticality and the need to ensure security is part of the design in the development and delivery process.\n", + "Aqua Security and CIS collaborate to publish industry’s first ever CIS Benchmarks framework guide for Supply Chain Security.\n", + "Read More ..\n", + "Share\n", + "Get complete coverage with Rapid7 security platform\n", + "The Rapid7 Platform difference means, you ‘the executive team’ can focus on the innovation and growth of your business without having to task your teams to become security ninjas and figure out the latest threats and vulnerabilities on their own while fighting fires.\n", + "REMEMBER: If you are not in the security business, don’t make security your primary business!\n", + "Read More ..\n", + "Share\n", + "IAM is the new security perimeter, guard it with Rapid7 insightCloudSec.\n", + "The perimeter has shifted in the cloud where IAM policies is all that sits between the outside world and cloud resources critical to your business.\n", + "In this article I share how organisations can use DivvyCloud’s Access Explorer to gain visibility into IAM policies, drive remediation and reporting. Enjoy!\n", + "Read More ..\n", + "Share\n", + "Cloud Security Posture and Compliance with Rapid7 insightCloudSec\n", + "A consolidated view of multi cloud environments is no longer a ‘nice to have’ as the enemies in this cyber warfare are often invisible.\n", + "In this article I share how organisations can use DivvyCloud to protect themselves against mis-configurations, policy violations and other threats. Enjoy!\n", + "Read More ..\n", + "Share\n", + "Keeping cyber-criminals at bay with DNS filtering\n", + "With cybercrime becoming a mainstream source of revenue for criminal organisation and individuals across the globe, cyber-attacks are a daily occurrence. It’s only a matter for time before you are compromised.\n", + "In this article, I share how to boost your security posture against cyber attacks within minutes for free. Enjoy!\n", + "Read More ..\n", + "Share\n", + "How secure is your password?\n", + "You are just one bad password away from unwanted access to your information. Once they have access to your information, they have access to your digital identity i.e. basically, your life. Protecting yourself starts with good password hygiene.\n", + "In this article I share a life hack that you can use to ensure your passwords cannot be cracked in your lifetime. Enjoy!\n", + "Read More ..\n", + "Share\n", + "Architecting your apps to scale on demand with Docker containers\n", + "Being able to scale business applications on-demand provides organisations greater ROI and much needed agility.\n", + "In this article I will deep dive into how to architect your applications to scale on-demand using docker containers along with an example scenario. Hope you enjoy it.\n", + "Read More ..\n", + "Share\n", + "Ransomware – Are you ready?\n", + "Being in the industry, I could be forgiven for thinking that everyone is aware of what Ransomware is and the risks involved. With everyone working form home these days due to the COVID-19 outbreak, the risks increase exponentially. We don’t think much of letting our kids access our computer while we make a cup of …\n", + "Read More ..\n", + "Share\n", + "What is your smart meter reporting about your electricity consumption?\n", + "Data is often neglected but it is generally the only source of truth.\n", + "In this article, I took up a little project to examine the data that my smart electricity meter is reporting back to my energy provider about my consumption behaviour.\n", + "The end result was eye opening and beautiful at the same time. I hope you find it as valuable as I did. Enjoy!\n", + "Read More ..\n", + "Share\n", + "Subscribe for Updates\n", + "Latest posts sent to your Inbox:\n", + "Recommendations Received:\n", + "Christopher Hertz - Rapid7\n", + "Vice President, Cloud Security Sales - Chris managed Madhul directly\n", + "\"I had the privilege of working with Madhul at 𝐑𝐚𝐩𝐢𝐝7 where he played a key and important role in helping enterprise customers achieve continuous security and compliance for their public cloud systems using the DivvyCloud/ InsightCloudSec product.\n", + "He impressed me with his dedication to delivering great experiences and value to customers. Additionally, he is one of the rare people who can take complex technical and security concepts and make them accessible to a diverse audience from technical professionals to executives. He helped make Rapid7 a leader in the cloud security category through his ability to understand customers complex challenges and needs, and solve these using Rapid7 technologies.\"\n", + "Bharat Bhooshan - VicTrack\n", + "Senior Systems Engineer - Bharath was a client of Madhul’s\n", + "\"Madhul is a brilliant Pre-Sales Engineer. His technical and interpersonal skills as well as his outstanding communication skills helped us deliver a complex DRaaS solution to a project on time and to our customers best satisfaction. Madhul is highly knowledgeable in his domain of expertise and has an innate ability to lead and deliver high-quality solutions.\n", + "I enjoyed working with Madhul both professionally and as a friend, I would highly recommend Madhul and his work to anyone.\"\n", + "Alan Marshall - Fujitsu Australia\n", + "ICT Infrastructure Professional with NV1 Security Clearance - Alan was a client of Madhul’s\n", + "\"Madhul has provided architectural and technical guidance to me on a number of Veeam based projects at Fujitsu, the largest being design of a new BaaS solution.\n", + "I've found Madhul to be very knowledgeable and extremely diligent in providing design reviews, responding to queries etc. and if he doesn't know the answer straight away he will certainly find it for me quickly. He has an excellent ability to be able to clearly explain complex technologies and the pros and cons of the different available options.\n", + "Madhul is highly professional and has been very flexible in providing timely assistance where this has been urgently required and his assistance has been immense. Madhul has been very personable and easy to work with and I look forward to working together with him on more projects in future.\"\n", + "Ganesh Doddi - BUPA\n", + "Senior Infrastructure Engineer - Ganesh was a client of Madhul\n", + "\"Madhul is a highly dedicated professional in the Disaster Recovery area who demonstrated the ability to communicate at all levels, manage complex relationships and show respect for stakeholders at all times.\n", + "He assisted us in the deployment of Zerto and associated with developing a DR solution based on Zerto and continually showed professionalism, always going the extra mile.\"\n", + "Lambros Pasialis - Insurance Australia Group\n", + "Server Engineer at IAG - Lambros was a client of Madhul's\n", + "\"Madhul is hard worker and a very motivated professional who has exceptional skills in working with customers and achieving goals set in an enterprise business.\n", + "As a contact, Madhul always strives to be available and get things done, knowing that this is key to supporting large businesses. I highly recommend his skill sets and his professional attitude towards all parties involved, and makes a hard task at hand much more manageable.\"\n", + "Nikolay Dzhilinskiy - NTT\n", + "Senior Systems Engineer - Madhul worked with Nikolay in the same group at Telstra\n", + "\"I have worked with Madhul for quite some time now and really value his skills and knowledge in the field of ICT Solutions architecture/design. Madhul is one of few people who keep on top of things and is always working to keep his skills updated in this rapidly changing ICT industry.\n", + "I would like to endorse him for his in-depth knowledge of ICT Solutions/technologies and Project Management skills. Moreover his readiness to share his experience/knowledge by taking the initiative to organise cross-skill training sessions with other SMEs and members of the team is highly appreciated and valued.\"\n", + "© Copyright 2023 TechnicallySimple.Me All Rights Reserved.\n", + "Our Privacy Policy\n", + "| Home |\n", + "| Privacy Policy |\n", + "| Terms of Service |\n", + "| Send Feedback |\n", + "Looking for Something?\n", + "Search anything and hit enter.\n" + ] + } + ], "source": [ "print(user_prompt_for(ed))" ] @@ -305,7 +541,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "id": "f25dcd35-0cd0-4235-9f64-ac37ed9eaaa5", "metadata": {}, "outputs": [], @@ -318,10 +554,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "id": "21ed95c5-7001-47de-a36d-1d6673b403ce", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Oh, let me just dust off my calculator for this one… It’s 4. Shocking, I know!\n" + ] + } + ], "source": [ "# To give you a preview -- calling OpenAI with system and user messages:\n", "\n", @@ -339,7 +583,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "id": "0134dfa4-8299-48b5-b444-f2a8c3403c88", "metadata": {}, "outputs": [], @@ -355,10 +599,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "id": "36478464-39ee-485c-9f3f-6a4e458dbc9c", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "[{'role': 'system',\n", + " 'content': 'You are an assistant that analyzes the contents of a website and provides a short summary, ignoring text that might be navigation related. Respond in markdown.'},\n", + " {'role': 'user',\n", + " 'content': 'You are looking at a website titled TechnicallySimple.Me – confessions of a techie!\\nThe contents of this website is as follows; please provide a short summary of this website in markdown. If it includes news or announcements, then summarize these too.\\n\\nSkip to Content\\nLooking to 𝗚𝗶𝘃𝗲𝗕𝗮𝗰𝗸 by volunteering my time and skills to help individuals or businesses who can benefit from my life experiences:\\n𝗟𝗲𝘁\\'𝘀 𝗰𝗼𝗻𝗻𝗲𝗰𝘁\\nHome\\nsubscribe\\nGive Back\\nAbout\\nContact\\nTechnicallySimple.Me\\nconfessions of a techie!\\nTechnicallySimple.Me\\nconfessions of a techie!\\nHome\\nsubscribe\\nGive Back\\nAbout\\nContact\\nlife\\'s hard, tech should be Simple.\\nImpacting lives through personal experiences & lessons learnt.\\nSubscribe\\nHow to fix software supply chain integrity with CIS Benchmarks and Aqua Security\\nSoftware (application) development lifecycle (SDLC) processes have followed the wild-west approach where security has been an afterthought to speedy delivery and race to market, however the recent supply chain attacks have more than highlighted the criticality and the need to ensure security is part of the design in the development and delivery process.\\nAqua Security\\xa0and CIS collaborate to publish industry’s first ever CIS Benchmarks framework guide for Supply Chain Security.\\nRead More ..\\nShare\\nGet complete coverage with Rapid7 security platform\\nThe Rapid7 Platform difference means, you ‘the executive team’ can focus on the innovation and growth of your business without having to task your teams to become security ninjas and figure out the latest threats and vulnerabilities on their own while fighting fires.\\nREMEMBER: If you are not in the security business, don’t make security your primary business!\\nRead More ..\\nShare\\nIAM is the new security perimeter, guard it with Rapid7 insightCloudSec.\\nThe perimeter has shifted in the cloud where IAM policies is all that sits between the outside world and cloud resources critical to your business.\\nIn this article I share how organisations can use DivvyCloud’s Access Explorer to gain visibility into IAM policies, drive remediation and reporting. Enjoy!\\nRead More ..\\nShare\\nCloud Security Posture and Compliance with Rapid7 insightCloudSec\\nA consolidated view of multi cloud environments is no longer a ‘nice to have’ as the enemies in this cyber warfare are often invisible.\\nIn this article I share how organisations can use DivvyCloud to protect themselves against mis-configurations, policy violations and other threats. Enjoy!\\nRead More ..\\nShare\\nKeeping cyber-criminals at bay with DNS filtering\\nWith cybercrime becoming a mainstream source of revenue for criminal organisation and individuals across the globe, cyber-attacks are a daily occurrence. It’s only a matter for time before you are compromised.\\nIn this article, I share how to boost your security posture against cyber attacks within minutes for free. Enjoy!\\nRead More ..\\nShare\\nHow secure is your password?\\nYou are just one bad password away from unwanted access to your information. Once they have access to your information, they have access to your digital identity i.e. basically, your life. Protecting yourself starts with good password hygiene.\\nIn this article I share a life hack that you can use to ensure your passwords cannot be cracked in your lifetime. Enjoy!\\nRead More ..\\nShare\\nArchitecting your apps to scale on demand with Docker containers\\nBeing able to scale business applications on-demand provides organisations greater ROI and much needed agility.\\nIn this article I will deep dive into how to architect your applications to scale on-demand using docker containers along with an example scenario. Hope you enjoy it.\\nRead More ..\\nShare\\nRansomware – Are you ready?\\nBeing in the industry, I could be forgiven for thinking that everyone is aware of what Ransomware is and the risks involved. With everyone working form home these days due to the COVID-19 outbreak, the risks increase exponentially. We don’t think much of letting our kids access our computer while we make a cup of …\\nRead More ..\\nShare\\nWhat is your smart meter reporting about your electricity consumption?\\nData is often neglected but it is generally the only source of truth.\\nIn this article, I took up a little project to examine the data that my smart electricity meter is reporting back to my energy provider about my consumption behaviour.\\nThe end result was eye opening and beautiful at the same time. I hope you find it as valuable as I did. Enjoy!\\nRead More ..\\nShare\\nSubscribe for Updates\\nLatest posts sent to your Inbox:\\nRecommendations Received:\\nChristopher Hertz - Rapid7\\nVice President, Cloud Security Sales - Chris managed Madhul directly\\n\"I had the privilege of working with Madhul at 𝐑𝐚𝐩𝐢𝐝7 where he played a key and important role in helping enterprise customers achieve continuous security and compliance for their public cloud systems using the DivvyCloud/ InsightCloudSec product.\\nHe impressed me with his dedication to delivering great experiences and value to customers. Additionally, he is one of the rare people who can take complex technical and security concepts and make them accessible to a diverse audience from technical professionals to executives. He helped make Rapid7 a leader in the cloud security category through his ability to understand customers complex challenges and needs, and solve these using Rapid7 technologies.\"\\nBharat Bhooshan - VicTrack\\nSenior Systems Engineer - Bharath was a client of Madhul’s\\n\"Madhul is a brilliant Pre-Sales Engineer. His technical and interpersonal skills as well as his outstanding communication skills helped us deliver a complex DRaaS solution to a project on time and to our customers best satisfaction. Madhul is highly knowledgeable in his domain of expertise and has an innate ability to lead and deliver high-quality solutions.\\nI enjoyed working with Madhul both professionally and as a friend, I would highly recommend Madhul and his work to anyone.\"\\nAlan Marshall - Fujitsu Australia\\nICT Infrastructure Professional with NV1 Security Clearance - Alan was a client of Madhul’s\\n\"Madhul has provided architectural and technical guidance to me on a number of Veeam based projects at Fujitsu, the largest being design of a new BaaS solution.\\nI\\'ve found Madhul to be very knowledgeable and extremely diligent in providing design reviews, responding to queries etc. and if he doesn\\'t know the answer straight away he will certainly find it for me quickly. He has an excellent ability to be able to clearly explain complex technologies and the pros and cons of the different available options.\\nMadhul is highly professional and has been very flexible in providing timely assistance where this has been urgently required and his assistance has been immense. Madhul has been very personable and easy to work with and I look forward to working together with him on more projects in future.\"\\nGanesh Doddi - BUPA\\nSenior Infrastructure Engineer - Ganesh was a client of Madhul\\n\"Madhul is a highly dedicated professional in the Disaster Recovery area who demonstrated the ability to communicate at all levels, manage complex relationships and show respect for stakeholders at all times.\\nHe assisted us in the deployment of Zerto and associated with developing a DR solution based on Zerto and continually showed professionalism, always going the extra mile.\"\\nLambros Pasialis - Insurance Australia Group\\nServer Engineer at IAG - Lambros was a client of Madhul\\'s\\n\"Madhul is hard worker and a very motivated professional who has exceptional skills in working with customers and achieving goals set in an enterprise business.\\nAs a contact, Madhul always strives to be available and get things done, knowing that this is key to supporting large businesses. I highly recommend his skill sets and his professional attitude towards all parties involved, and makes a hard task at hand much more manageable.\"\\nNikolay Dzhilinskiy - NTT\\nSenior Systems Engineer - Madhul worked with Nikolay in the same group at Telstra\\n\"I have worked with Madhul for quite some time now and really value his skills and knowledge in the field of ICT Solutions architecture/design. Madhul is one of few people who keep on top of things and is always working to keep his skills updated in this rapidly changing ICT industry.\\nI would like to endorse him for his in-depth knowledge of ICT Solutions/technologies and Project Management skills. Moreover his readiness to share his experience/knowledge by taking the initiative to organise cross-skill training sessions with other SMEs and members of the team is highly appreciated and valued.\"\\n© Copyright 2023 TechnicallySimple.Me All Rights Reserved.\\nOur Privacy Policy\\n| Home |\\n| Privacy Policy |\\n| Terms of Service |\\n| Send Feedback |\\nLooking for Something?\\nSearch anything and hit enter.'}]" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Try this out, and then try for a few more websites\n", "\n", @@ -375,7 +633,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "id": "905b9919-aba7-45b5-ae65-81b3d1d78e34", "metadata": {}, "outputs": [], @@ -403,7 +661,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "id": "3d926d59-450e-4609-92ba-2d6f244f1342", "metadata": {}, "outputs": [], @@ -495,10 +753,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "id": "00743dac-0e70-45b7-879a-d7293a6f68a6", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdin", + "output_type": "stream", + "text": [ + "Please enter contents of the email to be analysed: \n", + " ········\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "## Subject Line Suggestions\n", + "\n", + "- Customer Reference Case & Responses to Your Queries\n", + "- Insights on GitLab CI/CD Scanning & Container Image Builds\n", + "- Response to Open Queries and Customer Case Reference\n", + "- Exploring CI/CD Practices: Answers to Your Questions\n", + "- Key Information on Aqua Scanner Integration with GitLab Pipelines\n" + ] + } + ], "source": [ "# Step 1: Create your prompts\n", "\n", @@ -555,9 +835,34 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "id": "682eff74-55c4-4d4b-b267-703edbc293c7", "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "# Website Summary\n", + "\n", + "The website titled \"No title found\" appears to have limited accessible content due to a request for enabling JavaScript and cookies to proceed. As such, comprehensive information on the website's offerings, news, or announcements is not available for summary at this time." + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display_summary(\"https://openai.com\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d64751f3-7e4a-497a-aa21-c4d1f275f9a8", + "metadata": {}, "outputs": [], "source": [] }