diff --git a/week1/day1.ipynb b/week1/day1.ipynb index 2495a82..a0f082c 100644 --- a/week1/day1.ipynb +++ b/week1/day1.ipynb @@ -75,7 +75,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "4e2a9393-7767-488e-a8bf-27c12dca35bd", "metadata": {}, "outputs": [], @@ -114,18 +114,10 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "7b87cadb-d513-4303-baee-a37b6f938e4d", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "API key found and looks good so far!\n" - ] - } - ], + "outputs": [], "source": [ "# Load environment variables in a file called .env\n", "\n", @@ -146,7 +138,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "019974d9-f3ad-4a8a-b5f9-0a3719aea2d3", "metadata": {}, "outputs": [], @@ -168,18 +160,10 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "a58394bf-1e45-46af-9bfd-01e24da6f49a", "metadata": {}, - "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" - ] - } - ], + "outputs": [], "source": [ "# To give you a preview -- calling OpenAI with these messages is this easy:\n", "\n", @@ -198,7 +182,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "id": "c5e793b2-6775-426a-a139-4848291d0463", "metadata": {}, "outputs": [], @@ -228,119 +212,10 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "id": "2ef960cf-6dc2-4cda-afb3-b38be12f4c97", "metadata": {}, - "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" - ] - } - ], + "outputs": [], "source": [ "# Let's try one out. Change the website and add print statements to follow along.\n", "\n", @@ -369,7 +244,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "id": "abdb8417-c5dc-44bc-9bee-2e059d162699", "metadata": {}, "outputs": [], @@ -383,7 +258,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "id": "f0275b1b-7cfe-4f9d-abfa-7650d378da0c", "metadata": {}, "outputs": [], @@ -401,121 +276,10 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "id": "26448ec4-5c00-4204-baec-7df91d11ff2e", "metadata": {}, - "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" - ] - } - ], + "outputs": [], "source": [ "print(user_prompt_for(ed))" ] @@ -541,7 +305,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "id": "f25dcd35-0cd0-4235-9f64-ac37ed9eaaa5", "metadata": {}, "outputs": [], @@ -554,18 +318,10 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "id": "21ed95c5-7001-47de-a36d-1d6673b403ce", "metadata": {}, - "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" - ] - } - ], + "outputs": [], "source": [ "# To give you a preview -- calling OpenAI with system and user messages:\n", "\n", @@ -583,7 +339,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "id": "0134dfa4-8299-48b5-b444-f2a8c3403c88", "metadata": {}, "outputs": [], @@ -599,24 +355,10 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "id": "36478464-39ee-485c-9f3f-6a4e458dbc9c", "metadata": {}, - "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" - } - ], + "outputs": [], "source": [ "# Try this out, and then try for a few more websites\n", "\n", @@ -633,7 +375,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "id": "905b9919-aba7-45b5-ae65-81b3d1d78e34", "metadata": {}, "outputs": [], @@ -661,7 +403,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "id": "3d926d59-450e-4609-92ba-2d6f244f1342", "metadata": {}, "outputs": [], @@ -753,32 +495,10 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "id": "00743dac-0e70-45b7-879a-d7293a6f68a6", "metadata": {}, - "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" - ] - } - ], + "outputs": [], "source": [ "# Step 1: Create your prompts\n", "\n", @@ -835,25 +555,10 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "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" - } - ], + "outputs": [], "source": [ "display_summary(\"https://openai.com\")" ] diff --git a/week1/day2 EXERCISE.ipynb b/week1/day2 EXERCISE.ipynb index 4504401..35f2140 100644 --- a/week1/day2 EXERCISE.ipynb +++ b/week1/day2 EXERCISE.ipynb @@ -203,6 +203,231 @@ "id": "402d5686-4e76-4110-b65a-b3906c35c0a4", "metadata": {}, "outputs": [], + "source": [ + "# imports\n", + "import os\n", + "import requests\n", + "from bs4 import BeautifulSoup\n", + "from IPython.display import Markdown, display\n", + "from openai import OpenAI\n", + "from requests.exceptions import RequestException\n", + "# If you get an error running this cell, then please head over to the troubleshooting notebook!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9cfeb2c1-a2e1-47af-bd62-253b703d8130", + "metadata": {}, + "outputs": [], + "source": [ + "# Constants\n", + "\n", + "OLLAMA_API = \"http://localhost:11434/api/chat\"\n", + "HEADERS = {\"Content-Type\": \"application/json\"}\n", + "MODEL = \"llama3.2\"\n", + "ollama_via_openai = OpenAI(base_url='http://localhost:11434/v1', api_key='ollama')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "76991489-946f-492c-9f62-9f73a9e53b43", + "metadata": {}, + "outputs": [], + "source": [ + "# A class to represent a Webpage\n", + "# If you're not familiar with Classes, check out the \"Intermediate Python\" notebook\n", + "\n", + "# Some websites need you to use proper headers when fetching them:\n", + "\n", + "class Website:\n", + " def __init__(self, url):\n", + " \"\"\"\n", + " Create this Website object from the given url using the BeautifulSoup library\n", + " \"\"\"\n", + " self.url = url\n", + " self.title = \"No title found\"\n", + " self.text = \"No content found\"\n", + " \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", + " }\n", + " \n", + " try:\n", + " response = requests.get(url, headers=headers, timeout=10)\n", + " response.raise_for_status() # Raises an HTTPError for bad responses\n", + " \n", + " soup = BeautifulSoup(response.content, 'html.parser')\n", + " self.title = soup.title.string if soup.title else \"No title found\"\n", + " \n", + " # Get text content\n", + " self.text = ' '.join([p.get_text() for p in soup.find_all('p')])\n", + " if not self.text:\n", + " self.text = \"No content found\"\n", + "\n", + " for irrelevant in soup.body([\"script\", \"style\", \"img\", \"input\"]):\n", + " irrelevant.decompose()\n", + " self.text = soup.body.get_text(separator=\"\\n\", strip=True)\n", + " \n", + " except requests.exceptions.SSLError:\n", + " raise ConnectionError(f\"SSL Certificate verification failed for {url}\")\n", + " except requests.exceptions.ConnectionError:\n", + " raise ConnectionError(f\"Failed to connect to {url}. Please check if the URL is correct and accessible.\")\n", + " except requests.exceptions.Timeout:\n", + " raise ConnectionError(f\"Connection timed out while trying to access {url}\")\n", + " except requests.exceptions.RequestException as e:\n", + " raise ConnectionError(f\"An error occurred while fetching the website: {str(e)}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "61d58b43-5ec5-4580-b963-8336aee8681e", + "metadata": {}, + "outputs": [], + "source": [ + "# A class to represent a Webpage\n", + "# If you're not familiar with Classes, check out the \"Intermediate Python\" notebook\n", + "\n", + "# Some websites need you to use proper headers when fetching them:\n", + "headers = {\n", + " \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36\"\n", + "}\n", + "\n", + "class Website:\n", + "\n", + " def __init__(self, url):\n", + " \"\"\"\n", + " Create this Website object from the given url using the BeautifulSoup library\n", + " \"\"\"\n", + " self.url = url\n", + " response = requests.get(url, headers=headers)\n", + " soup = BeautifulSoup(response.content, 'html.parser')\n", + " self.title = soup.title.string if soup.title else \"No title found\"\n", + " for irrelevant in soup.body([\"script\", \"style\", \"img\", \"input\"]):\n", + " irrelevant.decompose()\n", + " self.text = soup.body.get_text(separator=\"\\n\", strip=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d5fe4e6a-24f4-483a-ae24-1e7ed1bf2a6f", + "metadata": {}, + "outputs": [], + "source": [ + "# A function that writes a User Prompt that asks for summaries of websites:\n", + "\n", + "def user_prompt_for(website):\n", + " user_prompt = f\"You are looking at a website titled {website.title}\"\n", + " user_prompt += \"\\nThe contents of this website is as follows; \\\n", + "please provide a short summary of this website in markdown. \\\n", + "If it includes news or announcements, then summarise these too. Ignoring text that might be navigation related. \\n --- \\n\"\n", + " user_prompt += website.text\n", + " return user_prompt" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e9c9876a-45ff-43ef-8315-b10acfd4b872", + "metadata": {}, + "outputs": [], + "source": [ + "ms=Website(\"https://technicallysimple.me\")\n", + "print(user_prompt_for(ms))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f2369302-7b8c-465e-8606-b9cc0a51cb78", + "metadata": {}, + "outputs": [], + "source": [ + "# Create a messages list using the same format that we used for OpenAI\n", + "def messages_for(website):\n", + " return [\n", + " {\"role\": \"user\", \"content\": user_prompt_for(website)}\n", + " ]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a73d69c1-87fb-4e82-94f1-50dd76fb5e60", + "metadata": {}, + "outputs": [], + "source": [ + "me=Website(\"https://technicallysimple.me\")\n", + "print(messages_for(me))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "16ae9026-1684-4cc3-9859-f2cd7d22fb52", + "metadata": {}, + "outputs": [], + "source": [ + "def summarise(url):\n", + " try:\n", + " aWebsite = Website(url)\n", + " response = ollama_via_openai.chat.completions.create(\n", + " model=MODEL,\n", + " messages=messages_for(aWebsite)\n", + " )\n", + " return response.choices[0].message.content\n", + " except ConnectionError as e:\n", + " return f\"Error: {str(e)}\"\n", + " except Exception as e:\n", + " return f\"An unexpected error occurred: {str(e)}\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4e0f7264-9622-4751-83b9-a31c3c0c4589", + "metadata": {}, + "outputs": [], + "source": [ + "def display_summary(url):\n", + " try:\n", + " summary = summarise(url)\n", + " display(Markdown(summary))\n", + " except Exception as e:\n", + " print(f\"Failed to display summary: {str(e)}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "40aba8f2-577f-4003-bf46-377cc815f243", + "metadata": {}, + "outputs": [], + "source": [ + "address=input(\"Enter URL: \")\n", + "summarise(address)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d8659653-d3a1-4cc1-bbd8-a003fb22041f", + "metadata": {}, + "outputs": [], + "source": [ + "address=input(\"Enter URL: \")\n", + "display_summary(address)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "aff32906-2401-4d92-b377-c91ee572e208", + "metadata": {}, + "outputs": [], "source": [] } ],