Browse Source

Finished week1 and started on week2

pull/241/head
anderson.dang 3 months ago
parent
commit
0648377247
  1. 42
      week1/day2 EXERCISE.ipynb
  2. 2
      week1/day5.ipynb
  3. 134
      week2/day1.ipynb
  4. 2
      week2/day3.ipynb

42
week1/day2 EXERCISE.ipynb

@ -203,46 +203,6 @@
"print(response.choices[0].message.content)" "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 <think> 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", "cell_type": "markdown",
"id": "1622d9bb-5c68-4d4e-9ca4-b492c751f898", "id": "1622d9bb-5c68-4d4e-9ca4-b492c751f898",
@ -256,7 +216,7 @@
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"id": "6de38216-6d1c-48c4-877b-86d403f4e0f8", "id": "402d5686-4e76-4110-b65a-b3906c35c0a4",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [] "source": []

2
week1/day5.ipynb

@ -334,7 +334,7 @@
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"create_brochure(\"HuggingFace\", \"https://huggingface.co\")" "create_brochure(\"HuggingFace\", \"https://huggingface.com\")"
] ]
}, },
{ {

134
week2/day1.ipynb

@ -69,19 +69,12 @@
"For Anthropic, visit https://console.anthropic.com/ \n", "For Anthropic, visit https://console.anthropic.com/ \n",
"For Google, visit https://ai.google.dev/gemini-api \n", "For Google, visit https://ai.google.dev/gemini-api \n",
"\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", "When you get your API keys, you need to set them as environment variables by adding them to your `.env` file.\n",
"\n", "\n",
"```\n", "```\n",
"OPENAI_API_KEY=xxxx\n", "OPENAI_API_KEY=xxxx\n",
"ANTHROPIC_API_KEY=xxxx\n", "ANTHROPIC_API_KEY=xxxx\n",
"GOOGLE_API_KEY=xxxx\n", "GOOGLE_API_KEY=xxxx\n",
"DEEPSEEK_API_KEY=xxxx\n",
"```\n", "```\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." "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", "# Load environment variables in a file called .env\n",
"# Print the key prefixes to help with any debugging\n", "# Print the key prefixes to help with any debugging\n",
"\n", "\n",
"load_dotenv(override=True)\n", "load_dotenv()\n",
"openai_api_key = os.getenv('OPENAI_API_KEY')\n", "openai_api_key = os.getenv('OPENAI_API_KEY')\n",
"anthropic_api_key = os.getenv('ANTHROPIC_API_KEY')\n", "anthropic_api_key = os.getenv('ANTHROPIC_API_KEY')\n",
"google_api_key = os.getenv('GOOGLE_API_KEY')\n", "google_api_key = os.getenv('GOOGLE_API_KEY')\n",
@ -279,7 +272,7 @@
"# Also adding max_tokens\n", "# Also adding max_tokens\n",
"\n", "\n",
"message = claude.messages.create(\n", "message = claude.messages.create(\n",
" model=\"claude-3-5-sonnet-latest\",\n", " model=\"claude-3-5-sonnet-20240620\",\n",
" max_tokens=200,\n", " max_tokens=200,\n",
" temperature=0.7,\n", " temperature=0.7,\n",
" system=system_message,\n", " system=system_message,\n",
@ -302,7 +295,7 @@
"# Now let's add in streaming back results\n", "# Now let's add in streaming back results\n",
"\n", "\n",
"result = claude.messages.stream(\n", "result = claude.messages.stream(\n",
" model=\"claude-3-5-sonnet-latest\",\n", " model=\"claude-3-5-sonnet-20240620\",\n",
" max_tokens=200,\n", " max_tokens=200,\n",
" temperature=0.7,\n", " temperature=0.7,\n",
" system=system_message,\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", "# If that happens to you, please skip this cell and use the next cell instead - an alternative approach.\n",
"\n", "\n",
"gemini = google.generativeai.GenerativeModel(\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", " system_instruction=system_message\n",
")\n", ")\n",
"response = gemini.generate_content(user_prompt)\n", "response = gemini.generate_content(user_prompt)\n",
@ -351,129 +344,12 @@
")\n", ")\n",
"\n", "\n",
"response = gemini_via_openai_client.chat.completions.create(\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", " messages=prompts\n",
")\n", ")\n",
"print(response.choices[0].message.content)" "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", "cell_type": "code",
"execution_count": null, "execution_count": null,

2
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", "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", "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", "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.\"" "Encourage the customer to buy hats if they are unsure what to get.\""
] ]
}, },

Loading…
Cancel
Save