From the uDemy course on LLM engineering.
https://www.udemy.com/course/llm-engineering-master-ai-and-large-language-models
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.
206 lines
5.9 KiB
206 lines
5.9 KiB
{ |
|
"cells": [ |
|
{ |
|
"cell_type": "code", |
|
"execution_count": 208, |
|
"id": "f61139a1-40e1-4273-b9a6-5a0a9d63a9bd", |
|
"metadata": {}, |
|
"outputs": [], |
|
"source": [ |
|
"import requests\n", |
|
"import json\n", |
|
"from reportlab.lib.pagesizes import letter\n", |
|
"from reportlab.pdfgen import canvas\n", |
|
"from IPython.display import display, FileLink\n", |
|
"from IPython.display import display, HTML, FileLink\n", |
|
"from reportlab.lib.pagesizes import A4" |
|
] |
|
}, |
|
{ |
|
"cell_type": "code", |
|
"execution_count": 80, |
|
"id": "e0858b96-fd41-4911-a333-814e4ed23279", |
|
"metadata": {}, |
|
"outputs": [ |
|
{ |
|
"name": "stdout", |
|
"output_type": "stream", |
|
"text": [ |
|
"Collecting reportlab\n", |
|
" Downloading reportlab-4.2.5-py3-none-any.whl.metadata (1.5 kB)\n", |
|
"Requirement already satisfied: pillow>=9.0.0 in c:\\users\\legion\\anaconda3\\envs\\to_do_list\\lib\\site-packages (from reportlab) (11.0.0)\n", |
|
"Collecting chardet (from reportlab)\n", |
|
" Downloading chardet-5.2.0-py3-none-any.whl.metadata (3.4 kB)\n", |
|
"Downloading reportlab-4.2.5-py3-none-any.whl (1.9 MB)\n", |
|
" ---------------------------------------- 0.0/1.9 MB ? eta -:--:--\n", |
|
" ---------------- ----------------------- 0.8/1.9 MB 6.7 MB/s eta 0:00:01\n", |
|
" ---------------------------------------- 1.9/1.9 MB 11.9 MB/s eta 0:00:00\n", |
|
"Downloading chardet-5.2.0-py3-none-any.whl (199 kB)\n", |
|
"Installing collected packages: chardet, reportlab\n", |
|
"Successfully installed chardet-5.2.0 reportlab-4.2.5\n" |
|
] |
|
} |
|
], |
|
"source": [ |
|
"!pip install reportlab" |
|
] |
|
}, |
|
{ |
|
"cell_type": "code", |
|
"execution_count": 220, |
|
"id": "62cc9d37-c801-4e8a-ad2c-7b1450725a10", |
|
"metadata": {}, |
|
"outputs": [], |
|
"source": [ |
|
"OLLAMA_API = \"http://localhost:11434/api/chat\"\n", |
|
"HEADERS = {\"Content-Type\":\"application/json\"}\n", |
|
"MODEL = \"llama3.2\"" |
|
] |
|
}, |
|
{ |
|
"cell_type": "code", |
|
"execution_count": 249, |
|
"id": "525a81e7-30f8-4db7-bc8d-29948195bd4f", |
|
"metadata": {}, |
|
"outputs": [], |
|
"source": [ |
|
"system_prompt = \"\"\"You are a to-do list generator. Based on the user's input, you will create a clear and descriptive to-do\n", |
|
"list using bullet points. Only generate the to-do list as bullet points with some explaination and time fraame only if asked for and nothing else. \n", |
|
"Be a little descriptive.\"\"\"" |
|
] |
|
}, |
|
{ |
|
"cell_type": "code", |
|
"execution_count": 315, |
|
"id": "7fca3303-3add-468a-a6bd-be7a4d72c811", |
|
"metadata": {}, |
|
"outputs": [], |
|
"source": [ |
|
"def generate_to_do_list(task_description):\n", |
|
" payload = {\n", |
|
" \"model\": MODEL,\n", |
|
" \"messages\": [\n", |
|
" {\"role\": \"system\", \"content\": system_prompt},\n", |
|
" {\"role\": \"user\", \"content\": task_description}\n", |
|
" ],\n", |
|
" \"stream\": False\n", |
|
" }\n", |
|
"\n", |
|
" response = requests.post(OLLAMA_API, json=payload, headers=HEADERS)\n", |
|
"\n", |
|
" if response.status_code == 200:\n", |
|
" try:\n", |
|
" json_response = response.json()\n", |
|
" to_do_list = json_response.get(\"message\", {}).get(\"content\", \"No to-do list found.\")\n", |
|
" \n", |
|
" formatted_output = \"Your To-Do List:\\n\\n\" + to_do_list\n", |
|
" file_name = \"to_do_list.txt\"\n", |
|
" \n", |
|
" with open(file_name, \"w\", encoding=\"utf-8\") as file:\n", |
|
" file.write(formatted_output)\n", |
|
"\n", |
|
" return file_name\n", |
|
" \n", |
|
" except Exception as e:\n", |
|
" return f\"Error parsing JSON: {e}\"\n", |
|
" else:\n", |
|
" return f\"Error: {response.status_code} - {response.text}\"" |
|
] |
|
}, |
|
{ |
|
"cell_type": "code", |
|
"execution_count": 316, |
|
"id": "d45d6c7e-0e89-413e-8f30-e4975ea6d043", |
|
"metadata": {}, |
|
"outputs": [ |
|
{ |
|
"name": "stdin", |
|
"output_type": "stream", |
|
"text": [ |
|
"Enter the task description of the to-do list: Give me a 4-week to-do list plan for a wedding reception party.\n" |
|
] |
|
} |
|
], |
|
"source": [ |
|
"task_description = input(\"Enter the task description of the to-do list:\")" |
|
] |
|
}, |
|
{ |
|
"cell_type": "code", |
|
"execution_count": 317, |
|
"id": "5493da44-e254-4d06-b973-a8069c2fc625", |
|
"metadata": { |
|
"scrolled": true |
|
}, |
|
"outputs": [], |
|
"source": [ |
|
"result = generate_to_do_list(task_description)" |
|
] |
|
}, |
|
{ |
|
"cell_type": "code", |
|
"execution_count": 318, |
|
"id": "5e95c722-ce1a-4630-b21a-1e00e7ba6ab9", |
|
"metadata": {}, |
|
"outputs": [ |
|
{ |
|
"data": { |
|
"text/html": [ |
|
"<p>You can download your to-do list by clicking the link below:</p>" |
|
], |
|
"text/plain": [ |
|
"<IPython.core.display.HTML object>" |
|
] |
|
}, |
|
"metadata": {}, |
|
"output_type": "display_data" |
|
}, |
|
{ |
|
"data": { |
|
"text/html": [ |
|
"<a href='to_do_list.txt' target='_blank'>to_do_list.txt</a><br>" |
|
], |
|
"text/plain": [ |
|
"C:\\Users\\Legion\\to-do list using ollama\\to_do_list.txt" |
|
] |
|
}, |
|
"metadata": {}, |
|
"output_type": "display_data" |
|
} |
|
], |
|
"source": [ |
|
"display(HTML(\"<p>You can download your to-do list by clicking the link below:</p>\"))\n", |
|
"display(FileLink(result))" |
|
] |
|
}, |
|
{ |
|
"cell_type": "code", |
|
"execution_count": null, |
|
"id": "f3d0a44e-bca4-4944-8593-1761c2f73a70", |
|
"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.11" |
|
} |
|
}, |
|
"nbformat": 4, |
|
"nbformat_minor": 5 |
|
}
|
|
|