You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

502 lines
21 KiB

{
"cells": [
{
"cell_type": "markdown",
"id": "d15d8294-3328-4e07-ad16-8a03e9bbfdb9",
"metadata": {},
"source": [
"# HOMEWORK EXERCISE ASSIGNMENT\n",
"\n",
"Upgrade the day 1 project to summarize a webpage to use an Open Source model running locally via Ollama rather than OpenAI\n",
"\n",
"You'll be able to use this technique for all subsequent projects if you'd prefer not to use paid APIs.\n",
"\n",
"**Benefits:**\n",
"1. No API charges - open-source\n",
"2. Data doesn't leave your box\n",
"\n",
"**Disadvantages:**\n",
"1. Significantly less power than Frontier Model\n",
"\n",
"## Recap on installation of Ollama\n",
"\n",
"Simply visit [ollama.com](https://ollama.com) and install!\n",
"\n",
"Once complete, the ollama server should already be running locally. \n",
"If you visit: \n",
"[http://localhost:11434/](http://localhost:11434/)\n",
"\n",
"You should see the message `Ollama is running`. \n",
"\n",
"If not, bring up a new Terminal (Mac) or Powershell (Windows) and enter `ollama serve` \n",
"Then try [http://localhost:11434/](http://localhost:11434/) again."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "4e2a9393-7767-488e-a8bf-27c12dca35bd",
"metadata": {},
"outputs": [],
"source": [
"# imports\n",
"\n",
"import requests\n",
"from bs4 import BeautifulSoup\n",
"from IPython.display import Markdown, display"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "29ddd15d-a3c5-4f4e-a678-873f56162724",
"metadata": {},
"outputs": [],
"source": [
"# Constants\n",
"\n",
"OLLAMA_API = \"http://localhost:11434/api/chat\"\n",
"HEADERS = {\"Content-Type\": \"application/json\"}\n",
"MODEL = \"llama3.2\""
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "dac0a679-599c-441f-9bf2-ddc73d35b940",
"metadata": {},
"outputs": [],
"source": [
"# Create a messages list using the same format that we used for OpenAI\n",
"\n",
"messages = [\n",
" {\"role\": \"user\", \"content\": \"Describe some of the business applications of Generative AI\"}\n",
"]"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "7bb9c624-14f0-4945-a719-8ddb64f66f47",
"metadata": {},
"outputs": [],
"source": [
"payload = {\n",
" \"model\": MODEL,\n",
" \"messages\": messages,\n",
" \"stream\": False\n",
" }"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "42b9f644-522d-4e05-a691-56e7658c0ea9",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Generative AI has numerous business applications across various industries, including:\n",
"\n",
"1. **Content Creation**: Generative AI can generate high-quality content such as articles, social media posts, product descriptions, and more. This can help reduce content creation costs and increase efficiency.\n",
"2. **Image and Video Generation**: Generative AI can create realistic images and videos for use in marketing campaigns, advertising, and product demonstrations.\n",
"3. **Customer Service Chatbots**: Generative AI-powered chatbots can be used to provide customer support, answering frequently asked questions, and helping customers with simple issues.\n",
"4. **Personalized Recommendations**: Generative AI algorithms can analyze customer behavior and preferences to generate personalized recommendations for products, services, or content.\n",
"5. **Product Design and Prototyping**: Generative AI can aid in product design and prototyping by generating multiple design options, reducing the need for physical prototypes and speeding up the design process.\n",
"6. **Supply Chain Optimization**: Generative AI can analyze supply chain data to predict demand, optimize inventory levels, and identify potential bottlenecks.\n",
"7. **Marketing Automation**: Generative AI can automate repetitive marketing tasks such as email campaigns, social media posts, and ad targeting.\n",
"8. **Data Analysis and Insights**: Generative AI algorithms can analyze large datasets to identify trends, patterns, and insights that may not be apparent through human analysis alone.\n",
"9. **Financial Modeling and Forecasting**: Generative AI can help forecast sales, revenue, and expenses by analyzing historical data and identifying potential risks and opportunities.\n",
"10. **Cybersecurity Threat Detection**: Generative AI-powered systems can analyze network traffic and identify potential security threats in real-time.\n",
"11. **Creative Writing and Editing**: Generative AI can assist writers with content creation, editing, and proofreading tasks such as suggesting alternative phrases or sentence structures.\n",
"12. **Human Resources Management**: Generative AI can help automate HR tasks such as recruitment, talent management, and performance evaluations.\n",
"\n",
"Some specific business use cases for Generative AI include:\n",
"\n",
"* **Virtual assistants**: Companies like Google and Microsoft are using Generative AI to create virtual assistants that can understand natural language queries and provide personalized responses.\n",
"* **Personalized product recommendations**: Retailers like Amazon and Apple are using Generative AI to generate personalized product recommendations based on customer behavior and preferences.\n",
"* **Automated marketing campaigns**: Marketers are using Generative AI to automate repetitive marketing tasks such as email campaigns, social media posts, and ad targeting.\n",
"* **Predictive maintenance**: Manufacturers are using Generative AI to predict equipment failures and schedule maintenance accordingly, reducing downtime and increasing efficiency.\n",
"\n",
"These are just a few examples of the many business applications of Generative AI. As the technology continues to evolve, we can expect to see even more innovative use cases emerge.\n"
]
}
],
"source": [
"response = requests.post(OLLAMA_API, json=payload, headers=HEADERS)\n",
"print(response.json()['message']['content'])"
]
},
{
"cell_type": "markdown",
"id": "6a021f13-d6a1-4b96-8e18-4eae49d876fe",
"metadata": {},
"source": [
"# Introducing the ollama package\n",
"\n",
"And now we'll do the same thing, but using the elegant ollama python package instead of a direct HTTP call.\n",
"\n",
"Under the hood, it's making the same call as above to the ollama server running at localhost:11434"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "7745b9c4-57dc-4867-9180-61fa5db55eb8",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Generative AI has numerous business applications across various industries. Here are some examples:\n",
"\n",
"1. **Content Generation**: Generative AI can be used to generate high-quality content such as blog posts, social media posts, product descriptions, and even entire articles. This can help businesses save time and resources while still producing engaging and relevant content.\n",
"2. **Product Design**: Generative AI can assist in the design of products by generating 3D models, prototypes, and even functional prototypes. This can be particularly useful for companies that require rapid prototyping or have limited in-house design capabilities.\n",
"3. **Marketing Automation**: Generative AI can help automate marketing efforts by generating personalized email campaigns, social media ads, and even lead generation content.\n",
"4. **Customer Service Chatbots**: Generative AI-powered chatbots can provide 24/7 customer support, answering common queries, and helping to resolve simple issues. This can free up human customer service agents to focus on more complex and emotionally charged issues.\n",
"5. **Data Analysis and Insights**: Generative AI can be used to analyze large datasets and identify patterns, trends, and insights that may have gone unnoticed by humans. This can help businesses gain a competitive edge and make data-driven decisions.\n",
"6. **Virtual Assistants**: Generative AI-powered virtual assistants can be integrated into various business systems to provide personalized support and guidance to employees, customers, or partners.\n",
"7. **Supply Chain Optimization**: Generative AI can be used to optimize supply chain operations by predicting demand, managing inventory levels, and identifying potential bottlenecks.\n",
"8. **Risk Management**: Generative AI-powered risk management tools can help businesses identify and mitigate potential risks, such as financial losses, regulatory non-compliance, or reputational damage.\n",
"9. **Financial Analysis**: Generative AI can be used to analyze large datasets of financial transactions, predicting market trends, identifying potential investment opportunities, and detecting fraudulent activity.\n",
"10. **Cybersecurity Threat Detection**: Generative AI-powered threat detection tools can help identify and respond to cybersecurity threats in real-time, reducing the risk of data breaches and other security incidents.\n",
"\n",
"Some specific examples of businesses that are already leveraging Generative AI include:\n",
"\n",
"* Google (using Generative AI for image search and content generation)\n",
"* Amazon (using Generative AI for product recommendations and customer service chatbots)\n",
"* IBM (using Generative AI for marketing automation and sales forecasting)\n",
"* Accenture (using Generative AI for data analysis and insights)\n",
"* NVIDIA (using Generative AI for computer vision and graphics rendering)\n",
"\n",
"These are just a few examples, but the potential applications of Generative AI are vast and continue to expand as the technology advances.\n"
]
}
],
"source": [
"import ollama\n",
"\n",
"response = ollama.chat(model=MODEL, messages=messages)\n",
"print(response['message']['content'])"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "9a611b05-b5b0-4c83-b82d-b3a39ffb917d",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "1622d9bb-5c68-4d4e-9ca4-b492c751f898",
"metadata": {},
"source": [
"# NOW the exercise for you\n",
"\n",
"Take the code from day1 and incorporate it here, to build a website summarizer that uses Llama 3.2 running locally instead of OpenAI"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "00496450-b078-469c-8072-4cb633df9928",
"metadata": {},
"outputs": [],
"source": [
"# imports\n",
"\n",
"import requests\n",
"from bs4 import BeautifulSoup\n",
"from IPython.display import Markdown, display"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "37aea1a6-2d35-4c8b-9264-43da5884d069",
"metadata": {},
"outputs": [],
"source": [
"# Constants\n",
"MODEL = \"llama3.2\""
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "383f8e2a-c98d-48bc-9c3f-ece4ef077ec9",
"metadata": {},
"outputs": [],
"source": [
"# A class to represent a Webpage\n",
"\n",
"class Website:\n",
" \"\"\"\n",
" A utility class to represent a Website that we have scraped\n",
" \"\"\"\n",
" url: str\n",
" title: str\n",
" text: str\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)\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": 35,
"id": "36e99eba-5758-4471-8860-2f5a42771e6b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"https://jaivikhimalay.com\n",
"Jaivik Himalay\n",
"0\n",
"Skip to Content\n",
"Services\n",
"About\n",
"Contact\n",
"Open Menu\n",
"Close Menu\n",
"Services\n",
"About\n",
"Contact\n",
"Open Menu\n",
"Close Menu\n",
"Services\n",
"About\n",
"Contact\n",
"Enhance the accessibility of your products and services to customers\n",
"Application Architecture, Design & Development Services\n",
"Engaging and solving customers’ requirements to automate their business processes, by transforming requirements into a ready to use products.\n",
"Application Refactoring, Performance Improvement & Integration Services\n",
"Keeping clients by leveraging the latest practices and technologies in the industry to transform their outdated and sluggish systems into ones that are incredibly efficient.\n",
"Distribution Services\n",
"Assisting companies in meeting their requirements by sourcing a diverse range of products from both local and global markets.\n",
"Read More\n",
"Services\n",
"Application Architecture, Design & Development Services\n",
"We offer support to small and medium-sized businesses in developing their products or APIs from the initial concept to the launch stage. This encompasses every stage of the product life cycle.\n",
"Application Refactoring , Performance Improvement & Integration Services\n",
"With the support of the experience team, we can transform applications that were created using outdated technology. Applications that don't scale or perform well can also be redesigned, tested, and prepared for launch.\n",
"Distribution Services\n",
"We can assist you in lowering the price of importing or exporting goods to and from the United States and other nations. We are able to transport both domestically and abroad to a large number of businesses.\n",
"About Us\n",
"Group of seasoned experts that have spent the last 20 years working to solve clients' complex issues in the areas of payments, gift cards, logistics, and more.\n",
"We are situated in California's Silicon Valley.\n",
"Contact Us\n",
"Interested in working together? Fill out some info and we will be in touch shortly.\n",
"Name\n",
"*\n",
"First Name\n",
"Last Name\n",
"Email\n",
"*\n",
"Message\n",
"*\n",
"Thank you for contacting us! Will get back to you soon…\n",
"Location\n",
"Dublin, CA, 94568\n",
"Contact\n",
"info@jaivikhimalay.com\n",
"© Copyright 2024\n",
"Jaivik Himalay LLC\n",
".\n"
]
}
],
"source": [
"ed = Website(\"https://jaivikhimalay.com\")\n",
"print(ed.url)\n",
"print(ed.title)\n",
"print(ed.text)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "793f8c35-fbde-4160-90b5-a2fd8ea5f5e6",
"metadata": {},
"outputs": [],
"source": [
"# Define our system prompt - you can experiment with this later, changing the last sentence to 'Respond in markdown in Spanish.\"\n",
"\n",
"system_prompt = \"You are an assistant that analyzes the contents of a website \\\n",
"and provides a short summary, ignoring text that might be navigation related. \\\n",
"Respond in markdown.\""
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "ecbfa0e2-39c2-4467-989b-4ab9810de72d",
"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 += \"The 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 summarize these too.\\n\\n\"\n",
" user_prompt += website.text\n",
" return user_prompt"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "cf5a1da8-1628-4bbb-a2f8-e06409fe4e45",
"metadata": {},
"outputs": [],
"source": [
"# See how this function creates exactly the format above\n",
"\n",
"def messages_for(website):\n",
" return [\n",
" {\"role\": \"system\", \"content\": system_prompt},\n",
" {\"role\": \"user\", \"content\": user_prompt_for(website)}\n",
" ]"
]
},
{
"cell_type": "code",
"execution_count": 39,
"id": "fc9040a8-0a62-4658-94d9-0674b9045986",
"metadata": {},
"outputs": [],
"source": [
"# And now: call the Ollama function instead of OpenAI\n",
"\n",
"def summarize(url):\n",
" website = Website(url)\n",
" messages = messages_for(website)\n",
" response = ollama.chat(model=MODEL, messages=messages)\n",
" return response['message']['content']"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "fc2aff45-ba1d-44f8-8b5d-f34934eb1ee8",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\"# Website Summary\\n### Overview\\n\\nJaivik Himalay is a technology consulting firm that offers a range of services to help businesses improve their products and services, automate business processes, and enhance accessibility.\\n\\n### Services\\n\\n* **Application Architecture**: Development of applications from concept to launch for small and medium-sized businesses.\\n* **Refactoring & Integration**: Transformation of outdated applications into efficient ones using the latest industry practices and technologies.\\n* **Distribution Services**: Sourcing diverse products from local and global markets to meet clients' requirements.\\n\\n### About Us\\n\\nJaivik Himalay is a group of seasoned experts with 20 years of experience solving complex issues in various areas, including payments, gift cards, logistics. The company is based in California's Silicon Valley.\\n\\n### Contact Us\\n\\nThe company invites interested individuals to contact them through the provided email address.\""
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"summarize(\"https://jaivikhimalay.com\")"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "ef0e940d-fed4-417b-8d95-4a0fd3b9b3d7",
"metadata": {},
"outputs": [],
"source": [
"def display_summary(url):\n",
" summary = summarize(url)\n",
" display(Markdown(summary))"
]
},
{
"cell_type": "code",
"execution_count": 42,
"id": "086296f1-c748-4747-93d2-554732392400",
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"# Jaivik Himalaya Website Summary\n",
"\n",
"## Overview\n",
"\n",
"Jaivik Himalaya is a professional services company specializing in application development, refactoring, and distribution services.\n",
"\n",
"### Key Services\n",
"\n",
"- **Application Architecture**: Designing and developing products or APIs from concept to launch.\n",
"- **Application Refactoring & Performance Improvement**: Transforming outdated systems into efficient ones using latest industry practices and technologies.\n",
"- **Distribution Services**: Sourcing products from local and global markets to assist businesses in meeting their requirements.\n",
"\n",
"### About Us\n",
"\n",
"Jaivik Himalaya is led by a group of experienced experts with 20 years of experience solving complex issues in various domains such as payments, gift cards, logistics, etc. The company is based in Silicon Valley, California.\n",
"\n",
"### Contact Information\n",
"\n",
"- Email: `info@jaivikhimalay.com`\n",
"- Location: Dublin, CA 94568\n",
"- Address: No specific address provided on the website."
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display_summary(\"https://jaivikhimalay.com\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "83e150e1-5b2c-45b7-9154-aae5b55943af",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.10"
}
},
"nbformat": 4,
"nbformat_minor": 5
}