Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 13 additions & 6 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
.DS_Store
.vscode/
plants.txt
uv.lock
python-env
.venv
# Environment files
05_src/.env
05_src/.secrets

# Python cache
__pycache__/
*.py[cod]

**/utils

**/.deepeval_telemetry.txt

uv.lock
1,167 changes: 1,104 additions & 63 deletions 02_activities/assignments/assignment_1.ipynb

Large diffs are not rendered by default.

163 changes: 142 additions & 21 deletions 02_activities/assignments/assignment_2.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -72,11 +72,83 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 1,
"metadata": {
"id": "n0m48JsS-nMC"
"execution": {
"iopub.execute_input": "2026-07-17T21:58:34.906665Z",
"iopub.status.busy": "2026-07-17T21:58:34.905701Z",
"iopub.status.idle": "2026-07-17T21:58:34.915162Z",
"shell.execute_reply": "2026-07-17T21:58:34.914652Z"
}
},
"outputs": [],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0,0,1,3,1,2,4,7,8,3,3,3,10,5,7,4,7,7,12,18,6,13,11,11,7,7,4,6,8,8,4,4,5,7,3,4,2,3,0,0\n",
"0,1,2,1,2,1,3,2,2,6,10,11,5,9,4,4,7,16,8,6,18,4,12,5,12,7,11,5,11,3,3,5,4,4,5,5,1,1,0,1\n",
"0,1,1,3,3,2,6,2,5,9,5,7,4,5,4,15,5,11,9,10,19,14,12,17,7,12,11,7,4,2,10,5,4,2,2,3,2,2,1,1\n",
"0,0,2,0,4,2,2,1,6,7,10,7,9,13,8,8,15,10,10,7,17,4,4,7,6,15,6,4,9,11,3,5,6,3,3,4,2,3,2,1\n",
"0,1,1,3,3,1,3,5,2,4,4,7,6,5,3,10,8,10,6,17,9,14,9,7,13,9,12,6,7,7,9,6,3,2,2,4,2,0,1,1\n",
"0,0,1,2,2,4,2,1,6,4,7,6,6,9,9,15,4,16,18,12,12,5,18,9,5,3,10,3,12,7,8,4,7,3,5,4,4,3,2,1\n",
"0,0,2,2,4,2,2,5,5,8,6,5,11,9,4,13,5,12,10,6,9,17,15,8,9,3,13,7,8,2,8,8,4,2,3,5,4,1,1,1\n",
"0,0,1,2,3,1,2,3,5,3,7,8,8,5,10,9,15,11,18,19,20,8,5,13,15,10,6,10,6,7,4,9,3,5,2,5,3,2,2,1\n",
"0,0,0,3,1,5,6,5,5,8,2,4,11,12,10,11,9,10,17,11,6,16,12,6,8,14,6,13,10,11,4,6,4,7,6,3,2,1,0,0\n",
"0,1,1,2,1,3,5,3,5,8,6,8,12,5,13,6,13,8,16,8,18,15,16,14,12,7,3,8,9,11,2,5,4,5,1,4,1,2,0,0\n",
"0,1,0,0,4,3,3,5,5,4,5,8,7,10,13,3,7,13,15,18,8,15,15,16,11,14,12,4,10,10,4,3,4,5,5,3,3,2,2,1\n",
"0,1,0,0,3,4,2,7,8,5,2,8,11,5,5,8,14,11,6,11,9,16,18,6,12,5,4,3,5,7,8,3,5,4,5,5,4,0,1,1\n",
"0,0,2,1,4,3,6,4,6,7,9,9,3,11,6,12,4,17,13,15,13,12,8,7,4,7,12,9,5,6,5,4,7,3,5,4,2,3,0,1\n",
"0,0,0,0,1,3,1,6,6,5,5,6,3,6,13,3,10,13,9,16,15,9,11,4,6,4,11,11,12,3,5,8,7,4,6,4,1,3,0,0\n",
"0,1,2,1,1,1,4,1,5,2,3,3,10,7,13,5,7,17,6,9,12,13,10,4,12,4,6,7,6,10,8,2,5,1,3,4,2,0,2,0\n",
"0,1,1,0,1,2,4,3,6,4,7,5,5,7,5,10,7,8,18,17,9,8,12,11,11,11,14,6,11,2,10,9,5,6,5,3,4,2,2,0\n",
"0,0,0,0,2,3,6,5,7,4,3,2,10,7,9,11,12,5,12,9,13,19,14,17,5,13,8,11,5,10,9,8,7,5,3,1,4,0,2,1\n",
"0,0,0,1,2,1,4,3,6,7,4,2,12,6,12,4,14,7,8,14,13,19,6,9,12,6,4,13,6,7,2,3,6,5,4,2,3,0,1,0\n",
"0,0,2,1,2,5,4,2,7,8,4,7,11,9,8,11,15,17,11,12,7,12,7,6,7,4,13,5,7,6,6,9,2,1,1,2,2,0,1,0\n",
"0,1,2,0,1,4,3,2,2,7,3,3,12,13,11,13,6,5,9,16,9,19,16,11,8,9,14,12,11,9,6,6,6,1,1,2,4,3,1,1\n",
"0,1,1,3,1,4,4,1,8,2,2,3,12,12,10,15,13,6,5,5,18,19,9,6,11,12,7,6,3,6,3,2,4,3,1,5,4,2,2,0\n",
"0,0,2,3,2,3,2,6,3,8,7,4,6,6,9,5,12,12,8,5,12,10,16,7,14,12,5,4,6,9,8,5,6,6,1,4,3,0,2,0\n",
"0,0,0,3,4,5,1,7,7,8,2,5,12,4,10,14,5,5,17,13,16,15,13,6,12,9,10,3,3,7,4,4,8,2,6,5,1,0,1,0\n",
"0,1,1,1,1,3,3,2,6,3,9,7,8,8,4,13,7,14,11,15,14,13,5,13,7,14,9,10,5,11,5,3,5,1,1,4,4,1,2,0\n",
"0,1,1,1,2,3,5,3,6,3,7,10,3,8,12,4,12,9,15,5,17,16,5,10,10,15,7,5,3,11,5,5,6,1,1,1,1,0,2,1\n",
"0,0,2,1,3,3,2,7,4,4,3,8,12,9,12,9,5,16,8,17,7,11,14,7,13,11,7,12,12,7,8,5,7,2,2,4,1,1,1,0\n",
"0,0,1,2,4,2,2,3,5,7,10,5,5,12,3,13,4,13,7,15,9,12,18,14,16,12,3,11,3,2,7,4,8,2,2,1,3,0,1,1\n",
"0,0,1,1,1,5,1,5,2,2,4,10,4,8,14,6,15,6,12,15,15,13,7,17,4,5,11,4,8,7,9,4,5,3,2,5,4,3,2,1\n",
"0,0,2,2,3,4,6,3,7,6,4,5,8,4,7,7,6,11,12,19,20,18,9,5,4,7,14,8,4,3,7,7,8,3,5,4,1,3,1,0\n",
"0,0,0,1,4,4,6,3,8,6,4,10,12,3,3,6,8,7,17,16,14,15,17,4,14,13,4,4,12,11,6,9,5,5,2,5,2,1,0,1\n",
"0,1,1,0,3,2,4,6,8,6,2,3,11,3,14,14,12,8,8,16,13,7,6,9,15,7,6,4,10,8,10,4,2,6,5,5,2,3,2,1\n",
"0,0,2,3,3,4,5,3,6,7,10,5,10,13,14,3,8,10,9,9,19,15,15,6,8,8,11,5,5,7,3,6,6,4,5,2,2,3,0,0\n",
"0,1,2,2,2,3,6,6,6,7,6,3,11,12,13,15,15,10,14,11,11,8,6,12,10,5,12,7,7,11,5,8,5,2,5,5,2,0,2,1\n",
"0,0,2,1,3,5,6,7,5,8,9,3,12,10,12,4,12,9,13,10,10,6,10,11,4,15,13,7,3,4,2,9,7,2,4,2,1,2,1,1\n",
"0,0,1,2,4,1,5,5,2,3,4,8,8,12,5,15,9,17,7,19,14,18,12,17,14,4,13,13,8,11,5,6,6,2,3,5,2,1,1,1\n",
"0,0,0,3,1,3,6,4,3,4,8,3,4,8,3,11,5,7,10,5,15,9,16,17,16,3,8,9,8,3,3,9,5,1,6,5,4,2,2,0\n",
"0,1,2,2,2,5,5,1,4,6,3,6,5,9,6,7,4,7,16,7,16,13,9,16,12,6,7,9,10,3,6,4,5,4,6,3,4,3,2,1\n",
"0,1,1,2,3,1,5,1,2,2,5,7,6,6,5,10,6,7,17,13,15,16,17,14,4,4,10,10,10,11,9,9,5,4,4,2,1,0,1,0\n",
"0,1,0,3,2,4,1,1,5,9,10,7,12,10,9,15,12,13,13,6,19,9,10,6,13,5,13,6,7,2,5,5,2,1,1,1,1,3,0,1\n",
"0,1,1,3,1,1,5,5,3,7,2,2,3,12,4,6,8,15,16,16,15,4,14,5,13,10,7,10,6,3,2,3,6,3,3,5,4,3,2,1\n",
"0,0,0,2,2,1,3,4,5,5,6,5,5,12,13,5,7,5,11,15,18,7,9,10,14,12,11,9,10,3,2,9,6,2,2,5,3,0,0,1\n",
"0,0,1,3,3,1,2,1,8,9,2,8,10,3,8,6,10,13,11,17,19,6,4,11,6,12,7,5,5,4,4,8,2,6,6,4,2,2,0,0\n",
"0,1,1,3,4,5,2,1,3,7,9,6,10,5,8,15,11,12,15,6,12,16,6,4,14,3,12,9,6,11,5,8,5,5,6,1,2,1,2,0\n",
"0,0,1,3,1,4,3,6,7,8,5,7,11,3,6,11,6,10,6,19,18,14,6,10,7,9,8,5,8,3,10,2,5,1,5,4,2,1,0,1\n",
"0,1,1,3,3,4,4,6,3,4,9,9,7,6,8,15,12,15,6,11,6,18,5,14,15,12,9,8,3,6,10,6,8,7,2,5,4,3,1,1\n",
"0,1,2,2,4,3,1,4,8,9,5,10,10,3,4,6,7,11,16,6,14,9,11,10,10,7,10,8,8,4,5,8,4,4,5,2,4,1,1,0\n",
"0,0,2,3,4,5,4,6,2,9,7,4,9,10,8,11,16,12,15,17,19,10,18,13,15,11,8,4,7,11,6,7,6,5,1,3,1,0,0,0\n",
"0,1,1,3,1,4,6,2,8,2,10,3,11,9,13,15,5,15,6,10,10,5,14,15,12,7,4,5,11,4,6,9,5,6,1,1,2,1,2,1\n",
"0,0,1,3,2,5,1,2,7,6,6,3,12,9,4,14,4,6,12,9,12,7,11,7,16,8,13,6,7,6,10,7,6,3,1,5,4,3,0,0\n",
"0,0,1,2,3,4,5,7,5,4,10,5,12,12,5,4,7,9,18,16,16,10,15,15,10,4,3,7,5,9,4,6,2,4,1,4,2,2,2,1\n",
"0,1,2,1,1,3,5,3,6,3,10,10,11,10,13,10,13,6,6,14,5,4,5,5,9,4,12,7,7,4,7,9,3,3,6,3,4,1,2,0\n",
"0,1,2,2,3,5,2,4,5,6,8,3,5,4,3,15,15,12,16,7,20,15,12,8,9,6,12,5,8,3,8,5,4,1,3,2,1,3,1,0\n",
"0,0,0,2,4,4,5,3,3,3,10,4,4,4,14,11,15,13,10,14,11,17,9,11,11,7,10,12,10,10,10,8,7,5,2,2,4,1,2,1\n",
"0,0,2,1,1,4,4,7,2,9,4,10,12,7,6,6,11,12,9,15,15,6,6,13,5,12,9,6,4,7,7,6,5,4,1,4,2,2,2,1\n",
"0,1,2,1,1,4,5,4,4,5,9,7,10,3,13,13,8,9,17,16,16,15,12,13,5,12,10,9,11,9,4,5,5,2,2,5,1,0,0,1\n",
"0,0,1,3,2,3,6,4,5,7,2,4,11,11,3,8,8,16,5,13,16,5,8,8,6,9,10,10,9,3,3,5,3,5,4,5,3,3,0,1\n",
"0,1,1,2,2,5,1,7,4,2,5,5,4,6,6,4,16,11,14,16,14,14,8,17,4,14,13,7,6,3,7,7,5,6,3,4,2,2,1,1\n",
"0,1,1,1,4,1,6,4,6,3,6,5,6,4,14,13,13,9,12,19,9,10,15,10,9,10,10,7,5,6,8,6,6,4,3,5,2,1,1,1\n",
"0,0,0,1,4,5,6,3,8,7,9,10,8,6,5,12,15,5,10,5,8,13,18,17,14,9,13,4,10,11,10,8,8,6,5,5,2,0,2,0\n",
"0,0,1,0,3,2,5,4,8,2,9,3,3,10,12,9,14,11,13,8,6,18,11,9,13,11,8,5,5,2,8,5,3,5,4,1,3,1,1,0\n"
]
}
],
"source": [
"all_paths = [\n",
" \"../../05_src/data/assignment_2_data/inflammation_01.csv\",\n",
Expand All @@ -95,8 +167,11 @@
"\n",
"with open(all_paths[0], 'r') as f:\n",
" # YOUR CODE HERE: Use the readline() or readlines() method to read the .csv file into a variable\n",
" \n",
" # YOUR CODE HERE: Iterate through the variable using a for loop and print each row for inspection"
" lines = f.readlines()\n",
"\n",
" # YOUR CODE HERE: Iterate through the variable using a for loop and print each row for inspection\n",
" for line in lines:\n",
" print(line.strip())"
]
},
{
Expand Down Expand Up @@ -130,9 +205,14 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 2,
"metadata": {
"id": "82-bk4CBB1w4"
"execution": {
"iopub.execute_input": "2026-07-17T21:58:34.935588Z",
"iopub.status.busy": "2026-07-17T21:58:34.935588Z",
"iopub.status.idle": "2026-07-17T21:58:35.160130Z",
"shell.execute_reply": "2026-07-17T21:58:35.160130Z"
}
},
"outputs": [],
"source": [
Expand All @@ -145,12 +225,15 @@
" # Implement the specific operation based on the 'operation' argument\n",
" if operation == 'mean':\n",
" # YOUR CODE HERE: Calculate the mean (average) number of flare-ups for each patient\n",
" summary_values = np.mean(data, axis=ax)\n",
"\n",
" elif operation == 'max':\n",
" # YOUR CODE HERE: Calculate the maximum number of flare-ups experienced by each patient\n",
" summary_values = np.max(data, axis=ax)\n",
"\n",
" elif operation == 'min':\n",
" # YOUR CODE HERE: Calculate the minimum number of flare-ups experienced by each patient\n",
" summary_values = np.min(data, axis=ax)\n",
"\n",
" else:\n",
" # If the operation is not one of the expected values, raise an error\n",
Expand All @@ -161,11 +244,24 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 3,
"metadata": {
"id": "3TYo0-1SDLrd"
"execution": {
"iopub.execute_input": "2026-07-17T21:58:35.160130Z",
"iopub.status.busy": "2026-07-17T21:58:35.160130Z",
"iopub.status.idle": "2026-07-17T21:58:35.165132Z",
"shell.execute_reply": "2026-07-17T21:58:35.165132Z"
}
},
"outputs": [],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"60\n"
]
}
],
"source": [
"# Test it out on the data file we read in and make sure the size is what we expect i.e., 60\n",
"# Your output for the first file should be 60\n",
Expand Down Expand Up @@ -228,9 +324,14 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 4,
"metadata": {
"id": "_svDiRkdIwiT"
"execution": {
"iopub.execute_input": "2026-07-17T21:58:35.166812Z",
"iopub.status.busy": "2026-07-17T21:58:35.166812Z",
"iopub.status.idle": "2026-07-17T21:58:35.170306Z",
"shell.execute_reply": "2026-07-17T21:58:35.170306Z"
}
},
"outputs": [],
"source": [
Expand All @@ -251,25 +352,45 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 5,
"metadata": {
"id": "LEYPM5v4JT0i"
"execution": {
"iopub.execute_input": "2026-07-17T21:58:35.172313Z",
"iopub.status.busy": "2026-07-17T21:58:35.172313Z",
"iopub.status.idle": "2026-07-17T21:58:35.175211Z",
"shell.execute_reply": "2026-07-17T21:58:35.175211Z"
}
},
"outputs": [],
"source": [
"# Define your function `detect_problems` here\n",
"\n",
"def detect_problems(file_path):\n",
" #YOUR CODE HERE: Use patient_summary() to get the means and check_zeros() to check for zeros in the means\n",
"\n",
" return"
" #YOUR CODE HERE: Use patient_summary() to get the means and check_zeros() to check for zeros in the means\n",
" means = patient_summary(file_path, 'mean')\n",
" return check_zeros(means)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"execution_count": 6,
"metadata": {
"execution": {
"iopub.execute_input": "2026-07-17T21:58:35.177227Z",
"iopub.status.busy": "2026-07-17T21:58:35.177227Z",
"iopub.status.idle": "2026-07-17T21:58:35.180759Z",
"shell.execute_reply": "2026-07-17T21:58:35.180247Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"False\n"
]
}
],
"source": [
"# Test out your code here\n",
"# Your output for the first file should be False\n",
Expand Down Expand Up @@ -327,7 +448,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.8"
"version": "3.11.15"
}
},
"nbformat": 4,
Expand Down
55 changes: 55 additions & 0 deletions 02_activities/assignments/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
[project]
name = "deploying-ai-env"
version = "0.1.0"
description = "Package dependencies for the course Deploying AI taught at the Data Sciences Institute of the University of Toronto."
readme = "README.md"
requires-python = ">=3.11"
dependencies = [
"agentops>=0.4.21",
"autogen>=0.9.9",
"chromadb>=1.1.0",
"deepeval>=3.3.9",
"dspy>=3.0.3",
"fastapi>=0.118.0",
"gradio>=5.49.0",
"gradio-tools>=0.0.9",
"ipykernel>=6.30.1",
"ipywidgets>=8.1.7",
"langchain[openai]>=1.0",
"langchain-community>=0.3.30",
"langchain-openai>=0.3.34",
"langgraph>=0.6.8",
"matplotlib>=3.10.6",
"openai>=2.0.0",
"openai-gradio>=0.0.4",
"py-trees>=2.3.0",
"pydantic>=2.11.9",
"python-dotenv",
"scikit-learn>=1.7.2",
"streamlit>=1.50.0",
"unstructured>=0.18.15",
"uvicorn>=0.37.0",
"requests>=2.32.5",
"jq",
"sentence-transformers>=5.1.1",
"tqdm>=4.67.1",
"hf-xet>=1.1.10",
"adjusttext>=1.3.0",
"seaborn>=0.13.2",
"sqlalchemy>=2.0.43",
"psycopg2>=2.9.11; platform_system!='Darwin'",
"psycopg2-binary==2.9.11; platform_system=='Darwin'",
"fastmcp>=2.12.5",
"pypdf>=6.1.1",
"numexpr>=2.14.1",
"langchain-tavily>=0.2.12",
"ngrok>=1.4.0",
"langchain-mcp-adapters>=0.1.12",
"langgraph-api>=0.4.48",
"langsmith>=0.4.31",
"langchain-text-splitters>=1.1.0",
"torch==2.2.2; platform_system=='Darwin' and platform_machine=='x86_64'",
"torch==2.8.0; platform_system=='Darwin' and platform_machine=='arm64'",
"torch==2.8.0; platform_system!='Darwin'",
"deepagents>=0.6.10",
]
Binary file added 05_src/documents/ai_report_2025.pdf
Binary file not shown.
51 changes: 46 additions & 5 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,14 +1,55 @@
[project]
name = "python-env"
name = "deploying-ai-env"
version = "0.1.0"
description = "Package dependencies for the course Deploying AI taught at the Data Sciences Institute of the University of Toronto."
readme = "README.md"
requires-python = ">=3.11"
dependencies = [
"agentops>=0.4.21",
"autogen>=0.9.9",
"chromadb>=1.1.0",
"deepeval>=3.3.9",
"dspy>=3.0.3",
"fastapi>=0.118.0",
"gradio>=5.49.0",
"gradio-tools>=0.0.9",
"ipykernel>=6.30.1",
"kaleido>=1.1.0",
"ipywidgets>=8.1.7",
"langchain[openai]>=1.0",
"langchain-community>=0.3.30",
"langchain-openai>=0.3.34",
"langgraph>=0.6.8",
"matplotlib>=3.10.6",
"numpy>=2.3.3",
"pandas>=2.3.2",
"plotly>=6.3.0",
"openai>=2.0.0",
"openai-gradio>=0.0.4",
"py-trees>=2.3.0",
"pydantic>=2.11.9",
"python-dotenv",
"scikit-learn>=1.7.2",
"streamlit>=1.50.0",
"unstructured>=0.18.15",
"uvicorn>=0.37.0",
"requests>=2.32.5",
"jq",
"sentence-transformers>=5.1.1",
"tqdm>=4.67.1",
"hf-xet>=1.1.10",
"adjusttext>=1.3.0",
"seaborn>=0.13.2",
"sqlalchemy>=2.0.43",
"psycopg2>=2.9.11; platform_system!='Darwin'",
"psycopg2-binary==2.9.11; platform_system=='Darwin'",
"fastmcp>=2.12.5",
"pypdf>=6.1.1",
"numexpr>=2.14.1",
"langchain-tavily>=0.2.12",
"ngrok>=1.4.0",
"langchain-mcp-adapters>=0.1.12",
"langgraph-api>=0.4.48",
"langsmith>=0.4.31",
"langchain-text-splitters>=1.1.0",
"torch==2.2.2; platform_system=='Darwin' and platform_machine=='x86_64'",
"torch==2.8.0; platform_system=='Darwin' and platform_machine=='arm64'",
"torch==2.8.0; platform_system!='Darwin'",
"deepagents>=0.6.10",
]