207 lines
5.9 KiB
Plaintext
207 lines
5.9 KiB
Plaintext
{
|
|
"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
|
|
}
|