forked from ed-donner/llm_engineering
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request ed-donner#127 from esarijal/community-contribution…
…s-branch Add contributions for day1 and day2 in community-contributions
- Loading branch information
Showing
2 changed files
with
220 additions
and
0 deletions.
There are no files selected for viewing
127 changes: 127 additions & 0 deletions
127
week1/community-contributions/day1-email-reviewer-in-Bahasa.ipynb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,127 @@ | ||
{ | ||
"cells": [ | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "0ee39d65-f27d-416d-8b46-43d15aebe752", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"# Below is a sample for email reviewer using Bahasa Indonesia. " | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "f9fd62af-9b14-490b-8d0b-990da96101bf", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"# Step 1: Create your prompts\n", | ||
"\n", | ||
"system_prompt = \"Anda adalah seorang Asisten untuk menganalisa email berdasarkan user prompt yang nanti akan diberikan. Summarize the email and give me a tone about that email\"\n", | ||
"user_prompt = \"\"\"\n", | ||
" Subject: Permintaan Pertemuan\n", | ||
"\n", | ||
"Yang terhormat Bapak Rijal,\n", | ||
"\n", | ||
"Saya ingin meminta waktu Anda untuk membahas Generative AI untuk bisnis. Apakah Anda tersedia pada besok pukul 19:00? \n", | ||
"Jika tidak, mohon beri tahu waktu yang lebih sesuai bagi Anda.\n", | ||
"\n", | ||
"Terima kasih atas perhatian Anda.\n", | ||
"\n", | ||
"Salam,\n", | ||
"\n", | ||
"Mentari\n", | ||
"\"\"\"\n", | ||
"\n", | ||
"# Step 2: Make the messages list\n", | ||
"\n", | ||
"messages = [\n", | ||
" {\"role\": \"system\", \"content\": system_prompt},\n", | ||
" {\"role\": \"user\", \"content\": user_prompt}\n", | ||
" ] # fill this in\n", | ||
"\n", | ||
"# Step 3: Call OpenAI\n", | ||
"\n", | ||
"response = openai.chat.completions.create(\n", | ||
" model = \"gpt-4o-mini\",\n", | ||
" messages = messages\n", | ||
" )\n", | ||
"\n", | ||
"# Step 4: print the result\n", | ||
"\n", | ||
"print(response.choices[0].message.content)" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "d10208fa-02d8-41a0-b9bb-0bf30f237f25", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"# Step 1: Create your prompts\n", | ||
"\n", | ||
"system_prompt = \"Anda adalah seorang Asisten untuk menganalisa email berdasarkan user prompt yang nanti akan diberikan. Summarize the email and give me a tone about that email\"\n", | ||
"user_prompt = \"\"\"\n", | ||
" Subject: Feedback terkait Bapak\n", | ||
"\n", | ||
"Yang terhormat Bapak Rijal,\n", | ||
"\n", | ||
"Saya ingin memberikan sedikit feedback untuk BBapak.\n", | ||
"\n", | ||
"Kemampuan Anda dalam memimpin tim ini mampu membawa saya dan rekan lainnya untuk mengerahkan semua kemampuan saya agar jadi lebih baik.\n", | ||
"Selama ini saya cukup senang bekerja dengan Anda karena memberikan saya peluang untuk mencoba banyak hal baru. Tapi ada beberapa kekhawatiran yang mau saya sampaikan, terutama terkait target yang perlu dicapai oleh tim. Saya pikir melihat performa ke belakang, target yang ditentukan harus lebih realistis lagi.\n", | ||
"Saya beruntung bisa berkesempatan bekerja dengan Anda sehingga banyak ilmu yang saya dapat. Kira-kira untuk ke depannya, hal apa lagi yang bisa tim ini tingkatkan agar kita bisa mencapai target yang lebih baik?\n", | ||
"Selama ini, banyak terjadi miskomunikasi dalam pekerjaan. Dan menurut saya salah satunya karena arahan yang Anda berikan kurang jelas dan kurang ditangkap sepenuhnya oleh anggota yang lain. Saya dan tim berharap ke depan bisa mendapatkan arahan yang lebih jelas dan satu arah.\n", | ||
"\n", | ||
"Terima kasih atas perhatian Anda.\n", | ||
"\n", | ||
"Salam,\n", | ||
"\n", | ||
"Mentari\n", | ||
"\"\"\"\n", | ||
"\n", | ||
"# Step 2: Make the messages list\n", | ||
"\n", | ||
"messages = [\n", | ||
" {\"role\": \"system\", \"content\": system_prompt},\n", | ||
" {\"role\": \"user\", \"content\": user_prompt}\n", | ||
" ] # fill this in\n", | ||
"\n", | ||
"# Step 3: Call OpenAI\n", | ||
"\n", | ||
"response = openai.chat.completions.create(\n", | ||
" model = \"gpt-4o-mini\",\n", | ||
" messages = messages\n", | ||
" )\n", | ||
"\n", | ||
"# Step 4: print the result\n", | ||
"\n", | ||
"print(response.choices[0].message.content)" | ||
] | ||
} | ||
], | ||
"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.11" | ||
} | ||
}, | ||
"nbformat": 4, | ||
"nbformat_minor": 5 | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
{ | ||
"cells": [ | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "fa4447be-7825-45d9-a6a5-ed41f2500533", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"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", | ||
"\n", | ||
"openai = OpenAI(base_url='http://localhost:11434/v1', api_key='ollama')\n", | ||
"MODEL = \"llama3.2\"\n", | ||
"\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)\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; 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\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.\"\n", | ||
"\n", | ||
"def messages_for(website):\n", | ||
" return [\n", | ||
" {\"role\": \"system\", \"content\": system_prompt},\n", | ||
" {\"role\": \"user\", \"content\": user_prompt_for(website)}\n", | ||
" ] \n", | ||
"\n", | ||
"def summarize(url):\n", | ||
" website = Website(url)\n", | ||
" response = openai.chat.completions.create(\n", | ||
" model = MODEL,\n", | ||
" messages = messages_for(website)\n", | ||
" )\n", | ||
" return response.choices[0].message.content\n", | ||
"\n", | ||
"def display_summary(url):\n", | ||
" summary = summarize(url)\n", | ||
" display(Markdown(summary))\n", | ||
"\n", | ||
"\n", | ||
"display_summary(\"https://esarijal.my.id\")" | ||
] | ||
} | ||
], | ||
"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.11" | ||
} | ||
}, | ||
"nbformat": 4, | ||
"nbformat_minor": 5 | ||
} |