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

{
"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
}