From 0648377247a244d1ea3e31e28c117f48e4c24b3f Mon Sep 17 00:00:00 2001 From: "anderson.dang" Date: Wed, 5 Feb 2025 14:48:59 -0800 Subject: [PATCH] Finished week1 and started on week2 --- week1/day2 EXERCISE.ipynb | 42 +----------- week1/day5.ipynb | 2 +- week2/day1.ipynb | 134 ++------------------------------------ week2/day3.ipynb | 2 +- 4 files changed, 8 insertions(+), 172 deletions(-) diff --git a/week1/day2 EXERCISE.ipynb b/week1/day2 EXERCISE.ipynb index 81077ed..fb08ca8 100644 --- a/week1/day2 EXERCISE.ipynb +++ b/week1/day2 EXERCISE.ipynb @@ -203,46 +203,6 @@ "print(response.choices[0].message.content)" ] }, - { - "cell_type": "markdown", - "id": "bc7d1de3-e2ac-46ff-a302-3b4ba38c4c90", - "metadata": {}, - "source": [ - "## Also trying the amazing reasoning model DeepSeek\n", - "\n", - "Here we use the version of DeepSeek-reasoner that's been distilled to 1.5B. \n", - "This is actually a 1.5B variant of Qwen that has been fine-tuned using synethic data generated by Deepseek R1.\n", - "\n", - "Other sizes of DeepSeek are [here](https://ollama.com/library/deepseek-r1) all the way up to the full 671B parameter version, which would use up 404GB of your drive and is far too large for most!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "cf9eb44e-fe5b-47aa-b719-0bb63669ab3d", - "metadata": {}, - "outputs": [], - "source": [ - "!ollama pull deepseek-r1:1.5b" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1d3d554b-e00d-4c08-9300-45e073950a76", - "metadata": {}, - "outputs": [], - "source": [ - "# This may take a few minutes to run! You should then see a fascinating \"thinking\" trace inside tags, followed by some decent definitions\n", - "\n", - "response = ollama_via_openai.chat.completions.create(\n", - " model=\"deepseek-r1:1.5b\",\n", - " messages=[{\"role\": \"user\", \"content\": \"Please give definitions of some core concepts behind LLMs: a neural network, attention and the transformer\"}]\n", - ")\n", - "\n", - "print(response.choices[0].message.content)" - ] - }, { "cell_type": "markdown", "id": "1622d9bb-5c68-4d4e-9ca4-b492c751f898", @@ -256,7 +216,7 @@ { "cell_type": "code", "execution_count": null, - "id": "6de38216-6d1c-48c4-877b-86d403f4e0f8", + "id": "402d5686-4e76-4110-b65a-b3906c35c0a4", "metadata": {}, "outputs": [], "source": [] diff --git a/week1/day5.ipynb b/week1/day5.ipynb index f39a4b2..397e5ed 100644 --- a/week1/day5.ipynb +++ b/week1/day5.ipynb @@ -334,7 +334,7 @@ "metadata": {}, "outputs": [], "source": [ - "create_brochure(\"HuggingFace\", \"https://huggingface.co\")" + "create_brochure(\"HuggingFace\", \"https://huggingface.com\")" ] }, { diff --git a/week2/day1.ipynb b/week2/day1.ipynb index 3a7a79b..8a2640d 100644 --- a/week2/day1.ipynb +++ b/week2/day1.ipynb @@ -69,19 +69,12 @@ "For Anthropic, visit https://console.anthropic.com/ \n", "For Google, visit https://ai.google.dev/gemini-api \n", "\n", - "### Also - adding DeepSeek if you wish\n", - "\n", - "Optionally, if you'd like to also use DeepSeek, create an account [here](https://platform.deepseek.com/), create a key [here](https://platform.deepseek.com/api_keys) and top up with at least the minimum $2 [here](https://platform.deepseek.com/top_up).\n", - "\n", - "### Adding API keys to your .env file\n", - "\n", "When you get your API keys, you need to set them as environment variables by adding them to your `.env` file.\n", "\n", "```\n", "OPENAI_API_KEY=xxxx\n", "ANTHROPIC_API_KEY=xxxx\n", "GOOGLE_API_KEY=xxxx\n", - "DEEPSEEK_API_KEY=xxxx\n", "```\n", "\n", "Afterwards, you may need to restart the Jupyter Lab Kernel (the Python process that sits behind this notebook) via the Kernel menu, and then rerun the cells from the top." @@ -127,7 +120,7 @@ "# Load environment variables in a file called .env\n", "# Print the key prefixes to help with any debugging\n", "\n", - "load_dotenv(override=True)\n", + "load_dotenv()\n", "openai_api_key = os.getenv('OPENAI_API_KEY')\n", "anthropic_api_key = os.getenv('ANTHROPIC_API_KEY')\n", "google_api_key = os.getenv('GOOGLE_API_KEY')\n", @@ -279,7 +272,7 @@ "# Also adding max_tokens\n", "\n", "message = claude.messages.create(\n", - " model=\"claude-3-5-sonnet-latest\",\n", + " model=\"claude-3-5-sonnet-20240620\",\n", " max_tokens=200,\n", " temperature=0.7,\n", " system=system_message,\n", @@ -302,7 +295,7 @@ "# Now let's add in streaming back results\n", "\n", "result = claude.messages.stream(\n", - " model=\"claude-3-5-sonnet-latest\",\n", + " model=\"claude-3-5-sonnet-20240620\",\n", " max_tokens=200,\n", " temperature=0.7,\n", " system=system_message,\n", @@ -328,7 +321,7 @@ "# If that happens to you, please skip this cell and use the next cell instead - an alternative approach.\n", "\n", "gemini = google.generativeai.GenerativeModel(\n", - " model_name='gemini-2.0-flash-exp',\n", + " model_name='gemini-1.5-flash',\n", " system_instruction=system_message\n", ")\n", "response = gemini.generate_content(user_prompt)\n", @@ -351,129 +344,12 @@ ")\n", "\n", "response = gemini_via_openai_client.chat.completions.create(\n", - " model=\"gemini-2.0-flash-exp\",\n", + " model=\"gemini-1.5-flash\",\n", " messages=prompts\n", ")\n", "print(response.choices[0].message.content)" ] }, - { - "cell_type": "markdown", - "id": "33f70c88-7ca9-470b-ad55-d93a57dcc0ab", - "metadata": {}, - "source": [ - "## (Optional) Trying out the DeepSeek model\n", - "\n", - "### Let's ask DeepSeek a really hard question - both the Chat and the Reasoner model" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3d0019fb-f6a8-45cb-962b-ef8bf7070d4d", - "metadata": {}, - "outputs": [], - "source": [ - "# Optionally if you wish to try DeekSeek, you can also use the OpenAI client library\n", - "\n", - "deepseek_api_key = os.getenv('DEEPSEEK_API_KEY')\n", - "\n", - "if deepseek_api_key:\n", - " print(f\"DeepSeek API Key exists and begins {deepseek_api_key[:3]}\")\n", - "else:\n", - " print(\"DeepSeek API Key not set - please skip to the next section if you don't wish to try the DeepSeek API\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c72c871e-68d6-4668-9c27-96d52b77b867", - "metadata": {}, - "outputs": [], - "source": [ - "# Using DeepSeek Chat\n", - "\n", - "deepseek_via_openai_client = OpenAI(\n", - " api_key=deepseek_api_key, \n", - " base_url=\"https://api.deepseek.com\"\n", - ")\n", - "\n", - "response = deepseek_via_openai_client.chat.completions.create(\n", - " model=\"deepseek-chat\",\n", - " messages=prompts,\n", - ")\n", - "\n", - "print(response.choices[0].message.content)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "50b6e70f-700a-46cf-942f-659101ffeceb", - "metadata": {}, - "outputs": [], - "source": [ - "challenge = [{\"role\": \"system\", \"content\": \"You are a helpful assistant\"},\n", - " {\"role\": \"user\", \"content\": \"How many words are there in your answer to this prompt\"}]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "66d1151c-2015-4e37-80c8-16bc16367cfe", - "metadata": {}, - "outputs": [], - "source": [ - "# Using DeepSeek Chat with a harder question! And streaming results\n", - "\n", - "stream = deepseek_via_openai_client.chat.completions.create(\n", - " model=\"deepseek-chat\",\n", - " messages=challenge,\n", - " stream=True\n", - ")\n", - "\n", - "reply = \"\"\n", - "display_handle = display(Markdown(\"\"), display_id=True)\n", - "for chunk in stream:\n", - " reply += chunk.choices[0].delta.content or ''\n", - " reply = reply.replace(\"```\",\"\").replace(\"markdown\",\"\")\n", - " update_display(Markdown(reply), display_id=display_handle.display_id)\n", - "\n", - "print(\"Number of words:\", len(reply.split(\" \")))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "43a93f7d-9300-48cc-8c1a-ee67380db495", - "metadata": {}, - "outputs": [], - "source": [ - "# Using DeepSeek Reasoner - this may hit an error if DeepSeek is busy\n", - "# It's over-subscribed (as of 28-Jan-2025) but should come back online soon!\n", - "# If this fails, come back to this in a few days..\n", - "\n", - "response = deepseek_via_openai_client.chat.completions.create(\n", - " model=\"deepseek-reasoner\",\n", - " messages=challenge\n", - ")\n", - "\n", - "reasoning_content = response.choices[0].message.reasoning_content\n", - "content = response.choices[0].message.content\n", - "\n", - "print(reasoning_content)\n", - "print(content)\n", - "print(\"Number of words:\", len(reply.split(\" \")))" - ] - }, - { - "cell_type": "markdown", - "id": "c09e6b5c-6816-4cd3-a5cd-a20e4171b1a0", - "metadata": {}, - "source": [ - "## Back to OpenAI with a serious question" - ] - }, { "cell_type": "code", "execution_count": null, diff --git a/week2/day3.ipynb b/week2/day3.ipynb index bad0605..2dd936b 100644 --- a/week2/day3.ipynb +++ b/week2/day3.ipynb @@ -164,7 +164,7 @@ "system_message = \"You are a helpful assistant in a clothes store. You should try to gently encourage \\\n", "the customer to try items that are on sale. Hats are 60% off, and most other items are 50% off. \\\n", "For example, if the customer says 'I'm looking to buy a hat', \\\n", - "you could reply something like, 'Wonderful - we have lots of hats - including several that are part of our sales event.'\\\n", + "you could reply something like, 'Wonderful - we have lots of hats - including several that are part of our sales evemt.'\\\n", "Encourage the customer to buy hats if they are unsure what to get.\"" ] },