diff --git a/week1/community-contributions/Top Tech products.ipynb b/week1/community-contributions/Top Tech products.ipynb new file mode 100644 index 0000000..53b4841 --- /dev/null +++ b/week1/community-contributions/Top Tech products.ipynb @@ -0,0 +1,181 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "bbd8585e-0a28-4fd9-80b5-690569f93e16", + "metadata": {}, + "outputs": [], + "source": [ + "#This notebook will help you to get top tech products with by providing category and subcategory" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "df039118-f462-4a8b-949e-53d3a726e292", + "metadata": {}, + "outputs": [], + "source": [ + "# imports\n", + "\n", + "import os\n", + "import requests\n", + "from dotenv import load_dotenv\n", + "from bs4 import BeautifulSoup\n", + "from IPython.display import Markdown, display\n", + "from openai import OpenAI\n", + "aa" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e2ffd2e5-d061-446c-891e-15a6d1958ab6", + "metadata": {}, + "outputs": [], + "source": [ + "# Load environment variables in a file called .env\n", + "\n", + "load_dotenv(override=True)\n", + "api_key = os.getenv('OPENAI_API_KEY')\n", + "\n", + "# Check the key\n", + "\n", + "if not api_key:\n", + " print(\"No API key was found - please head over to the troubleshooting notebook in this folder to identify & fix!\")\n", + "elif not api_key.startswith(\"sk-proj-\"):\n", + " print(\"An API key was found, but it doesn't start sk-proj-; please check you're using the right key - see troubleshooting notebook\")\n", + "elif api_key.strip() != api_key:\n", + " print(\"An API key was found, but it looks like it might have space or tab characters at the start or end - please remove them - see troubleshooting notebook\")\n", + "else:\n", + " print(\"API key found and looks good so far!\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "92e26007-521f-4ea2-9df9-edd77dd7e183", + "metadata": {}, + "outputs": [], + "source": [ + "openai = OpenAI()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "27d21593-8feb-42e4-bbc0-2e949b51137d", + "metadata": {}, + "outputs": [], + "source": [ + "def tech_product(category_subcategory_budget):\n", + " parts = category_subcategory_budget.split('_')\n", + " return f\"{parts[0]}-{parts[1]}-{parts[2]}\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dd978d25-5b84-4122-af7c-116f2bf72179", + "metadata": {}, + "outputs": [], + "source": [ + "def messages_for(products):\n", + " return [\n", + " {\"role\": \"system\", \"content\": \"you are a tech product expert and you need to suggest the best suited product available in India basis the input received in the form of category-subcategory-budget (in inr),\\\n", + " revert with category and subcategory and show the product links as well along with pros and cons, respond in markdown\"},\n", + " {\"role\": \"user\", \"content\": tech_product(products)}\n", + " ]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b916db7a-81a4-41d9-87c2-a2346fd874d2", + "metadata": {}, + "outputs": [], + "source": [ + "messages_for(\"phone_gaming_40000\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3b4bb3f1-95de-4eb5-afe1-068744f93301", + "metadata": {}, + "outputs": [], + "source": [ + "def get_top_products(category_subcategory):\n", + " response = openai.chat.completions.create(\n", + " model = \"gpt-4o-mini\",\n", + " messages= messages_for(category_subcategory)\n", + " )\n", + " return response.choices[0].message.content \n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c9272942-acfe-4fca-bd0a-3435c1ee6691", + "metadata": {}, + "outputs": [], + "source": [ + "get_top_products('phone_gaming_30000')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2c2b3b9a-aceb-4f00-8c8d-8f6837ab94fc", + "metadata": {}, + "outputs": [], + "source": [ + "def display_markdown(category_subcategory_budget):\n", + " output = get_top_products(category_subcategory_budget)\n", + " display(Markdown(output))\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6c135dd7-4ed4-48ee-ba3f-9b4ca1c32149", + "metadata": {}, + "outputs": [], + "source": [ + "display_markdown('Console_gaming_100000')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0ba06c55-7ef9-47eb-aeaf-3c4a7b29bccc", + "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.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}