{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "efb41c9e450b5a29",
   "metadata": {},
   "source": [
    "# Cognee GraphRAG Simple Example"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f51e92e9fdcf77b7",
   "metadata": {},
   "source": [
    " By default cognee uses OpenAI's gpt-5-mini LLM model.\n",
    "\n",
    " Provide your OpenAI LLM API KEY in the step bellow. Here's a guide on how to get your [OpenAI API key](https://help.openai.com/en/articles/4936850-where-do-i-find-my-openai-api-key)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "initial_id",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-30T12:08:22.650719Z",
     "start_time": "2025-06-30T12:08:22.646047Z"
    }
   },
   "outputs": [],
   "source": [
    "import os\n",
    "\n",
    "if \"LLM_API_KEY\" not in os.environ:\n",
    "    os.environ[\"LLM_API_KEY\"] = \"YOUR KEY\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f1fec64bc573bb",
   "metadata": {},
   "source": [
    "In this step we'll get the location of the file to store and process."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "5805c346f03d8070",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-30T12:08:23.557926Z",
     "start_time": "2025-06-30T12:08:23.555854Z"
    }
   },
   "outputs": [],
   "source": [
    "current_directory = os.getcwd()\n",
    "file_path = os.path.join(current_directory, \"data\", \"alice_in_wonderland.txt\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2826a80ca1ad0438",
   "metadata": {},
   "source": [
    "Give the file location to cognee to save it and process its contents"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "875763366723ee48",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      "\u001b[2m2025-10-22T17:59:27.024379\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mDeleted old log file: /Users/daulet/Desktop/dev/cognee-claude/logs/2025-10-22_18-22-03.log\u001b[0m [\u001b[0m\u001b[1m\u001b[34mcognee.shared.logging_utils\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:27.837430\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mLogging initialized           \u001b[0m [\u001b[0m\u001b[1m\u001b[34mcognee.shared.logging_utils\u001b[0m]\u001b[0m \u001b[36mcognee_version\u001b[0m=\u001b[35m0.3.6-local\u001b[0m \u001b[36mdatabase_path\u001b[0m=\u001b[35m/Users/daulet/Desktop/dev/cognee-claude/cognee/.cognee_system/databases\u001b[0m \u001b[36mgraph_database_name\u001b[0m=\u001b[35m\u001b[0m \u001b[36mos_info\u001b[0m=\u001b[35m'Darwin 24.5.0 (Darwin Kernel Version 24.5.0: Tue Apr 22 19:54:43 PDT 2025; root:xnu-11417.121.6~2/RELEASE_ARM64_T8132)'\u001b[0m \u001b[36mpython_version\u001b[0m=\u001b[35m3.10.11\u001b[0m \u001b[36mrelational_config\u001b[0m=\u001b[35mcognee_db\u001b[0m \u001b[36mstructlog_version\u001b[0m=\u001b[35m25.4.0\u001b[0m \u001b[36mvector_config\u001b[0m=\u001b[35mlancedb\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:27.837973\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mDatabase storage: /Users/daulet/Desktop/dev/cognee-claude/cognee/.cognee_system/databases\u001b[0m [\u001b[0m\u001b[1m\u001b[34mcognee.shared.logging_utils\u001b[0m]\u001b[0m\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.3.6-local\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      "\u001b[2m2025-10-22T17:59:31.188799\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mLoaded JSON extension         \u001b[0m [\u001b[0m\u001b[1m\u001b[34mcognee.shared.logging_utils\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:31.200442\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mOntology file 'None' not found. No owl ontology will be attached to the graph.\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:31.220787\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mPipeline run started: `eea87f6e-3943-552c-b2fe-904ac1e367f0`\u001b[0m [\u001b[0m\u001b[1m\u001b[34mrun_tasks_with_telemetry()\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:31.221350\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mCoroutine task started: `classify_documents`\u001b[0m [\u001b[0m\u001b[1m\u001b[34mrun_tasks_base\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:31.221818\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mCoroutine task started: `check_permissions_on_dataset`\u001b[0m [\u001b[0m\u001b[1m\u001b[34mrun_tasks_base\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:31.227285\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mAsync Generator task started: `extract_chunks_from_documents`\u001b[0m [\u001b[0m\u001b[1m\u001b[34mrun_tasks_base\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:31.328876\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mCoroutine task started: `extract_graph_from_data`\u001b[0m [\u001b[0m\u001b[1m\u001b[34mrun_tasks_base\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.869563\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'person' in category 'classes'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.871104\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'alice' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.871562\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'white rabbit' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.872024\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'animal' in category 'classes'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.872453\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'dinah' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.872814\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'location' in category 'classes'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.873190\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'pool of tears' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.873564\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'garden' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.873938\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'rabbit hole' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.874286\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'object' in category 'classes'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.874576\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'glass table' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.874819\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'golden key' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.875154\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'bottle drink me' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.875545\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'cake eat me' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.875895\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'large rabbit hole' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.876245\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'well' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.876682\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'mouse' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.877037\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'dodo' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.877413\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'lory' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.877726\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'eaglet' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.878094\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'duck' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.878363\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'historical figure' in category 'classes'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.878675\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'william the conqueror' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.878919\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'edwin and morcar' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.879759\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'stigand' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.880220\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'creature' in category 'classes'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.880496\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'caterpillar' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.880805\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'rabbit' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.881102\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'bill' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.881498\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'plant' in category 'classes'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.881878\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'mushroom' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.882194\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'literature' in category 'classes'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.882509\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'fairy tales' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.882829\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'pigeon' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.883121\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'duchess' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.883403\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'cook' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.883739\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'cheshire cat' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.883976\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'character' in category 'classes'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.884222\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'march hare' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.884574\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'hatter' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.884828\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'queen of hearts' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.885100\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'pig' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.885539\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'dormouse' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.885826\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'knave of hearts' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.886132\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'king of hearts' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.886328\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'tweedledee' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.886549\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'tweedledum' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.886795\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'date' in category 'classes'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.887076\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for '4th' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.887380\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'concept' in category 'classes'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.887610\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'treacle well' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.887922\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'muchness' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.888198\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'queen' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.888461\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'two' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.888751\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'mock turtle' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.889022\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'gryphon' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.889271\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'king' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.889534\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'hedgehog' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.889769\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'flamingo' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.890004\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'executioner' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.890379\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'royalty' in category 'classes'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.890663\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'food' in category 'classes'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.890927\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'tarts' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.891206\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'place' in category 'classes'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.891458\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'court of justice' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.891769\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'dance' in category 'classes'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.892054\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'lobster quadrille' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.892445\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'lizard' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.892698\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'guinea pig' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.892987\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'event' in category 'classes'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.894624\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'trial' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.894915\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for '14 march 2023' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.895209\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for '15 march 2023' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.895458\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for '16 march 2023' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.895695\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'text' in category 'classes'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.895998\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'verse' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.896305\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'wonderland' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.896572\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'little sister' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.896861\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'farm-yard' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.897134\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'happy summer days' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:57.897389\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mNo close match found for 'childhood' in category 'individuals'\u001b[0m [\u001b[0m\u001b[1m\u001b[34mOntologyAdapter\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T17:59:59.857882\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mCoroutine task started: `summarize_text`\u001b[0m [\u001b[0m\u001b[1m\u001b[34mrun_tasks_base\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T18:00:06.883659\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mCoroutine task started: `add_data_points`\u001b[0m [\u001b[0m\u001b[1m\u001b[34mrun_tasks_base\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T18:00:08.166881\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mCoroutine task completed: `add_data_points`\u001b[0m [\u001b[0m\u001b[1m\u001b[34mrun_tasks_base\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T18:00:08.167312\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mCoroutine task completed: `summarize_text`\u001b[0m [\u001b[0m\u001b[1m\u001b[34mrun_tasks_base\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T18:00:08.167622\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mCoroutine task completed: `extract_graph_from_data`\u001b[0m [\u001b[0m\u001b[1m\u001b[34mrun_tasks_base\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T18:00:08.168424\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mAsync Generator task completed: `extract_chunks_from_documents`\u001b[0m [\u001b[0m\u001b[1m\u001b[34mrun_tasks_base\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T18:00:08.168705\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mCoroutine task completed: `check_permissions_on_dataset`\u001b[0m [\u001b[0m\u001b[1m\u001b[34mrun_tasks_base\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T18:00:08.169005\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mCoroutine task completed: `classify_documents`\u001b[0m [\u001b[0m\u001b[1m\u001b[34mrun_tasks_base\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T18:00:08.169382\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mPipeline run completed: `eea87f6e-3943-552c-b2fe-904ac1e367f0`\u001b[0m [\u001b[0m\u001b[1m\u001b[34mrun_tasks_with_telemetry()\u001b[0m]\u001b[0m\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{UUID('849137b0-173d-5a0f-9462-403398a3b1e2'): PipelineRunCompleted(status='PipelineRunCompleted', pipeline_run_id=UUID('8f4e8447-24c9-5d2a-afb2-f86256ca4f34'), dataset_id=UUID('849137b0-173d-5a0f-9462-403398a3b1e2'), dataset_name='main_dataset', payload=None, data_ingestion_info=[{'run_info': PipelineRunCompleted(status='PipelineRunCompleted', pipeline_run_id=UUID('8f4e8447-24c9-5d2a-afb2-f86256ca4f34'), dataset_id=UUID('849137b0-173d-5a0f-9462-403398a3b1e2'), dataset_name='main_dataset', payload=None, data_ingestion_info=None), 'data_id': UUID('1140fe00-c2fd-5fc3-adec-bf8ebe41572a')}, {'run_info': PipelineRunAlreadyCompleted(status='PipelineRunAlreadyCompleted', pipeline_run_id=UUID('8f4e8447-24c9-5d2a-afb2-f86256ca4f34'), dataset_id=UUID('849137b0-173d-5a0f-9462-403398a3b1e2'), dataset_name='main_dataset', payload=None, data_ingestion_info=None), 'data_id': UUID('cc1ec4a6-2621-5143-ad19-ae7703db040b')}, {'run_info': PipelineRunAlreadyCompleted(status='PipelineRunAlreadyCompleted', pipeline_run_id=UUID('8f4e8447-24c9-5d2a-afb2-f86256ca4f34'), dataset_id=UUID('849137b0-173d-5a0f-9462-403398a3b1e2'), dataset_name='main_dataset', payload=None, data_ingestion_info=None), 'data_id': UUID('f3d53fbe-2a29-57e4-9e55-d87a49890ecc')}])}"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import cognee\n",
    "print(cognee.__version__)\n",
    "await cognee.add(file_path)\n",
    "await cognee.cognify()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4944567387ec5821",
   "metadata": {},
   "source": [
    "Your data is ready to be queried:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "29b3a1e3279100d2",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      "\u001b[2m2025-10-22T18:00:08.200794\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mGraph projection completed: 112 nodes, 294 edges in 0.01s\u001b[0m [\u001b[0m\u001b[1m\u001b[34mCogneeGraph\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T18:00:08.542511\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mVector collection retrieval completed: Retrieved distances from 6 collections in 0.09s\u001b[0m [\u001b[0m\u001b[1m\u001b[34mcognee.shared.logging_utils\u001b[0m]\u001b[0m\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "['The influential characters in \"Alice in Wonderland\" include:\\n1. Alice - the main character who explores Wonderland.\\n2. The White Rabbit - the creature Alice follows into Wonderland.\\n3. The King of Hearts - the ruler of Wonderland.\\n4. The Queen of Hearts - the authoritative figure known for her temper.\\n5. The Mad Hatter - a tea party host and influential character.\\n6. The March Hare - the Hatter\\'s tea party companion.\\n7. The Knave of Hearts - accused of stealing tarts.\\n8. The Mock Turtle - a character who shares stories and lessons.\\n9. The Gryphon - a creature who accompanies Alice and shares knowledge.']"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "await cognee.search(\"List me all the influential characters in Alice in Wonderland.\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "883ce50d2d9dc584",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      "\u001b[2m2025-10-22T18:00:12.322968\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mGraph projection completed: 112 nodes, 294 edges in 0.01s\u001b[0m [\u001b[0m\u001b[1m\u001b[34mCogneeGraph\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T18:00:12.640396\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mVector collection retrieval completed: Retrieved distances from 6 collections in 0.09s\u001b[0m [\u001b[0m\u001b[1m\u001b[34mcognee.shared.logging_utils\u001b[0m]\u001b[0m\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "['Alice ended up in Wonderland by following a White Rabbit down a rabbit hole after becoming bored while sitting by her sister. She fell into a deep well, leading her into the fantastical realm of Wonderland.']"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "await cognee.search(\"How did Alice end up in Wonderland?\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "677e1bc52aa078b6",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      "\u001b[2m2025-10-22T18:00:14.237335\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mGraph projection completed: 112 nodes, 294 edges in 0.01s\u001b[0m [\u001b[0m\u001b[1m\u001b[34mCogneeGraph\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T18:00:14.605330\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mVector collection retrieval completed: Retrieved distances from 6 collections in 0.09s\u001b[0m [\u001b[0m\u001b[1m\u001b[34mcognee.shared.logging_utils\u001b[0m]\u001b[0m\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[\"Alice's personality is characterized by her curiosity, imaginative thinking, and a thirst for adventure. She often questions the logic of the strange world around her and demonstrates a mix of bravery and innocence as she navigates through Wonderland. Additionally, she sometimes provides herself with advice, indicating a reflective nature. However, her consistent attempts to find order in the chaos and her whimsical thoughts reveal her youthful spirit.\"]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "await cognee.search(\"Tell me about Alice's personality.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fd521e182fb66d49",
   "metadata": {},
   "source": [
    "Bonus: See your processed data visualized in a knowledge graph"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "6effdae590b795d3",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      "\u001b[2m2025-10-22T18:00:17.008072\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mGraph visualization saved as /Users/daulet/graph_visualization.html\u001b[0m [\u001b[0m\u001b[1m\u001b[34mcognee.shared.logging_utils\u001b[0m]\u001b[0m\n",
      "\n",
      "\u001b[2m2025-10-22T18:00:17.008546\u001b[0m [\u001b[32m\u001b[1minfo     \u001b[0m] \u001b[1mThe HTML file has been stored on your home directory! Navigate there with cd ~\u001b[0m [\u001b[0m\u001b[1m\u001b[34mcognee.shared.logging_utils\u001b[0m]\u001b[0m\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'/Users/daulet/graph_visualization.html'"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import webbrowser\n",
    "import os\n",
    "from cognee.api.v1.visualize.visualize import visualize_graph\n",
    "html = await visualize_graph()\n",
    "home_dir = os.path.expanduser(\"~\")\n",
    "html_file = os.path.join(home_dir, \"graph_visualization.html\")\n",
    "display(html_file)\n",
    "webbrowser.open(f\"file://{html_file}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "75054183",
   "metadata": {},
   "outputs": [
    {
     "ename": "",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31mThe Kernel crashed while executing code in the current cell or a previous cell. \n",
      "\u001b[1;31mPlease review the code in the cell(s) to identify a possible cause of the failure. \n",
      "\u001b[1;31mClick <a href='https://aka.ms/vscodeJupyterKernelCrash'>here</a> for more info. \n",
      "\u001b[1;31mView Jupyter <a href='command:jupyter.viewOutput'>log</a> for further details."
     ]
    }
   ],
   "source": [
    "# Only exit in interactive mode, not during GitHub Actions\n",
    "import os\n",
    "\n",
    "# Skip exit if we're running in GitHub Actions\n",
    "if not os.environ.get('GITHUB_ACTIONS'):\n",
    "    print(\"Exiting kernel to clean up resources...\")\n",
    "    os._exit(0)\n",
    "else:\n",
    "    print(\"Skipping kernel exit - running in GitHub Actions\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f0945d6f1d962ab",
   "metadata": {},
   "source": [
    "For more examples and information on how Cognee GraphRAG works checkout our other more detailed notebooks."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": ".venv",
   "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.10.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
