diff --git "a/sandbox/20240702 - CQA - Graph Functionality.ipynb" "b/sandbox/20240702 - CQA - Graph Functionality.ipynb" new file mode 100644--- /dev/null +++ "b/sandbox/20240702 - CQA - Graph Functionality.ipynb" @@ -0,0 +1,11689 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# ClimateQ&A\n", + "---\n", + "Goal of the notebook: Recommended graphs functionality\n", + "\n", + "Inputs of the notebook:\n", + "\n", + "Output of the notebook:\n", + "\n", + "\n", + "Takeaways:\n", + "\n", + "Questions, thoughts and remarks:\n", + "- What do I put for query instruction ?\n", + " - Default is \"Represent this sentence for searching relevant passages:\"\n", + " - embedding_function = get_embeddings_function(query_instruction=\"\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Dependencies and path\n", + "Adjust the argument in `sys.path.append` to align with your specific requirements." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd \n", + "import numpy as np\n", + "import os\n", + "from IPython.display import display, Markdown\n", + "\n", + "%load_ext autoreload\n", + "%autoreload 2\n", + "\n", + "ROOT_DIR = os.path.dirname(os.getcwd())\n", + "\n", + "import sys\n", + "sys.path.append(\"/home/dora/climate-question-answering\")\n", + "sys.path.append(ROOT_DIR)\n", + "\n", + "from dotenv import load_dotenv\n", + "load_dotenv()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Import objects\n", + "### 1.1 LLM" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from climateqa.engine.llm import get_llm\n", + "llm = get_llm(provider=\"openai\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.2 Embedding" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Loading embeddings model: BAAI/bge-base-en-v1.5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/tim/anaconda3/envs/climateqa/lib/python3.11/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + " from .autonotebook import tqdm as notebook_tqdm\n" + ] + } + ], + "source": [ + "from climateqa.engine.embeddings import get_embeddings_function\n", + "\n", + "embeddings_function = get_embeddings_function()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.3 Reranker" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Loading FlashRankRanker model ms-marco-TinyBERT-L-2-v2\n", + "Loading model FlashRank model ms-marco-TinyBERT-L-2-v2...\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from climateqa.engine.reranker import get_reranker\n", + "\n", + "reranker = get_reranker(\"nano\")\n", + "reranker" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.4 IPCC vectorstore" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:pinecone_plugin_interface.logging:Discovering subpackages in _NamespacePath(['/home/tim/anaconda3/envs/climateqa/lib/python3.11/site-packages/pinecone_plugins'])\n", + "INFO:pinecone_plugin_interface.logging:Looking for plugins in pinecone_plugins.inference\n", + "INFO:pinecone_plugin_interface.logging:Installing plugin inference into Pinecone\n", + "/home/tim/ai4s/climate_qa/climate-question-answering/climateqa/engine/vectorstore.py:38: LangChainDeprecationWarning: The class `Pinecone` was deprecated in LangChain 0.0.18 and will be removed in 0.3.0. An updated version of the class exists in the langchain-pinecone package and should be used instead. To use it run `pip install -U langchain-pinecone` and import as `from langchain_pinecone import Pinecone`.\n", + " vectorstore = PineconeVectorstore(\n" + ] + } + ], + "source": [ + "from climateqa.engine.vectorstore import get_pinecone_vectorstore\n", + "\n", + "vectorstore = get_pinecone_vectorstore(embeddings_function)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'authors': 'N/A',\n", + " 'chunk_type': 'text',\n", + " 'document_id': 'ipos141',\n", + " 'document_number': 141.0,\n", + " 'is_pdf_link': 1.0,\n", + " 'is_pdf_local': 0.0,\n", + " 'is_selected': 1.0,\n", + " 'journal': 'FAO',\n", + " 'local_pdf_path': 'N/A',\n", + " 'n_pages': 'N/A',\n", + " 'name': 'State of the World Fisheries and Aquaculture 2022',\n", + " 'num_characters': 14.0,\n", + " 'num_tokens': 4.0,\n", + " 'num_tokens_approx': 5.0,\n", + " 'num_words': 4.0,\n", + " 'page_number': 214.0,\n", + " 'report_type': 'Report',\n", + " 'section_header': '1 For example: ',\n", + " 'short_name': 'IPOS 141',\n", + " 'source': 'IPOS',\n", + " 'source_type': 'N/A',\n", + " 'tags': 'GEA',\n", + " 'toc_level0': 'N/A',\n", + " 'toc_level1': 'N/A',\n", + " 'toc_level2': 'N/A',\n", + " 'toc_level3': 'N/A',\n", + " 'url': 'https://www.fao.org/3/cc0461en/cc0461en.pdf',\n", + " 'year': 2022.0}" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "vectorstore.search(\"a\", search_type=\"similarity\")[0].metadata" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2 Vectorstore" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.1 IEA data" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
titlereturned_contentsourcesnotesappears_inappears_in_urldoc_idsource
0Capital requirements for mining to meet demand...https://www.iea.org/data-and-statistics/charts...IEA analysis based on data from S&P Global and...Capital requirements are calculated based on c...Global Critical Minerals Outlook 2024https://www.iea.org/reports/global-critical-mi...iea_0IEA
1IEA energy transition mineral price index, Jan...https://www.iea.org/data-and-statistics/charts...IEA analysis based on Bloomberg and S&P Global.IEA energy transition minerals price index is ...Global Critical Minerals Outlook 2024https://www.iea.org/reports/global-critical-mi...iea_1IEA
2Price developments of minerals and metals by c...https://www.iea.org/data-and-statistics/charts...IEA analysis based on Bloomberg and S&P Global.Base metals include iron, aluminium, zinc and ...Global Critical Minerals Outlook 2024https://www.iea.org/reports/global-critical-mi...iea_2IEA
3Capital expenditure on nonferrous metal produc...https://www.iea.org/data-and-statistics/charts...IEA analysis based on company annual reports a...For diversified majors, capex on the productio...Global Critical Minerals Outlook 2024https://www.iea.org/reports/global-critical-mi...iea_3IEA
4Selected environmental, social and governance ...https://www.iea.org/data-and-statistics/charts...IEA analysis based on the latest sustainabilit...GHG= greenhouse gas. Aggregated data for 25 ma...Global Critical Minerals Outlook 2024https://www.iea.org/reports/global-critical-mi...iea_4IEA
\n", + "
" + ], + "text/plain": [ + " title \\\n", + "0 Capital requirements for mining to meet demand... \n", + "1 IEA energy transition mineral price index, Jan... \n", + "2 Price developments of minerals and metals by c... \n", + "3 Capital expenditure on nonferrous metal produc... \n", + "4 Selected environmental, social and governance ... \n", + "\n", + " returned_content \\\n", + "0 https://www.iea.org/data-and-statistics/charts... \n", + "1 https://www.iea.org/data-and-statistics/charts... \n", + "2 https://www.iea.org/data-and-statistics/charts... \n", + "3 https://www.iea.org/data-and-statistics/charts... \n", + "4 https://www.iea.org/data-and-statistics/charts... \n", + "\n", + " sources \\\n", + "0 IEA analysis based on data from S&P Global and... \n", + "1 IEA analysis based on Bloomberg and S&P Global. \n", + "2 IEA analysis based on Bloomberg and S&P Global. \n", + "3 IEA analysis based on company annual reports a... \n", + "4 IEA analysis based on the latest sustainabilit... \n", + "\n", + " notes \\\n", + "0 Capital requirements are calculated based on c... \n", + "1 IEA energy transition minerals price index is ... \n", + "2 Base metals include iron, aluminium, zinc and ... \n", + "3 For diversified majors, capex on the productio... \n", + "4 GHG= greenhouse gas. Aggregated data for 25 ma... \n", + "\n", + " appears_in \\\n", + "0 Global Critical Minerals Outlook 2024 \n", + "1 Global Critical Minerals Outlook 2024 \n", + "2 Global Critical Minerals Outlook 2024 \n", + "3 Global Critical Minerals Outlook 2024 \n", + "4 Global Critical Minerals Outlook 2024 \n", + "\n", + " appears_in_url doc_id source \n", + "0 https://www.iea.org/reports/global-critical-mi... iea_0 IEA \n", + "1 https://www.iea.org/reports/global-critical-mi... iea_1 IEA \n", + "2 https://www.iea.org/reports/global-critical-mi... iea_2 IEA \n", + "3 https://www.iea.org/reports/global-critical-mi... iea_3 IEA \n", + "4 https://www.iea.org/reports/global-critical-mi... iea_4 IEA " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from langchain_community.document_loaders import DataFrameLoader\n", + "from langchain_chroma import Chroma\n", + "\n", + "df_iea = pd.read_csv(f\"{ROOT_DIR}/data/charts_iea.csv\")\n", + "df_iea = df_iea.rename(columns={'url': 'returned_content'})\n", + "df_iea[\"doc_id\"] = \"iea_\" + df_iea.index.astype(str)\n", + "df_iea[\"source\"] = \"IEA\"\n", + "df_iea.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "5355" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Load csv file of charts\n", + "loader_iea = DataFrameLoader(df_iea, page_content_column='title')\n", + "documents_iea = loader_iea.load()\n", + "len(documents_iea)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.2 OWID data" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
categorytitleurlreturned_contentsubtitledoc_idsource
0Access to EnergyNumber of people with and without access to cl...https://ourworldindata.org/grapher/number-with...<iframe src=\"https://ourworldindata.org/graphe...Clean cooking fuels and technologies represent...owid_0OWID
1Access to EnergyNumber of people without access to clean fuels...https://ourworldindata.org/grapher/number-with...<iframe src=\"https://ourworldindata.org/graphe...Clean cooking fuels and technologies represent...owid_1OWID
2Access to EnergyPeople without clean fuels for cooking, by wor...https://ourworldindata.org/grapher/people-with...<iframe src=\"https://ourworldindata.org/graphe...Data source: World Bankowid_2OWID
3Access to EnergyShare of the population without access to clea...https://ourworldindata.org/grapher/share-of-th...<iframe src=\"https://ourworldindata.org/graphe...Access to clean fuels or technologies such as ...owid_3OWID
4Access to EnergyShare with access to electricity vs. per capit...https://ourworldindata.org/grapher/share-with-...<iframe src=\"https://ourworldindata.org/graphe...Having access to electricity is defined in int...owid_4OWID
\n", + "
" + ], + "text/plain": [ + " category title \\\n", + "0 Access to Energy Number of people with and without access to cl... \n", + "1 Access to Energy Number of people without access to clean fuels... \n", + "2 Access to Energy People without clean fuels for cooking, by wor... \n", + "3 Access to Energy Share of the population without access to clea... \n", + "4 Access to Energy Share with access to electricity vs. per capit... \n", + "\n", + " url \\\n", + "0 https://ourworldindata.org/grapher/number-with... \n", + "1 https://ourworldindata.org/grapher/number-with... \n", + "2 https://ourworldindata.org/grapher/people-with... \n", + "3 https://ourworldindata.org/grapher/share-of-th... \n", + "4 https://ourworldindata.org/grapher/share-with-... \n", + "\n", + " returned_content \\\n", + "0 ', 'subtitle': 'Total area of forests, savannas, shrublands/grasslands, croplands, and other land that have been burned as a result of wildfires each year.', 'doc_id': 'owid_2201', 'source': 'OWID'}, page_content='Wildfire area burned by land cover type')" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "documents_all[-1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.4 Chroma vectorstore" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "# DO NOT RUN AGAIN (persisted)\n", + "# vectorstore_graphs = Chroma.from_documents(documents_all, embeddings_function, persist_directory=f\"{ROOT_DIR}/data/vectorstore\")\n", + "# vectorstore_graphs = Chroma.from_documents(documents_owid, embeddings_function, persist_directory=f\"{ROOT_DIR}/data/vectorstore_owid\")" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Document(metadata={'category': 'Access to Energy', 'url': 'https://ourworldindata.org/grapher/number-with-without-clean-cooking-fuels', 'returned_content': '', 'subtitle': 'Clean cooking fuels and technologies represent non-solid fuels such as natural gas, ethanol or electric technologies.', 'doc_id': 'owid_0', 'source': 'OWID'}, page_content='Number of people with and without access to clean cooking fuels')" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "documents_owid[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:chromadb.telemetry.posthog:Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information.\n" + ] + } + ], + "source": [ + "from langchain_chroma import Chroma\n", + "\n", + "vectorstore_graphs = Chroma(persist_directory=f\"{ROOT_DIR}/data/vectorstore_owid\", embedding_function=embeddings_function)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(2202, None, 2202, 2202)" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(vectorstore_graphs.get()[\"ids\"]),vectorstore_graphs.get()[\"embeddings\"], len(vectorstore_graphs.get()[\"metadatas\"]), len(vectorstore_graphs.get()[\"documents\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'ids': ['04f2d076-17b6-4c13-b72e-e7385f538328',\n", + " 'a327220c-3eea-48c0-9915-867e50e7910b',\n", + " 'c85dbce8-2e50-4bfd-80ae-aff70f8091f7',\n", + " '0e207e8a-576b-4f8d-bd64-5cba792c0387',\n", + " 'f0bf8a14-a854-41cd-a3f7-9548b4b6055f',\n", + " '12909983-4317-4a61-8516-423253460309',\n", + " '0344f04a-db80-47ec-baa6-ceb9b3c5a79d',\n", + " '36efcabf-5503-4a5a-a406-052eddb71440',\n", + " '41f5471b-1c9f-4b2f-bf23-833949ae8244',\n", + " '6451412f-dee3-4ffd-9582-6b1d1667fdbe',\n", + " 'ad79f9e8-4052-4e0e-bb50-88adce044928',\n", + " '6a9af2e6-f4fd-4cc2-9887-4115027a7749',\n", + " 'c3782010-9ca2-4664-926d-1c6a48c4a59e',\n", + " '939838ad-604a-4d01-829c-f02ea4fd6772',\n", + " '74d2a9e5-9234-4135-9d2b-403d4065e10d',\n", + " '9a29def5-e4b8-450e-9e5f-a6b853c8676f',\n", + " 'f0bbf498-3360-4871-a90c-e1229a2f3ce6',\n", + " '86c1ab95-0acf-413e-82f9-362cf3d5a559',\n", + " 'ac01e197-e9b1-43a1-90dc-ee4d9e05c818',\n", + " 'a7342034-f887-44a7-83b1-0c5f964e8280',\n", + " 'e2749502-fd99-4403-b10a-e364ee9e759e',\n", + " '1a16dbcb-7a84-4a01-a023-efda5e817fad',\n", + " '02083321-e271-4f9d-803e-f96ebafa847a',\n", + " '55872d50-12fa-4ad4-a7c5-bee691c727b9',\n", + " '5c0dc54a-b8e1-4afb-ab9e-9ff8cee77237',\n", + " '91993d9c-54db-43ce-bf9a-bba61678bbbb',\n", + " 'b97cb2b5-cd9a-41ff-97f2-12002d114030',\n", + " 'e460d534-aa21-4535-8b10-db2567bab0fc',\n", + " '763dc259-3e7c-49c8-9b8b-ec464003a767',\n", + " '6ee5092e-42ac-4a44-b827-2f2104e03811',\n", + " '88f78935-1564-4e09-9302-c9c122cf5eea',\n", + " 'ebd0a26d-a515-489e-8e00-256035ccfb3e',\n", + " '60c5eb10-df2f-4b2b-8413-6d1f1106f1eb',\n", + " 'b1089418-7dbf-4d00-8484-bbc3a43a504d',\n", + " 'f71a9e62-fdad-4a8c-b7b8-10ff45224842',\n", + " '4acbe30f-5d63-48ee-9fe0-c502534c7730',\n", + " '21512c35-e4e6-4aac-95a9-a2c2bd69aa8d',\n", + " 'a34d49c1-9f4f-49eb-8d3c-632c3afd45cb',\n", + " 'a286d982-8e59-4fac-ae0f-cacc8d920a11',\n", + " '9b59363f-46eb-4f15-bd63-e9b5ab58f948',\n", + " '59a92838-2ec4-44e0-a845-2338519ff870',\n", + " 'ab040bd3-0e67-48ba-8cf2-6f1f6110f768',\n", + " '8e7065a7-bd8e-480f-a99a-c8dda1f24639',\n", + " 'c9bbfbc0-f375-4aeb-b5bd-a207d5ac8af3',\n", + " '7dd1c3f3-d3f2-4544-a1be-4f0106e392e2',\n", + " '7116b0b3-6db5-4e0e-bc4e-d8750c8c942a',\n", + " '0c4c2e2b-8ceb-4506-a738-73e1635b9436',\n", + " '5fb9b29d-a5e6-42d7-aabe-a4bdec3938b5',\n", + " 'c051b64c-da4a-4302-93c4-d7fc1f11a13e',\n", + " 'a28792fc-4ead-4877-9c86-15c52211aa35',\n", + " '4dc3020e-b469-49b3-924e-85c9d908fc35',\n", + " 'ea508672-7cab-4470-bd8d-ce802376e568',\n", + " 'b43e29eb-08ce-4b1f-ab8c-e3c1df23ca0f',\n", + " '6203f927-8c64-480f-94ef-9e726fd059d0',\n", + " '9cef3f25-de1c-4874-b0af-2bd4759a0ccb',\n", + " 'bd1405f2-0cac-4727-ac6e-5958498908ea',\n", + " '030f427f-f93d-4bde-940e-e97f0e6c868f',\n", + " '6a5861b5-afc2-4dea-aacf-83aa12d3f328',\n", + " 'fa97482f-c928-4a89-8e0f-6547f0ee04ac',\n", + " '715138f9-1a07-4740-94fb-397897562de2',\n", + " 'bc5ae702-ae57-4cc6-b352-b5be0b1f959d',\n", + " '7ad4a85d-3984-4e17-979a-012ba2a5ed7d',\n", + " '7fed1d42-62cd-423a-a739-2a2b84990af6',\n", + " '4bec9d46-351a-466e-b6f4-f0ee7c2f09b7',\n", + " '081bca11-ecf2-4193-b77d-9c031f213193',\n", + " 'bf6f94ae-6961-409c-a1d5-dc03b74235a6',\n", + " '5c1757da-7765-4f79-b8dd-1fd8120e77a4',\n", + " '316970ac-770c-4af6-83ba-758a3c540fd1',\n", + " '92fa358f-1035-4804-914d-4c59b39ff45e',\n", + " '021060f2-2d61-4ea4-9ee4-675035b08515',\n", + " '8a0a2deb-0854-417e-b569-a67472a7cf21',\n", + " '6679415d-0136-43b7-a5ba-4ce01aa65d6f',\n", + " 'cc44374b-164e-4ff3-b220-1e90bc8b9c79',\n", + " 'a1bf46b1-83f0-44ab-9166-7ba5789356eb',\n", + " '4b72cc25-c6f0-49de-9f03-d1d9eb3d0236',\n", + " '52675ea6-879f-4da6-afcb-081d0f229f2e',\n", + " 'b8709038-e840-4c22-bfbf-3473c2550f87',\n", + " '1b5b2d71-4298-4d57-af1c-4178ee20ae82',\n", + " '6c9a5743-6953-447b-bc80-2c86a78bcb21',\n", + " 'b7da6074-fa8c-439f-8126-803e9f912201',\n", + " 'a4f7250b-cbe0-4737-a22a-2e804fce9b19',\n", + " '94aec1af-d2a4-400e-9a3d-fe1ff69fee76',\n", + " '9980ee01-7685-4391-96f5-328ecc2950cf',\n", + " 'd72ce269-c607-4f13-a14b-aa2c165b5f5a',\n", + " '91b6c916-093b-436d-a71d-50c0ed03ddfe',\n", + " '71b94d80-4cbe-48e8-a2dd-69820a5840eb',\n", + " '97d33845-dadc-4895-bc6c-8bd8330cd761',\n", + " 'cd3bf6f2-fa75-4a79-a91f-4bc72226db8d',\n", + " '554170d1-2caa-4722-ac44-8bac5755d29c',\n", + " 'df2f781c-3826-4bb8-a0ad-49207f5fa470',\n", + " 'a521bb10-bf15-4f24-8cc7-a857c1006b4e',\n", + " '5f839e49-3230-45cc-881d-144537b5d8e3',\n", + " '87f4c909-e59f-4eec-a7ef-a3feff97b9e7',\n", + " '0315ded8-ecec-4fb6-b53e-9d9cb8dfa004',\n", + " '1389a5f4-94eb-47f6-b18b-7e8ddc72c34c',\n", + " 'a3e3a3f0-2038-4735-9804-25169e2091a7',\n", + " 'd9563ede-4f77-49ad-bb1a-87e979c7acd2',\n", + " '87e4333b-95ef-4e43-94b2-732c62f35e5c',\n", + " '8fd63dc9-1c4e-45a2-8ed0-ba3a1a82331b',\n", + " '0d04165a-dc00-40e2-8b45-1c71b4ff930b',\n", + " 'd8dfcd7b-9cce-4ad9-bcd0-7ab19557b060',\n", + " 'bcc2f6cb-ae4c-43b0-ade8-ba1e93ed2d68',\n", + " '55940f2f-93a5-4146-a9f4-4c7dedb07599',\n", + " 'dceacb0f-b8b6-4efd-a85d-2c274cd42e50',\n", + " '70bba5d6-62ef-408a-8cf2-2bb8a26a0028',\n", + " 'cc984998-6729-4fa6-bf79-47a0bbcb3275',\n", + " 'd0f591af-9a8b-49cd-b43b-3e4fd910d826',\n", + " '88666708-2808-44fb-b3d3-53f579f5a085',\n", + " 'f644a404-e6e5-4d69-bd44-99d31f8c5af3',\n", + " 'f0d881de-79a3-4778-9887-f2c7848cb456',\n", + " '7ab37de1-923a-44b8-84a5-b2281db22cc5',\n", + " 'd8aed4bc-00b3-4b11-8088-244baba6af54',\n", + " '7eff5f13-8043-4778-897f-384c3fcbca94',\n", + " 'c4ba5d25-408c-4c00-9ca8-2f762f32f1bb',\n", + " '1b0f26fd-6a42-4f44-bd4e-908bc170232c',\n", + " 'a0e144a5-5365-41a6-8a06-f572ed0451d2',\n", + " '90a7424a-bdf8-49a3-96f5-e9be5036974f',\n", + " 'b19c933c-32aa-4090-8fd1-be6be8cefab3',\n", + " 'e2e7f4c5-c29c-4c4b-883d-df4b642c17f9',\n", + " 'f531ddaf-5bd6-4161-867b-e3a28278b509',\n", + " 'a8ac6e16-40d1-4acc-8444-6c1ebb240f8d',\n", + " '28cd574f-bb88-4d2a-a855-2365303396cc',\n", + " '53dc5379-40bf-430b-9072-a1eee7bbd08e',\n", + " 'bea2b07a-2764-49d7-bc1f-f1e436b6e721',\n", + " 'c793d68e-8316-488e-ab18-9843048d3b7c',\n", + " '6e926cff-0a52-4564-bd98-573eb7794b1b',\n", + " '7341aac5-753b-4d56-a28f-80cc95ef9c14',\n", + " '17695c54-5c32-4cd5-b0b8-f67dde73b381',\n", + " '59df9c42-7285-43cf-8120-ba2872fa5d26',\n", + " '95da63ca-9994-425e-b020-5bcf54bd529f',\n", + " '1aa88ad6-eca6-4dc8-bd12-f0e9226cc84e',\n", + " '0a7e50cf-fb35-4253-9b57-38d1b4e898c2',\n", + " '36e7b1ed-b2ed-4de3-a39d-718cb4034f23',\n", + " '1cc953dc-7f70-4761-acf4-84a3ea50f0e0',\n", + " '76637924-ee7f-4e66-8f02-9dbf1bf0da75',\n", + " '206eb5e9-34c6-41f8-aec2-c7cd580dbc14',\n", + " '6ed92fd1-e5ab-48d5-b707-8d109070bac1',\n", + " 'd2394611-9a86-4ce6-a365-b3cdb7f822be',\n", + " 'cb5df3b6-402b-4eef-99f0-cbcc726f3074',\n", + " '4f837302-51d1-4007-a546-45e292be9c54',\n", + " '696360a2-8d57-4a26-a8c1-5d2c8d59e04c',\n", + " '30ee4ce6-7dd2-4f85-9b32-a9bc0b2a0a5e',\n", + " '36604c51-8f62-416f-aebb-61cd0b577a60',\n", + " '69e475e6-3476-4684-8ee1-9aa83c2f49cb',\n", + " '1c2dadea-9273-406a-b7af-5e4d97009a25',\n", + " '4f2c5ee5-08ba-4457-9491-25bd7a15d1de',\n", + " 'f5bc2edb-8dcc-4bb0-b968-eb10d00eaeaa',\n", + " '355e819b-1b79-4f09-a6ad-4c25ef0bb1a3',\n", + " '8baf8afb-d8a2-4fb3-977e-e1ca4ea1c73c',\n", + " '9cf6ae73-2a21-41ca-89dd-fdda2d986c4c',\n", + " '2758ea34-2551-4d65-8f98-1fcfdcd9e1d1',\n", + " '2350bcdd-6068-4d97-b86d-1098c7664bf0',\n", + " '4c1135c3-1c6d-45b1-bf40-920f1efb445e',\n", + " 'fed7ef52-31b0-40a2-8909-c46e3f1e4d6c',\n", + " 'b603be9b-f501-43a2-b91d-11fa9e3754b0',\n", + " 'e07c99d8-1847-4742-ba53-0c2b905a3cae',\n", + " 'b6f302fb-4d35-4ffd-9cc6-7a6ee014c9e6',\n", + " '37c8d18a-d0ce-4a28-9429-f24bc6f36006',\n", + " '0aec2b27-f789-4d60-8c53-594a8930d002',\n", + " '8bc2d8f0-f675-4b63-806a-3998e8be9363',\n", + " 'f82d5a73-f819-453f-85a3-2a9dff91ef5d',\n", + " 'eec64cd3-2a0b-4fc5-8631-7ead7b7bb659',\n", + " '8a1d4211-be03-4069-b941-c2977db930ca',\n", + " '78e68c44-0aa9-4a29-b528-357205cf99fc',\n", + " '9f257ca3-ece6-4d17-a13d-674b34080c01',\n", + " 'f351a02f-6d96-431c-b99d-19f6a1553dca',\n", + " '5bc3953d-79c1-4f9e-84b5-c1fae1fe5951',\n", + " '41f33bfb-9f4b-4941-8407-ef38d4a59d62',\n", + " 'aaa208d2-e2e2-4eaa-909c-7e69a9f92a76',\n", + " 'fcbd8afd-b7b4-4474-80ac-ee142dfa292d',\n", + " 'eed44217-cef7-4cf6-b5d8-e92dcb216f73',\n", + " 'e994316c-8eeb-49a8-aaf0-81e663a27bcb',\n", + " '6279159a-33c2-4263-86c9-92c9935c4170',\n", + " '349a9420-5b35-4add-9143-90011c2b2fa5',\n", + " 'bd01b16a-f4e8-4d70-8156-89f42580a269',\n", + " '5443ea0e-d499-40c0-b91e-de9e43c9ea32',\n", + " '76552ca6-9c56-4f30-a2e1-7f76b81eab6a',\n", + " '42ada531-8120-4b65-ae49-9aae92251b69',\n", + " '8456cc6d-4411-4c76-b678-5dc718c4a38f',\n", + " '4f59210c-e8f5-4a7c-914f-c48c5539e332',\n", + " 'd271f5d3-f3e5-46d1-aa3a-59703d0d8ba4',\n", + " 'd62cd294-228f-44e6-a04f-9c57db0007fc',\n", + " '0fbf461b-d999-4174-81bb-12942f1f7950',\n", + " 'ced3ec60-ec3c-4b26-ab2c-3172df166ff7',\n", + " 'f6c02596-dba4-465a-a9e2-9602934210c2',\n", + " 'c267d936-76ce-4e31-9678-3fb2fc60f2b0',\n", + " '7c9d7dba-94be-4abe-a685-61797cbdf645',\n", + " '469e796d-4d13-4df6-a797-6d56808637f7',\n", + " '9438b476-8e00-4426-89c0-b93c7757ca59',\n", + " '5cc2b276-93ab-4762-8d92-47bb87c5f2c1',\n", + " '5d188807-bfb2-46ce-833b-a1ca437c2d10',\n", + " 'c0b2508c-fe64-4b76-9bee-998f52f4d0dc',\n", + " '827e47e0-18ae-493b-aa04-87d598526aa2',\n", + " '39337e41-b522-44c7-bb89-864994347131',\n", + " '7d950126-13c6-4931-bc6b-0207f6d0314b',\n", + " 'e05dbd74-20bf-45cb-bf31-78ba5dee97b2',\n", + " '049c1ca6-2912-4316-bae8-73d100688e50',\n", + " 'b8a698ff-a7dd-4383-9c34-87ce09813595',\n", + " '362e25b0-5875-4119-83ff-a38be7a1a582',\n", + " 'c6be84fb-073e-4704-adfc-57274827c2c3',\n", + " '8cdb2ccc-3b55-48bd-9301-ba5ec6286ff8',\n", + " '41acd4c3-9cf1-4e37-9b27-c50edc7ef3ef',\n", + " '197b6ab6-846d-452e-bc62-76331b877fbc',\n", + " '03091b62-2307-4541-bfd3-a5090ea94dd5',\n", + " '47b8d61f-b61b-4355-bf1c-9e0ee237de37',\n", + " 'a43236f5-983c-4a8d-b617-20df1a90d9bc',\n", + " 'ea255370-dca4-4688-b8ed-472f990327c4',\n", + " '4b037e1e-b975-4cc0-a043-be2eec8a299e',\n", + " 'aabc2422-2f09-4210-a62b-35a31c3378a2',\n", + " '5e9bd9fa-8d4f-446d-bb0d-31df6baf350a',\n", + " '5b5bd77e-3d73-48ce-9235-bf018be6ccfb',\n", + " '2e55607d-f146-4273-8ff5-4621d678d3f4',\n", + " '0935b77a-ce49-45f2-adc5-d6ac69172a8a',\n", + " 'c2de9d5a-e784-4e26-a8e4-edc751a1f207',\n", + " 'f752e046-5fa9-4280-a298-e50e8438fdd9',\n", + " 'a1230ebe-3ee3-49e5-a651-aaebacb1b71f',\n", + " 'e09212d1-27e4-4811-9b6b-d4ff6f916115',\n", + " '279c7478-1f80-42aa-8adf-be3e075e9cf7',\n", + " 'f758fd53-0d77-40ac-aa46-f45990eb7d4a',\n", + " '116d0a9a-7198-44c2-9375-3bd81b4ad5f9',\n", + " 'c10b5049-a21f-483d-891c-7a25ee0b8eca',\n", + " '5a41e2f1-56ed-4b28-8944-3211cc53cf50',\n", + " 'f9c11de6-668f-480d-ab1f-05ea3d6d7a69',\n", + " '5e02b1d2-ca9b-42be-9f7a-83b8efdbae07',\n", + " '145878de-ce54-4493-a293-23bfbe8eb7ea',\n", + " '754648bc-bfbb-4cdb-bda5-0cbededa7044',\n", + " 'f3146130-38f6-42d8-b53b-316d4249f1fe',\n", + " 'cc54b5ff-f7b5-49ba-b076-439a8c5ecc94',\n", + " '0fa8b3a8-453f-49c6-b22a-ed0000d7a09c',\n", + " 'ed3ada6e-3f9d-4ee5-a321-48f312fa8a5b',\n", + " '71af0704-01f8-41f1-848d-3394b4cd80ef',\n", + " '8e49fdb4-386d-43d0-978a-b6a97f624302',\n", + " '42bf9e61-2d0c-4b60-85d6-1148d81b7d33',\n", + " 'd20497b0-3c7c-42ef-b562-23c1b444c88f',\n", + " '9617c21e-2042-4da5-b087-8d2cdf99d9c7',\n", + " '1f4df170-543b-46c8-ac0c-6fb99236391f',\n", + " '06a0b840-ba7c-4d7d-a660-3d355c867950',\n", + " '33bb1986-1e56-4e63-8a63-70b3cc5e09df',\n", + " '81c415d0-3b47-4198-802a-a63f08f4f4b9',\n", + " 'da6bd0c3-556a-422c-9076-64a325f49713',\n", + " '988db827-4559-4d78-b2db-682fe608a627',\n", + " '5a1138a1-16a0-4971-9b9f-96e575b047b3',\n", + " 'c65a1ede-d9e6-4276-bb78-4df5064b4c9e',\n", + " 'f4b25c74-f6e6-483e-bf25-fd439693a23c',\n", + " 'a8b9843e-d871-4806-afe0-e4cdc51dcc16',\n", + " 'f0bf0617-e606-4aa9-903c-b3290081f047',\n", + " '1f7ddd69-5642-4075-9845-9aa919f04026',\n", + " '95a120dc-ad26-4d17-8437-a9435dd6c2c5',\n", + " '1c4c81bc-c66d-4dd6-be80-c7d7ff098131',\n", + " '12aaafd4-1d9d-4b0d-babe-0e852948aacb',\n", + " 'cc4fe487-be4f-4a97-802f-44f69cdc9583',\n", + " 'da0d94fc-8322-417d-92ba-0aaad1771d98',\n", + " '8dbaa7ec-6106-4742-b0cb-1d005e461a12',\n", + " '0f5ee86e-ccf5-48b4-86fb-a4d4fa294c65',\n", + " '7b133aa5-a736-4637-92f2-24c4f620d357',\n", + " '6641bf0e-f4f4-47e2-b94e-d90185f17d64',\n", + " '4b4d49ff-d9b2-486a-ae89-732bb32147df',\n", + " '693ddadb-f5cb-4888-ba6a-d599f29df0ce',\n", + " 'a531eb63-846a-4d7e-8836-bb2cda1d82f5',\n", + " '2a483dbb-e2cc-4e54-baa0-8aaa539b413c',\n", + " '81ad68f8-2e67-4b12-8462-701dc623e5fd',\n", + " '7f4ea6b1-5a81-4636-9ba3-a88a2fb6f0fa',\n", + " 'f6f9c64a-f018-490e-9b95-598406cba648',\n", + " '1a0375c6-cb26-4347-b7c0-1ccc20fcf9ce',\n", + " 'e99741b2-eb28-44fa-9d41-0d981ef7941d',\n", + " '6bd0c7d5-0f5c-4e98-ba98-5712f8e352aa',\n", + " 'cbbcc439-908d-49c4-8e20-831129065297',\n", + " '7f531bd8-1dcf-4f9f-8a18-4a47e81f0ff0',\n", + " '665623db-ba33-4fb0-99b4-5158dd12df32',\n", + " 'f6e3893c-a70f-4acd-a653-4b527a165824',\n", + " '82c412e0-fce0-4887-91e7-a00eea0232a2',\n", + " 'edad3acd-5a78-4b6f-a26e-e196b4354309',\n", + " '36b6871e-3057-421c-b857-03c3436ceeb9',\n", + " '1c6d1e83-49d8-4603-974d-980b07db86f5',\n", + " '77b68013-600a-4eb1-b6dd-b88c1c88df3f',\n", + " 'd6b0862a-c492-4c5b-9699-034d0e91f27d',\n", + " '8531f41b-21cc-454d-b60b-7fd9462f4ff9',\n", + " '2337d068-da7e-40ed-a5b7-21fd81b3c0f5',\n", + " '1e065a4a-9af0-45cc-a20e-7d164965ae9d',\n", + " 'a604b469-e584-4233-bebd-cd0a998dc3ca',\n", + " '8234e846-5d56-452c-9102-a21e7abf3940',\n", + " 'dba25d3c-26f3-4d84-9b50-c869b60249b1',\n", + " '7da0085d-4905-4223-b23b-131551927918',\n", + " '60794e48-a4a1-4b05-a352-d5f09599537c',\n", + " 'ce48cc9c-d2f2-44b8-bfe7-b524eeebe3f2',\n", + " 'a05d98ce-25f4-41cd-a153-f683d1671803',\n", + " '4b80327b-aba6-4d28-98bf-bd653d96af09',\n", + " '2dcfa9ac-5c0b-4681-8f43-c01114234f42',\n", + " 'cb0b749d-9857-45f2-a435-859bf301c91c',\n", + " 'c7381a30-2d60-4e9b-b6a7-a0f12b133668',\n", + " 'fb776570-0e93-4ca6-b06d-d09d2d755628',\n", + " '48fc8770-04a4-459d-9fa5-2d9f046eec2a',\n", + " 'c8bef189-d914-4490-917f-2724b7fdf4b7',\n", + " '6a3b4781-2ba4-4001-9082-e7e10b680f5e',\n", + " '38301775-6bfe-4603-813e-5f13110dbcf4',\n", + " '4293fd8e-0419-475b-8793-c3e810623bb1',\n", + " '270a8935-9a29-46f1-968c-6cef2b5684a8',\n", + " 'af54beb0-e6ce-4d15-9855-18b52afad240',\n", + " 'acd26fe8-b3d1-433b-8414-58f7a6af739a',\n", + " 'b4ac37bf-ca77-4056-bd2e-f095bd51166e',\n", + " 'ae5812dd-78f4-42b6-9234-f5e4e6d68bd3',\n", + " '0bc79e8c-9f76-49b9-9456-8fd8b19415fc',\n", + " 'c20a465e-b6fb-493e-8ef9-0c8ae95f6f2e',\n", + " '2c768186-86f1-4de8-ba81-f95e8b972c3b',\n", + " '1ee7b3ff-c87d-4d3e-bbe7-6a70dc196b65',\n", + " 'f504b91e-1f11-4b04-af5e-48d20f3829b5',\n", + " '7be71de4-bdd2-4b4b-9922-9d8236868758',\n", + " 'bd8e0dab-4ab6-45b9-a389-6bd21d83f730',\n", + " 'd5de7930-d64a-451d-9680-d4412684479f',\n", + " 'eeb9938e-cd75-4b85-8f9c-4773e4983934',\n", + " '7b4171e5-c1d0-4f33-8347-17f4b3a70fde',\n", + " 'b918c5f7-c47e-4f0b-bae2-4ca178f688c2',\n", + " 'c1814e8a-9894-49ef-bce2-c9c1fc71a860',\n", + " '35d3ebe1-31d5-4148-a760-6176425221bc',\n", + " '166d7d62-b4bf-4bb1-911b-c48ba4c32124',\n", + " 'efa014d1-74b5-421e-bf75-0f78f3e5af7b',\n", + " '03c654dc-1a7f-4b84-91e2-05d2bb8535aa',\n", + " '84d408c0-2b71-4e92-a121-e601fcc09881',\n", + " '08a5ca72-6f44-40e5-9c0c-ab2402557628',\n", + " '9491b75a-f70e-4351-8ac8-3ff480282657',\n", + " 'ca030d47-e054-4c8f-801e-d5f295cb0076',\n", + " 'f82aa672-622b-4f95-84eb-c1a95eebef94',\n", + " '44bd8112-93c0-4cd1-ade9-7c2e158e3276',\n", + " '5cda9ba8-a9c1-43f2-9c92-c73acf633359',\n", + " '92eeae19-472a-41e7-acef-29d685c23777',\n", + " 'c38b5bf0-f408-4860-9553-34e1eb4b3018',\n", + " '7b1dc790-e3c1-47b2-9a5a-e535d569c9de',\n", + " '2856cc8f-83b6-4a0b-a455-e9eb24d594f2',\n", + " '1ad213fb-b1c2-4b96-a649-300ba5181dff',\n", + " 'b7a6b6c5-31db-49c7-9460-22a137f5ff02',\n", + " '6056ce90-c171-4c9b-a9dd-387b9cbd9c75',\n", + " '6ba7fcd5-2cda-4f76-bac4-60afc8c59aa2',\n", + " 'cd376b13-357c-4408-bc7b-fefb66ffe1ec',\n", + " '642fa1f0-3f78-4050-99b6-a57c6b3d12a2',\n", + " '5da5a62f-f495-493c-b476-5f62f07cd73b',\n", + " '697eb608-920b-483c-9c51-8096f939f6b1',\n", + " '62f37a55-a982-456f-a916-f949596494e6',\n", + " '97869cbc-496b-4423-9920-e863a4a442fb',\n", + " 'c39fa628-5ceb-41e0-9188-e2e98b18bbb1',\n", + " '55f59ce7-115c-4765-b039-c5a5bd509426',\n", + " '315859d4-af8f-4e65-ab17-697a78ea3663',\n", + " 'bce7e64e-f6e1-4cc0-832b-fb1e842ec538',\n", + " '4832f160-eb69-4411-97c2-ca8617f95871',\n", + " '04e41d6a-49c6-4965-aa2e-9a4f1ba6c983',\n", + " '7d6c7ed3-8697-455f-982c-8074724012f2',\n", + " '62bf9b71-5ce9-4794-964c-74217554857e',\n", + " '873adb6b-0f41-4c50-922d-f95c43fd55fc',\n", + " 'd7e7ee10-60f6-4e85-89e5-e8bf17dea279',\n", + " 'adbd6f65-15a6-4cd7-a80d-25017208e21e',\n", + " '731fa642-26fa-4062-89f7-51e8ad6c357c',\n", + " '76eeae62-11dd-4bf0-a911-7f9e033c7198',\n", + " 'ed4b9683-d0b8-4cea-9682-d5013a35b9eb',\n", + " 'e80d1c97-9ed0-4933-b8de-e4b6d292ec6e',\n", + " '0339e70d-1e31-4edf-bd49-9cdd16d0daa7',\n", + " 'b4e9b647-6616-4a9f-a3e7-c8b637b1efe4',\n", + " '1faaae4d-7230-4216-b70a-9c56f152cd95',\n", + " '25a95bdb-d342-4e79-8b0e-09e623c44b51',\n", + " 'bd59c233-b704-4301-bc89-6cfec7d9e2fc',\n", + " '715a216d-687b-4b65-92f8-8a7c5030b2df',\n", + " 'b7b4c34b-b4ae-4cbc-9801-5408b17d3eaf',\n", + " '961bc054-a6a1-4fc5-9c85-d00fdb36ff97',\n", + " '0986b02b-d313-47c7-9ddb-b087174d2e17',\n", + " 'caabd2ae-dade-49d0-875c-e9dbabe1f4a0',\n", + " 'db344c68-a34c-4819-b22c-c56dad3b0f37',\n", + " 'be392be8-9c7d-41c2-bfca-3705ec8d553b',\n", + " 'd46a393b-ca1d-419d-a5f4-f381e410b6b9',\n", + " '9014ca0e-56d6-4d51-90d4-cb60a884dcf1',\n", + " 'a5325766-1d6c-4d74-a4df-a3ad487936bd',\n", + " 'd9f857a5-b19d-490b-9943-6942b299cf7d',\n", + " 'e3c54cba-971b-4b3f-85da-a6841d9f0c2e',\n", + " 'b2ce59e3-3ef2-4c54-9c61-9f303e57b9f3',\n", + " '2646cc92-961e-4404-8f6b-f93eb9cc10a4',\n", + " 'dbbc3749-0984-431c-a283-eed98b3cbb7e',\n", + " '1ee589f1-6c24-44e6-929f-e80cb941735a',\n", + " '86c6a651-a5aa-454d-8bd2-e31a1c1a528d',\n", + " 'f0cb4123-9768-4bb3-ae24-2ddbfab26ced',\n", + " 'a350724a-4042-41a6-845c-4c6a75cbaee3',\n", + " '42d10e58-3443-4768-936b-bafae86dfa74',\n", + " '1b062930-a6bc-4b79-b80d-2db5dcf3e3b4',\n", + " 'a5d83c11-2d43-41d5-ab13-94141d947572',\n", + " '48a78afd-2cf0-44b6-9326-7abaec510d52',\n", + " '528b1f90-10fa-45b9-a501-573ac797fb36',\n", + " '930a09b9-1d5e-41e8-930a-aed1b5da2969',\n", + " '1b7a34d9-250c-46ad-a971-f1d9f7e2c9ee',\n", + " 'd1e864d2-ffc1-445d-ada3-f55d511d95dd',\n", + " '7d07f4bd-9985-4a83-98e1-c12e2aa39cb7',\n", + " '474c003b-8a46-4c8d-bd48-dbc541f34791',\n", + " '91cc8bcd-f305-4cd3-90ad-088fad45af1b',\n", + " '4552f1a8-b00e-456b-b067-975b12f540c4',\n", + " '6b5f51ca-26df-4d15-8e8b-2e9e16f6f7cd',\n", + " 'e9e80e92-4945-428b-8008-2b23d3412498',\n", + " 'ec216eab-26b8-4633-b4da-4f22b7b4b32c',\n", + " '9b3c9089-2a05-47ca-b6de-a8178d142ef6',\n", + " '7e8f9823-9708-4f82-b603-4ab0a391cc65',\n", + " '67074672-5a91-46dc-a999-a074e8d23d5b',\n", + " '96be0574-fb86-4ca1-a0a8-911b870dd672',\n", + " '48e8a6c8-339d-403b-a462-1b3968f6379e',\n", + " 'be423cde-6cb3-46f2-a412-ff064c87bff2',\n", + " 'de6ce45e-caac-4fbd-90f9-7e4297d0cc6d',\n", + " '1670efa8-90ae-41cf-b963-ca844993d673',\n", + " 'f93cc385-1678-45df-8096-322801daba8b',\n", + " '6101f0af-6a97-42c1-a623-3880c553afac',\n", + " '40caf2f9-8a92-41cf-88ff-7398d5d49d0b',\n", + " 'd78d7b03-995d-4398-966d-6d8a61fd8148',\n", + " '24f2e89f-e87a-4ef4-bbb0-2b33bfbd9305',\n", + " '98aca1a5-49c0-4f28-a826-c3bf2c1347ac',\n", + " '07a3f57e-1a93-4d84-a4b3-2f94b3337414',\n", + " 'c9380959-e70c-4ec5-b939-5ef8d0fc774d',\n", + " 'fbabe43e-c0da-4302-8e26-8ca70538cde7',\n", + " '5106cf58-4e0e-43b0-9d5c-13bc3d17fa63',\n", + " '4f591b3c-2e0c-4b0e-bf16-bc1b2971d2a7',\n", + " 'c74bf72f-d7e0-4dae-84cb-14b0d8807077',\n", + " '8f1abb87-fd40-4678-ab72-2d0324dd1347',\n", + " '6c172641-3589-43f4-aeb8-e36564cccc85',\n", + " '7779a9e0-ed30-4f8b-a510-e307b947a59c',\n", + " 'ad947272-8792-4189-81c2-8767f67a0103',\n", + " '208020ad-49c7-4a81-b2c6-9b74990f745e',\n", + " '25b9d165-3413-4c91-96ee-0f36072cd43f',\n", + " '67a82ae0-d879-461d-9909-2b8cccad6b45',\n", + " 'bc3af743-ad5d-4746-a66f-d013d2ad97f0',\n", + " '14687e55-56d9-472b-81cd-e59941928e95',\n", + " 'd55e3a44-abec-4f59-952c-57621ea9ad2e',\n", + " '90c2348d-2427-4e07-af35-99d61ba5572d',\n", + " 'cd042b16-c65a-4b1f-ac0a-30aa4e810816',\n", + " '416c6dc9-fa34-45c8-b7d1-fe9e79451eb1',\n", + " 'efc38e29-482e-4fab-bcda-ec3f25ef3d47',\n", + " '8715767b-cf49-45e4-a198-4e989d871d67',\n", + " 'e1a18a54-d14f-4212-ad97-31e1b85cff7b',\n", + " 'b9c49c38-9ad9-495c-8645-7856dc4253fe',\n", + " '9d782f5d-1313-4374-8a9d-a953b57dc272',\n", + " 'd6b78025-3d48-4708-a8f6-d5d8aea84368',\n", + " 'b8ae8acd-a3c9-43ab-9d87-883ebc85b4da',\n", + " '39ee7a5c-643b-4a48-a279-74835334abaf',\n", + " 'd6f753b4-b1b4-4fb6-a089-68ec285fdeed',\n", + " '7379a2ba-efa1-4bb0-89c5-85830be9bb88',\n", + " '1ef0aff3-b926-4db2-bdf1-ffc8d9f907d6',\n", + " 'ed603774-602c-49de-8a44-32b518cbf0b0',\n", + " '46132ef3-a237-4f0a-8a1a-bdca3f97b108',\n", + " '01b0efbe-d06f-45a5-8b25-15c95dbb240e',\n", + " 'f58dc6e0-ab29-4d7f-8af0-e30ec1703ef4',\n", + " '350718ba-f989-49f4-85b0-68b3d617b10e',\n", + " '4bbfb143-7fa4-4c85-b8ea-69895a7ee429',\n", + " '59815c3b-8d80-4303-938f-09e775f98134',\n", + " 'f66a411f-179a-4705-b8d9-15bb938d6a4f',\n", + " '4701b96b-0324-4e4e-81b8-495ed19be071',\n", + " 'f0d102a0-1590-40d2-b564-47920b59b527',\n", + " '77530114-0500-493e-8e05-750fe42f3708',\n", + " '8d32f927-c765-4c0e-aae3-90af67de29e3',\n", + " 'ecf011b7-65b4-43c1-8328-445b36d9f1ba',\n", + " 'f8557726-1914-4d1b-8bf0-af8708435a90',\n", + " 'ba46c897-5486-4290-9a1f-9736ee910b08',\n", + " '2ee5f8d1-85e9-4112-bf7a-2ef50e11855c',\n", + " '2553ee34-ab31-4287-91f2-df56b8d1a16d',\n", + " '7d6e5731-43b5-4592-b992-b698b44f3f5a',\n", + " '420aed61-df93-4ce7-9947-3ea5765594c4',\n", + " '748e95e8-640a-4963-a4f2-0274aa9d3c6a',\n", + " '2c96676a-ec4c-4c4d-a436-757b22c4b130',\n", + " '7fc6e16e-6cc8-450b-b37c-8498fbd8b927',\n", + " 'b1ec22eb-6ae9-4e59-9acf-22c1a6bb4265',\n", + " '7b24ed5c-64b9-4b02-882c-b5e05727f1ca',\n", + " '258c63f5-9a87-4573-a510-fff825179b39',\n", + " '80a158f0-c95b-4adb-a9f1-c7d39f6b53da',\n", + " '0c5c45ee-f307-4099-8792-6afb76f81c46',\n", + " '2d18aaf0-4442-4abd-b31f-0d991a8a0841',\n", + " 'c6f42a03-c057-46e8-9895-59d3be613295',\n", + " '1e9c2fc3-6997-499f-9e2f-0f7009222beb',\n", + " 'f2d8087b-b827-4d5b-8160-32a6763bfc0c',\n", + " '24552312-6151-472d-89cf-f9e3196253f4',\n", + " '89015769-1d76-4b65-9eaa-942454774433',\n", + " 'a8875e58-4f28-45c7-972e-c24b6c2e6b99',\n", + " '6bb76ee5-8463-4a39-9a28-aca24ed25b59',\n", + " '472a3411-989d-4497-b3cb-659f7effd6c4',\n", + " 'e4ad07e3-f2be-4d1d-8e53-d19ccbdd7172',\n", + " '6c890531-5cbc-4679-af89-3bff73f65e05',\n", + " '204ed8dd-61d6-473c-bcbe-beb8ea40d773',\n", + " '13b79841-a2cb-4dc6-a238-b83c251657ef',\n", + " 'c8697f19-2004-4df4-bf71-ed2758e17fe1',\n", + " 'f77ad634-a805-4efc-bbfd-c129406b3d6b',\n", + " 'c644aad5-e553-4ea0-9e3c-5c55fe18a9b1',\n", + " '51bd418d-0230-4ed7-bd31-b84c985a508b',\n", + " 'ffbe3b1f-b852-409f-b65e-0abe7ac4f490',\n", + " 'b076961a-99b3-4382-8122-d5858ce63cfb',\n", + " '8cff8b76-7d00-4528-8334-843a38009673',\n", + " 'ad8faa5b-0b04-4437-84f7-bf8a1da00331',\n", + " '3b7a795a-db1e-4437-a594-3be858f7a40b',\n", + " '2f572568-25bf-42d9-a20b-fe390ef33158',\n", + " '9048368a-0c28-4e50-bb18-9b49d9d02fe9',\n", + " '7830482b-11d6-4b24-ab8d-ec6628689381',\n", + " '7c10ed9b-2659-4827-8685-b957cb3cc34c',\n", + " '1d3a0e38-c9ba-4fac-8869-01d74c06ed5f',\n", + " '626711cb-ac9e-4a7f-b4e4-1c5b802a1f7d',\n", + " 'b8e4a8ef-6fe6-4834-a9c8-4863dd368ec1',\n", + " '46d3ca54-27a0-4b7f-8ae7-f8dd63c15327',\n", + " '1075508e-2e13-4738-b610-b74b75e15af9',\n", + " 'd85732c3-ce30-4e15-b5fe-f418c019ec22',\n", + " 'a1e77484-ddb7-4714-9576-a0a2bdcca03d',\n", + " '2bd40973-6616-4221-bc95-6d986170f596',\n", + " 'b117a047-2821-4f5c-8fde-496f33a31b33',\n", + " 'aaa5a46c-debc-489d-ba8a-384489d1322c',\n", + " '9d7b364f-e6ec-4e1d-940a-77f9f9b1843c',\n", + " 'e7ed5fc0-b010-456c-bf47-a654c85aa135',\n", + " 'd2afeaac-706a-4d4b-81e3-7f90e2aa1612',\n", + " '5d31b831-719d-4e0f-b404-551fc1c19f68',\n", + " 'fc5b2e5e-78bb-4c61-ba8f-a090f55861ef',\n", + " '806558f4-a08f-4b22-933c-25f7af589684',\n", + " '16b70f2f-40cd-4b21-80ac-043698d6422b',\n", + " 'd99adbb4-3057-4b3b-bc6c-bb841d6bbfc5',\n", + " '7f4bd015-f5fd-49b1-8a48-f60187de5a5a',\n", + " 'c8600369-638d-4fa1-abf2-14e38ad50ebf',\n", + " '35e1e1fd-96ca-4f71-92cf-4e030a0eb90e',\n", + " 'e2dbf56f-0aba-44df-b856-74c540b20021',\n", + " '677575aa-c446-4efb-a130-26e26a597a73',\n", + " '0ca0ceae-642e-4d00-a9cc-2d339f9fc048',\n", + " 'f0f4fce2-9d90-4585-aa77-c47ddc46dd18',\n", + " '9a347a71-699b-4179-a1f8-1ff39855dce9',\n", + " '8e25aa0f-ed54-4eb7-a181-f4f57e0b5ed8',\n", + " '974b8843-0131-47ba-bc13-a297c3643610',\n", + " '743f5568-f761-4619-8f9d-347a472ea3e2',\n", + " '76b87da4-c288-49f0-b3d5-4ff0ae7ed096',\n", + " '0c58da08-a570-4c40-81be-7eaced13079e',\n", + " '38f44d07-857c-4443-bb13-3d9c7ef0608a',\n", + " '7ed2da7b-ca0b-4662-8cf1-a74964766233',\n", + " '48441f79-be9f-41b4-9adb-425b99483a0e',\n", + " 'b0f19439-16b2-4df4-92e7-56b991bc278e',\n", + " 'e5934af9-9408-4287-9277-f126f9d171e0',\n", + " 'cd0f3c7c-2910-4ac5-928a-99c0f410a864',\n", + " '9c545139-9bb1-4858-9a79-06a65d54dc21',\n", + " '17a78d87-6166-4014-8b6d-3d656ed32324',\n", + " '66cf8d64-c7fc-4f61-a5e8-8ffb6f92a251',\n", + " '3c9536a4-b80e-4071-88c1-fa90e57ca8a8',\n", + " 'd135a49b-c375-4be1-bfe3-464d413dcb14',\n", + " '8b100e28-8879-4977-b0db-84baa78ed844',\n", + " '25df8058-7509-4917-8090-c613f90beaba',\n", + " '022b2af9-83f4-48e5-92ac-0bc38903384d',\n", + " '8c8803a7-9b99-41dc-8bec-2b89b2a4fd42',\n", + " 'b0414081-f45f-4545-8212-3b1d225f318d',\n", + " 'deebb81f-3525-4e0c-b267-4bddc0a4da5e',\n", + " '05c04df9-5817-46bf-a911-4883043e428a',\n", + " '3d2c0595-a31a-4afa-aa12-ff052badc469',\n", + " '582d8b68-c322-4627-8706-4df0b48d4928',\n", + " 'd75f9dfc-6bd8-42e6-a53f-0c06e1145b8d',\n", + " 'acfcd86b-b0a9-4e7a-ac66-10eb77e22d39',\n", + " 'b816deb6-a786-431b-8ee9-ee3b01a8f8a6',\n", + " 'ecd32134-663f-40e1-b02d-ff2b55d5bb5f',\n", + " 'cf29c813-9d87-4370-8dbd-497d4beeb94d',\n", + " '33e61559-3b98-4670-9f58-52f0ca207481',\n", + " '9937a0c0-b428-44f4-9bd1-5973c790d011',\n", + " '0c00e88b-6463-41d3-bfab-ab98eaad602c',\n", + " 'f288fc41-fa11-435b-8ec8-54832f5c4d86',\n", + " 'b7ff7e5d-7644-4518-907d-cdbd847252db',\n", + " 'f2b3587b-fce1-4832-ab04-8e2b89540f52',\n", + " '050f3985-0187-40f3-8ed0-764eefd63dd9',\n", + " '3c983d60-3157-40a4-88fc-9e2ae0b3bdba',\n", + " '47ee1397-80b7-4981-afdc-429d66c3d3a0',\n", + " 'a25c509a-882d-4d59-8e68-b8901847e656',\n", + " '2c250a12-e435-4825-89bf-a4fa132c026f',\n", + " '242ef545-7da9-4ae1-9be7-a6875244ae12',\n", + " 'c003f662-964b-4483-a70e-5a20b519a3fe',\n", + " '77b37b53-93a8-459f-a2de-599b0e810ec0',\n", + " '6480a5ff-c55e-47cb-9122-8267ae9abb85',\n", + " '4a1a289d-42cb-493e-ab90-0ef573afb09e',\n", + " '3487cbf3-993d-4d2b-9e7e-e2b67cc061cd',\n", + " '58902083-024e-4e61-a8da-ac8102c7dc15',\n", + " '18baf849-65a6-485c-b2c9-a97db07ff297',\n", + " '5ffb85d8-85d4-47bd-85c0-26e0da5472a5',\n", + " 'f0253fd2-15c1-4137-8abb-01aa14c00eda',\n", + " 'bf739a8a-0a76-4723-a33d-899ef8c1abef',\n", + " '1a6af1fe-f44a-45c4-a39f-3ea31640b103',\n", + " '10f7f569-ea80-473a-aa08-3ee2f3a8dc37',\n", + " '76a9fbcd-f6f9-4d17-b2f6-f7ab02f70596',\n", + " '051578f2-5319-4ade-9d5c-3cca17376f9d',\n", + " 'd03a4a8d-c9a8-4098-9222-d158fb133208',\n", + " 'f341c396-e6fa-49f4-b13c-f821f99cdfdb',\n", + " 'bc4eb481-7682-4dc9-a543-3a7f5307cb10',\n", + " '4c2af572-408e-43b5-b948-83f3aa8eaa4d',\n", + " 'baf58913-f497-4595-acb5-95cb865d6ce4',\n", + " '65610bfb-f7a2-49ba-8e27-cfaf9e45e4d7',\n", + " 'e03208fb-f7d7-4758-ba52-c4a84b420374',\n", + " '78c973dc-a2c8-4f09-8c51-60903dd93002',\n", + " 'f8c6ff2a-d565-4e42-823c-eb1115a51cb2',\n", + " 'f76bc07c-d5f1-4924-82c2-a474c76d5f23',\n", + " 'd1d27e40-f996-419d-9bd7-3c9d22ac6e3e',\n", + " 'd3de0e96-b390-4018-b58d-3de3d610d703',\n", + " '4bdf738d-91e5-4484-ba71-ec008570a639',\n", + " 'db885980-64d7-4364-8390-28cad71026b3',\n", + " 'fe94c861-758a-4248-968c-a57f99379dc4',\n", + " '9fa2f88c-2224-4ab7-ad4f-532a45487f0c',\n", + " '84b25e7b-4ae2-436c-9186-6c5c472aeea2',\n", + " 'c149cf9e-3db1-449c-a849-0174b7d7bea5',\n", + " '2220069e-10af-43c1-bc0b-559994449525',\n", + " '325eb4f3-4c6a-4d3a-8d98-d63e3cf98830',\n", + " 'bf6b9d1a-b384-4cbc-a43c-5f251a4304a0',\n", + " '38d90ab5-bae8-47bd-8337-604efaec6f53',\n", + " '3ab7cfb6-e4f9-43ba-a8da-a34b0a52b80f',\n", + " '193acdda-9e87-4d45-a033-0a96093d9328',\n", + " '14ca66a8-95f6-481e-9fe7-8bef164270b1',\n", + " '4d0acc6f-09ae-4503-b514-6871460e1c65',\n", + " '4b1eb52c-37e6-4844-84d7-d60e8eaf2682',\n", + " '9a0b5fc7-f068-4d7a-96c5-c2f192249fca',\n", + " 'cfcf3f7d-f83b-46cf-84aa-4eb82d9d24b4',\n", + " 'c8b8fe0c-b746-449f-b530-856f8159fa3b',\n", + " '75d645a5-88ee-4fa5-acf6-d13010153748',\n", + " 'ae6051ac-994c-40f3-9c58-225a7f247084',\n", + " 'e61ecf78-c63d-449c-b351-6156348a6b22',\n", + " '7031028e-56df-42dd-a00a-a833c7cdc6cf',\n", + " '003369e9-bd78-44c8-89e6-45628119592b',\n", + " 'd0cfb6f7-4eaa-4874-91ae-97a9f2855e9f',\n", + " '49573235-2742-42c5-a4c1-6a69ed8c1230',\n", + " '8eb63eb5-6082-48a0-ae90-a4dcc52db64e',\n", + " '2ec9bc56-58e4-4a90-854c-baf3899fcba0',\n", + " 'd476fdeb-5635-4a09-9ad6-f1ca45025d23',\n", + " '509f2cdc-fa9b-4fa5-b5ba-0a498f8bcd0d',\n", + " 'ea1032a8-2e23-4c1a-a6b4-da4ef6c1781c',\n", + " '2bafea53-b60f-4264-b682-49369b088e09',\n", + " '60d69cdb-50a2-4876-ad93-7f5eab5f0bbb',\n", + " '7977e587-e6ab-4c77-9239-2e6e85d3ebee',\n", + " '38740dfb-ccf7-469e-9033-b18454e479d3',\n", + " 'eb2a595a-920e-48b4-80a0-64292d6d731c',\n", + " 'e229ad51-90f4-406d-91a9-aae348773d80',\n", + " '5d4d08e4-f247-488b-a229-2bcc9485fde0',\n", + " 'eb252734-b0ca-4cdc-adb7-ea9438f97e7b',\n", + " '17d550fe-3f35-4e93-a545-903b71bd3e6c',\n", + " '3f262788-6ae1-4b74-aec0-fcbf81b0a645',\n", + " '6104d724-d25e-4597-a26b-bb949644153d',\n", + " '8cc838aa-0ec2-4a09-a15f-db0ae6a2ffab',\n", + " 'e0196237-9c2e-4953-afcb-596964899884',\n", + " '203e1af3-9db0-415e-a245-d98b351ca7a1',\n", + " '18a28b71-a0af-4137-96cb-c04b8fdf0255',\n", + " '0bbd745e-031b-48fb-8142-2dc840155fb2',\n", + " '3fe5527e-e960-47a2-89a3-3aee1c96ed54',\n", + " 'e1ade73d-99c6-4232-87d3-755ae8df1a42',\n", + " 'f6f85673-77c5-4250-a571-acb65c11b732',\n", + " '1b118edb-5621-4f85-9169-cb223d1be0ab',\n", + " 'd1b4def7-52e6-495d-8d4c-6e3a24252500',\n", + " 'f841f290-4d1d-4ac3-8ab0-43bb954770a5',\n", + " '5ff499bc-29a4-4a6f-973d-9bb6695f2de6',\n", + " 'e191e2a4-f5d3-4ac7-aa6b-40d5c9c6cc78',\n", + " '03afba56-8f07-4106-9301-42642d8568b7',\n", + " '320d1408-f2a0-4c69-bfe7-095cdcdfef96',\n", + " '3d809fd6-2644-4bf2-8c9a-de743d816cad',\n", + " 'e6cc4452-24f7-460e-8ee4-ca2779946946',\n", + " '9d4c6b85-6538-46f2-9088-3c431ab0472d',\n", + " 'a730bdd5-374f-4f27-b0c6-5e6d68c67c68',\n", + " '31c28620-873d-49e7-b302-75537a821f60',\n", + " 'cecdffe3-c4d6-4e3d-a73e-fa50ec248473',\n", + " '7d0af39a-6553-4e6f-a93a-982b34150de2',\n", + " '37c5a9a4-7e45-4169-b8ad-45fd07cb1c85',\n", + " '2e2bacc0-e634-4dca-90c4-5dc7766e8bd5',\n", + " 'ed4b992e-14c4-477f-bee8-fb9ac262d7df',\n", + " 'e87ee20d-442a-4a63-8852-af1a7d02b26c',\n", + " '7ac6ceb1-5c95-4774-a3d0-0a57eec8893c',\n", + " '53516e25-1630-46c7-9412-6ce36420597d',\n", + " '88792e08-e6af-40b4-86cc-2bcf2f9b7045',\n", + " 'b3635c49-7fff-447c-bc2e-69f1043719fc',\n", + " '5229124f-275d-44ca-94af-4c5444bea53e',\n", + " '8803fb76-46ea-4e82-8a74-c48273ca2782',\n", + " 'b6bcb702-4da4-4b24-b084-8f640b94b1ce',\n", + " '2eaae04e-cf8b-49a8-b116-3aa935481650',\n", + " '22d2477e-ab18-4584-b2b0-fb75563d63ea',\n", + " '292563a1-7a40-4fd8-a38f-475625850b1c',\n", + " 'd299d484-6021-4415-8774-e4d9955be374',\n", + " '38a3dee5-d109-430f-a34f-19bb27fcdcc8',\n", + " '8b461567-4dd1-4470-8454-6e8ff32d41af',\n", + " '5beae9ea-bf70-4c63-b477-85543ca1ea9d',\n", + " '9f011199-60f7-4311-9795-a9c1e5b637da',\n", + " '860c6ec2-50a5-41a8-be4e-2e7fa3912837',\n", + " '5ffedbbb-8a9c-4930-bee6-ef3d4ae954db',\n", + " '611d6607-1285-47e9-b5b6-b6ad073a3196',\n", + " '7665171c-3456-4be3-a2c0-72fc734afb1c',\n", + " '489da309-65d8-43a7-b87e-146acb2f81df',\n", + " '5271f3dd-e90a-4b62-ae81-77f103376851',\n", + " 'b09443d6-dacb-4878-a669-9a9f88f2e362',\n", + " 'b1ad2a16-66ed-4ff3-8a37-97d482f3215f',\n", + " '98d964c7-9a3a-4c0a-8b71-5d296611f1da',\n", + " '9e2f731d-70ee-4a9a-a444-eafa87db0985',\n", + " 'bf81e457-8446-4a1d-bf2a-db8bcbf69df4',\n", + " '4967421c-fb01-488b-8e12-60062859f177',\n", + " '35a3c928-727d-40d5-a30f-fc827e0e1b2f',\n", + " '270bedd6-25d9-4d9e-9020-cdc29aee8aac',\n", + " '5d4a3d35-e5c2-43ca-b2ca-377fc916565c',\n", + " '18293b99-2a44-4fb9-b0c4-34327509f36b',\n", + " '1de583aa-d375-4014-a472-3369838eedb5',\n", + " '8f533ea9-33ab-46c2-a746-e6827d8d4131',\n", + " 'd471a76b-7700-425b-a16f-4ee474bd0bfc',\n", + " '3876c6f2-cdd7-4701-b0cf-de91fa2aee54',\n", + " 'f34d4c94-9009-4ae9-98d1-ade8455b0695',\n", + " 'cfb126a3-7473-4c88-8cad-9556fb73e354',\n", + " 'bb6e0ed4-4935-4d4a-a17c-08ca0d054e1b',\n", + " 'e53ba1e9-11b8-4053-b83d-8ed3fc873636',\n", + " '6e8461db-1cdd-4554-b2e7-7950531c267b',\n", + " '373f4064-8d7c-4110-a1f6-447c640b75c7',\n", + " '5bb80c28-f11d-431d-9b82-31994b38b485',\n", + " '6ea9bd12-0715-4aed-a633-69d3797559a2',\n", + " '2a106ce5-836a-41d6-9d82-51671f8cc92a',\n", + " 'e0358a89-e095-4c97-b5b8-bf45bc036a23',\n", + " 'aaa6f208-df94-47ca-bb9b-33877a8a4b0f',\n", + " 'ac2fc898-412f-4754-a72f-b1db2e25d5d0',\n", + " 'd7cd1d86-6ef2-4569-8865-7303961105a4',\n", + " '37f836cc-cfa3-46f4-a296-aafbebd6af8a',\n", + " '7b8170b6-f9b9-4898-9482-57036e1c1ab0',\n", + " 'ed90af4d-f715-447d-a261-6ecd517e52db',\n", + " '2b001a21-eac4-418b-b1de-b638db2987b2',\n", + " '5224dfa6-151f-4e5a-9ca5-14c544b70074',\n", + " 'af9b1c7d-fdb5-4dbb-a5ce-be7dc831f18b',\n", + " 'b9cf9d4d-66c2-41b9-a3dc-a47ea726bcae',\n", + " '568ae0b7-8498-4cca-80d7-07d7f1b8d8d2',\n", + " '801d364f-3f5c-468d-a232-a609f9271781',\n", + " 'e9d6a161-2658-43a8-a5f9-b75c81afc886',\n", + " '45272107-e7b2-4ed5-b408-609c60dbef33',\n", + " '95d4e320-1b16-4706-a81c-94f64ae58c3f',\n", + " '48cccdc3-5c2d-469f-9dbd-0106861cc413',\n", + " '68e276b9-cfe1-4acf-99ab-68ddf034b140',\n", + " 'cdceb7d0-0ead-407e-9782-82dbcd56292c',\n", + " 'aea8f6f1-3308-4d98-ba0c-9b20c93f6821',\n", + " '6277fef3-a656-41d6-8e06-9e66d660fef2',\n", + " 'c9b9ff55-5a83-47b6-8c44-9d3d096bc12a',\n", + " '2a7356a9-c61d-4694-8ea7-c8ae2cc6a342',\n", + " 'db47c282-548c-4e80-ac0f-6309ea8bf517',\n", + " 'b980deb6-fc05-45cd-897c-b485bb7aedcd',\n", + " '8f4118d8-b4a0-4fa7-ae15-436a1a54c782',\n", + " '0d8cc909-0e97-46b0-ba99-da87e8557347',\n", + " '0139fa2c-ac29-49a7-99c0-9a2abc1958f9',\n", + " 'd3be673b-7174-42a1-b68d-87df8a037001',\n", + " '8a77c4ac-3561-44d4-a7e3-971a0a4ec800',\n", + " '1af4bc4e-71e8-4cbb-bd4b-9cb1869d230c',\n", + " 'd5a2fef6-ce3d-4fad-a479-dc299379b08d',\n", + " '92d0fa79-7925-427e-8783-c25bbaa7e5ea',\n", + " '89748722-e362-475a-9a56-72492e06550b',\n", + " '02df1b37-e062-45c0-b42d-76ccd0c650a7',\n", + " '57e5aac8-a900-4c84-9987-6cc2450102c9',\n", + " 'c2f33e8b-c3b6-4e92-9e6a-f50db3edccf1',\n", + " '803a89f1-d50a-4787-a2fc-e719eaf8d842',\n", + " '9a2347e2-c540-4c73-bf44-626dbb544a75',\n", + " 'aa41d446-fa12-40ce-957a-c8d11f8abd24',\n", + " '454c275f-009e-4230-925e-ed2a04a9a48e',\n", + " '847db9f6-1060-41bd-ac37-28dd7a2eedff',\n", + " '6c6e8e7e-93ce-4e6c-a716-3fbb4d4aae78',\n", + " '1ec597d9-2d6d-43dd-b074-482b04b4d404',\n", + " 'c1c272ce-0ec9-4cf7-868c-5d776928fc56',\n", + " '866282ab-df19-4505-81ad-2d9c135f44d0',\n", + " '4706426a-c393-44b8-8744-aa0438e67db2',\n", + " '143d7671-417d-432b-aba5-0aa11eff3da2',\n", + " '574af6e3-5ea3-49e6-a610-041217e80efd',\n", + " 'f9ccbedf-1f42-4fc8-a8f4-3663c28416dd',\n", + " '72f0fce4-3302-43c9-bb10-130b301ee824',\n", + " 'a85244e1-a8c6-4837-aceb-7f07af25fba5',\n", + " '81470441-e099-45f9-8758-07d86d5e0d02',\n", + " '56512fb4-543c-45aa-ac25-7ff36e354862',\n", + " 'e652859e-bf9f-466d-a89b-b8b6eb87dd54',\n", + " '1cbd28d8-69d2-48d9-9942-6735d65ba5a7',\n", + " '910ebe86-85c3-4942-bbd5-41a731b7fdfd',\n", + " '2fd27393-0e22-4c16-96ae-20e02beaba47',\n", + " 'fc9e0225-1f3a-493f-9ed0-0e56aaf110b7',\n", + " 'f64adf7f-6a67-4333-9df9-ba1ed2340c9c',\n", + " 'ddc2c042-9716-42d1-b669-7adeb1edb898',\n", + " '87feb593-73dc-40be-946a-adb8ac576768',\n", + " '5081b568-a738-46a9-af4e-d2f2b7add5b7',\n", + " 'a8c2512c-84aa-4946-83b9-e1c8705868cf',\n", + " 'dd067cf3-c089-4c36-90f5-ac941cb66687',\n", + " 'eaae8375-68c7-4849-81d3-fe1866a40fe4',\n", + " 'e16487ea-8ac5-4c05-be61-9070cd99c135',\n", + " 'c8108b01-7425-41cb-ab41-9e54f5f43e70',\n", + " '1371b233-421d-4557-9807-ac7654773c86',\n", + " '8f6f1bed-b48a-4fd6-bb07-c5dc700ff7e9',\n", + " 'c25099c4-df19-4e0c-b397-561e2096ff29',\n", + " 'd95a6be9-2825-4ada-bed5-3c6e5de42df8',\n", + " 'f1d64137-1831-4d9d-b35d-f46e7bf78be0',\n", + " '40d54e17-3393-4911-b7ef-a2ecaefe36bd',\n", + " '3f8a2866-98cb-45c9-a113-db1a1fa57e59',\n", + " 'dc322c3d-fb96-4e02-9b20-a9debf963318',\n", + " '9602b038-f861-43a6-9326-a41631bf62cd',\n", + " 'feb4ee9d-3592-401c-a31c-4a22e8cc5843',\n", + " '8261587c-62a7-4428-8088-7faf4d5f2f0a',\n", + " '7ec45285-66ec-4ef1-8cd1-c605c72b9cdc',\n", + " '8240a1f3-9cf8-45a1-9431-3d63bd625b91',\n", + " '4e217ad4-325b-4ef1-bf4a-ea5f7b294375',\n", + " 'c05db549-af48-41d9-8763-411a9dde6dff',\n", + " '41387ce4-ca9e-45d4-bed7-eef1885dbc4d',\n", + " '0e2d23bb-10aa-407a-918a-e41d25e2bca5',\n", + " '21c8c8ff-9818-4e53-9716-2d2846a70fa2',\n", + " '8fbdb17c-3f68-4aff-b135-4ecb5f439fad',\n", + " '0a76ef1a-3e79-48e0-9ce3-9038106bd566',\n", + " '7a4e5311-2259-4782-8388-b3fbd9ff31b2',\n", + " 'cc7bc911-8547-49ab-8341-903bf5f92c28',\n", + " 'f3c54b5b-f42c-4a7d-b92d-30540ac29347',\n", + " '4a6b0eeb-e3ef-47a2-bd00-a99d18f479bc',\n", + " '7bd4793f-50bc-4849-bfae-7ae3ea7f7b59',\n", + " '4af025f0-9146-4ded-b6ae-3f165fd8926c',\n", + " 'fa3df00e-3d9f-49fc-9cf9-4aa5d324b13e',\n", + " '86eeec38-6a3d-47a1-91da-a666d1582db9',\n", + " 'c3719265-4267-4218-80e1-d61d0ff8bfa5',\n", + " '66a15544-b0bc-465f-b819-9e1e42eff00b',\n", + " 'be3e9b7e-201f-4772-a672-cbdda2bb9959',\n", + " '55c079c6-9f18-4613-b92c-6a73a4858d22',\n", + " 'ab44b0f2-e103-401a-971b-ce5ab6461b30',\n", + " '62602025-645e-4798-8c79-5df19287a407',\n", + " '8c44c555-e776-4aa0-90e1-069ca03b7382',\n", + " 'f74d8b9a-6242-4424-bac2-08509d469fe0',\n", + " '893516c0-2499-4354-a251-4f4d76576cd3',\n", + " 'af80ee35-ae78-4c6e-bd9a-0a1b2a873af6',\n", + " '8361086f-f298-40b8-a819-0a5581086510',\n", + " 'ae730fcd-9849-46e6-ac26-3624efdbc0a3',\n", + " 'f57ceb1e-21a6-4432-a309-6c136c7c754d',\n", + " '1d8db7e9-9c4d-400b-888e-77db40858629',\n", + " 'f56bee1a-4cb0-4a9c-a49e-e511a34bc1c7',\n", + " 'f397b098-b59c-45aa-933d-a6ab2fcc574b',\n", + " '911afa7b-2abd-418a-b212-fe8d41019c69',\n", + " '2860cad7-0b8b-4914-b104-aaf16874214c',\n", + " '391a1ffe-6b8b-4f0b-9cd3-addef1adebf4',\n", + " 'b60dc7d4-397a-4044-a872-159c81ba511b',\n", + " '012ab837-d8ed-4f06-b739-7df973fac9f6',\n", + " '97a3fdaa-eef6-48e0-9bf8-dd81318cc940',\n", + " '428dc18a-352e-4af6-81e9-ec56a4e1d67e',\n", + " '64eae88c-a501-48ce-8174-a7359d6b2310',\n", + " 'a49980ce-d7d8-46b2-93e8-49ecc331bdd8',\n", + " 'cfa7dc1c-4e0c-4f18-a01a-118e2ff898ed',\n", + " '1e510c87-b9b2-4e2c-b4a6-7359d61acb28',\n", + " '0ebe9dc8-e832-4b1e-b0b9-32e51394db98',\n", + " '191aed6e-8c32-4e67-8d63-f3d87fcaaa3e',\n", + " 'e46a3c2f-57a3-4277-90cb-b6f25f277f0e',\n", + " '673df5c4-1773-43b0-9ce6-2cf56f6d0711',\n", + " 'f14a8bd8-dafa-4615-b9c5-a49ab3002212',\n", + " 'e1856726-af9d-43be-b851-ebaac5c0dd2d',\n", + " 'b6e493b1-a81d-4f4a-a1fb-b4fcfcbec0dc',\n", + " '9239d28e-55fd-41f2-91b5-5b15fe19c859',\n", + " '420d1d94-4c57-4ebc-8f90-7ca121706d2d',\n", + " '87a6b169-2229-4931-913c-a787dd4bd2ac',\n", + " 'da1c725e-ee97-48d9-b966-3265bd5fb21a',\n", + " '7e9e48f1-f653-48c2-a630-f34f4e5fd142',\n", + " '9d3c3f3e-ca7d-4923-a6b3-ae1e40858161',\n", + " 'f96db07a-37e1-4f93-899f-a77f9d04fd0d',\n", + " '6ea60cd5-5536-458d-828f-1379d29716b1',\n", + " '41caa12a-907f-49c1-bf21-b13b7d65cfad',\n", + " '27b7eccf-a203-45ff-a162-d32f753a641e',\n", + " 'd56661fc-b1fc-4af5-b3c5-f6b25032d8c2',\n", + " '9d83f3c4-6ed4-42d8-bf33-ac1931aa8f9d',\n", + " '3c14bec7-79ab-4c56-8baa-c491f46a045b',\n", + " '13fb5da9-510a-42d2-8d63-69a7bb0e8f30',\n", + " 'd7a9cb65-8b85-4407-b896-7d2ed80495cb',\n", + " 'cf2a9c2d-1900-4775-b102-3ed10de47d53',\n", + " '45e20b89-7a06-4950-b83b-3e9f438000e0',\n", + " '6eb298f1-f604-499b-b318-3b9573d8a1d9',\n", + " '5cd0f818-6ce7-4fb3-b322-2ac578842b61',\n", + " '45fe5d61-e1c9-4085-be57-0dc56c7454c9',\n", + " '3ff03104-29d4-44ba-9d73-988c549b781f',\n", + " '1640b0d9-87e5-4372-8be5-196b8919f026',\n", + " '1d7e0170-5c16-4509-8d70-35d5522a4168',\n", + " 'e2faac4f-cc52-4e0c-a023-c2f29ac28f56',\n", + " 'cd2eb494-2ce7-47f6-9f48-f7ff58da0190',\n", + " '96e2a6ea-9892-465f-add7-d7259c3465b8',\n", + " 'bf6017e1-85b0-428f-aeb1-a1e71a8451b1',\n", + " 'cb6861f1-785a-44fc-96c5-9cc82ca1e381',\n", + " 'a8cd73e1-00e1-42eb-bd89-ba7e6e795208',\n", + " '0ea95f0e-09cd-4475-aef3-89696a4d05c4',\n", + " 'a054fd43-4ab2-41c9-b85c-c081e5a0842b',\n", + " 'a045e036-f46c-4b9d-b307-a5e339e0d9d9',\n", + " 'e9ac9fde-5ff3-4826-b5af-806db152c544',\n", + " '3b95f1a9-9924-42e3-a9f3-1650c8e3968d',\n", + " '3cd352a1-81c4-477e-819f-a1670a1a38b3',\n", + " 'c2e206e4-ca7a-4e28-9b73-df98c0dd0738',\n", + " '39005966-b11c-4d1f-b643-a3f6f0d64020',\n", + " 'b5f95556-4032-4cb6-af2c-cec5f1920974',\n", + " '82ec972f-a412-4e69-9008-369f1d357c5e',\n", + " '55a6b0db-a77b-4a90-a7c4-bed73e035288',\n", + " '318b5c32-cf70-44c2-94e0-8229fef59973',\n", + " '3efec167-6bdb-47ad-b3e8-bc20fe7ee3f8',\n", + " '97a74ad6-a0ef-4506-ad21-f6be42479bc8',\n", + " '71c813c3-c76e-40e3-aa4c-79959370d093',\n", + " 'd54c6586-61ed-4dbe-92db-03ad50e26c68',\n", + " '077f39e4-cf58-4c6c-9b01-68150928777f',\n", + " '1fb615ea-5f35-4a83-9767-79d194b16738',\n", + " '38d33e04-cfc5-48cf-b0e9-f0c0cbbe0a36',\n", + " 'b44c9de9-3245-4298-9d0f-d07f49b92352',\n", + " '352797c4-d7cc-495a-aa84-4f9bfe316ab3',\n", + " 'ced9ab7f-e4e6-4c40-9650-132ba7a089cf',\n", + " '65b2fc81-6d69-425a-a4bd-225300a50840',\n", + " 'a8408609-321d-4695-92c7-9ffc0ecaa0e2',\n", + " 'e91e5792-d7af-4e2b-8a64-57c573d1e7c2',\n", + " 'b9a61803-038d-4d53-a775-33547204bdac',\n", + " 'f412fea8-3f18-49cf-b152-831a6e0fb2ba',\n", + " '67552642-1b1d-4a74-8399-3af0d22a2bba',\n", + " '8364ed6f-246b-4aa3-98da-229347143795',\n", + " '11c7ca9b-e27b-4d2f-964d-f70a25613a90',\n", + " '2d7771c0-6290-4b18-94c3-a26e0ee0f6d9',\n", + " 'fc868d06-d61c-46c1-9058-04c7efd8babe',\n", + " 'aa5a348c-d227-442e-8352-3ff65a47b23d',\n", + " 'd55f70d7-c0e9-4b32-9d4a-abbc0eaa08c2',\n", + " '961e0872-4e58-47fd-9059-86b0f8348a88',\n", + " 'edf80104-071d-4aa4-940f-28bacdda7cd0',\n", + " '6189b92e-6d29-4edb-ac32-0af0013d8f54',\n", + " '6f178007-0870-4341-a39a-9e097d4892c9',\n", + " '2f0cd775-949e-4347-ae01-b2ec2a3d34d8',\n", + " 'f3ff2772-cc6b-441b-8bec-3939d9ade24f',\n", + " '42620c20-c5cd-40b0-967f-a176fd5f6716',\n", + " '9178be85-b963-402d-8bb9-3cc6b0c02393',\n", + " 'cb2e4ba9-4977-4976-971f-8b2d2130457b',\n", + " 'f16656e2-a5b1-417c-b2a4-3e90749626ef',\n", + " '167f0d5c-c045-4c41-9be9-012dc3a613a8',\n", + " '7f24787a-12b3-4808-b9be-02fd168a57ba',\n", + " '12a5a5d9-6395-499c-aee9-0264c2c3a241',\n", + " '0e44fee4-3709-4bd9-a3ed-f71a242552a2',\n", + " 'be6578dd-b0a1-4963-9b5d-d4d541a13447',\n", + " 'fd986895-9a96-4c5d-b1d8-1d56963dbb50',\n", + " '9fa618b0-d89a-4b19-bed2-e8d2878d74c9',\n", + " 'b9626dcd-cc19-4b09-866e-ec041446e14d',\n", + " '19d7b6b3-92fc-40a8-862e-ca0044ba1b30',\n", + " '7db2bace-91df-46b9-95be-214180f6154c',\n", + " 'aee18bee-4b0b-4ef3-b9e3-984447036b04',\n", + " '5dd90de7-ee47-4a8e-ab17-43febaba137e',\n", + " '604bc310-a541-43af-a331-a01b237e5ee9',\n", + " '1dce413a-523b-46d2-8f36-c273c3b8a759',\n", + " '74d65cae-1c94-44dc-b8a6-ef6bf88a563b',\n", + " 'e3299414-e553-4a76-8abd-25eec5c3561e',\n", + " '8677c1ee-00ae-4460-90a1-4c15cb6e7690',\n", + " 'ba3cb370-2933-4a81-ad84-080f58c84eb2',\n", + " 'f50244c0-af50-4780-8785-ba6da519daa2',\n", + " '8ea00430-75b1-46dd-9682-f5e35eb7182c',\n", + " 'fda23f60-79bf-4962-9d79-3acd839e3764',\n", + " '84a78dd7-0c56-4d0f-a19e-86f55cac2bf2',\n", + " '9c2561d7-24ac-49c1-85ed-1aafceb0d0f1',\n", + " 'c072b56f-38d1-41cd-99e1-edc8a5e2e13c',\n", + " 'f8717e05-173c-4375-b342-b335b12131f2',\n", + " '2ac08252-940f-45b7-8ab0-e415d539dbfa',\n", + " '0ecfcf74-1a6a-4721-8763-f062620f8f57',\n", + " 'cda6dc37-bb2a-41af-891c-d956029ac1dc',\n", + " 'c7ce36fa-a9fd-451b-b5b5-951dcdc02f33',\n", + " '81ff43f0-0e7a-40d2-992a-2977607ab821',\n", + " 'ae1054ca-4b66-4585-aa63-6c6a86594c72',\n", + " '16197759-12dc-4516-8d60-0e23c1458e22',\n", + " 'fc811133-fc2d-4f19-ac64-8f4be7c0c75a',\n", + " 'adde7ff6-97fa-487d-8621-7e2b6ff8853e',\n", + " 'cd4efb07-d529-41cc-89bc-46ab228eae12',\n", + " 'eec0ec3a-7565-429a-bc07-810ccc981bcc',\n", + " 'f91f6e26-9f1b-4e94-b9ca-31a11141b539',\n", + " '30f94772-823e-4e2a-8442-b97f08f58c41',\n", + " '749c0a5d-1091-482f-8f5a-6b759cbdb6b0',\n", + " 'facf1ff3-34c4-4eae-92a4-24080c3fa8e7',\n", + " 'd968e333-4cd9-423d-9845-175591bb0323',\n", + " '4a33ab3d-76c2-4de0-9258-75693dfc3157',\n", + " 'ce834ce3-b614-43d8-8fff-cf7650024c32',\n", + " '331897cd-d23a-44a3-ad29-4ac6a11a4ef1',\n", + " 'cf59f004-7afc-4c9b-834e-91b130f8c61e',\n", + " '2d085031-fcde-4533-ac85-a7a8623bbbbe',\n", + " '9f7047d8-e813-4047-b9d9-4fc089aeaf4b',\n", + " '5ae90150-686f-4194-a68b-86bee8f6fd8b',\n", + " '9ebcc7e4-d74c-4f73-b420-9214e8429e07',\n", + " '8a76aa08-fad6-4fd8-a7f7-5842d5227e21',\n", + " 'e870ae2a-7c3e-4851-91b5-a6fd71eca2ca',\n", + " '9f4ad8f7-696c-41f0-919c-eb75eb0c7fe4',\n", + " 'f1ac28dc-e38d-4e56-bc46-80b4904880a5',\n", + " '52aaf2e7-7e72-42ee-99cc-ac02e6a5bf7b',\n", + " '1c378b83-2a36-4de3-bec3-2bf2a71049c8',\n", + " 'dd52be61-33c2-4a04-855a-67d691d2f43f',\n", + " '2a1750c9-6962-4bdf-b4c6-e487da0938f2',\n", + " 'be33bc81-aa98-424d-a640-4b844696928c',\n", + " '005c0b5c-7be1-44a8-b453-fb302a689163',\n", + " 'da0fa7be-bd8c-4d72-98ea-e67a63418fcf',\n", + " '090d249d-5406-4060-9bd4-5e0820a4157b',\n", + " '6b10501a-d4f8-4226-8411-fca505348a90',\n", + " '6cfa8d32-9695-46a2-8975-da8f2d0411a2',\n", + " '3b2dff40-a47e-4f34-a7ba-e73c55deeaa8',\n", + " '7d05313c-5c41-49f8-a979-00c80574ab6b',\n", + " '9554338e-c13d-48d6-969c-3608c5d72ebe',\n", + " 'a64d3d87-d23c-4883-bc58-f093f5c1dcaa',\n", + " '2cd16b79-6128-4638-9bdc-7cc752313ae4',\n", + " '410a7bdc-ba7e-4d93-aa4b-46c500c91e53',\n", + " '63ef5701-13c0-4507-9b06-03828c6d015e',\n", + " '948eef45-9d20-443f-834b-618d7041d727',\n", + " 'd10456e3-b0a9-4c4e-801b-c50b3a0895f3',\n", + " '500a6867-6eb8-46de-8420-66016c588a55',\n", + " '3af7768d-7028-4714-9c66-34482fd54a9a',\n", + " 'f4237848-16d9-412a-9f8d-ffdaa63cfc82',\n", + " '04583071-d852-4f60-a426-a35dc39696f8',\n", + " 'b599c3fa-11ab-409d-a752-0ea5a64c9848',\n", + " 'a0794f29-1917-40a9-baf3-963749fd7364',\n", + " '130827f3-09c9-4339-848a-dc00dc510ca7',\n", + " 'cb9bf46b-782b-4cd7-8803-71f90e51dd9a',\n", + " 'da81633f-d101-4951-be53-ceda56c74731',\n", + " 'f00c1c20-1b0b-4b96-bb0f-380c8e2ed7c1',\n", + " '421e5c41-ecc1-4c8f-8c11-3c2687f4e255',\n", + " '7451c4ae-f19e-4742-872f-91075b166f64',\n", + " '507785da-2de5-4f00-91f5-df3a8d0ca0e9',\n", + " 'a7a7eb39-a24d-4e16-bd27-db9afed5d548',\n", + " '0446ec8d-a753-42a5-a15f-dedf0f098c0a',\n", + " 'df776bec-9028-41fa-aa93-f80e37ba5fc5',\n", + " 'cd929133-6454-4d55-888e-d6d7f62a1600',\n", + " '3cef3fe9-8054-420f-b196-86e52224c03e',\n", + " '0ffd50a2-b7fd-48a3-bad3-24ea377104c6',\n", + " '2a72f6e5-d093-44bc-be90-bc566890446e',\n", + " '5f6f64c3-f9e2-4056-99fc-9b906fc11edc',\n", + " 'c6dc1687-ae7a-4608-9a62-3e1ca4c27569',\n", + " 'e81ab905-ea58-4e21-ab09-42397e3571dd',\n", + " '3c18bba5-556c-482e-8f7d-ed4bda0c1299',\n", + " '3f5c68c6-8fb3-4055-93e9-392fa13e9637',\n", + " '0574bd92-a7bf-49e7-85f6-05a49b0200cb',\n", + " '95126129-3530-4835-945a-0a1a1f7babe1',\n", + " 'aab33d22-58e5-46e3-97eb-f5516f4124c8',\n", + " '1f12d1df-d844-4641-b1d8-98da51dac80b',\n", + " '617c8743-4361-4568-a46e-108ba1092eab',\n", + " 'c2556d32-8172-4d91-9567-c6947bad50d2',\n", + " ...],\n", + " 'embeddings': None,\n", + " 'metadatas': [{'category': 'Access to Energy',\n", + " 'doc_id': 'owid_0',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Clean cooking fuels and technologies represent non-solid fuels such as natural gas, ethanol or electric technologies.',\n", + " 'url': 'https://ourworldindata.org/grapher/number-with-without-clean-cooking-fuels'},\n", + " {'category': 'Access to Energy',\n", + " 'doc_id': 'owid_1',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Clean cooking fuels and technologies represent non-solid fuels such as natural gas, ethanol or electric technologies.',\n", + " 'url': 'https://ourworldindata.org/grapher/number-without-clean-cooking-fuel'},\n", + " {'category': 'Access to Energy',\n", + " 'doc_id': 'owid_2',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: World Bank',\n", + " 'url': 'https://ourworldindata.org/grapher/people-without-clean-cooking-fuels-region'},\n", + " {'category': 'Access to Energy',\n", + " 'doc_id': 'owid_3',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Access to clean fuels or technologies such as natural gas, electricity, and clean cookstoves reduces exposure to indoor air pollutants, a leading cause of death in low-income households.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-the-population-without-access-to-clean-fuels-for-cooking'},\n", + " {'category': 'Access to Energy',\n", + " 'doc_id': 'owid_4',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Having access to electricity is defined in international statistics as having an electricity source that can provide very basic lighting, and charge a phone or power a radio for 4 hours per day. Primary energy is measured in kilowatt-hours per person, using the substitution method.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-with-access-to-electricity-vs-per-capita-energy-consumption'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_5',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Agricultural export subsidies are measured in current US dollars.',\n", + " 'url': 'https://ourworldindata.org/grapher/agricultural-export-subsidies'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_6',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The annual monetary value of gross transfers to general services provided to agricultural producers collectively (such as research, development, training, inspection, marketing and promotion), arising from policy measures that support agriculture regardless of their nature, objectives and impacts on farm production, income, or consumption. This does not include any transfers to individual producers.',\n", + " 'url': 'https://ourworldindata.org/grapher/agricultural-general-services-support'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_7',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Agricultural land is the sum of cropland and land used as pasture for grazing livestock.',\n", + " 'url': 'https://ourworldindata.org/grapher/agricultural-area-per-capita'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_8',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'This dataset is showing estimates of the total agricultural land area – which is the combination of cropland and grazing land – per person. It is measured in hectares per person.',\n", + " 'url': 'https://ourworldindata.org/grapher/total-agricultural-land-use-per-person'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_9',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Total agricultural output is the sum of crop and livestock products. It is measured in constant 2015 US$, which means it adjusts for inflation.',\n", + " 'url': 'https://ourworldindata.org/grapher/agricultural-output-dollars'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_10',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The annual monetary value of gross transfers from consumers and taxpayers to agricultural producers, measured at the farm-gate level, arising from policy measures that support agriculture, regardless of their nature, objectives or impacts on farm production or income.',\n", + " 'url': 'https://ourworldindata.org/grapher/agricultural-producer-support'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_11',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'A value greater than 1 means the agriculture sector receives a higher share of government spending relative to its economic value. A value less than 1 reflects a lower orientation to agriculture.',\n", + " 'url': 'https://ourworldindata.org/grapher/agriculture-orientation-index'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_12',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Apple production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/apple-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_13',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Arable land is defined by the FAO as land under temporary crops, temporary meadows for mowing or for pasture, land under market or kitchen gardens, and land temporarily fallow. It is measured in hectares per person.',\n", + " 'url': 'https://ourworldindata.org/grapher/arable-land-use-per-person'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_14',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Lowder et al. (2016). The number, size, and distribution of farms, smallholder farms, and family farms worldwide. World Development.',\n", + " 'url': 'https://ourworldindata.org/grapher/average-farm-size'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_15',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Avocado production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/avocado-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_16',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Food and Agriculture Organization of the United Nations (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/banana-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_17',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Food and Agriculture Organization of the United Nations (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/banana-production-by-region'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_18',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Barley production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/barley-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_19',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Bean (dry) production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/bean-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_20',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Habitable land is defined as ice- and barren-free land. Agricultural land is the sum of croplands and pasture for grazing.',\n", + " 'url': 'https://ourworldindata.org/grapher/breakdown-habitable-land'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_21',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Cashew nut production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/cashew-nut-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_22',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Cassava production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/cassava-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_23',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Cereal production is measured in tonnes, and represents the total of all cereal crops including maize, wheat, rice, barley, rye, millet and others.',\n", + " 'url': 'https://ourworldindata.org/grapher/cereal-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_24',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Cereal crops allocated to direct human consumption, used for animal feed, and other uses – mainly industrial uses such as biofuel production. This is based on domestic supply quantity for countries after correction for imports, exports and stocks.',\n", + " 'url': 'https://ourworldindata.org/grapher/cereal-distribution-to-uses'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_25',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Imports and exports are measured as the net sum of all cereal crop varieties. Countries which lie above the grey line are net importers of cereals; those below the line are net exporters.',\n", + " 'url': 'https://ourworldindata.org/grapher/cereals-imports-vs-exports'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_26',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Values measure the percentage change in production and land use relative to the first year of the time-series.',\n", + " 'url': 'https://ourworldindata.org/grapher/corn-production-land-us'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_27',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Food and Agriculture Organization of the United Nations (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/change-of-cereal-yield-vs-land-used'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_28',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Chicken meat production is measured in tonnes per year.',\n", + " 'url': 'https://ourworldindata.org/grapher/chicken-meat-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_29',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Cocoa bean production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/cocoa-bean-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_30',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Global production of cocoa beans, measured in tonnes of production per year.',\n", + " 'url': 'https://ourworldindata.org/grapher/cocoa-beans-production-by-region'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_31',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Coffee bean production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/coffee-bean-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_32',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Food and Agriculture Organization of the United Nations (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/coffee-production-by-region'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_33',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Corn (maize) production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/maize-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_34',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Pasture – land used for livestock grazing – and cropland are measured in hectares per person. The sum of pasture and cropland is the total land used for agriculture.',\n", + " 'url': 'https://ourworldindata.org/grapher/cropland-pasture-per-person'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_35',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Food and Agriculture Organization of the United Nations (2024)',\n", + " 'url': 'https://ourworldindata.org/grapher/cropland-area'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_36',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Total cropland area, measured in hectares. Cropland refers to the area defined by the UN Food and Agricultural Organization (FAO) as 'arable land and permanent crops'.\",\n", + " 'url': 'https://ourworldindata.org/grapher/cropland-use-over-the-long-term'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_37',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Soil lifespans are measured by on how many years it would take to erode 30 centimeters of topsoil based on current erosion rates. Data is based on a global assessment of soil erosion from 240 studies across 38 countries.',\n", + " 'url': 'https://ourworldindata.org/grapher/soil-lifespans'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_38',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Global land allocated to arable production or permanent crops from 1961-2014, with the UN Food and Agricultural Organization's (FAO) projections to 2050. Land area is measured in hectares.\",\n", + " 'url': 'https://ourworldindata.org/grapher/fao-projections-of-arable-land-to-2050'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_39',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Application of all fertilizer products (including nitrogenous, potash, and phosphate fertilizers), measured in kilograms of total nutrient per hectare of cropland.',\n", + " 'url': 'https://ourworldindata.org/grapher/fertilizer-use-per-hectare-of-cropland'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_40',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Global land area used for agricultural production, by major crop category, measured in hectares.',\n", + " 'url': 'https://ourworldindata.org/grapher/global-agricultural-land-use-by-major-crop-type'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_41',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Allocation of crops – measured as the aggregate across all major food groups in kilocalories – broken down by farm size. Farms are grouped based on their total agricultural area, in hectares.',\n", + " 'url': 'https://ourworldindata.org/grapher/crop-allocation-farm-size'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_42',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Global crop production is measured in kilocalories per year. Farm size is measured in hectares.',\n", + " 'url': 'https://ourworldindata.org/grapher/global-crop-production-by-farm-size'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_43',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'This is shown for the largest crops grown by Ukraine and Russia.',\n", + " 'url': 'https://ourworldindata.org/grapher/food-exports-ukraine-russia'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_44',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'This is shown for the largest crops grown by Ukraine and Russia.',\n", + " 'url': 'https://ourworldindata.org/grapher/food-production-ukraine-russia'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_45',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Grapes production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/grapes-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_46',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Total land used for grazing, measured in hectares.',\n", + " 'url': 'https://ourworldindata.org/grapher/grazing-land-use-over-the-long-term'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_47',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Labor productivity corresponds to the ratio between value added in agriculture (SEK, constant prices, 1910/12 price level), and number of people employed in agriculture.',\n", + " 'url': 'https://ourworldindata.org/grapher/labor-productivity-agriculture-sweden'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_48',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Food and Agriculture Organization of the United Nations (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/land-use-for-vegetable-oil-crops'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_49',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Agricultural land use is the sum of croplands and pasture – land used for grazing livestock. It is measured in hectares.',\n", + " 'url': 'https://ourworldindata.org/grapher/land-use-agriculture-longterm'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_50',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/cereal-yields-uk'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_51',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Food and Agriculture Organization of the United Nations (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/maize-exports-ukraine-russia-perspective'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_52',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Methane (CH₄) emissions are measured in tonnes of carbon dioxide-equivalents.',\n", + " 'url': 'https://ourworldindata.org/grapher/methane-emissions-agriculture'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_53',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Lassaletta, Billen, Grizzetti, Anglade & Garnier (2014). 50 year trends in nitrogen use efficiency of world cropping systems: the relationship between yield and nitrogen input to cropland. Environmental Research Letters.',\n", + " 'url': 'https://ourworldindata.org/grapher/nitrogen-output-vs-nitrogen-input-to-agriculture'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_54',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Nitrogen use efficiency (NUE) is the ratio between nitrogen inputs and output. A NUE of 40% means that only 40% of nitrogen inputs are converted into nitrogen in the form of crops.',\n", + " 'url': 'https://ourworldindata.org/grapher/nitrogen-use-efficiency'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_55',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Nitrous oxide (N₂O) emissions are measured in tonnes of carbon dioxide-equivalents.',\n", + " 'url': 'https://ourworldindata.org/grapher/nitrous-oxide-agriculture'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_56',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Oil palm production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/palm-oil-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_57',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Orange production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/orange-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_58',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Total organic area is defined as the land area certified as organic, or in the conversion process to organic (over a two-year period). It is the portion of land area (including arable lands, pastures or wild areas) managed (cultivated) or wild harvested in accordance with specific organic standards.',\n", + " 'url': 'https://ourworldindata.org/grapher/organic-agricultural-area'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_59',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Food and Agriculture Organization of the United Nations (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/palm-oil-imports'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_60',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Pea production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/pea-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_61',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Nitrous oxide (N₂O) emissions are measured in tonnes of carbon dioxide-equivalents.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-nitrous-oxide-agriculture'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_62',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual inputs include phosphorous from the application of synthetic fertilizers alongside organic inputs such as manure.',\n", + " 'url': 'https://ourworldindata.org/grapher/phosphorous-inputs-per-hectare'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_63',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Potato production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/potato-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_64',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The value of agricultural output produced by small-scale food producers, per days worked in a year. Small-scale food producers are those in the bottom 40% of the amount of land used, livestock and revenues. This data is adjusted for inflation and for differences in the cost of living between countries.',\n", + " 'url': 'https://ourworldindata.org/grapher/productivity-of-small-scale-food-producers'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_65',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Projected trends in global agricultural area extent by various sources, measured in hectares. Projections include those from the UN Food and Agricultural Organization (FAO), International Assessment of Agricultural Knowledge, Science and Technology for Development (IAASTD); OECD, and scenarios from the Millennium Ecosystem Assessment (MEA). Also shown is the actual agricultural area to 2014, as reported by the UN FAO.',\n", + " 'url': 'https://ourworldindata.org/grapher/projections-for-global-peak-agricultural-land'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_66',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Rapeseed production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/rapeseed-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_67',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Rice production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/rice-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_68',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Rice production is measured in tonnes per year.',\n", + " 'url': 'https://ourworldindata.org/grapher/rice-production-by-region'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_69',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Rye production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/rye-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_70',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Sesame seed production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/sesame-seed-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_71',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The percentage of total agricultural land area which is irrigated (i.e. purposely provided with water), including land irrigated by controlled flooding. Agricultural land is the combination of crop (arable) and grazing land.',\n", + " 'url': 'https://ourworldindata.org/grapher/agricultural-land-irrigation'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_72',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Share of population with secure tenure rights over land that are women. Secure tenure rights over land include agricultural land ownership and the right to sell or bequeath agricultural land.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-agricultural-land-owners-that-are-women'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_73',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Organic arable land area is the sum of the area certified as organic by official standards, and land area in the conversion process to organic (which is assumed by the UN FAO as a two-year period prior to certification). Arable land is that used for crops (which does not include grazing land).',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-arable-land-which-is-organic'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_74',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The share of domestic cereal supply – after correcting for trade – which is allocated to animal feed, as opposed to being used for direct human consumption or industrial uses (such as biofuel production).',\n", + " 'url': 'https://ourworldindata.org/grapher/share-cereals-animal-feed'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_75',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Food and Agriculture Organization of the United Nations (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/cereal-allocation-by-country'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_76',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The share of domestic cereal supply – after correcting for trade – which is allocated to direct human consumption, as opposed to being used for animal feed or industrial uses (such as biofuel production).',\n", + " 'url': 'https://ourworldindata.org/grapher/share-cereal-human-food'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_77',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Share of domestic cereal supply allocated to direct human food, rather than animal feed or biofuels. GDP is adjusted for inflation and differences in the cost of living across countries.',\n", + " 'url': 'https://ourworldindata.org/grapher/cereals-human-food-vs-gdp'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_78',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The share of domestic cereal supply – after correcting for trade – which is allocated to other uses (primarily industrial uses such as biofuel production) as opposed to being used for direct human consumption or animal feed.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-cereals-industrial-uses'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_79',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The share of land area used for agriculture, measured as a percentage of total land area. Agricultural land refers to the share of land area that is arable, under permanent crops, and under permanent pastures.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-land-area-used-for-agriculture'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_80',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The share of land area used for arable agriculture, measured as a percentage of total land area. Arable land includes land defined by the FAO as land under temporary crops (double-cropped areas are counted once), temporary meadows for mowing or for pasture, land under market or kitchen gardens, and land temporarily fallow.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-land-area-used-for-arable-agriculture'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_81',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Permanent meadows and pastures is defined by the FAO as: \"the land used permanently (five years or more) to grow herbaceous forage crops, either cultivated or growing wild (wild prairie or grazing land).\"',\n", + " 'url': 'https://ourworldindata.org/grapher/area-meadows-and-pastures'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_82',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Shown is the change in soy production, yield and area used to grow the crop over time.',\n", + " 'url': 'https://ourworldindata.org/grapher/soy-production-yield-area'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_83',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Soybean production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/soybean-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_84',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data at the national level is based on soybean uses after trade (which is soybean production minus exports plus imports).',\n", + " 'url': 'https://ourworldindata.org/grapher/soybean-production-and-use'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_85',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Sugar beet production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/sugar-beet-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_86',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Sugar cane production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/sugar-cane-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_87',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Sunflower seed production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/sunflower-seed-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_88',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Sweet potato production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/sweet-potato-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_89',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Tea production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/tea-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_90',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Tea production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/tea-production-by-region'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_91',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Tobacco production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/tobacco-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_92',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Tomato production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/tomato-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_93',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual inputs include phosphorous from the application of synthetic fertilizers alongside organic inputs such as manure.',\n", + " 'url': 'https://ourworldindata.org/grapher/total-applied-phosphorous-crops'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_94',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Total official development assistance (ODA) and other official flows from all donors to the agriculture sector. This data is expressed in US dollars. It is adjusted for inflation but does not account for differences in the cost of living between countries.',\n", + " 'url': 'https://ourworldindata.org/grapher/total-financial-assistance-and-flows-for-agriculture-by-recipient'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_95',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Tractors used in agriculture per 100 square kilometers of arable land.',\n", + " 'url': 'https://ourworldindata.org/grapher/tractors-per-100-square-kilometers-of-arable-land'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_96',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Gross production value of the agricultural sector, measured in current US$.',\n", + " 'url': 'https://ourworldindata.org/grapher/value-of-agricultural-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_97',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Food and Agriculture Organization of the United Nations (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/vegetable-oil-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_98',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Global agricultural growth is measured by the average annual change in economic output from agriculture. This is broken down by its drivers in each decade. Productivity growth measures increase output from a given amount of input: it's driven by factors such as efficiency gains, better seed varieties, land reforms, and better management practices.\",\n", + " 'url': 'https://ourworldindata.org/grapher/global-agri-productivity-growth'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_99',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Food and Agriculture Organization of the United Nations (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/wheat-exports-ukraine-russia-perspective'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_100',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Wheat production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/wheat-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_101',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Total factor productivity measures changes in the efficiency with which agricultural inputs are transformed into agricultural outputs. If productivity did not improve, inputs would directly track outputs.',\n", + " 'url': 'https://ourworldindata.org/grapher/agriculture-decoupling-productivity'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_102',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Wine production, measured in tonnes per year.',\n", + " 'url': 'https://ourworldindata.org/grapher/wine-production'},\n", + " {'category': 'Agricultural Production',\n", + " 'doc_id': 'owid_103',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yam production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/yams-production'},\n", + " {'category': 'Agricultural Regulation & Policy',\n", + " 'doc_id': 'owid_104',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Agricultural export subsidies are measured in current US dollars.',\n", + " 'url': 'https://ourworldindata.org/grapher/agricultural-export-subsidies'},\n", + " {'category': 'Agricultural Regulation & Policy',\n", + " 'doc_id': 'owid_105',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The annual monetary value of gross transfers to general services provided to agricultural producers collectively (such as research, development, training, inspection, marketing and promotion), arising from policy measures that support agriculture regardless of their nature, objectives and impacts on farm production, income, or consumption. This does not include any transfers to individual producers.',\n", + " 'url': 'https://ourworldindata.org/grapher/agricultural-general-services-support'},\n", + " {'category': 'Agricultural Regulation & Policy',\n", + " 'doc_id': 'owid_106',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The annual monetary value of gross transfers from consumers and taxpayers to agricultural producers, measured at the farm-gate level, arising from policy measures that support agriculture, regardless of their nature, objectives or impacts on farm production or income.',\n", + " 'url': 'https://ourworldindata.org/grapher/agricultural-producer-support'},\n", + " {'category': 'Agricultural Regulation & Policy',\n", + " 'doc_id': 'owid_107',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'A value greater than 1 means the agriculture sector receives a higher share of government spending relative to its economic value. A value less than 1 reflects a lower orientation to agriculture.',\n", + " 'url': 'https://ourworldindata.org/grapher/agriculture-orientation-index'},\n", + " {'category': 'Agricultural Regulation & Policy',\n", + " 'doc_id': 'owid_108',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Total official development assistance (ODA) and other official flows from all donors to the agriculture sector. This data is expressed in US dollars. It is adjusted for inflation but does not account for differences in the cost of living between countries.',\n", + " 'url': 'https://ourworldindata.org/grapher/total-financial-assistance-and-flows-for-agriculture-by-recipient'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_109',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Absolute number of deaths per year attributed to ambient (outdoor) particulate matter (PM2.5) air pollution',\n", + " 'url': 'https://ourworldindata.org/grapher/absolute-number-of-deaths-from-ambient-particulate-air-pollution'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_110',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual emissions of nitrogen oxides (NOx), non-methane volatile organic compounds (VOCs) and sulphur dioxide (SO₂) measured in tonnes per year. This is measured across all human-induced sources.',\n", + " 'url': 'https://ourworldindata.org/grapher/air-pollutant-emissions'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_111',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Average concentrations of suspended particulate matter, measured in micrograms per cubic meter.',\n", + " 'url': 'https://ourworldindata.org/grapher/air-pollution-london-vs-delhi'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_112',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'This measures annual excess mortality from the health impacts of air pollution from fossil fuels.',\n", + " 'url': 'https://ourworldindata.org/grapher/pollution-deaths-from-fossil-fuels'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_113',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Levels of air pollution, measured as suspended particulate matter (micrograms per cubic meter) vs. GDP per capita (2011 international-$). Here, data for London and Delhi GDP levels are assumed to be in line with national average values for the UK and India.',\n", + " 'url': 'https://ourworldindata.org/grapher/air-pollution-vs-gdp-per-capita'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_114',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The reported annual death rate from chronic respiratory disease per 100,000 people, based on the underlying cause listed on the death certificate.',\n", + " 'url': 'https://ourworldindata.org/grapher/chronic-respiratory-diseases-death-rate-who-mdb'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_115',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimated annual number of deaths attributed to ambient air pollution per 100,000 people.',\n", + " 'url': 'https://ourworldindata.org/grapher/death-rate-ambient-air-pollution'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_116',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimated annual number of deaths attributed to household air pollution per 100,000 people.',\n", + " 'url': 'https://ourworldindata.org/grapher/death-rate-household-air-pollution'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_117',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimated annual number of deaths attributed to household and ambient air pollution per 100,000 people.',\n", + " 'url': 'https://ourworldindata.org/grapher/death-rate-household-and-ambient-air-pollution'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_118',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimated annual number of deaths attributed to air pollution per 100,000 people.',\n", + " 'url': 'https://ourworldindata.org/grapher/death-rate-from-air-pollution-per-100000'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_119',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimated annual number of deaths from outdoor ozone pollution, particulate pollution, and indoor fuel pollution per 100,000 people.',\n", + " 'url': 'https://ourworldindata.org/grapher/death-rate-by-source-from-air-pollution'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_120',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Death rates are given as the number of attributed deaths from pollution per 100,000 population. These rates are age-standardized, meaning they assume a constant age structure of the population: this allows for comparison between countries and over time.',\n", + " 'url': 'https://ourworldindata.org/grapher/death-rates-from-air-pollution'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_121',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimated annual number of deaths attributed to particulate matter air pollution per 100,000 people.',\n", + " 'url': 'https://ourworldindata.org/grapher/death-rate-from-ambient-particulate-air-pollution'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_122',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Deaths from outdoor particulate matter air pollution per 100,000 people. Countries below the diagonal line have experienced an increased death rate, whilst those above the line have seen a decreased death rate.',\n", + " 'url': 'https://ourworldindata.org/grapher/ambient-pollution-death-rates-2017-1990'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_123',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Death rates are measured as the number of premature deaths attributed to outdoor particulate matter air pollution per 100,000 individuals. Gross domestic product (GDP) per capita is measured in constant international-$.',\n", + " 'url': 'https://ourworldindata.org/grapher/outdoor-pollution-rate-vs-gdp'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_124',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimated annual number of deaths attributed to ozone pollution per 100,000 people.',\n", + " 'url': 'https://ourworldindata.org/grapher/death-rate-from-ozone-pollution'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_125',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimated annual number of deaths attributed to ozone pollution per 100,000 people.',\n", + " 'url': 'https://ourworldindata.org/grapher/death-rate-from-ozone-pollution-gbd'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_126',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Age-standardized death rate from particular matter (PM2.5) exposure per 100,000 people versus the average mean annual exposure to particulate matter smaller than 2.5 microns (PM2.5), measured in micrograms per cubic meter.',\n", + " 'url': 'https://ourworldindata.org/grapher/death-rate-from-pm25-vs-pm25-concentration'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_127',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimated annual number of deaths attributed to air pollution. This includes three categories of air pollution: indoor household, outdoor particulate matter and ozone.',\n", + " 'url': 'https://ourworldindata.org/grapher/air-pollution-deaths-country'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_128',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: IHME, Global Burden of Disease (2019)',\n", + " 'url': 'https://ourworldindata.org/grapher/air-pollution-deaths-by-age'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_129',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Total number of deaths from household and outdoor particulate matter air pollution per year. Household pollution-related deaths result from the use of solid fuels (crop wastes, dung, firewood, charcoal and coal) for cooking and heating.',\n", + " 'url': 'https://ourworldindata.org/grapher/deaths-from-household-and-outdoor-air-pollution'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_130',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimated annual deaths from outdoor particulate matter air pollution.',\n", + " 'url': 'https://ourworldindata.org/grapher/absolute-number-of-deaths-from-outdoor-air-pollution'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_131',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: IHME, Global Burden of Disease (2019)',\n", + " 'url': 'https://ourworldindata.org/grapher/number-outdoor-pollution-deaths-by-age'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_132',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: IHME, Global Burden of Disease (2019)',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-deaths-from-outdoor-air-pollution-by-region'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_133',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimated annual number of deaths attributed to ozone pollution.',\n", + " 'url': 'https://ourworldindata.org/grapher/deaths-from-ozone-pollution'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_134',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Disease burden is measured in disability-adjusted life years (DALYs). DALYs are age-standardized and therefore adjust for changes in age structures of population through time and across countries.',\n", + " 'url': 'https://ourworldindata.org/grapher/dalys-particulate-matter'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_135',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual emissions of various air pollutants, indexed to emission levels in the first year of data. Values in 1970 or 1990 are normalised to 100; values below 100 therefore indicate a decline in emissions. Volatile organic compounds (VOCs) do not include methane emissions.',\n", + " 'url': 'https://ourworldindata.org/grapher/emissions-of-air-pollutants'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_136',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Index of local air pollutant emissions since 1990. Annual emission levels are assumed to be 100 in 1990; values less than 100 therefore indicate a reduction in emissions; values over 100 indicate an increase since 1990.',\n", + " 'url': 'https://ourworldindata.org/grapher/emissions-of-air-pollutants-oecd'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_137',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Air pollutants are gases that can lead to negative impacts on human health and ecosystems. Most are produced from energy, industry, and agriculture.',\n", + " 'url': 'https://ourworldindata.org/grapher/long-run-air-pollution'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_138',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual emissions of particulate matter from all human-induced sources. This is measured in terms of PM₁₀ and PM₂.₅, which denotes particulate matter less than 10 and 2.5 microns in diameter, respectively.',\n", + " 'url': 'https://ourworldindata.org/grapher/emissions-of-particulate-matter'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_139',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Multiple sources compiled by World Bank (2024); World Bank (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/pm25-exposure-gdp'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_140',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Population-weighted average level of exposure to concentrations of suspended particles measuring less than 2.5 microns in diameter (PM2.5). Exposure is measured in micrograms of PM2.5 per cubic meter (µg/m³).',\n", + " 'url': 'https://ourworldindata.org/grapher/pm25-air-pollution'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_141',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in tonnes per year.',\n", + " 'url': 'https://ourworldindata.org/grapher/so-emissions-by-world-region-in-million-tonnes'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_142',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: IHME, Global Burden of Disease (2019)',\n", + " 'url': 'https://ourworldindata.org/grapher/deaths-from-air-pollution'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_143',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The number of deaths attributed to outdoor particulate matter pollution per 100,000 people.',\n", + " 'url': 'https://ourworldindata.org/grapher/outdoor-pollution-death-rate'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_144',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Death rates are measured as the number of premature deaths attributed to outdoor particulate matter air pollution per 100,000 individuals in each age group.',\n", + " 'url': 'https://ourworldindata.org/grapher/outdoor-pollution-rates-by-age'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_145',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Deaths from outdoor particulate matter air pollution. Countries below the diagonal line have experienced an increase in deaths, whilst those above the line have seen a decrease.',\n", + " 'url': 'https://ourworldindata.org/grapher/outdoor-pollution-deaths-1990-2017'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_146',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Population-weighted average ozone (O₃) concentrations in parts per billion (ppb). Local concentrations of ozone are recorded and estimated at a 11x11km resolution. These values are subsequently weighted by population-density for calculation of nation-level average concentrations.',\n", + " 'url': 'https://ourworldindata.org/grapher/ozone-o3-concentration-in-ppb'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_147',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Population-weighted average level of exposure to concentrations of suspended particles measuring less than 2.5 microns in diameter. Exposure is measured in micrograms per cubic metre (µg/m³).',\n", + " 'url': 'https://ourworldindata.org/grapher/pm-exposure-1990-2017'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_148',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Share of deaths, from any cause, which are attributed to air pollution – from outdoor and indoor sources – as a risk factor.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-deaths-air-pollution'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_149',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Share of deaths, from any cause, where ambient particulate matter air pollution is a risk factor.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-deaths-outdoor-pollution'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_150',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The WHO recommends particulate matter (PM2.5) concentrations of 5 micrograms per cubic as the lower range of air pollution exposure, over which adverse health effects occur. The WHO has set interim targets of exposure for 35µg/m³, 25µg/m³, 15µg/m³, and 10µg/m³.',\n", + " 'url': 'https://ourworldindata.org/grapher/exposure-pollution-above-who-targets'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_151',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The share of the population exposed to outdoor concentrations of particulate matter (PM2.5) that exceed the WHO guideline value of 10 micrograms per cubic meter per year. 10µg/m³ represents the lower range of WHO recommendations for air pollution exposure over which adverse health effects are observed.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-above-who-pollution-guidelines'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_152',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Access to clean fuels or technologies such as natural gas, electricity, and clean cookstoves reduces exposure to indoor air pollutants, a leading cause of death in low-income households.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-the-population-without-access-to-clean-fuels-for-cooking'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_153',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Emissions of specific air pollutants by source, measured in tonnes per year. This is given as a national annual total.',\n", + " 'url': 'https://ourworldindata.org/grapher/sources-of-air-pollution-in-the-uk'},\n", + " {'category': 'Air Pollution',\n", + " 'doc_id': 'owid_154',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Air pollutants are gases that can lead to negative impacts on human health and ecosystems. Most are produced from energy, industry, and agriculture.',\n", + " 'url': 'https://ourworldindata.org/grapher/change-air-pollutant-emissions'},\n", + " {'category': 'Animal Welfare',\n", + " 'doc_id': 'owid_155',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Fur Free Alliance (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/active-fur-farms'},\n", + " {'category': 'Animal Welfare',\n", + " 'doc_id': 'owid_156',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The estimated number of animal lives that go toward each kilogram of animal product purchased for retail sale. This only includes direct deaths e.g. the pork numbers include only the deaths of pigs slaughtered for food.',\n", + " 'url': 'https://ourworldindata.org/grapher/animal-lives-lost-direct'},\n", + " {'category': 'Animal Welfare',\n", + " 'doc_id': 'owid_157',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The estimated number of animal lives that go toward each kilogram of animal product purchased for retail sale. This includes direct and indirect deaths e.g. pork numbers include pigs slaughtered for food (direct) but also those who die pre-slaughter and feed fish given to those pigs (indirect).',\n", + " 'url': 'https://ourworldindata.org/grapher/animal-lives-lost-total'},\n", + " {'category': 'Animal Welfare',\n", + " 'doc_id': 'owid_158',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"'Cages' includes both battery and 'enriched' cages, which are larger, furnished cages that provide slightly more space. Battery cages have been banned in the UK since 2012.\",\n", + " 'url': 'https://ourworldindata.org/grapher/egg-production-system'},\n", + " {'category': 'Animal Welfare',\n", + " 'doc_id': 'owid_159',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Finfish refers to any fish with fins, as opposed to shellfish.',\n", + " 'url': 'https://ourworldindata.org/grapher/global-farmed-finfishes'},\n", + " {'category': 'Animal Welfare',\n", + " 'doc_id': 'owid_160',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The quantity of meat produced per average animal over its lifetime. For example, the average chicken would yield 1.7 kilogram of edible meat.',\n", + " 'url': 'https://ourworldindata.org/grapher/kilograms-meat-per-animal'},\n", + " {'category': 'Animal Welfare',\n", + " 'doc_id': 'owid_161',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'These numbers do not include additional deaths that happen during the production of meat and dairy, chickens slaughtered in the egg industry, and other land animals for which there is no data.',\n", + " 'url': 'https://ourworldindata.org/grapher/land-animals-slaughtered-for-meat'},\n", + " {'category': 'Animal Welfare',\n", + " 'doc_id': 'owid_162',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Welfare Footprint Project (2022)',\n", + " 'url': 'https://ourworldindata.org/grapher/laying-hens-cages-and-cage-free'},\n", + " {'category': 'Animal Welfare',\n", + " 'doc_id': 'owid_163',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Estimates of the number of days that the average hen will spend in pain over her laying life. A 'day' is considered to be 16 hours, the length of time that the average hen is awake.\",\n", + " 'url': 'https://ourworldindata.org/grapher/pain-levels-hen-systems'},\n", + " {'category': 'Animal Welfare',\n", + " 'doc_id': 'owid_164',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Decapod crustaceans are animals such as shrimps, crabs, lobsters, prawns, and crayfish. This data does not include species without an estimated mean weight (which were an additional 6% of reported global production).',\n", + " 'url': 'https://ourworldindata.org/grapher/farmed-crustaceans'},\n", + " {'category': 'Animal Welfare',\n", + " 'doc_id': 'owid_165',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'This data does not include lobsters, farmed fish used as bait, and species without an estimated mean weight (which were an additional 17% of reported global fish production).',\n", + " 'url': 'https://ourworldindata.org/grapher/farmed-fish-killed'},\n", + " {'category': 'Animal Welfare',\n", + " 'doc_id': 'owid_166',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'This data is based on the average tonnage of annual catch from 2007 to 2016, and estimated mean weights for fish species. It does not include unrecorded fish capture, such as fish caught illegally and those caught as bycatch and discards.',\n", + " 'url': 'https://ourworldindata.org/grapher/wild-caught-fish'},\n", + " {'category': 'Animal Welfare',\n", + " 'doc_id': 'owid_167',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The survey measured attitudes towards animal farming with around 1,500 adults in the United States, census-balanced to be representative of age, gender, region, ethnicity, and income.',\n", + " 'url': 'https://ourworldindata.org/grapher/attitudes-bans-factory-farming'},\n", + " {'category': 'Animal Welfare',\n", + " 'doc_id': 'owid_168',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The survey measured attitudes towards animal farming with around 1,500 adults in the United States, census-balanced to be representative of age, gender, region, ethnicity, and income.',\n", + " 'url': 'https://ourworldindata.org/grapher/survey-dietary-choices-sentience'},\n", + " {'category': 'Animal Welfare',\n", + " 'doc_id': 'owid_169',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The survey measured attitudes towards animal farming with around 1,500 adults in the United States, census-balanced to be representative of age, gender, region, ethnicity, and income.',\n", + " 'url': 'https://ourworldindata.org/grapher/survey-animal-pain-sentience'},\n", + " {'category': 'Animal Welfare',\n", + " 'doc_id': 'owid_170',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': '– Flexitarian: mainly vegetarian, but occasionally eat meat or fish. – Pescetarian: eat fish but do not eat meat or poultry. – Vegetarian: do not eat any meat, poultry, game, fish, or shellfish. – Plant-based / Vegan: do not eat dairy products, eggs, or any other animal product.',\n", + " 'url': 'https://ourworldindata.org/grapher/dietary-choices-of-british-adults'},\n", + " {'category': 'Animal Welfare',\n", + " 'doc_id': 'owid_171',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source:',\n", + " 'url': 'https://ourworldindata.org/grapher/eggs-cage-free'},\n", + " {'category': 'Animal Welfare',\n", + " 'doc_id': 'owid_172',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Welfare Footprint Project (2022)',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-eggs-produced-by-different-housing-systems'},\n", + " {'category': 'Animal Welfare',\n", + " 'doc_id': 'owid_173',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimates of the time that an average chicken raised for meat will spend in different levels of pain. Both breeds of chicken reach the same slaughter weight, just at different rates.',\n", + " 'url': 'https://ourworldindata.org/grapher/pain-broiler-chickens'},\n", + " {'category': 'Animal Welfare',\n", + " 'doc_id': 'owid_174',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': '– Flexitarian: mainly vegetarian, but occasionally eat meat or fish. – Pescetarian: eat fish but do not eat meat or poultry. – Vegetarian: do not eat any meat, poultry, game, fish, or shellfish. – Plant-based / Vegan: do not eat dairy products, eggs, or any other animal product.',\n", + " 'url': 'https://ourworldindata.org/grapher/dietary-choices-uk'},\n", + " {'category': 'Animal Welfare',\n", + " 'doc_id': 'owid_175',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Bullfighting is a physical contest that involves a bullfighter attempting to subdue, immobilize, or kill a bull.',\n", + " 'url': 'https://ourworldindata.org/grapher/bullfighting-ban'},\n", + " {'category': 'Animal Welfare',\n", + " 'doc_id': 'owid_176',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Chick culling is the process of separating and killing unwanted male and unhealthy female chicks that cannot produce eggs in industrialized egg facilities.',\n", + " 'url': 'https://ourworldindata.org/grapher/banning-of-chick-culling'},\n", + " {'category': 'Animal Welfare',\n", + " 'doc_id': 'owid_177',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source:',\n", + " 'url': 'https://ourworldindata.org/grapher/fur-farming-ban'},\n", + " {'category': 'Animal Welfare',\n", + " 'doc_id': 'owid_178',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Fur Free Alliance (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/fur-trading-ban'},\n", + " {'category': 'Animal Welfare',\n", + " 'doc_id': 'owid_179',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Food and Agriculture Organization of the United Nations (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/animals-slaughtered-for-meat'},\n", + " {'category': 'Antibiotics',\n", + " 'doc_id': 'owid_180',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Antibiotics are used in livestock for animal health and productivity, but also pose a risk for antibiotic resistance in both humans and livestock. Data is measured as the milligrams of total antibiotic use per kilogram of meat production. This is corrected for differences in livestock numbers and types, normalising to a population-corrected unit (PCU). A suggested global cap of antibiotic use in livestock is set at 50mg/PCU.',\n", + " 'url': 'https://ourworldindata.org/grapher/antibiotic-use-in-livestock-in-europe'},\n", + " {'category': 'Antibiotics',\n", + " 'doc_id': 'owid_181',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Antibiotic use in livestock, measured as the milligrams of total active ingredient used per kilogram of meat production versus gross domestic product (GDP) per capita.',\n", + " 'url': 'https://ourworldindata.org/grapher/antibiotic-use-in-livestock-vs-gdp-per-capita'},\n", + " {'category': 'Antibiotics',\n", + " 'doc_id': 'owid_182',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Antibiotic use in livestock, measured as the milligrams of total active ingredient used per kilogram of meat production versus the average meat supply per capita, measured in kilograms per person per year.',\n", + " 'url': 'https://ourworldindata.org/grapher/antibiotic-use-in-livestock-vs-meat-supply-per-capita'},\n", + " {'category': 'Antibiotics',\n", + " 'doc_id': 'owid_183',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Projected global antibiotic use in livestock under expected meat consumption levels in 2030, and a range of modeled reduction scenarios based on antibiotic use limits, reductions in meat consumption, and a fee on antibiotic sales. Further details on each scenario are given in the sources tab. Global antibiotic use is measured in tonnes per year.',\n", + " 'url': 'https://ourworldindata.org/grapher/reduction-global-antibiotic-use'},\n", + " {'category': 'Antibiotics',\n", + " 'doc_id': 'owid_184',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Cephalosporins are a class of antibiotics commonly used to treat E. coli infections. This shows the estimated share of infections by E. coli in the bloodstream that were resistant to 3rd generation cephalosporins.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-e-coli-bloodstream-infections-due-to-antimicrobial-resistant-bacteria'},\n", + " {'category': 'Antibiotics',\n", + " 'doc_id': 'owid_185',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Methicillin is an antibiotic commonly used to treat infections by Staphylococcus aureus. This shows the estimated share of infections by S. aureus in the bloodstream that were resistant to methicillin.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-s-aureus-bloodstream-infections-that-are-resistant-to-antibiotics'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_186',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Carcass ratio is the number of dead elephants observed during survey counts as a percentage of the total population. Carcass ratios greater than 8% are considered to be a strong indication of a declining population.',\n", + " 'url': 'https://ourworldindata.org/grapher/african-elephant-carcass-ratio'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_187',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Fish catch is measured as annual catch divided by the mean catch over the stock's time series. A value greater than one means annual catch is higher than average over the entire time period.\",\n", + " 'url': 'https://ourworldindata.org/grapher/annual-fish-catch-taxa'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_188',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Fish catch is measured as annual catch divided by the mean catch over the stock's time series. A value greater than one means annual catch is higher than average over the entire time period.\",\n", + " 'url': 'https://ourworldindata.org/grapher/fish-catch-region'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_189',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Aquaculture is the farming of aquatic organisms including fish, molluscs, crustaceans and aquatic plants. Aquaculture production specifically refers to output from aquaculture activities, which are designated for final harvest for consumption.',\n", + " 'url': 'https://ourworldindata.org/grapher/aquaculture-farmed-fish-production'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_190',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimated number of black rhinos.',\n", + " 'url': 'https://ourworldindata.org/grapher/black-rhinos'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_191',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Capture (wild) fishery production does not include seafood produced from fish farming (aquaculture).',\n", + " 'url': 'https://ourworldindata.org/grapher/capture-fishery-production'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_192',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The bird population index is measured relative to population size in the year 2000 (i.e. the value in 2000 = 100).',\n", + " 'url': 'https://ourworldindata.org/grapher/bird-populations-eu'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_193',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Percentage change in mangrove area from the baseline extent of mangroves in 2000.',\n", + " 'url': 'https://ourworldindata.org/grapher/change-in-total-mangrove-area'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_194',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Changes in butterfly populations are measured as an index relative to populations in their start year (1976 or 1990 depending on the species group).',\n", + " 'url': 'https://ourworldindata.org/grapher/changes-uk-butterfly'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_195',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"The share of satellite imagery pixels measuring chlorophyll-a within a country's Exclusive Economic Zone that are above the 90th percentile of the global baseline (2000-2004). The value given is an annual average of monthly deviations.\",\n", + " 'url': 'https://ourworldindata.org/grapher/chlorophyll-a-deviation-from-the-global-average'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_196',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'An “alien” species is described as one which has been introduced outside its natural distribution range because of human activity. An alien species which then becomes a threat to native biodiversity is known as an \"invasive alien species\".',\n", + " 'url': 'https://ourworldindata.org/grapher/budget-to-manage-invasive-alien-species'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_197',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Being party to the Nagoya Protocol means agreeing to follow the rules and guidelines set forth in the agreement, which aim to ensure that the benefits of genetic resources are shared fairly and equitably, and that traditional knowledge is protected and respected.',\n", + " 'url': 'https://ourworldindata.org/grapher/countries-that-are-parties-to-the-nagoya-protocol'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_198',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The Access and Benefit-Sharing Clearing-House Protocol is a supplementary agreement to the Nagoya Protocol that establishes a web-based platform for sharing information on the use of genetic resources and associated traditional knowledge.',\n", + " 'url': 'https://ourworldindata.org/grapher/countries-to-access-and-benefit-sharing-clearing-house'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_199',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The number of species at risk of losing greater than 25% of their habitat as a result of agricultural expansion under business-as-usual projections to 2050. This is shown for countries with more than 25 species at risk.',\n", + " 'url': 'https://ourworldindata.org/grapher/habitat-loss-25-species'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_200',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The vertical axis shows the date of peak blossom, expressed as the number of days since 1st January. The timing of the peak cherry blossom is influenced by spring temperatures. Higher temperatures due to climate change have caused the peak blossom to gradually move earlier in the year since the early 20th century.',\n", + " 'url': 'https://ourworldindata.org/grapher/date-of-the-peak-cherry-tree-blossom-in-kyoto'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_201',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The number of European bird species that have seen a significant recovery in their populations in recent decades, categorized by the main driver of their recovery.',\n", + " 'url': 'https://ourworldindata.org/grapher/drivers-of-recovery-in-european-bird-populations'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_202',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Endemic species are those known to occur naturally within one country only.',\n", + " 'url': 'https://ourworldindata.org/grapher/endemic-amphibian-species-by-country'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_203',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Endemic species are those known to occur naturally within one country only.',\n", + " 'url': 'https://ourworldindata.org/grapher/endemic-bird-species-by-country'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_204',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Endemic species are those known to occur naturally within one country only.',\n", + " 'url': 'https://ourworldindata.org/grapher/endemic-freshwater-crab-species'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_205',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Endemic species are those known to occur naturally within one country only.',\n", + " 'url': 'https://ourworldindata.org/grapher/endemic-mammal-species-by-country'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_206',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The number of endemic reef-forming coral species by country. Endemic species are those known to occur naturally within one country only.',\n", + " 'url': 'https://ourworldindata.org/grapher/endemic-reef-forming-coral-species'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_207',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Endemic species are those known to occur naturally within one country only. This includes the exclusive economic zone of a country which is the sea within 200 nautical miles of a country's coastal boundary.\",\n", + " 'url': 'https://ourworldindata.org/grapher/endemic-shark-and-ray-species'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_208',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Fish and seafood production is measured as the sum of seafood from wild catch and fish farming (aquaculture).',\n", + " 'url': 'https://ourworldindata.org/grapher/fish-seafood-production'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_209',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Total annual landings – fish catch brought back to land – of bottom-living fish. This excludes shellfish.',\n", + " 'url': 'https://ourworldindata.org/grapher/fish-catch-uk'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_210',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Discards are animals thrown back (alive or dead) into the sea after being caught during fishing activities. This represents bycatch (fish caught unintentionally) that is not brought ashore for use.',\n", + " 'url': 'https://ourworldindata.org/grapher/fish-discards'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_211',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Fish stocks are measured by biomass: the number of individuals multiplied by their mass. Fishing intensity by the fraction of the fish population that is caught in a given year. Both are given as a ratio of their levels at the maximum sustainable yield – the level at which we can catch the maximum amount of fish without a decline in fish populations. A value of one maximises fish catch without decreasing fish populations. This is the target level.',\n", + " 'url': 'https://ourworldindata.org/grapher/fish-stocks-taxa'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_212',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Fish stocks are measured by biomass: the number of individuals multiplied by their mass. Fishing intensity by the fraction of the fish population that is caught in a given year. Both are given as a ratio of their levels at the maximum sustainable yield – the level at which we can catch the maximum amount of fish without a decline in fish populations. A value of one maximises fish catch without decreasing fish populations. This is the target level.',\n", + " 'url': 'https://ourworldindata.org/grapher/fish-stocks-by-region'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_213',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Fishing intensity measured the extent to which a stock is being exploited. This is the fraction of the fish population that is caught in a given year. Here it's measured as the intensity divided by the intensity at the maximum sustainable yield – the level at which we can catch the maximum amount of fish without a decline in fish populations. A value of one is the optimal level to maximize fish catch without declining populations. Greater than one suggests overfishing.\",\n", + " 'url': 'https://ourworldindata.org/grapher/fishing-pressure-by-taxa'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_214',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Fishing intensity measures the extent to which a stock is being exploited. Here, it's measured as current fishing intensity divided by the intensity at the maximum sustainable yield. A value of one is the optimal level to maximize fish catch without causing fish population. Greater than one suggests overfishing.\",\n", + " 'url': 'https://ourworldindata.org/grapher/fishing-pressure-by-region'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_215',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimates of North Atlantic cod (Gadus morhua) catch off Newfoundland and Labrador, Eastern Canada.',\n", + " 'url': 'https://ourworldindata.org/grapher/long-term-cod-catch'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_216',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Some wild fish catch is processed into fishmeal and oils for animal feed – this is used for land-based livestock and fish farms (aquaculture). Efficiency improvements in aquaculture, and changes in the diets of farmed fish means production has increased rapidly, without increasing inputs from wild fish.',\n", + " 'url': 'https://ourworldindata.org/grapher/global-aquaculture-wild-fish-feed'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_217',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Global biomass (measured in tonnes of carbon) versus the abundance (number of individuals) of different taxonomic groups. These are given as order-of-magnitude estimates.',\n", + " 'url': 'https://ourworldindata.org/grapher/biomass-vs-abundance-taxa'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_218',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Wildlife trade is quantified in terms of whole organism equivalents (WOE). For example, five skulls represent five WOEs, whereas it's assumed that four ears are sourced from two animals and so represent two WOEs.\",\n", + " 'url': 'https://ourworldindata.org/grapher/wildlife-exports'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_219',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Fish stocks are measured by their biomass: the number of individuals multiplied by their mass. Here it's measured as the biomass of a fish stock divided by the biomass at its maximum sustainable yield – the level at which we can catch the maximum amount of fish without a decline in fish populations. A value of one maximises fish catch without decreasing fish populations.\",\n", + " 'url': 'https://ourworldindata.org/grapher/biomass-fish-stocks-taxa'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_220',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Fish stocks are measured by their biomass: the number of individuals multiplied by their mass. Here the biomass of a fish stock is divided by the biomass at its maximum sustainable yield. A value of one maximizes fish catch without decreasing fish populations.',\n", + " 'url': 'https://ourworldindata.org/grapher/biomass-fish-stocks-region'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_221',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimated number of Greater One-Horned rhinos.',\n", + " 'url': 'https://ourworldindata.org/grapher/indian-rhinos'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_222',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimated number of Javan rhinos.',\n", + " 'url': 'https://ourworldindata.org/grapher/javan-rhinos'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_223',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The Living Planet Index (LPI) measures the average decline in monitored wildlife populations. The index value measures the change in abundance in 31,821 populations across 5,230 species relative to the year 1970 (i.e. 1970 = 100%).',\n", + " 'url': 'https://ourworldindata.org/grapher/global-living-planet-index'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_224',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The Living Planet Index (LPI) measures the average relative decline in monitored wildlife populations. The index value measures the change in abundance in 38,427 populations across 5,268 species relative to the year 1970 (i.e. 1970 = 100%).',\n", + " 'url': 'https://ourworldindata.org/grapher/living-planet-index-by-region'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_225',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The number of local animal breeds, those that exist in only one country, with sufficient genetic material stored within genebank collections to allow the reconstitution of the breed in case of extinction.',\n", + " 'url': 'https://ourworldindata.org/grapher/proportion-of-animal-breeds-genetic-conservation'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_226',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Material footprint is the quantity of material needed to meet a country's material demand. It is material production, adjusted for trade. The total material footprint is the sum of the material footprint for biomass, fossil fuels, metal ores, and non-metal ores, given in tonnes per year.\",\n", + " 'url': 'https://ourworldindata.org/grapher/material-footprint-per-capita'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_227',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Material footprint is the quantity of material needed to meet a country's material demand. It is material production, adjusted for trade. The total material footprint is the sum of the material footprint for biomass, fossil fuels, metal ores, and non-metal ores.\",\n", + " 'url': 'https://ourworldindata.org/grapher/material-footprint-per-unit-of-gdp'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_228',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The International Treaty on Plant Genetic Resources for Food and Agriculture is an international agreement that aims to ensure the conservation and sustainable use of plant genetic resources for food and agriculture, and to promote the fair and equitable sharing of the benefits derived from their use.',\n", + " 'url': 'https://ourworldindata.org/grapher/countries-to-the-international-treaty-on-plant-genetic-resources'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_229',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Mountain Green Cover Index measures the share of mountainous areas covered by either forest, cropland, grassland or wetland. An increase in green mountain cover may reflect either the expansion of natural ecosystems or an increase in the growth of vegetation in areas previously covered by glaciers.',\n", + " 'url': 'https://ourworldindata.org/grapher/mountain-green-cover-index'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_230',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Aichi Target 9: By 2020, invasive alien species and pathways are identified and prioritized, priority species are controlled or eradicated and measures are in place to manage pathways to prevent their introduction and establishment.',\n", + " 'url': 'https://ourworldindata.org/grapher/national-biodiversity-strategy-align-with-aichi-target-9'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_231',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Aichi Target 2: By 2020, at the latest, biodiversity values have been integrated into national and local development and poverty reduction strategies and planning processes and are being incorporated into national accounting and reporting systems.',\n", + " 'url': 'https://ourworldindata.org/grapher/national-progress-towards-aichi-biodiversity-target-2'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_232',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimated number of Northern White rhinos.',\n", + " 'url': 'https://ourworldindata.org/grapher/northern-white-rhinos'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_233',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: African Elephant Specialist Group (AfESG); Great Elephant Census',\n", + " 'url': 'https://ourworldindata.org/grapher/african-elephants'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_234',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Estimates on wild mammal populations tend to come with significant uncertainty. A complete time-series for the Asian elephant population is not available, however, it's estimated to have declined from approximately 100,000 in the early 20th century to approximately 45,000 today.\",\n", + " 'url': 'https://ourworldindata.org/grapher/number-of-asian-elephants'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_235',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The projected number of mammal, bird and amphibian species losing a certain extent of habitat by 2050 as a result of cropland expansion globally under a business-as-usual-scenario.',\n", + " 'url': 'https://ourworldindata.org/grapher/projected-habitat-loss-extent-bau'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_236',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The number of moderate (up to 30% of corals affected) and severe coral bleaching events (more than 30% of corals) measured at 100 fixed global locations. Bleaching occurs when stressful conditions cause corals to expel their algal symbionts.',\n", + " 'url': 'https://ourworldindata.org/grapher/coral-bleaching-events'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_237',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Coral bleaching typically occurs when water temperatures rise above the normal range for the coral's habitat. This is more likely during El Niño stages of the ENSO cycle when tropical sea temperatures are warmer.\",\n", + " 'url': 'https://ourworldindata.org/grapher/bleaching-events-enso'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_238',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The number of identified and named species in each taxonomic group, as of 2022. Since many species have not yet been described, this is a large underestimate of the total number of species in the world.',\n", + " 'url': 'https://ourworldindata.org/grapher/number-of-described-species'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_239',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Total number of global parties signed on to multilateral agreements designed to address trans-boundary environmental issues.',\n", + " 'url': 'https://ourworldindata.org/grapher/number-of-parties-env-agreements'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_240',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimates of wild rhino poaching are recorded and reported by only a select number of countries. Data is based primarily on recorded poaching and fatalities by national authorities in national parks and reserves.',\n", + " 'url': 'https://ourworldindata.org/grapher/number-of-rhinos-poached'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_241',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Shown is estimates on rhino horn seizures over the period from 2009 to September 2018. An average rhino horn weighs approximately 1 to 3 kilograms.',\n", + " 'url': 'https://ourworldindata.org/grapher/number-seized-rhino-horns'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_242',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Coral bleaching typically occurs when water temperatures rise above the normal range for the coral's habitat. This is more likely during El Niño stages of the ENSO cycle when tropical sea temperatures are warmer.\",\n", + " 'url': 'https://ourworldindata.org/grapher/severe-bleaching-events-enso'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_243',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The number of species in each taxonomic group evaluated for their extinction risk level is a small share of the total number of known species in many taxonomic groups.',\n", + " 'url': 'https://ourworldindata.org/grapher/number-species-evaluated-iucn'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_244',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: IUCN Red List (2022)',\n", + " 'url': 'https://ourworldindata.org/grapher/extinct-species-since-1500'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_245',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The IUCN Red List has assessed the extinction risk of only a small share of the total known species in the world. This means the number of species threatened with extinction is likely to be a significant underestimate of the total number of species at risk.',\n", + " 'url': 'https://ourworldindata.org/grapher/number-species-threatened'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_246',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Endemic species are those known to occur naturally within one country only. Threatened species are those whose extinction risk is classified as 'Critically Endangered', 'Endangered', or 'Vulnerable'. They are at a high or greater risk of extinction in the wild.\",\n", + " 'url': 'https://ourworldindata.org/grapher/threatened-endemic-mammal-species'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_247',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The conservation of plant genetic resources for food and agriculture (GRFA) in medium-long term conservation facilities represents the most trusted means of conserving plant genetic resources worldwide.',\n", + " 'url': 'https://ourworldindata.org/grapher/number-of-accessions-of-plant-genetic-resources-secured-in-conservation-facilities'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_248',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: International Whaling Commission (IWC); Rocha et al. (2014)',\n", + " 'url': 'https://ourworldindata.org/grapher/whale-catch'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_249',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: International Whaling Commission (IWC) & Rocha et al. (2014)',\n", + " 'url': 'https://ourworldindata.org/grapher/whales-killed-per-decade'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_250',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Shown is the projected change in cropland area relative to the year 2010. This is shown under a business-as-usual scenario, and multiple reduction scenarios.',\n", + " 'url': 'https://ourworldindata.org/grapher/projected-cropland-by-2050'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_251',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Share of local livestock breeds which are classified as being at risk of extinction. Breed-related information remains far from complete. For almost 60 percent of all reported breeds, risk status is not known because of missing population data or lack of recent updates.',\n", + " 'url': 'https://ourworldindata.org/grapher/proportion-of-local-breeds-at-risk-of-extinction'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_252',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The average share of each marine Key Biodiversity Area (KBA) that is covered by designated protected areas.',\n", + " 'url': 'https://ourworldindata.org/grapher/protected-area-coverage-of-marine-key-biodiversity-areas'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_253',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The average share of each mountain Key Biodiversity Area (KBA) that is covered by designated protected areas.',\n", + " 'url': 'https://ourworldindata.org/grapher/coverage-by-protected-areas-of-important-sites-for-mountain-biodiversity'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_254',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The Red List Index shows trends in overall extinction risk for groups of species. It is an index between 0 and 1. A value of 1 indicates that there is no current extinction risk to any of the included species. A value of 0 would mean that all included species are extinct.',\n", + " 'url': 'https://ourworldindata.org/grapher/red-list-index'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_255',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Aquaculture is the farming of aquatic organisms including fish, molluscs, crustaceans and aquatic plants. Capture fishery production is the volume of wild fish catches landed for all commercial, industrial, recreational and subsistence purposes.',\n", + " 'url': 'https://ourworldindata.org/grapher/capture-fisheries-vs-aquaculture'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_256',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Aquaculture is the farming of aquatic organisms including fish, molluscs, crustaceans and aquatic plants. Capture fishery production is the volume of wild fish catches landed for all commercial, industrial, recreational and subsistence purposes.',\n", + " 'url': 'https://ourworldindata.org/grapher/capture-and-aquaculture-production'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_257',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The share of coral reefs in the Caribbean where major reef-building group of corals, Acropora, was dominant or present. The declines show the loss of coral cover as a result of pressures including water pollution, disease outbreaks, and coral bleaching.',\n", + " 'url': 'https://ourworldindata.org/grapher/caribbean-acropora'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_258',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'In many taxonomic groups, very few described species have been evaluated for their extinction risk level. This means the estimated number of species at risk of extinction in these groups is likely to be a significant undercount.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-species-evaluated-iucn'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_259',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Fish stocks are overexploited when fish catch exceeds the maximum sustainable yield (MSY) – the rate at which fish populations can regenerate.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-fish-stocks-overexploited'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_260',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'A protected area is a clearly defined geographical space, recognised, dedicated and managed, through legal or other effective means, to achieve the long-term conservation of nature with associated ecosystem services and cultural values.',\n", + " 'url': 'https://ourworldindata.org/grapher/proportion-of-forest-area-within-legally-established-protected-areas'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_261',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The proportion of freshwater Key Biodiversity Areas (KBAs) which are covered by designated protected areas.',\n", + " 'url': 'https://ourworldindata.org/grapher/proportion-of-important-sites-for-freshwater-biodiversity-covered-by-protected-areas'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_262',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Terrestrial protected areas are areas of at least 1,000 hectares that are designated by national authorities in order to preserve their ecosystem services and cultural values.',\n", + " 'url': 'https://ourworldindata.org/grapher/terrestrial-protected-areas'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_263',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Forest area is land with natural or planted stands of trees at least five meters in height, whether productive or not, and excludes tree stands in agricultural production systems.',\n", + " 'url': 'https://ourworldindata.org/grapher/forest-area-as-share-of-land-area'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_264',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Marine protected areas are regions of intertidal or sub-tidal land and associated water, flora and fauna, and cultural and historical features that have been legally or effectively reserved for protection.',\n", + " 'url': 'https://ourworldindata.org/grapher/marine-protected-areas'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_265',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Marine protected areas are areas that have been reserved by law or other effective means to protect part or all of the enclosed environment.',\n", + " 'url': 'https://ourworldindata.org/grapher/global-marine-protected-area'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_266',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Species can be traded locally, nationally or internationally as pets, or for their products (such as meat, medicines, ivory, or other body parts).',\n", + " 'url': 'https://ourworldindata.org/grapher/share-species-traded'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_267',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Threatened species are those with an extinction risk category of either 'Critically Endangered', 'Endangered' or 'Vulnerable' on the IUCN Red List. This is shown by taxonomic group, and only for the more completely evaluated groups (where >80% of described species have been evaluated).\",\n", + " 'url': 'https://ourworldindata.org/grapher/share-threatened-species'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_268',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Proportion of terrestrial Key Biodiversity Areas (KBAs) that are covered by designated protected areas.',\n", + " 'url': 'https://ourworldindata.org/grapher/protected-terrestrial-biodiversity-sites'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_269',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Scheffers, B. R., Oliveira, B. F., Lamb, I., & Edwards, D. P. (2019). Global wildlife trade across the tree of life. Science.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-species-traded-pets'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_270',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Share of traded species that are traded for products, such as for meat, medicines, ivory, or other body parts.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-species-traded-products'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_271',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimated number of southern white rhinos.',\n", + " 'url': 'https://ourworldindata.org/grapher/southern-white-rhinos'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_272',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The International Whaling Commission (IWC) was set up to preserve global whale stocks through catch quotes, regulation of hunting methods and designation of specific hunting areas.',\n", + " 'url': 'https://ourworldindata.org/grapher/iwc-status'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_273',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Fish stocks become overexploited when fish are caught at a rate higher than the population can support, and the ability of the stock to produce its Maximum Sustainable Yield (MSY) is jeopardized.',\n", + " 'url': 'https://ourworldindata.org/grapher/fish-stocks-within-sustainable-levels'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_274',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Number of Sumatran rhinos (officially named 'Dicerorhinus sumatrensis').\",\n", + " 'url': 'https://ourworldindata.org/grapher/sumatran-rhinos'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_275',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Shown are estimates of global whale biomass in pre-whaling periods versus the year 2001. This is measured in tonnes of carbon.',\n", + " 'url': 'https://ourworldindata.org/grapher/global-whale-biomass'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_276',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Shown are estimates of global whale populations in pre-whaling periods versus the year 2001.',\n", + " 'url': 'https://ourworldindata.org/grapher/whale-populations'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_277',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Threatened species are those with an extinction risk category of either 'Critically Endangered', 'Endangered', or 'Vulnerable'.\",\n", + " 'url': 'https://ourworldindata.org/grapher/threatened-bird-species'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_278',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"The number of threatened endemic bird species by country. Endemic species are those known to occur naturally within one country only. Threatened species are those with an extinction risk category of either 'Critically Endangered', 'Endangered', or 'Vulnerable'.\",\n", + " 'url': 'https://ourworldindata.org/grapher/threatened-endemic-bird-species'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_279',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"The number of threatened endemic reef-forming coral species by country. Endemic species are those known to occur naturally within one country only. Threatened species are those with an extinction risk category of either 'Critically Endangered', 'Endangered', or 'Vulnerable'.\",\n", + " 'url': 'https://ourworldindata.org/grapher/threatened-endemic-coral'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_280',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Threatened species are the number of species classified by the IUCN Red List as endangered, vulnerable, rare, indeterminate, out of danger, or insufficiently known.',\n", + " 'url': 'https://ourworldindata.org/grapher/fish-species-threatened'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_281',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Threatened mammal species excluding whales and porpoises. Threatened species are those with an extinction risk category of either 'Critically Endangered', 'Endangered', or 'Vulnerable'.\",\n", + " 'url': 'https://ourworldindata.org/grapher/threatened-mammal-species'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_282',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Total official development assistance (ODA) transferred for use in biodiversity conservation and protection efforts, by donor. This data is expressed in constant US dollars. It is adjusted for inflation but does not account for differences in the cost of living between countries.',\n", + " 'url': 'https://ourworldindata.org/grapher/total-oda-for-biodiversity-by-donor'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_283',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Total official development assistance (ODA) transferred for use in biodiversity conservation and protection efforts, by recipient. This data is expressed in constant US dollars. It is adjusted for inflation but does not account for differences in the cost of living between countries.',\n", + " 'url': 'https://ourworldindata.org/grapher/total-oda-for-biodiversity-by-recipient'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_284',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The number of transboundary animal breeds, those that exist in more than one country, with sufficient genetic material stored within genebank collections to allow the reconstitution of the breed in case of extinction.',\n", + " 'url': 'https://ourworldindata.org/grapher/number-of-transboundary-animal-breeds-which-have-genetic-resources-secured-in-conservation-facilities'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_285',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Shown is estimates on rhino horn seizures over the period from 2009 to September 2018. An average rhino horn weighs approximately 1 to 3 kilograms.',\n", + " 'url': 'https://ourworldindata.org/grapher/seized-rhino-horns'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_286',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: FishStat via Pauly, Zeller, and Palomares from Sea Around Us Concepts, Design and Data.',\n", + " 'url': 'https://ourworldindata.org/grapher/wild-fish-allocation'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_287',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The International Whaling Commission (IWC) was set up to preserve global whale stocks through catch quotes, regulation of hunting methods and designation of specific hunting areas.',\n", + " 'url': 'https://ourworldindata.org/grapher/iwc-members'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_288',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source:',\n", + " 'url': 'https://ourworldindata.org/grapher/fish-catch-gear-type'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_289',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: FishStat via Pauly, Zeller, and Palomares from Sea Around Us Concepts, Design and Data.',\n", + " 'url': 'https://ourworldindata.org/grapher/wild-fish-catch-gear-type'},\n", + " {'category': 'Biodiversity',\n", + " 'doc_id': 'owid_290',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Bottom trawling is a fishing method in which a large, heavy net is dragged along the seafloor to catch fish and other marine life.',\n", + " 'url': 'https://ourworldindata.org/grapher/bottom-trawling'},\n", + " {'category': 'Biofuels',\n", + " 'doc_id': 'owid_291',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The share of domestic cereal supply – after correcting for trade – which is allocated to other uses (primarily industrial uses such as biofuel production) as opposed to being used for direct human consumption or animal feed.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-cereals-industrial-uses'},\n", + " {'category': 'Biological & Chemical Weapons',\n", + " 'doc_id': 'owid_292',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Biological weapons are organisms or toxins used to cause death or harm through their poisonous properties. The convention bans developing, producing, acquiring, possessing, and transferring biological weapons and requires countries to destroy them.',\n", + " 'url': 'https://ourworldindata.org/grapher/biological-weapons-convention'},\n", + " {'category': 'Biological & Chemical Weapons',\n", + " 'doc_id': 'owid_293',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Chemical weapons are chemicals used to cause death or harm through their poisonous properties. The convention bans developing, producing, acquiring, possessing, transferring, and using chemical weapons and requires countries to destroy them.',\n", + " 'url': 'https://ourworldindata.org/grapher/chemical-weapons-convention'},\n", + " {'category': 'Biological & Chemical Weapons',\n", + " 'doc_id': 'owid_294',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Biological weapons are organisms or toxins used to cause death or harm through their poisonous properties.',\n", + " 'url': 'https://ourworldindata.org/grapher/biological-weapons'},\n", + " {'category': 'Biological & Chemical Weapons',\n", + " 'doc_id': 'owid_295',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Chemical weapons are chemicals used to cause death or harm through their poisonous properties.',\n", + " 'url': 'https://ourworldindata.org/grapher/chemical-weapons'},\n", + " {'category': 'Biological & Chemical Weapons',\n", + " 'doc_id': 'owid_296',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Biological weapons are organisms or toxins used to cause death or harm through their poisonous properties. The closest a country came to using biological weapons ever is recorded.',\n", + " 'url': 'https://ourworldindata.org/grapher/historical-biological-weapons'},\n", + " {'category': 'Biological & Chemical Weapons',\n", + " 'doc_id': 'owid_297',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Chemical weapons are chemicals used to cause death or harm through their poisonous properties. The closest a country came to using chemical weapons ever is recorded.',\n", + " 'url': 'https://ourworldindata.org/grapher/historical-chemical-weapons'},\n", + " {'category': 'Biological & Chemical Weapons',\n", + " 'doc_id': 'owid_298',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Biological weapons are organisms or toxins used to cause death or harm through their poisonous properties.',\n", + " 'url': 'https://ourworldindata.org/grapher/biological-weapons-proliferation'},\n", + " {'category': 'Biological & Chemical Weapons',\n", + " 'doc_id': 'owid_299',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Chemical weapons are chemicals used to cause death or harm through their poisonous properties.',\n", + " 'url': 'https://ourworldindata.org/grapher/chemical-weapons-proliferation'},\n", + " {'category': 'Biological & Chemical Weapons',\n", + " 'doc_id': 'owid_300',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Biological weapons are organisms or toxins used to cause death or harm through their poisonous properties. The closest a country got to using biological weapons ever is recorded.',\n", + " 'url': 'https://ourworldindata.org/grapher/historical-biological-weapons-proliferation'},\n", + " {'category': 'Biological & Chemical Weapons',\n", + " 'doc_id': 'owid_301',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Chemical weapons are chemicals used to cause death or harm through their poisonous properties. The closest a country came to using chemical weapons ever is recorded.',\n", + " 'url': 'https://ourworldindata.org/grapher/historical-chemical-weapons-proliferation'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_302',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Adjusted net savings are equal to net national savings plus education expenditure and minus energy depletion, mineral depletion, net forest depletion, and carbon dioxide.',\n", + " 'url': 'https://ourworldindata.org/grapher/adjusted-net-savings-per-person'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_303',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Carbon dioxide (CO₂) emissions from fossil fuels and industry. Land-use change is not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-co2-emissions-per-country'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_304',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Emissions from fossil fuels and industry are included, but not land-use change emissions. International aviation and shipping are included as separate entities, as they are not included in any country's emissions.\",\n", + " 'url': 'https://ourworldindata.org/grapher/annual-co-emissions-by-region'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_305',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual emissions of carbon dioxide (CO₂) from cement, measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-co2-cement'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_306',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual emissions of carbon dioxide (CO₂) from coal, measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-co2-coal'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_307',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'This measures the amount of CO₂ emissions linked to deforestation for food production – it is trade-adjusted, to reflect the carbon footprint of diets within a given country. It is based on the annual average over the period from 2010 to 2014.',\n", + " 'url': 'https://ourworldindata.org/grapher/deforestation-co2-trade-by-product'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_308',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Tonnes of CO₂ emissions linked to deforestation for food production – it is trade-adjusted, to reflect the carbon footprint of diets within a given country. Based on the annual average over the period from 2010 to 2014.',\n", + " 'url': 'https://ourworldindata.org/grapher/co2-deforestation-for-food'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_309',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Global Carbon Budget (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-co2-flaring'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_310',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual emissions of carbon dioxide (CO₂) from gas, measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-co2-gas'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_311',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Emissions from land-use change can be positive or negative depending on whether these changes emit (positive) or sequester (negative) carbon.',\n", + " 'url': 'https://ourworldindata.org/grapher/co2-land-use'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_312',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Emissions from land-use change can be positive or negative depending on whether these changes emit (positive) or sequester (negative) carbon.',\n", + " 'url': 'https://ourworldindata.org/grapher/co2-land-use-per-capita'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_313',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual emissions of carbon dioxide (CO₂) from oil, measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-co2-oil'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_314',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual emissions of carbon dioxide (CO₂) from other industry sources, measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-co2-other-industry'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_315',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Emissions include those from fossil fuels and industry, and land-use change. They are measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-co2-including-land-use'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_316',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Percentage change in gross domestic product (GDP) and carbon dioxide (CO₂) emissions.',\n", + " 'url': 'https://ourworldindata.org/grapher/co2-gdp-growth'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_317',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Percentage change in gross domestic product (GDP), population, and carbon dioxide (CO₂) emissions.',\n", + " 'url': 'https://ourworldindata.org/grapher/co2-gdp-pop-growth'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_318',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Greenhouse gas emissions include carbon dioxide, methane and nitrous oxide from all sources, including land-use change. They are measured in tonnes of carbon dioxide-equivalents over a 100-year timescale.',\n", + " 'url': 'https://ourworldindata.org/grapher/ghg-emissions-by-world-region'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_319',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Carbon dioxide (CO₂) emissions from fossil fuels and industry. Land-use change is not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/change-co2-annual-pct'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_320',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Consumption-based emissions are national emissions that have been adjusted for trade. This map denotes whether a country's average per capita emissions are above or below the value of global per capita emissions.\",\n", + " 'url': 'https://ourworldindata.org/grapher/consumption-co2-per-capita-equity'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_321',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"This map denotes whether a country's average per capita emissions are above or below the value of global per capita emissions. This is based on territorial emissions, which don't adjust for trade.\",\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-co2-vs-average'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_322',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Global average land-sea temperature anomaly relative to the 1961-1990 average temperature.',\n", + " 'url': 'https://ourworldindata.org/grapher/temperature-anomaly'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_323',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Given as a share of carbon dioxide emissions from fossil fuels and land use change.',\n", + " 'url': 'https://ourworldindata.org/grapher/aviation-share-co2'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_324',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Global Carbon Budget (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/co2-emissions-by-fuel-line'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_325',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Global Carbon Budget (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/co2-by-source'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_326',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Climate Watch (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/co-emissions-by-sector'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_327',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Net import-export balance in tonnes of CO₂ per year. Positive values (red) represent net importers of CO₂. Negative values (blue) represent net exporters of CO₂.',\n", + " 'url': 'https://ourworldindata.org/grapher/co-emissions-embedded-in-global-trade'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_328',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Aviation emissions include both domestic and international flights. International aviation emissions are here allocated to the country of departure of each flight.',\n", + " 'url': 'https://ourworldindata.org/grapher/co2-emissions-aviation'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_329',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Domestic aviation represents flights which depart and arrive within the same country.',\n", + " 'url': 'https://ourworldindata.org/grapher/co2-emissions-domestic-aviation'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_330',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Global Carbon Budget (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/co2-emissions-fossil-land'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_331',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Global Carbon Budget (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/co2-fossil-plus-land-use'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_332',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'International aviation emissions are here allocated to the country of departure of each flight.',\n", + " 'url': 'https://ourworldindata.org/grapher/co2-international-aviation'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_333',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Emissions are measured in tonnes. Domestic aviation and shipping emissions are included at the national level. International aviation and shipping emissions are included only at the global level.',\n", + " 'url': 'https://ourworldindata.org/grapher/co2-emissions-transport'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_334',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The width of each bar shows countries scaled by population size. The height of each bar measures tonnes of per capita carbon dioxide (CO₂) emissions from fossil fuels and industry.',\n", + " 'url': 'https://ourworldindata.org/grapher/co2-per-capita-marimekko'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_335',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'This measures CO₂ emissions from fossil fuels and industry only – land-use change is not included. GDP per capita is adjusted for inflation and differences in the cost of living between countries.',\n", + " 'url': 'https://ourworldindata.org/grapher/co2-emissions-vs-gdp'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_336',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Fossil fuel consumption is measured as the average consumption of energy from coal, oil and gas per person. Fossil fuel and industry emissions are included. Land-use change emissions are not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/co-emissions-per-capita-vs-fossil-fuel-consumption-per-capita'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_337',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Annual consumption-based carbon dioxide emissions. Consumption-based emissions are national emissions that have been adjusted for trade. It's production-based emissions minus emissions embedded in exports, plus emissions embedded in imports.\",\n", + " 'url': 'https://ourworldindata.org/grapher/co-emissions-per-capita-vs-population-growth'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_338',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Carbon dioxide (CO₂) emissions are measured in tonnes per person.',\n", + " 'url': 'https://ourworldindata.org/grapher/co2-per-capita-vs-renewable-electricity'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_339',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual emissions of carbon dioxide under various mitigation scenarios to keep global average temperature rise below 1.5°C. Scenarios are based on the CO₂ reductions necessary if mitigation had started – with global emissions peaking and quickly reducing – in the given year.',\n", + " 'url': 'https://ourworldindata.org/grapher/co2-mitigation-15c'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_340',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual emissions of carbon dioxide under various mitigation scenarios to keep global average temperature rise below 2°C. Scenarios are based on the CO₂ reductions necessary if mitigation had started – with global emissions peaking and quickly reducing – in the given year.',\n", + " 'url': 'https://ourworldindata.org/grapher/co2-mitigation-2c'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_341',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Global carbon dioxide (CO₂) emissions, by World Bank income group.',\n", + " 'url': 'https://ourworldindata.org/grapher/co2-income-level'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_342',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Emissions factors quantify the average CO₂ output per unit of energy. They are measured in kilograms of CO₂ per megawatt-hour (MWh) of energy from various fossil fuel sources.',\n", + " 'url': 'https://ourworldindata.org/grapher/carbon-dioxide-emissions-factor'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_343',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Carbon emission intensity is measured in kilograms of CO₂ per dollar of GDP. Emissions from fossil fuels and industry are included. Land-use change is not included. GDP data is adjusted for inflation and differences in the cost of living between countries.',\n", + " 'url': 'https://ourworldindata.org/grapher/carbon-emission-intensity-vs-gdp-per-capita'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_344',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The carbon footprint of travel is measured in grams of carbon dioxide-equivalents per passenger kilometer. This includes the impact of increased warming from aviation emissions at altitude.',\n", + " 'url': 'https://ourworldindata.org/grapher/carbon-footprint-travel-mode'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_345',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Amount of carbon dioxide emitted per unit of energy production, measured in kilograms of CO₂ per kilowatt-hour.',\n", + " 'url': 'https://ourworldindata.org/grapher/co2-per-unit-energy'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_346',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Carbon intensity represents the quantity of CO₂ emitted per unit of energy consumption – it's measured in kilograms of CO₂ emitted per kilowatt-hour of energy.\",\n", + " 'url': 'https://ourworldindata.org/grapher/carbon-intensity-vs-gdp'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_347',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Kilograms of CO₂ emitted per dollar of GDP. Fossil fuel and industry emissions are included. Land-use change emissions are not included. GDP data is adjusted for inflation and differences in the cost of living between countries.',\n", + " 'url': 'https://ourworldindata.org/grapher/co2-intensity'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_348',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The carbon opportunity cost, measured in kilograms of carbon dioxide-equivalents per kilogram of food, is the amount of carbon lost from native vegetation and soils in order to produce each food. If a specific food was not produced on a given plot of land, this land could be used to restore native vegetation and sequester carbon.',\n", + " 'url': 'https://ourworldindata.org/grapher/carbon-opportunity-costs-per-kilogram-of-food'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_349',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Consumption-based emissions are national emissions that have been adjusted for trade. This measures fossil fuel and industry emissions. Land-use change is not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/co2-emissions-and-gdp'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_350',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Consumption-based emissions include those from fossil fuels and industry. Land-use change emissions are not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/co2-emissions-and-gdp-per-capita'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_351',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'This measures fossil fuel and industry emissions. Land-use change is not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/co2-emissions-and-gdp-long-term'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_352',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Consumption-based emissions include those from fossil fuels and industry. Land-use change emissions are not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/consumption-co2-emissions'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_353',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Consumption-based emissions are measured in tonnes per person. They are territorial emissions minus emissions embedded in exports, plus emissions embedded in imports. GDP per capita is adjusted for price differences between countries (PPP) and over time (inflation).',\n", + " 'url': 'https://ourworldindata.org/grapher/consumption-co2-per-capita-vs-gdppc'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_354',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Consumption-based emissions are measured in tonnes per person. The Human Development Index (HDI) is a summary measure of key dimensions of human development: a long and healthy life, a good education, and a decent standard of living.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-co-emissions-vs-human-development-index'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_355',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Carbon intensity measures the kilograms of CO₂ emitted per unit of GDP. Consumption-based emissions include those from fossil fuels and industry. Land-use change emissions are not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/consumption-based-carbon-intensity'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_356',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Consumption-based emissions include those from fossil fuels and industry. Land-use change emissions are not included. Countries above the diagonal line are net importers of CO₂.',\n", + " 'url': 'https://ourworldindata.org/grapher/consumption-vs-production-co2-per-capita'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_357',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"The global mean surface temperature change as a result of a country or region's cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.\",\n", + " 'url': 'https://ourworldindata.org/grapher/contribution-temp-rise-degrees'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_358',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"The global mean surface temperature change as a result of a country or region's cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.\",\n", + " 'url': 'https://ourworldindata.org/grapher/contribution-to-temp-rise-by-gas'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_359',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"The global mean surface temperature change as a result of a country or region's cumulative emissions of carbon dioxide, methane, and nitrous oxide. This is for land use and agriculture only.\",\n", + " 'url': 'https://ourworldindata.org/grapher/global-warming-land'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_360',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"The global mean surface temperature change as a result of a country or region's cumulative emissions of carbon dioxide, methane, and nitrous oxide. This is for fossil fuel and industry emissions only – it does not include land use or agriculture.\",\n", + " 'url': 'https://ourworldindata.org/grapher/global-warming-fossil'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_361',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Contribution of individual sectors to net economic output versus its share of total national carbon dioxide (CO₂) emissions in 2009. Sectors which lie above the line contribute more to the value added than to the emissions in China. Direct emissions of households are not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/value-added-vs-share-of-emissions-china'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_362',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Contribution of individual sectors to net economic output versus its share of total national carbon dioxide (CO₂) emissions in 2009. Sectors which lie above the line contribute more to the value added than the emissions in Germany. Direct emissions of households are not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/value-added-vs-share-of-emissions-germany'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_363',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Contribution of individual sectors to net economic output versus its share of total national carbon dioxide (CO₂) emissions in 2009. Sectors which lie above the line contribute more to the value added than the emissions in the United States. Direct emissions of households are not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/value-added-vs-share-of-emissions-usa'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_364',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The System of Environmental-Economic Accounting (SEEA) is a framework that integrates economic and environmental data, to provide a more comprehensive view of the relationships between the economy and the environment. Shown are all the countries that have compiled SEEA accounts at least once.',\n", + " 'url': 'https://ourworldindata.org/grapher/countries-using-the-system-of-environmental-economic-accounting'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_365',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Running sum of CO₂ emissions produced from fossil fuels and industry since the first year of recording, measured in tonnes. Land-use change is not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/cumulative-co-emissions'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_366',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Global Carbon Budget (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/cumulative-co2-fuel'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_367',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Cumulative carbon dioxide (CO₂) emissions by region from the year 1750 onwards. This measures CO₂ emissions from fossil fuels and industry only – land-use change is not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/cumulative-co2-emissions-region'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_368',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Cumulative emissions of carbon dioxide (CO₂) from cement since the first year of available data, measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/cumulative-co2-cement'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_369',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Cumulative emissions of carbon dioxide (CO₂) from coal since the first year of available data, measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/cumulative-co2-coal'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_370',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Cumulative emissions of carbon dioxide (CO₂) from flaring since the first year of available data, measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/cumulative-co2-flaring'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_371',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Cumulative emissions of carbon dioxide (CO₂) from gas since the first year of available data, measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/cumulative-co2-gas'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_372',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Emissions from land-use change can be positive or negative depending on whether these changes emit (positive) or sequester (negative) carbon.',\n", + " 'url': 'https://ourworldindata.org/grapher/cumulative-co2-land-use'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_373',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Cumulative emissions of carbon dioxide (CO₂) from oil since the first year of available data, measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/cumulative-co2-oil'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_374',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Global Carbon Budget (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/cumulative-co-emissions-from-other-industry'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_375',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Emissions include those from fossil fuels and industry, and land-use change. They are measured as the cumulative total since 1850, in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/cumulative-co2-including-land'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_376',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"The emissions-weighted carbon price is calculated for the whole economy by multiplying each sector's (e.g. electricity, or road transport) carbon price by its contribution to a country's carbon dioxide emissions.\",\n", + " 'url': 'https://ourworldindata.org/grapher/emissions-weighted-carbon-price'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_377',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"The emissions-weighted carbon price in emissions trading systems (ETS) is calculated for the whole economy by multiplying each sector's (e.g. electricity, or road transport) carbon price by its contribution to a country's carbon dioxide emissions.\",\n", + " 'url': 'https://ourworldindata.org/grapher/weighted-carbon-price-ets'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_378',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Average energy consumption per capita is measured in kilowatt-hours per person. Average carbon dioxide (CO₂) emissions per capita are measured in tonnes per person.',\n", + " 'url': 'https://ourworldindata.org/grapher/energy-use-per-capita-vs-co2-emissions-per-capita'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_379',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Environmentally sound technologies (ESTs) are technologies that have the potential for significantly improved environmental performance relative to other technologies. This indicator shows the value of exported ESTs in current US-$.',\n", + " 'url': 'https://ourworldindata.org/grapher/export-of-environmentally-sound-technologies'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_380',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Greenhouse gas emissions are measured in kilograms of carbon dioxide-equivalents (CO₂eq) per kilogram of food.',\n", + " 'url': 'https://ourworldindata.org/grapher/food-emissions-production-supply-chain'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_381',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Greenhouse gas emissions are measured in kilograms of carbon dioxide-equivalents (CO₂eq) per kilogram of food.',\n", + " 'url': 'https://ourworldindata.org/grapher/food-emissions-supply-chain'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_382',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Emissions from the food system are broken down by their stage in the life-cycle, from land use and on-farm production through to consumer waste. Emissions are measured in tonnes of carbon dioxide-equivalents.',\n", + " 'url': 'https://ourworldindata.org/grapher/food-emissions-life-cycle'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_383',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The global mean surface temperature change as a result of the cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.',\n", + " 'url': 'https://ourworldindata.org/grapher/global-warming-by-gas-and-source'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_384',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"The global mean surface temperature change as a result of a country or region's cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.\",\n", + " 'url': 'https://ourworldindata.org/grapher/warming-fossil-fuels-land-use'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_385',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Global warming potential measures the relative warming impact of one unit mass of a greenhouse gas relative to carbon dioxide over a 100-year timescale.',\n", + " 'url': 'https://ourworldindata.org/grapher/global-warming-potential-of-greenhouse-gases-over-100-year-timescale-gwp'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_386',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"This is shown as a country or region's share of the global mean surface temperature change as a result of its cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.\",\n", + " 'url': 'https://ourworldindata.org/grapher/contributions-global-temp-change'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_387',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Greenhouse gas emissions include carbon dioxide, methane and nitrous oxide from all sources, including land-use change. They are measured in tonnes of carbon dioxide-equivalents over a 100-year timescale.',\n", + " 'url': 'https://ourworldindata.org/grapher/total-ghg-emissions'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_388',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Greenhouse gas emissions from all sources, including agriculture and land-use change. They are measured in tonnes of carbon dioxide-equivalents over a 100-year timescale.',\n", + " 'url': 'https://ourworldindata.org/grapher/ghg-emissions-by-gas'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_389',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Greenhouse gas emissions are measured in tonnes of carbon dioxide-equivalents over a 100-year timescale.',\n", + " 'url': 'https://ourworldindata.org/grapher/ghg-emissions-by-sector'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_390',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Greenhouse gas emissions are measured in tonnes of carbon dioxide-equivalents over a 100-year timescale. Land-use change emissions are not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/ghg-emissions-by-sector-stacked'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_391',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Emissions are measured in tonnes of carbon dioxide-equivalents.',\n", + " 'url': 'https://ourworldindata.org/grapher/emissions-from-food'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_392',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Emissions are measured in tonnes of carbon dioxide-equivalents. 'End-of-life' refers to waste management practices, such as recycling, incineration or landfill emissions.\",\n", + " 'url': 'https://ourworldindata.org/grapher/ghg-emissions-plastic-stage'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_393',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Emissions are measured in tonnes of carbon dioxide-equivalents.',\n", + " 'url': 'https://ourworldindata.org/grapher/greenhouse-gas-emissions-from-plastics'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_394',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Greenhouse gas emissions are measured in kilograms of carbon dioxide-equivalents.',\n", + " 'url': 'https://ourworldindata.org/grapher/ghg-per-protein-poore'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_395',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Greenhouse gas emissions are measured in kilograms of carbon dioxide-equivalents.',\n", + " 'url': 'https://ourworldindata.org/grapher/ghg-kcal-poore'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_396',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Greenhouse gas emissions are measured in kilograms of carbon dioxide-equivalents. This means non-CO₂ gases are weighted by the amount of warming they cause over a 100-year timescale.',\n", + " 'url': 'https://ourworldindata.org/grapher/ghg-per-kg-poore'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_397',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Based on a meta-analysis of data from 1690 fish farms and 1000 unique fishery records. Impacts are given in kilograms of carbon dioxide-equivalents per kilogram of edible weight.',\n", + " 'url': 'https://ourworldindata.org/grapher/ghg-emissions-seafood'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_398',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Change captured by a range of socioeconomic and environmental indicators, measured relative to the first year.',\n", + " 'url': 'https://ourworldindata.org/grapher/global-change-over-the-last-50-years'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_399',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Hypothetical number of global deaths which would have resulted from energy production if the world's energy production was met through a single source, in 2014. This was assumed based on energy production death rates and IEA estimates of global energy consumption in 2014 of 159,000 terawatt-hours.\",\n", + " 'url': 'https://ourworldindata.org/grapher/hypothetical-number-of-deaths-from-energy-production'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_400',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Environmentally sound technologies (ESTs) are technologies that have the potential for significantly improved environmental performance relative to other technologies. This indicator shows the value of imported ESTs in current US-$.',\n", + " 'url': 'https://ourworldindata.org/grapher/import-of-environmentally-sound-technologies'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_401',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'This measures the net import-export balance in tonnes of CO₂ per capita. Positive values indicate net importers of CO₂. Negative values indicate net exporters of CO₂.',\n", + " 'url': 'https://ourworldindata.org/grapher/imported-or-exported-co-emissions-per-capita'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_402',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Percentage change in the four parameters of the Kaya Identity, which determine total CO₂ emissions. Emissions from fossil fuels and industry are included. Land-use change emissions are not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/kaya-identity-co2'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_403',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Carbon dioxide emissions from land-use change vary significantly in their degree of certainty. Countries are coded as 'Low quality' if models significantly disagree on land-use emissions.\",\n", + " 'url': 'https://ourworldindata.org/grapher/land-use-co2-quality-flag'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_404',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Evaluation of a country’s sustainable public procurement implementation level, scope, and comprehensiveness is scored based on six parameters. These parameters consider the existence of regulatory frameworks, implementation support, monitoring, and the share of products and services purchased sustainably.',\n", + " 'url': 'https://ourworldindata.org/grapher/medium-high-level-implementation-of-sustainable-public-procurement'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_405',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Average life expectancy at birth, measured in years across both sexes, versus carbon dioxide (CO₂) emissions per capita, measured in tonnes per person.',\n", + " 'url': 'https://ourworldindata.org/grapher/life-expectancy-at-birth-vs-co-emissions-per-capita'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_406',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Average of survey responses to the 'Cantril Ladder' question in the Gallup World Poll. The survey question asks respondents to think of a ladder, with the best possible life for them being a 10, and the worst possible life being a 0.\",\n", + " 'url': 'https://ourworldindata.org/grapher/life-satisfaction-vs-co-emissions-per-capita'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_407',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Average meat supply per capita, measured in kilograms per year versus gross domestic product (GDP) per capita measured in constant international-$. International-$ corrects for price differences across countries. Figures do not include fish or seafood.',\n", + " 'url': 'https://ourworldindata.org/grapher/meat-consumption-vs-gdp-per-capita'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_408',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'A composite indicator which covers mechanisms related to: 1) Institutionalisation of political commitment 2) Long-term considerations in decision-making 3) Inter-ministerial and cross-sectoral coordination 4) Participatory processes 5) Policy linkages 6) Alignment across government levels 7) Monitoring and reporting for policy coherence 8) Financing for policy coherence. Score expressed as a percentage of the maximum.',\n", + " 'url': 'https://ourworldindata.org/grapher/mechanisms-to-enhance-policy-for-sustainable-development'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_409',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in parts per billion.',\n", + " 'url': 'https://ourworldindata.org/grapher/long-run-methane-concentration'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_410',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Methane (CH₄) emissions are measured in tonnes of carbon dioxide-equivalents. Emissions from fossil fuels, industry and agricultural sources are included.',\n", + " 'url': 'https://ourworldindata.org/grapher/methane-emissions'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_411',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Methane (CH₄) emissions are measured in tonnes of carbon dioxide-equivalents.',\n", + " 'url': 'https://ourworldindata.org/grapher/methane-emissions-by-sector'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_412',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Methane (CH₄) emissions are measured in tonnes of carbon dioxide-equivalents.',\n", + " 'url': 'https://ourworldindata.org/grapher/methane-emissions-agriculture'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_413',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Domestic aviation represents flights which depart and arrive within the same country. International aviation emissions are assigned to the country of departure.',\n", + " 'url': 'https://ourworldindata.org/grapher/monthly-co2-emissions-from-international-aviation'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_414',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Domestic aviation represents flights which depart and arrive within the same country. International aviation emissions are assigned to the country of departure.',\n", + " 'url': 'https://ourworldindata.org/grapher/monthly-co2-emissions-from-international-and-domestic-flights'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_415',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Nitrous oxide (N₂O) emissions are measured in tonnes of carbon dioxide-equivalents.',\n", + " 'url': 'https://ourworldindata.org/grapher/nitrous-oxide-emissions'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_416',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Nitrous oxide (N₂O) emissions are measured in tonnes of carbon dioxide equivalents.',\n", + " 'url': 'https://ourworldindata.org/grapher/nitrous-oxide-emissions-by-sector'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_417',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Nitrous oxide (N₂O) emissions are measured in tonnes of carbon dioxide-equivalents.',\n", + " 'url': 'https://ourworldindata.org/grapher/nitrous-oxide-agriculture'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_418',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'To meet the minimum requirements a company must have published information on a set of key disclosure elements covering the company’s governance practices as well as economic, social and environment impacts.',\n", + " 'url': 'https://ourworldindata.org/grapher/companies-publishing-sustainability-reports-minimum-requirements'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_419',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Domestic aviation represents flights which depart and arrive within the same country.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-co2-emissions-from-domestic-aviation'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_420',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Carbon dioxide (CO₂) emissions from fossil fuels and industry. Land-use change is not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/co-emissions-per-capita'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_421',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Global Carbon Budget (2023); Population based on various sources (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-co2-fuel'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_422',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Carbon dioxide (CO₂) emissions from fossil fuels and industry. Land-use change is not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-co2-region'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_423',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Climate Watch (2023); Population based on various sources (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-co2-sector'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_424',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Global Carbon Budget (2023); Population based on various sources (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-co2-by-source'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_425',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Aviation emissions include both domestic and international flights. International aviation emissions are allocated to the country of departure of each flight.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-co2-aviation'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_426',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual emissions of carbon dioxide (CO₂) from cement, measured in tonnes per person.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-co2-cement'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_427',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual emissions of carbon dioxide (CO₂) from coal, measured in tonnes per person.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-co2-coal'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_428',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'This includes both domestic and international flights. International aviation emissions are allocated to the country of departure, and then adjusted for tourism.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-co2-aviation-adjusted'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_429',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Tonnes of CO₂ emissions per person linked to deforestation for food production – it is trade-adjusted, to reflect the carbon footprint of diets within a given country. Based on the annual average over the period from 2010 to 2014.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-co2-food-deforestation'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_430',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Domestic aviation represents flights which depart and arrive within the same country.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-co2-domestic-aviation'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_431',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Domestic aviation represents flights which depart and arrive within the same country.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-co2-domestic-aviation-vs-gdp'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_432',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Domestic aviation represents flights which depart and arrive within the same country.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-co2-domestic-aviation-vs-land-area'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_433',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual emissions of carbon dioxide (CO₂) from flaring, measured in tonnes per person.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-co2-flaring'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_434',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual emissions of carbon dioxide (CO₂) from gas, measured in tonnes per person.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-co2-gas'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_435',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'International aviation emissions are here allocated to the country of departure of each flight.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-co2-international-aviation'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_436',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'International aviation emissions are allocated to the country of departure, then adjusted for tourism.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-co-emissions-from-international-flights-tourism-adjusted'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_437',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'International aviation emissions are allocated to the country of departure, then adjusted for tourism.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-co2-international-flights-adjusted'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_438',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual emissions of carbon dioxide (CO₂) from oil, measured in tonnes per person.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-co2-oil'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_439',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Emissions are measured in tonnes per person. International aviation and shipping emissions are not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-co2-transport'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_440',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Emissions include those from fossil fuels and industry, and land-use change. They are measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-co2-including-land'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_441',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Emissions from fossil fuels and industry are included. Land-use change emissions are not included. Primary energy is measured in kilowatt-hours per person, using the substitution method.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-consumption-based-co-emissions-vs-per-capita-energy-consumption'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_442',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Emissions are measured in tonnes of carbon dioxide-equivalents. Emissions from land-use change and forestry are not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-ghg-co2-excluding-land-use'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_443',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Emissions are measured in tonnes of carbon dioxide-equivalents. Emissions from land-use change and forestry are included.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-ghg-co2-including-land-use'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_444',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Consumption-based emissions are national emissions that have been adjusted for trade. It's production-based emissions minus emissions embedded in exports, plus emissions embedded in imports.\",\n", + " 'url': 'https://ourworldindata.org/grapher/consumption-co2-per-capita'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_445',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Greenhouse gas emissions include carbon dioxide, methane and nitrous oxide from all sources, including land-use change. They are measured in tonnes of carbon dioxide-equivalents over a 100-year timescale.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-ghg-emissions'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_446',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Per capita greenhouse gas emissions are measured in tonnes of carbon dioxide-equivalents per person per year.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-ghg-sector'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_447',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Greenhouse gas emissions are measured in tonnes of carbon dioxide-equivalents per person. Contributions from land-use change and forestry are not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-ghg-excl-land-use'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_448',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Per capita methane emissions are measured in tonnes of carbon dioxide-equivalents per person per year.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-methane-emissions'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_449',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Climate Watch (2023); Population based on various sources (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-methane-sector'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_450',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Per capita nitrous oxide emissions are measured in tonnes of carbon dioxide-equivalents per person per year.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-nitrous-oxide'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_451',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Climate Watch (2023); Population based on various sources (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-nitrous-oxide-sector'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_452',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Nitrous oxide (N₂O) emissions are measured in tonnes of carbon dioxide-equivalents.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-nitrous-oxide-agriculture'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_453',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Carbon dioxide emissions are included in this figure if they are covered by a carbon tax or trading system.',\n", + " 'url': 'https://ourworldindata.org/grapher/carbon-tax-trading-coverage'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_454',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Exported or imported emissions as a percentage of domestic production emissions. Positive values (red) represent net importers of CO₂. Negative values (blue) represent net exporters of CO₂.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-co2-embedded-in-trade'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_455',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The share of children younger than five who are stunted – significantly shorter than the average for their age, as a consequence of poor nutrition and/or repeated infection.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-children-who-are-stunted-vs-co-emissions-per-capita'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_456',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Cumulative emissions of carbon dioxide (CO₂) from oil since the first year of available data, measured as a percentage of global cumulative emissions of CO₂ from oil.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-cumulative-co2-oil'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_457',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Consumption-based emissions are national emissions that have been adjusted for trade. It's production-based emissions minus emissions embedded in exports, plus emissions embedded in imports.\",\n", + " 'url': 'https://ourworldindata.org/grapher/co2-consumption-share'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_458',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Carbon dioxide (CO₂) emissions from fossil fuels and industry. Land-use change is not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-share-of-co2-emissions'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_459',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Carbon dioxide (CO₂) emissions from fossil fuels and industry. Land-use change is not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-co2-vs-population'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_460',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Aviation emissions include both domestic and international flights. International aviation emissions are allocated to the country of departure of each flight.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-co2-emissions-aviation'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_461',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual emissions of carbon dioxide (CO₂) from cement, measured as a percentage of global emissions of CO₂ from cement in the same year.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-global-co2-cement'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_462',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual emissions of carbon dioxide (CO₂) from coal, measured as a percentage of global emissions of CO₂ from coal in the same year.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-global-co2-coal'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_463',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Domestic aviation represents flights which depart and arrive within the same country.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-global-co2-domestic-aviation'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_464',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual emissions of carbon dioxide (CO₂) from flaring, measured as a percentage of global emissions of CO₂ from flaring in the same year.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-global-co2-flaring'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_465',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual emissions of carbon dioxide (CO₂) from gas, measured as a percentage of global emissions of CO₂ from gas in the same year.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-global-co2-gas'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_466',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'International aviation emissions are here allocated to the country of departure of each flight.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-co2-international-aviation'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_467',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Emissions from land-use change can be positive or negative depending on whether these changes emit (positive) or sequester (negative) carbon.',\n", + " 'url': 'https://ourworldindata.org/grapher/co2-land-use-global-share'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_468',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual emissions of carbon dioxide (CO₂) from oil, measured as a percentage of global emissions of CO₂ from oil in the same year.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-global-co2-oil'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_469',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Emissions include those from fossil fuels and industry, and land-use change.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-global-co2-including-land'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_470',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'This measures fossil fuel and industry emissions. Land-use change is not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-co2-emissions-vs-population'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_471',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual emissions of carbon dioxide (CO₂) from other industry sources, measured as a percentage of global emissions of CO₂ from other industry sources in the same year.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-global-annual-co-emissions-from-other-industry'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_472',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Consumption-based emissions include those from fossil fuels and industry. Land-use change emissions are not included. Data is not available for some low-income countries due to poor data availability.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-global-consumption-based-co-emissions-and-population'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_473',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Consumption-based emissions include those from fossil fuels and industry. Land-use change emissions are not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/consumption-co2-emissions-vs-population'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_474',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Cumulative emissions are the running sum of annual emissions since 1750. This measures fossil fuel and industry emissions. Land-use change is not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-cumulative-co2'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_475',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Cumulative emissions of carbon dioxide (CO₂) from cement since the first year of available data, measured as a percentage of global cumulative emissions of CO₂ from cement.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-global-cumulative-co2-cement'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_476',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Cumulative emissions of carbon dioxide (CO₂) from coal since the first year of available data, measured as a percentage of global cumulative emissions of CO₂ from coal.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-global-cumulative-co2-coal'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_477',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Cumulative emissions of carbon dioxide (CO₂) from flaring since the first year of available data, measured as a percentage of global cumulative emissions of CO₂ from flaring.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-global-cumulative-co2-flaring'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_478',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Cumulative emissions of carbon dioxide (CO₂) from gas since the first year of available data, measured as a percentage of global cumulative emissions of CO₂ from gas.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-global-cumulative-co2-gas'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_479',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Emissions from land-use change can be positive or negative depending on whether these changes emit (positive) or sequester (negative) carbon. Cumulative emissions are the running sum of emissions since 1850.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-global-cumulative-co-emissions-from-land-use-change'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_480',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Cumulative emissions of carbon dioxide (CO₂) from other industry sources since the first year of available data, measured as a percentage of global cumulative emissions of CO₂ from other industry sources.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-global-cumulative-co-emissions-from-other-industry'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_481',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Emissions include those from fossil fuels and industry, and land-use change. This is measured as the cumulative total since 1850.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-global-cumulative-co2-including-land'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_482',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Greenhouse gas emissions include carbon dioxide, methane and nitrous oxide from all sources, including land-use change. They are measured in tonnes of carbon dioxide-equivalents over a 100-year timescale.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-global-ghg-emissions'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_483',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Food system emissions include agriculture, land-use change, and supply chain emissions (transport, packaging, food processing, retail, cooking, and waste). Emissions are quantified based on food production, not consumption. This means they do not account for international trade.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-global-food-emissions'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_484',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Includes methane emissions from fossil fuels, industry and agricultural sources.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-global-methane-emissions'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_485',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Nitrous oxide (N₂O) emissions are measured in tonnes of carbon dioxide-equivalents.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-nitrous-oxide-emissions'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_486',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Food system emissions include agriculture, land-use change, and supply chain emissions (transport, packaging, food processing, retail, cooking, and waste). Emissions are quantified based on food production, not consumption. This means they do not account for international trade.',\n", + " 'url': 'https://ourworldindata.org/grapher/food-share-total-emissions'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_487',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'There are various environmental agreements on waste and chemicals. This metric shows the share of required information that has been submitted to international organizations as part of each agreement.',\n", + " 'url': 'https://ourworldindata.org/grapher/parties-to-multilateral-agreements-on-hazardous-waste'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_488',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Based on representative surveys of almost 130,000 people across 125 countries. Participants were asked: \"Do you think that people in [their country] should try to fight global warming?\"',\n", + " 'url': 'https://ourworldindata.org/grapher/support-public-action-climate'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_489',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The inclusion criteria for net-zero commitments may vary from country to country. For example, the inclusion of international aviation emissions; or the acceptance of carbon offsets. To see the year for which countries have pledged to achieve net-zero, hover over the country in the interactive version of this chart.',\n", + " 'url': 'https://ourworldindata.org/grapher/net-zero-targets'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_490',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Consumption-based emissions include those from fossil fuels and industry. Land-use change emissions are not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/production-vs-consumption-co2-emissions'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_491',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Consumption-based emissions are national emissions that have been adjusted for trade. They are territorial emissions minus emissions embedded in exports, plus emissions embedded in imports.',\n", + " 'url': 'https://ourworldindata.org/grapher/prod-cons-co2-per-capita'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_492',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Greenhouse gas emissions are measured in tonnes of carbon dioxide-equivalents per person. Contributions from land-use change and forestry are included.',\n", + " 'url': 'https://ourworldindata.org/grapher/total-greenhouse-gas-emissions-per-capita'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_493',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Greenhouse gas emissions are measured in tonnes of carbon dioxide-equivalents per person. Contributions from land-use change and forestry are not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/total-ghg-emissions-excluding-lufc'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_494',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Transport is responsible for 4.8% of global greenhouse gas emissions from the food system. Shown is the breakdown by transport type in 2015.',\n", + " 'url': 'https://ourworldindata.org/grapher/food-transport-emissions'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_495',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Gross domestic product (GDP) growth of individual sectors (adjusted for inflation) versus growth in carbon dioxide (CO₂) emissions over the period 1995-2009. Sectors in the top left quadrant have decoupled their emissions from economic growth - whilst their emissions fell, their economic value grew. Direct emissions of households are not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/value-added-growth-vs-emissions-growth-china'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_496',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Gross domestic product (GDP) growth of individual sectors (adjusted for inflation) versus growth in carbon dioxide (CO₂) emissions over the period 1995-2009. Sectors in the top left quadrant have decoupled their emissions from economic growth - whilst their emissions fell, their economic value grew. Direct emissions of households are not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/value-added-growth-vs-emissions-growth-germany'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_497',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Gross domestic product (GDP) growth of individual sectors (adjusted for inflation) versus growth in carbon dioxide (CO₂) emissions over the period 1995-2009. Sectors in the top left quadrant have decoupled their emissions from economic growth - whilst their emissions fell, their economic value grew. Direct emissions of households are not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/value-added-growth-vs-emissions-growth-usa'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_498',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'A country is marked as having an emissions trading system (ETS) if at least one sector is covered by one.',\n", + " 'url': 'https://ourworldindata.org/grapher/carbon-emissions-trading-system'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_499',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'A country is marked as having a carbon emissions tax instrument if at least one sector has implemented one.',\n", + " 'url': 'https://ourworldindata.org/grapher/carbon-tax-instruments'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_500',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Countries are shown as having a net-zero emissions target if they have: achieved net-zero already; have it written in law; in their policy document or have made a public pledge. The year for which countries have pledged to achieve net-zero varies.',\n", + " 'url': 'https://ourworldindata.org/grapher/net-zero-target-set'},\n", + " {'category': 'CO2 & Greenhouse Gas Emissions',\n", + " 'doc_id': 'owid_501',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Absolute annual change in carbon dioxide (CO₂) emissions, measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/absolute-change-co2'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_502',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The youngest age threshold eligible for vaccination in each age group may vary. For example, a country coded as \"available to under-16s\" may only offer vaccination to children aged five years and older.',\n", + " 'url': 'https://ourworldindata.org/grapher/covid-vaccine-age'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_503',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The biweekly change on any given date measures the percentage change in the number of new confirmed cases over the last 14 days, relative to the number in the previous 14 days. Due to limited testing, the number of confirmed cases is lower than the true number of infections.',\n", + " 'url': 'https://ourworldindata.org/grapher/biweekly-growth-covid-cases'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_504',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The biweekly change on any given date measures the percentage change in the number of new confirmed deaths over the last 14 days relative to the number in the previous 14 days. Due to varying protocols and challenges in the attribution of the cause of death, the number of confirmed deaths may not accurately represent the true number of deaths caused by COVID-19.',\n", + " 'url': 'https://ourworldindata.org/grapher/biweekly-change-covid-deaths'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_505',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Biweekly confirmed cases refer to the cumulative number of confirmed cases over the previous two weeks.',\n", + " 'url': 'https://ourworldindata.org/grapher/biweekly-confirmed-covid-19-cases'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_506',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Biweekly confirmed cases refers to the cumulative number of cases over the previous two weeks. Due to limited testing, the number of confirmed cases is lower than the true number of infections.',\n", + " 'url': 'https://ourworldindata.org/grapher/biweekly-covid-cases-per-million-people'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_507',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Cumulative number of confirmed deaths over the previous two weeks. Due to varying protocols and challenges in the attribution of the cause of death, the number of confirmed deaths may not accurately represent the true number of deaths caused by COVID-19.',\n", + " 'url': 'https://ourworldindata.org/grapher/biweekly-covid-deaths'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_508',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Biweekly confirmed deaths refer to the cumulative number of confirmed deaths over the previous two weeks. Due to varying protocols and challenges in the attribution of the cause of death, the number of confirmed deaths may not accurately represent the true number of deaths caused by COVID-19.',\n", + " 'url': 'https://ourworldindata.org/grapher/biweekly-covid-deaths-per-million-people'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_509',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'This is a composite measure based on thirteen policy response indicators including school closures, workplace closures, travel bans, testing policy, contact tracing, face coverings, and vaccine policy rescaled to a value from 0 to 100 (100 = strictest). If policies vary at the subnational level, the index is shown as the response level of the strictest sub-region.',\n", + " 'url': 'https://ourworldindata.org/grapher/covid-containment-and-health-index'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_510',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': '– No testing policy. – Only those who both (a) have symptoms and also (b) meet specific criteria (e.g. key workers, admitted to hospital, came into contact with a known case, returned from overseas). – Testing of anyone showing COVID-19 symptoms. – Open public testing (e.g. “drive through” testing available to asymptomatic people).',\n", + " 'url': 'https://ourworldindata.org/grapher/covid-19-testing-policy'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_511',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Policies for vaccine delivery. Vulnerable groups include key workers, the clinically vulnerable, and the elderly. \"Others\" include select broad groups, such as by age.',\n", + " 'url': 'https://ourworldindata.org/grapher/covid-vaccination-policy'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_512',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Total vaccine doses administered per 100 people vs. daily new COVID-19 deaths per million people. All doses, including boosters, are counted individually. Due to varying protocols and challenges in the attribution of the cause of death, the number of confirmed deaths may not accurately represent the true number of deaths caused by COVID-19.',\n", + " 'url': 'https://ourworldindata.org/grapher/covid-vaccinations-vs-covid-death-rate'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_513',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Total number of vaccine booster doses administered. Booster doses are doses administered beyond those prescribed by the original vaccination protocol.',\n", + " 'url': 'https://ourworldindata.org/grapher/cumulative-covid-vaccine-booster-doses'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_514',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Total number of vaccine booster doses administered, divided by the total population of the country. Booster doses are doses administered beyond those prescribed by the original vaccination protocol.',\n", + " 'url': 'https://ourworldindata.org/grapher/covid-vaccine-booster-doses-per-capita'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_515',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'All doses, including boosters, are counted individually.',\n", + " 'url': 'https://ourworldindata.org/grapher/covid-vaccine-doses-by-manufacturer'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_516',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'All doses, including boosters, are counted individually.',\n", + " 'url': 'https://ourworldindata.org/grapher/cumulative-covid-vaccinations-income-group'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_517',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Doses donated to the COVAX initiative by each country.',\n", + " 'url': 'https://ourworldindata.org/grapher/covax-donations'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_518',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Doses donated to the COVAX initiative by each country, per person living in the donating country.',\n", + " 'url': 'https://ourworldindata.org/grapher/covax-donations-per-capita'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_519',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Doses donated to the COVAX initiative by each country, per dose administered domestically.',\n", + " 'url': 'https://ourworldindata.org/grapher/covax-donations-per-dose-used'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_520',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Doses donated to the COVAX initiative by each country, per million dollars of GDP of the donating country.',\n", + " 'url': 'https://ourworldindata.org/grapher/covax-donations-per-gdp'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_521',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': '7-day rolling average. Comparisons across countries are affected by differences in testing policies and reporting methods.',\n", + " 'url': 'https://ourworldindata.org/grapher/covid-19-daily-tests-vs-daily-new-confirmed-cases'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_522',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': '7-day rolling average. Comparisons across countries are affected by differences in testing policies and reporting methods.',\n", + " 'url': 'https://ourworldindata.org/grapher/covid-19-daily-tests-vs-daily-new-confirmed-cases-per-million'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_523',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Total number of people of all ages who have not received any dose of a COVID-19 vaccine.',\n", + " 'url': 'https://ourworldindata.org/grapher/covid-world-unvaccinated-people'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_524',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'If policies vary at the subnational level, the index is shown as the response level of the strictest sub-region.',\n", + " 'url': 'https://ourworldindata.org/grapher/public-events-covid'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_525',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Death rates are calculated as the number of deaths in each group, divided by the total number of people in this group. This is given per 100,000 people.',\n", + " 'url': 'https://ourworldindata.org/grapher/chile-covid-19-mortality-rate-by-vaccination-status'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_526',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Shown is the 7-day rolling average. Due to varying protocols and challenges in the attribution of the cause of death, the number of confirmed deaths may not accurately represent the true number of deaths caused by COVID-19. GDP per capita is adjusted for price differences between countries (it is expressed in international dollars).',\n", + " 'url': 'https://ourworldindata.org/grapher/daily-confirmed-deaths-of-covid-19-per-million-people-vs-gdp-per-capita'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_527',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Limited testing and challenges in the attribution of cause of death mean the confirmed case and death counts may not reflect the true counts.',\n", + " 'url': 'https://ourworldindata.org/grapher/cumulative-deaths-and-cases-covid-19'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_528',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': '7-day rolling average. Due to limited testing, the number of confirmed cases is lower than the true number of infections.',\n", + " 'url': 'https://ourworldindata.org/grapher/cumulative-covid-cases-region'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_529',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Due to varying protocols and challenges in the attribution of the cause of death, the number of confirmed deaths may not accurately represent the true number of deaths caused by COVID-19.',\n", + " 'url': 'https://ourworldindata.org/grapher/cumulative-covid-deaths-region'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_530',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Limited testing and challenges in the attribution of cause of death mean the cases and deaths counts may not be accurate. The gray lines show the corresponding case-fatality rates (the ratio between confirmed deaths and confirmed cases).',\n", + " 'url': 'https://ourworldindata.org/grapher/covid-19-cumulative-confirmed-cases-vs-confirmed-deaths'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_531',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The figures are given as a rolling 7-day average. Comparisons across countries are affected by differences in testing policies and reporting methods.',\n", + " 'url': 'https://ourworldindata.org/grapher/daily-covid-19-tests-smoothed-7-day'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_532',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': '7-day rolling average. Comparisons across countries are affected by differences in testing policies and reporting methods.',\n", + " 'url': 'https://ourworldindata.org/grapher/daily-tests-per-thousand-people-smoothed-7-day'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_533',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': '7-day rolling average. All doses, including boosters, are counted individually.',\n", + " 'url': 'https://ourworldindata.org/grapher/daily-covid-19-vaccination-doses'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_534',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Due to varying protocols and challenges in the attribution of the cause of death, the number of confirmed deaths may not accurately represent the true number of deaths caused by COVID-19.',\n", + " 'url': 'https://ourworldindata.org/grapher/total-daily-covid-deaths'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_535',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': '7-day rolling average. Due to limited testing, the number of confirmed cases is lower than the true number of infections.',\n", + " 'url': 'https://ourworldindata.org/grapher/daily-cases-covid-region'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_536',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': '7-day rolling average. Due to varying protocols and challenges in the attribution of the cause of death, the number of confirmed deaths may not accurately represent the true number of deaths caused by COVID-19.',\n", + " 'url': 'https://ourworldindata.org/grapher/daily-covid-deaths-region'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_537',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': '7-day rolling average. Limited testing and challenges in the attribution of cause of death mean the cases and deaths counts may not be accurate.',\n", + " 'url': 'https://ourworldindata.org/grapher/daily-covid-cases-deaths-7-day-ra'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_538',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Shown is the rolling 7-day average. The two time series represent the data as reported by the Swedish government respectively on October 30 and November 12, 2020.',\n", + " 'url': 'https://ourworldindata.org/grapher/daily-new-confirmed-covid-19-deaths-in-sweden-oct-2020'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_539',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimates of the true number of infections. The \"upper\" and \"lower\" lines show the bounds of a 95% uncertainty interval. For comparison, confirmed cases are infections that have been confirmed with a test.',\n", + " 'url': 'https://ourworldindata.org/grapher/daily-new-estimated-covid-19-infections-icl-model'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_540',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimates of the true number of infections. The \"upper\" and \"lower\" lines show the bounds of a 95% uncertainty interval. For comparison, confirmed cases are infections that have been confirmed with a test.',\n", + " 'url': 'https://ourworldindata.org/grapher/daily-new-estimated-covid-19-infections-ihme-model'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_541',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimates of the true number of infections. The \"upper\" and \"lower\" lines show the bounds of a 95% uncertainty interval. For comparison, confirmed cases are infections that have been confirmed with a test.',\n", + " 'url': 'https://ourworldindata.org/grapher/daily-new-estimated-covid-19-infections-lshtm-model'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_542',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimates of the true number of infections. The \"upper\" and \"lower\" lines show the bounds of a 95% uncertainty interval. For comparison, confirmed cases are infections that have been confirmed with a test.',\n", + " 'url': 'https://ourworldindata.org/grapher/daily-new-estimated-covid-19-infections-yyg-model'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_543',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Mean estimates from epidemiological models of the true number of infections. Estimates differ because the models differ in data used and assumptions made. Confirmed cases—which are infections that have been confirmed with a test—are shown for comparison.',\n", + " 'url': 'https://ourworldindata.org/grapher/daily-new-estimated-infections-of-covid-19'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_544',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': '7-day rolling average. All doses, including boosters, are counted individually.',\n", + " 'url': 'https://ourworldindata.org/grapher/daily-covid-vaccination-doses-per-capita'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_545',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Shown is the 7-day rolling average of confirmed COVID-19 cases per million people. The number of confirmed cases is lower than the number of total cases. The main reason for this is limited testing.',\n", + " 'url': 'https://ourworldindata.org/grapher/covid-daily-vs-total-cases-per-million'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_546',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Debt or contract relief captures if the government is freezing financial obligations during the COVID-19 pandemic, such as stopping loan repayments, preventing services like water from stopping, or banning evictions.',\n", + " 'url': 'https://ourworldindata.org/grapher/debt-relief-covid'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_547',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The percentage decline of GDP relative to the same quarter in 2019. It is adjusted for inflation.',\n", + " 'url': 'https://ourworldindata.org/grapher/economic-decline-in-the-second-quarter-of-2020'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_548',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The vertical axis shows the number of confirmed COVID-19 cases per million, as of August 30. The horizontal axis shows the percentage decline of GDP relative to the same quarter in 2019. It is adjusted for inflation.',\n", + " 'url': 'https://ourworldindata.org/grapher/q2-gdp-growth-vs-confirmed-cases-per-million-people'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_549',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The vertical axis shows the number of COVID-19 deaths per million, as of August 30, 2020. The horizontal axis shows the percentage decline of GDP relative to the same quarter in 2019. It is adjusted for inflation.',\n", + " 'url': 'https://ourworldindata.org/grapher/q2-gdp-growth-vs-confirmed-deaths-due-to-covid-19-per-million-people'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_550',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Death rates are calculated as the number of deaths in each group, divided by the total number of people in this group. This is given per 100,000 people.',\n", + " 'url': 'https://ourworldindata.org/grapher/england-covid-19-mortality-rate-by-vaccination-status'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_551',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'For countries that have not reported all-cause mortality data for a given week, an estimate is shown, with uncertainty interval. If reported data is available, that value only is shown.',\n", + " 'url': 'https://ourworldindata.org/grapher/excess-deaths-cumulative-economist'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_552',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Cumulative difference between the number of reported or estimated deaths in 2020–2021 and the projected number of deaths for the same period based on previous years. For comparison, cumulative confirmed COVID-19 deaths are shown.',\n", + " 'url': 'https://ourworldindata.org/grapher/excess-deaths-cumulative-who'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_553',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'For countries that have not reported all-cause mortality data for a given week, an estimate is shown, with uncertainty interval. If reported data is available, that value only is shown. For comparison, cumulative confirmed COVID-19 deaths are shown.',\n", + " 'url': 'https://ourworldindata.org/grapher/excess-deaths-cumulative-economist-single-entity'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_554',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'For countries that have not reported all-cause mortality data for a given week, an estimate is shown, with uncertainty interval. If reported data is available, that value only is shown. On the map, only the central estimate is shown.',\n", + " 'url': 'https://ourworldindata.org/grapher/excess-deaths-cumulative-per-100k-economist'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_555',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Cumulative difference between the number of reported or estimated deaths in 2020–2021 and the projected number of deaths for the same period based on previous years. Estimates differ because the models differ in the data and methods used.',\n", + " 'url': 'https://ourworldindata.org/grapher/excess-deaths-cumulative-economist-who'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_556',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'For countries that have not reported all-cause mortality data for a given week, an estimate is shown, with uncertainty interval. If reported data is available, that value only is shown.',\n", + " 'url': 'https://ourworldindata.org/grapher/excess-deaths-daily-economist'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_557',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'For countries that have not reported all-cause mortality data for a given week, an estimate is shown, with uncertainty interval. If reported data is available, that value only is shown. For comparison, daily confirmed COVID-19 deaths are shown (7-day rolling average).',\n", + " 'url': 'https://ourworldindata.org/grapher/excess-deaths-daily-economist-single-entity'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_558',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'For countries that have not reported all-cause mortality data for a given week, an estimate is shown, with uncertainty interval. If reported data is available, that value only is shown. On the map, only the central estimate is shown.',\n", + " 'url': 'https://ourworldindata.org/grapher/excess-deaths-daily-per-100k-economist'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_559',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The cumulative difference between the reported number of deaths since 1 January 2020 and the projected number of deaths for the same period based on previous years.',\n", + " 'url': 'https://ourworldindata.org/grapher/cumulative-excess-deaths-covid'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_560',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The percentage difference between the cumulative number of reported deaths since 1 January 2020 and the cumulative projected deaths for the same period based on previous years.',\n", + " 'url': 'https://ourworldindata.org/grapher/cumulative-excess-mortality-p-scores-projected-baseline'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_561',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The cumulative difference between the reported number of deaths since 1 January 2020 and the projected number of deaths for the same period based on previous years.',\n", + " 'url': 'https://ourworldindata.org/grapher/cumulative-excess-deaths-per-million-covid'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_562',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Percentage difference between the reported weekly or monthly deaths in 2020–2024 and the average deaths in the same period in 2015–2019.',\n", + " 'url': 'https://ourworldindata.org/grapher/excess-mortality-p-scores-average-baseline'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_563',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The percentage difference between the reported number of weekly or monthly deaths in 2020–2024 — broken down by age group — and the average number of deaths in the same period over the years 2015–2019.',\n", + " 'url': 'https://ourworldindata.org/grapher/excess-mortality-p-scores-average-baseline-by-age'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_564',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The percentage difference between the reported number of weekly or monthly deaths in 2020–2024 and the projected number of deaths for the same period based on previous years.',\n", + " 'url': 'https://ourworldindata.org/grapher/excess-mortality-p-scores-projected-baseline'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_565',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The percentage difference between the reported number of weekly or monthly deaths in 2020–2024 — broken down by age group — and the projected number of deaths for the same period based on previous years.',\n", + " 'url': 'https://ourworldindata.org/grapher/excess-mortality-p-scores-projected-baseline-by-age'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_566',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The reported number of weekly or monthly deaths in 2020–2024 and the projected number of deaths for 2020, which is based on the reported deaths in 2015–2019.',\n", + " 'url': 'https://ourworldindata.org/grapher/excess-mortality-raw-death-count'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_567',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The reported number of weekly or monthly deaths in 2020–2024 and the projected number of deaths for the same period based on previous years.',\n", + " 'url': 'https://ourworldindata.org/grapher/excess-mortality-raw-death-count-single-series'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_568',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'If policies vary at the subnational level, the index is shown as the response level of the strictest sub-region.',\n", + " 'url': 'https://ourworldindata.org/grapher/face-covering-policies-covid'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_569',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Grocery and pharmacy stores includes places like grocery markets, farmers markets, specialty food shops, drug stores, and pharmacies.',\n", + " 'url': 'https://ourworldindata.org/grapher/change-visitors-grocery-stores'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_570',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'This data shows how community movement in specific locations has changed relative to the period before the pandemic.',\n", + " 'url': 'https://ourworldindata.org/grapher/changes-visitors-covid'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_571',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Each metric is shown as a percentage of its peak value in early 2021, and is shifted to account for the observed delay between case confirmation, hospital admission, ICU admission, and death.',\n", + " 'url': 'https://ourworldindata.org/grapher/israel-covid-cases-hospital-icu-deaths'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_572',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Each metric is shown as a percentage of its peak value in early 2021, and is shifted to account for the observed delay between case confirmation, hospital admission, ICU admission, and death.',\n", + " 'url': 'https://ourworldindata.org/grapher/spain-covid-cases-hospital-icu-deaths'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_573',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Each metric is shown as a percentage of its peak value in early 2021, and is shifted to account for the observed delay between case confirmation, hospitalization, ventilation, and death.',\n", + " 'url': 'https://ourworldindata.org/grapher/uk-covid-cases-hospital-ventilated-deaths'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_574',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Income support captures if the government is covering the salaries or providing direct cash payments, universal basic income, or similar, of people who lose their jobs or cannot work.',\n", + " 'url': 'https://ourworldindata.org/grapher/income-support-covid'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_575',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Oxford COVID-19 Government Response Tracker, Blavatnik School of Government, University of Oxford – Last updated 10 April 2024',\n", + " 'url': 'https://ourworldindata.org/grapher/international-travel-covid'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_576',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Official data collated by Our World in Data – Last updated 21 June 2024',\n", + " 'url': 'https://ourworldindata.org/grapher/covid-icu-patients-per-million'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_577',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Official data collated by Our World in Data – Last updated 21 June 2024',\n", + " 'url': 'https://ourworldindata.org/grapher/current-covid-patients-hospital'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_578',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Official data collated by Our World in Data – Last updated 21 June 2024',\n", + " 'url': 'https://ourworldindata.org/grapher/current-covid-hospitalizations-per-million'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_579',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Official data collated by Our World in Data – Last updated 21 June 2024',\n", + " 'url': 'https://ourworldindata.org/grapher/current-covid-patients-icu'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_580',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Total number of people who received all doses prescribed by the initial vaccination protocol.',\n", + " 'url': 'https://ourworldindata.org/grapher/people-fully-vaccinated-covid'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_581',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Parks and outdoor spaces includes places like local parks, national parks, public beaches, marinas, dog parks, plazas, and public gardens.',\n", + " 'url': 'https://ourworldindata.org/grapher/change-visitors-parks-covid'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_582',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Oxford COVID-19 Government Response Tracker, Blavatnik School of Government, University of Oxford – Last updated 10 April 2024',\n", + " 'url': 'https://ourworldindata.org/grapher/public-campaigns-covid'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_583',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'If policies vary at the subnational level, the index is shown as the response level of the strictest sub-region.',\n", + " 'url': 'https://ourworldindata.org/grapher/public-transport-covid'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_584',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'This data shows how the number of visitors to residential areas has changed relative to the period before the pandemic.',\n", + " 'url': 'https://ourworldindata.org/grapher/changes-residential-duration-covid'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_585',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'If policies vary at the subnational level, the index is shown as the response level of the strictest sub-region.',\n", + " 'url': 'https://ourworldindata.org/grapher/internal-movement-covid'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_586',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Oxford COVID-19 Government Response Tracker, Blavatnik School of Government, University of Oxford – Last updated 10 April 2024',\n", + " 'url': 'https://ourworldindata.org/grapher/public-gathering-rules-covid'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_587',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Retail and recreation includes places like restaurants, cafés, shopping centers, theme parks, museums, libraries, movie theaters.',\n", + " 'url': 'https://ourworldindata.org/grapher/change-visitors-retail-recreation'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_588',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The share of analyzed sequences in the preceding two weeks that correspond to each variant group. This share may not reflect the complete breakdown of cases since only a fraction of all cases are sequenced.',\n", + " 'url': 'https://ourworldindata.org/grapher/covid-variants-bar'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_589',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The number of analyzed sequences in the preceding two weeks that correspond to each variant group. This number may not reflect the complete breakdown of cases since only a fraction of all cases are sequenced.',\n", + " 'url': 'https://ourworldindata.org/grapher/covid-variants-area'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_590',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'If policies vary at the subnational level, the index is shown as the response level of the strictest sub-region.',\n", + " 'url': 'https://ourworldindata.org/grapher/school-closures-covid'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_591',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Shown is the delta variant's share of total analyzed sequences in the preceding two weeks.\",\n", + " 'url': 'https://ourworldindata.org/grapher/covid-cases-delta'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_592',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Share of omicron variant in all analyzed sequences in the preceding two weeks.',\n", + " 'url': 'https://ourworldindata.org/grapher/covid-cases-omicron'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_593',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': '14-day rolling average. Booster doses are doses administered beyond those prescribed by the original vaccination protocol.',\n", + " 'url': 'https://ourworldindata.org/grapher/covid-vaccine-share-boosters'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_594',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Total number of people who received all doses prescribed by the initial vaccination protocol, divided by the total population of the country.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-people-fully-vaccinated-covid'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_595',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Share of the population in each age group that have received all prescribed doses of the vaccine.',\n", + " 'url': 'https://ourworldindata.org/grapher/covid-fully-vaccinated-by-age'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_596',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Total number of people who received at least one vaccine dose, divided by the total population of the country.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-people-vaccinated-covid'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_597',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Share of the population in each age group that have received a booster dose against COVID-19.',\n", + " 'url': 'https://ourworldindata.org/grapher/covid-booster-vaccinated-by-age'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_598',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Share of the population in each age group that has received at least one vaccine dose. This may not equal the share that has completed the initial protocol if the vaccine requires two doses.',\n", + " 'url': 'https://ourworldindata.org/grapher/covid-vaccine-by-age'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_599',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Total confirmed cases as a share of the total number of people tested, or the number of tests performed – according to how testing data is reported by the country. Comparisons across countries are affected by differences in testing policies and reporting methods.',\n", + " 'url': 'https://ourworldindata.org/grapher/covid-19-positive-rate-bar'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_600',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'If policies vary at the subnational level, the index is shown as the response level of the strictest sub-region.',\n", + " 'url': 'https://ourworldindata.org/grapher/stay-at-home-covid'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_601',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Shown is the rolling 7-day average, reported by date of death. Because it takes a number of days until all deaths for a particular day are reported in Sweden, death counts for the last 2 weeks must only be interpreted as an incomplete measure of mortality.',\n", + " 'url': 'https://ourworldindata.org/grapher/sweden-official-covid-deaths'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_602',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Death rates are calculated as the number of deaths in each group, divided by the total number of people in this group. This is given per 100,000 people.',\n", + " 'url': 'https://ourworldindata.org/grapher/switzerland-covid-19-weekly-death-rate-by-vaccination-status'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_603',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'For both measures, the 7-day rolling average is shown. Comparisons across countries are affected by differences in testing policies and reporting methods.',\n", + " 'url': 'https://ourworldindata.org/grapher/daily-tests-and-daily-new-confirmed-covid-cases'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_604',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': '7-day rolling average. Comparisons across countries are affected by differences in testing policies and reporting methods.',\n", + " 'url': 'https://ourworldindata.org/grapher/tests-per-confirmed-case-daily-smoothed'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_605',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': '7-day rolling average. Comparisons across countries are affected by differences in testing policies and reporting methods.',\n", + " 'url': 'https://ourworldindata.org/grapher/positive-rate-daily-smoothed'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_606',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Comparisons across countries are affected by differences in testing policies and reporting methods.',\n", + " 'url': 'https://ourworldindata.org/grapher/full-list-total-tests-for-covid-19'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_607',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Comparisons across countries are affected by differences in testing policies and reporting methods.',\n", + " 'url': 'https://ourworldindata.org/grapher/covid-19-total-confirmed-cases-vs-total-tests-conducted'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_608',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Both measures are shown per million people of the country's population. Comparisons across countries are affected by differences in testing policies and reporting methods.\",\n", + " 'url': 'https://ourworldindata.org/grapher/covid-19-tests-cases-scatter-with-comparisons'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_609',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Comparisons across countries are affected by differences in testing policies and reporting methods.',\n", + " 'url': 'https://ourworldindata.org/grapher/full-list-cumulative-total-tests-per-thousand'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_610',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'GDP per capita is adjusted for price differences between countries (it is expressed in international dollars). Comparisons across countries are affected by differences in testing policies and reporting methods.',\n", + " 'url': 'https://ourworldindata.org/grapher/tests-of-covid-19-per-thousand-people-vs-gdp-per-capita'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_611',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Comparisons across countries are affected by differences in testing policies and reporting methods.',\n", + " 'url': 'https://ourworldindata.org/grapher/number-of-covid-19-tests-per-confirmed-case-bar-chart'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_612',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'All doses, including boosters, are counted individually.',\n", + " 'url': 'https://ourworldindata.org/grapher/cumulative-covid-vaccinations'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_613',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'All doses, including boosters, are counted individually.',\n", + " 'url': 'https://ourworldindata.org/grapher/covid-vaccination-doses-per-capita'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_614',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Both measures are expressed per million people of the country's population. Limited testing and challenges in the attribution of cause of death mean the cases and deaths counts may not be accurate.\",\n", + " 'url': 'https://ourworldindata.org/grapher/rate-confirmed-cases-vs-rate-confirmed-deaths'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_615',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Confirmed COVID-19 cases are compared for the three main data sources: – Johns Hopkins University; – World Health Organization (WHO) Situation Reports; – European Centre for Disease Prevention and Control (ECDC)',\n", + " 'url': 'https://ourworldindata.org/grapher/covid-cases-by-source'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_616',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Limited testing and challenges in the attribution of cause of death mean the cases and deaths counts may not be accurate.',\n", + " 'url': 'https://ourworldindata.org/grapher/total-covid-cases-deaths-per-million'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_617',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Due to varying protocols and challenges in the attribution of the cause of death, the number of confirmed deaths may not accurately represent the true number of deaths caused by COVID-19.',\n", + " 'url': 'https://ourworldindata.org/grapher/total-confirmed-deaths-due-to-covid-19-vs-population'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_618',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Confirmed COVID-19 deaths are compared for the three main data sources: – Johns Hopkins University; – World Health Organization (WHO) Situation Reports; – European Centre for Disease Prevention and Control (ECDC)',\n", + " 'url': 'https://ourworldindata.org/grapher/deaths-from-covid-by-source'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_619',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Official data collated by Our World in Data – Last updated 21 June 2024',\n", + " 'url': 'https://ourworldindata.org/grapher/people-vaccinated-covid'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_620',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Transit stations include public transport hubs such as subway, bus, and train stations.',\n", + " 'url': 'https://ourworldindata.org/grapher/visitors-transit-covid'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_621',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Limited testing and challenges in the attribution of the cause of death means that the number of confirmed deaths may not be an accurate count of the true number of deaths from COVID-19.',\n", + " 'url': 'https://ourworldindata.org/grapher/uk-cumulative-covid-deaths-rate'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_622',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Shown is the rolling 7-day average. Due to limited testing, the number of confirmed cases is lower than the true number of infections.',\n", + " 'url': 'https://ourworldindata.org/grapher/uk-daily-new-covid-cases'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_623',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Shown is the rolling 7-day average, by the date a positive specimen is taken, not the date that a case is reported. This lag in processing means the latest data shown is several days behind the current date. Due to limited testing, the number of confirmed cases is lower than the true number of infections.',\n", + " 'url': 'https://ourworldindata.org/grapher/uk-daily-covid-cases-7day-average'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_624',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Shown is the rolling 7-day average. This is based on a 28-day cut-off period for a positive COVID-19 test. It is based on the date the death was reported.',\n", + " 'url': 'https://ourworldindata.org/grapher/uk-daily-covid-deaths'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_625',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Hospital data is available for individual UK nations, and English data by NHS Region. Figures are not comparable between nations as Wales includes suspected COVID-19 patients while the other nations only include confirmed cases.',\n", + " 'url': 'https://ourworldindata.org/grapher/uk-daily-covid-admissions'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_626',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Hospitalization data is available for individual UK nations, and English data by NHS Region. Data from the four nations may not be directly comparable as data about COVID-19 patients in hospitals are collected differently.',\n", + " 'url': 'https://ourworldindata.org/grapher/uk-covid-hospital-patients'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_627',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Shown is the percentage of people who had a PCR test in the previous 7 days and had at least one positive test result. Data is currently only shown for regions in England.',\n", + " 'url': 'https://ourworldindata.org/grapher/uk-covid-positivity'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_628',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': '7-day rolling average. All doses, including boosters, are counted individually.',\n", + " 'url': 'https://ourworldindata.org/grapher/us-daily-covid-vaccine-doses-administered'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_629',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': '7-day rolling average. All doses, including boosters, are counted individually.',\n", + " 'url': 'https://ourworldindata.org/grapher/us-daily-covid-vaccine-doses-per-100'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_630',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Total number of people who received all doses prescribed by the vaccination protocol.',\n", + " 'url': 'https://ourworldindata.org/grapher/us-covid-number-fully-vaccinated'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_631',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Total number of people who received at least one vaccine dose.',\n", + " 'url': 'https://ourworldindata.org/grapher/us-covid-19-total-people-vaccinated'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_632',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Share of distributed vaccination doses that have been administered/used in the population. Distributed figures represent those reported to Operation Warp Speed as delivered.',\n", + " 'url': 'https://ourworldindata.org/grapher/us-share-covid-19-vaccine-doses-used'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_633',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Share of the total population that have received all doses prescribed by the vaccination protocol.',\n", + " 'url': 'https://ourworldindata.org/grapher/us-covid-share-fully-vaccinated'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_634',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Share of the total population that received at least one vaccine dose.',\n", + " 'url': 'https://ourworldindata.org/grapher/us-covid-19-share-people-vaccinated'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_635',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'All doses, including boosters, are counted individually.',\n", + " 'url': 'https://ourworldindata.org/grapher/us-total-covid-19-vaccine-doses-administered'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_636',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'All doses, including boosters, are counted individually.',\n", + " 'url': 'https://ourworldindata.org/grapher/us-state-covid-vaccines-per-100'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_637',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Cumulative counts of COVID-19 vaccine doses reported to Operation Warp Speed as delivered.',\n", + " 'url': 'https://ourworldindata.org/grapher/us-total-covid-vaccine-doses-distributed'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_638',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Cumulative counts of COVID-19 vaccine doses reported to Operation Warp Speed as delivered per 100 people in the total population.',\n", + " 'url': 'https://ourworldindata.org/grapher/us-covid-vaccine-doses-distributed-per-100'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_639',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Death rates are calculated as the number of deaths in each group, divided by the total number of people in this group. This is given per 100,000 people.',\n", + " 'url': 'https://ourworldindata.org/grapher/united-states-rates-of-covid-19-deaths-by-vaccination-status'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_640',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The weekly change on any given date measures the percentage change in the number of new confirmed cases over the last seven days relative to the number in the previous seven days. Due to limited testing, the number of confirmed cases is lower than the true number of infections.',\n", + " 'url': 'https://ourworldindata.org/grapher/weekly-growth-covid-cases'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_641',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The weekly change on any given date measures the percentage change in number of confirmed deaths over the last seven days relative to the number in the previous seven days. Due to varying protocols and challenges in the attribution of the cause of death, the number of confirmed deaths may not accurately represent the true number of deaths caused by COVID-19.',\n", + " 'url': 'https://ourworldindata.org/grapher/weekly-growth-covid-deaths'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_642',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Weekly confirmed cases refer to the cumulative number of cases over the previous week.',\n", + " 'url': 'https://ourworldindata.org/grapher/weekly-covid-cases'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_643',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Weekly confirmed cases refers to the cumulative number of cases over the previous week. Due to limited testing, the number of confirmed cases is lower than the true number of infections.',\n", + " 'url': 'https://ourworldindata.org/grapher/weekly-covid-cases-per-million-people'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_644',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Weekly confirmed deaths refer to the cumulative number of confirmed deaths over the previous week. Due to varying protocols and challenges in the attribution of the cause of death, the number of confirmed deaths may not accurately represent the true number of deaths caused by COVID-19.',\n", + " 'url': 'https://ourworldindata.org/grapher/weekly-covid-deaths'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_645',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Weekly confirmed deaths refer to the cumulative number of confirmed deaths over the previous week. Due to varying protocols and challenges in the attribution of the cause of death, the number of confirmed deaths may not accurately represent the true number of deaths caused by COVID-19.',\n", + " 'url': 'https://ourworldindata.org/grapher/weekly-covid-deaths-per-million-people'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_646',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Official data collated by Our World in Data – Last updated 21 June 2024',\n", + " 'url': 'https://ourworldindata.org/grapher/weekly-icu-admissions-covid'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_647',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Official data collated by Our World in Data – Last updated 21 June 2024',\n", + " 'url': 'https://ourworldindata.org/grapher/weekly-icu-admissions-covid-per-million'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_648',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Official data collated by Our World in Data – Last updated 21 June 2024',\n", + " 'url': 'https://ourworldindata.org/grapher/weekly-hospital-admissions-covid'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_649',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Official data collated by Our World in Data – Last updated 21 June 2024',\n", + " 'url': 'https://ourworldindata.org/grapher/weekly-hospital-admissions-covid-per-million'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_650',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Shown is the youngest age group that is eligible for vaccination against COVID-19 in a given country. This is for the general population; eligibility may differ for individuals in higher risk groups.',\n", + " 'url': 'https://ourworldindata.org/grapher/youngest-age-covid-vaccination'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_651',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source:',\n", + " 'url': 'https://ourworldindata.org/grapher/covid-contact-tracing'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_652',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Share of the total population who has not received a vaccine dose and who are willing vs. unwilling vs. uncertain if they would get a vaccine this week if it was available to them. Also shown is the share who have already received at least one dose.',\n", + " 'url': 'https://ourworldindata.org/grapher/covid-vaccine-willingness-and-people-vaccinated-by-month'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_653',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'If policies vary at the subnational level, the index is shown as the response level of the strictest sub-region.',\n", + " 'url': 'https://ourworldindata.org/grapher/workplace-closures-covid'},\n", + " {'category': 'COVID-19',\n", + " 'doc_id': 'owid_654',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Google COVID-19 Community Mobility Trends - Last updated 10 April 2024',\n", + " 'url': 'https://ourworldindata.org/grapher/workplace-visitors-covid'},\n", + " {'category': 'Clean Water',\n", + " 'doc_id': 'owid_655',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"The percentage of coastal and inland bathing sites with 'excellent' water quality. To be classified as 'excellent' bathing sites must have levels of bacteria that are associated with sewage pollution below a defined threshold.\",\n", + " 'url': 'https://ourworldindata.org/grapher/bathing-sites-with-excellent-water-quality'},\n", + " {'category': 'Clean Water',\n", + " 'doc_id': 'owid_656',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimated annual number of deaths attributed to unsafe water sources per 100,000 people.',\n", + " 'url': 'https://ourworldindata.org/grapher/death-rates-unsafe-water'},\n", + " {'category': 'Clean Water',\n", + " 'doc_id': 'owid_657',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Death rates are measured as the number of deaths per 100,000 individuals. GDP per capita is measured in constant international-$, which corrects for inflation and price differences between countries.',\n", + " 'url': 'https://ourworldindata.org/grapher/death-rates-unsafe-water-vs-gdp'},\n", + " {'category': 'Clean Water',\n", + " 'doc_id': 'owid_658',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Total population using the five different levels of drinking water services: safely managed; basic, limited, unimproved and surface water.',\n", + " 'url': 'https://ourworldindata.org/grapher/drinking-water-service-coverage'},\n", + " {'category': 'Clean Water',\n", + " 'doc_id': 'owid_659',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Rural population using the five different levels of drinking water services: safely managed; basic, limited, unimproved and surface water.',\n", + " 'url': 'https://ourworldindata.org/grapher/drinking-water-services-coverage-rural'},\n", + " {'category': 'Clean Water',\n", + " 'doc_id': 'owid_660',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Target 7.1 of the UN Sustainable Development Goals (SDGs) is to achieve universal and equitable usage of safe and affordable drinking water for all. Here, we assume a target threshold of at least 99% using an improved water source.',\n", + " 'url': 'https://ourworldindata.org/grapher/sdg-target-on-improved-water-access'},\n", + " {'category': 'Clean Water',\n", + " 'doc_id': 'owid_661',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'An improved drinking water source includes piped water on premises and other sources (public taps or standpipes, tube wells or boreholes, protected dug wells, protected springs, and rainwater collection). GDP per capita is measured in constant international-$.',\n", + " 'url': 'https://ourworldindata.org/grapher/improved-water-sources-vs-gdp-per-capita'},\n", + " {'category': 'Clean Water',\n", + " 'doc_id': 'owid_662',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Improved drinking water sources are those that have the potential to deliver safe water by nature of their design and construction, and include: piped water, boreholes or tubewells, protected dug wells, protected springs, rainwater, and packaged or delivered water.',\n", + " 'url': 'https://ourworldindata.org/grapher/number-without-improved-water'},\n", + " {'category': 'Clean Water',\n", + " 'doc_id': 'owid_663',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Safely managed drinking water is defined as an “Improved source located on premises, available when needed, and free from microbiological and priority chemical contamination.”',\n", + " 'url': 'https://ourworldindata.org/grapher/number-without-safe-drinking-water'},\n", + " {'category': 'Clean Water',\n", + " 'doc_id': 'owid_664',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Basic drinking water services are defined as an improved drinking water source, provided collection time is not more than 30 minutes for a roundtrip including queuing.',\n", + " 'url': 'https://ourworldindata.org/grapher/people-with-access-to-at-least-basic-drinking-water'},\n", + " {'category': 'Clean Water',\n", + " 'doc_id': 'owid_665',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimated annual number of deaths attributed to unsafe water sources per 100,000 people. Here the attributable burden is the number of deaths per 100,000 people that would no longer occur if the entire population had access to high-quality piped water.',\n", + " 'url': 'https://ourworldindata.org/grapher/death-rates-from-unsafe-water-sources-gbd'},\n", + " {'category': 'Clean Water',\n", + " 'doc_id': 'owid_666',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The share of total deaths, from any cause, with unsafe water sources as an attributed risk factor',\n", + " 'url': 'https://ourworldindata.org/grapher/share-deaths-unsafe-water'},\n", + " {'category': 'Clean Water',\n", + " 'doc_id': 'owid_667',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'A basic drinking water service is water from an improved water source that can be collected within a 30-minute round trip, including queuing.',\n", + " 'url': 'https://ourworldindata.org/grapher/population-using-at-least-basic-drinking-water'},\n", + " {'category': 'Clean Water',\n", + " 'doc_id': 'owid_668',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Improved drinking water sources are those that can deliver safe water. They include piped water, boreholes or tube wells, protected dug wells, protected springs, rainwater, and packaged or delivered water.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-without-improved-water'},\n", + " {'category': 'Clean Water',\n", + " 'doc_id': 'owid_669',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: WHO/UNICEF Joint Monitoring Programme for Water Supply, Sanitation and Hygiene (JMP) (2024)',\n", + " 'url': 'https://ourworldindata.org/grapher/access-drinking-water-stacked'},\n", + " {'category': 'Clean Water',\n", + " 'doc_id': 'owid_670',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Basic drinking water services are defined as an improved drinking water source, provided collection time is not more than 30 minutes for a roundtrip including queuing.',\n", + " 'url': 'https://ourworldindata.org/grapher/rural-population-with-improved-water'},\n", + " {'category': 'Clean Water',\n", + " 'doc_id': 'owid_671',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Basic drinking water services are defined as an improved drinking water source where the collection time is not more than 30 minutes for a roundtrip, including queuing.',\n", + " 'url': 'https://ourworldindata.org/grapher/urban-population-with-improved-water'},\n", + " {'category': 'Clean Water',\n", + " 'doc_id': 'owid_672',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Share of urban versus rural population using at least a basic drinking water source; that is, an improved source within 30 minutes round trip to collect water.',\n", + " 'url': 'https://ourworldindata.org/grapher/urban-vs-rural-using-at-least-basic-drinking-water'},\n", + " {'category': 'Clean Water',\n", + " 'doc_id': 'owid_673',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'A safely managed drinking water service is one that is located on premises, available when needed and free from contamination.',\n", + " 'url': 'https://ourworldindata.org/grapher/urban-vs-rural-safely-managed-drinking-water-source'},\n", + " {'category': 'Clean Water',\n", + " 'doc_id': 'owid_674',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Safely managed drinking water service is defined as an improved water source located on the premises, available when needed, and free from contamination.',\n", + " 'url': 'https://ourworldindata.org/grapher/proportion-using-safely-managed-drinking-water'},\n", + " {'category': 'Clean Water',\n", + " 'doc_id': 'owid_675',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Improved drinking water sources are those that have the potential to deliver safe water by nature of their design and construction, and include: piped water, boreholes or tubewells, protected dug wells, protected springs, rainwater, and packaged or delivered water.',\n", + " 'url': 'https://ourworldindata.org/grapher/urban-improved-water-access-vs-rural-water-access'},\n", + " {'category': 'Clean Water',\n", + " 'doc_id': 'owid_676',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Improved drinking water sources include piped water on premises (piped household water connection located inside the user’s dwelling, plot or yard), and other improved drinking water sources (public taps or standpipes, tube wells or boreholes, protected dug wells, protected springs, and rainwater collection).',\n", + " 'url': 'https://ourworldindata.org/grapher/number-of-people-in-the-world-with-and-without-access-to-improved-water-sources'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_677',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual mean concentration of ammonium in groundwater, lakes, and rivers. Sources of excess ammonium include agricultural runoff and municipal and industrial wastewater. At high concentrations, ammonium can be toxic to aquatic organisms.',\n", + " 'url': 'https://ourworldindata.org/grapher/average-ammonium-concentration-in-freshwater'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_678',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual mean concentrations of nitrate in groundwater, lakes, and rivers. Sources of excess nitrate include agricultural runoff, sewage and wastewater, and industrial discharge.',\n", + " 'url': 'https://ourworldindata.org/grapher/average-nitrate-concentration-in-freshwater'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_679',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual mean concentrations of phosphorus in groundwater, lakes, and rivers. Sources of excess phosphorous include agricultural runoff, sewage, soil erosion, and industrial wastewater.',\n", + " 'url': 'https://ourworldindata.org/grapher/average-phosphorus-concentration-in-freshwater'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_680',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"The percentage of coastal and inland bathing sites with 'excellent' water quality. To be classified as 'excellent' bathing sites must have levels of bacteria that are associated with sewage pollution below a defined threshold.\",\n", + " 'url': 'https://ourworldindata.org/grapher/bathing-sites-with-excellent-water-quality'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_681',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Death rate attributed to unsafe water, unsafe sanitation or lack of hygiene (WASH), measured as the number of deaths per 100,000 people of a given population.',\n", + " 'url': 'https://ourworldindata.org/grapher/mortality-rate-attributable-to-wash'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_682',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimated annual number of deaths attributed to a lack of access to hand-washing facilities per 100,000 people.',\n", + " 'url': 'https://ourworldindata.org/grapher/death-rates-no-handwashing'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_683',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Estimated annual number of deaths attributed to unsafe sanitation per 100,000 people. This is calculated as the 'attributable burden'. Attributable burden represents the reduction in deaths if a population's exposure had shifted from unsafe to adequate sanitation facilities.\",\n", + " 'url': 'https://ourworldindata.org/grapher/death-rate-from-unsafe-sanitation'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_684',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimated annual number of deaths attributed to unsafe water sources per 100,000 people.',\n", + " 'url': 'https://ourworldindata.org/grapher/death-rates-unsafe-water'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_685',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Death rates are measured as the number of deaths per 100,000 individuals. GDP per capita is measured in constant international-$, which corrects for inflation and price differences between countries.',\n", + " 'url': 'https://ourworldindata.org/grapher/death-rates-unsafe-water-vs-gdp'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_686',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimated annual number of deaths attributed to lack of access to handwashing facilities. Here the attributable burden is the number of deaths that would no longer occur if the entire population had access to a handwashing station with available soap and water.',\n", + " 'url': 'https://ourworldindata.org/grapher/deaths-due-to-lack-of-access-to-hand-washing-facilities'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_687',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimated annual number of deaths attributed to unsafe sanitation. Here the attributable burden is the number of deaths that would no longer occur if the entire population had access to high-quality piped water.',\n", + " 'url': 'https://ourworldindata.org/grapher/deaths-due-to-unsafe-sanitation'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_688',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimated annual number of deaths attributed to unsafe water sources. Here the attributable burden is the number of deaths that would no longer occur if the entire population had access to high-quality piped water.',\n", + " 'url': 'https://ourworldindata.org/grapher/deaths-due-to-unsafe-water-sources'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_689',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Diarrheal episodes per 100,000 people. Safely managed sanitation is defined as single-household improved sanitation facilities where excreta are safely disposed in situ or transported and treated off-site.',\n", + " 'url': 'https://ourworldindata.org/grapher/incidence-of-diarrheal-episodes-vs-access-to-improved-sanitation'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_690',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimated annual number of deaths from diarrheal diseases per 100,000 children under five, versus the percentage of people with access to basic handwashing facilities, including soap and water.',\n", + " 'url': 'https://ourworldindata.org/grapher/diarrheal-diseases-vs-handwashing-facilities'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_691',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Total population using the five different levels of drinking water services: safely managed; basic, limited, unimproved and surface water.',\n", + " 'url': 'https://ourworldindata.org/grapher/drinking-water-service-coverage'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_692',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Rural population using the five different levels of drinking water services: safely managed; basic, limited, unimproved and surface water.',\n", + " 'url': 'https://ourworldindata.org/grapher/drinking-water-services-coverage-rural'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_693',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Urban population using the five different levels of drinking water services: safely managed; basic, limited, unimproved and surface water.',\n", + " 'url': 'https://ourworldindata.org/grapher/drinking-water-services-coverage-urban'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_694',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Target 6.2 of the UN Sustainable Development Goals (SDGs) is to achieve access to adequate and equitable sanitation and hygiene for all. Here we mark a cut-off threshold of 99% of the population using improved sanitation facilities.',\n", + " 'url': 'https://ourworldindata.org/grapher/sdg-target-for-access-to-sanitation'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_695',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Target 7.1 of the UN Sustainable Development Goals (SDGs) is to achieve universal and equitable usage of safe and affordable drinking water for all. Here, we assume a target threshold of at least 99% using an improved water source.',\n", + " 'url': 'https://ourworldindata.org/grapher/sdg-target-on-improved-water-access'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_696',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Integrated water resource management (IWRM) is a process which promotes the coordinated development and management of water, land and related resources in order to maximise economic and social welfare in an equitable manner without compromising the sustainability of vital ecosystems.',\n", + " 'url': 'https://ourworldindata.org/grapher/implementation-of-integrated-water-resource-management'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_697',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'An improved drinking water source includes piped water on premises and other sources (public taps or standpipes, tube wells or boreholes, protected dug wells, protected springs, and rainwater collection). GDP per capita is measured in constant international-$.',\n", + " 'url': 'https://ourworldindata.org/grapher/improved-water-sources-vs-gdp-per-capita'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_698',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: WHO/UNICEF Joint Monitoring Programme (JMP) for Water Supply and Sanitation',\n", + " 'url': 'https://ourworldindata.org/grapher/rural-without-basic-handwashing'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_699',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Open defecation refers to defecating in the open, such as in fields, forests, bushes, open bodies of water, on beaches, in other open spaces, or disposed of with solid waste.',\n", + " 'url': 'https://ourworldindata.org/grapher/open-defecation-in-rural-areas-vs-urban-areas'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_700',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Improved drinking water sources are those that have the potential to deliver safe water by nature of their design and construction, and include: piped water, boreholes or tubewells, protected dug wells, protected springs, rainwater, and packaged or delivered water.',\n", + " 'url': 'https://ourworldindata.org/grapher/rural-without-improved-water'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_701',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: WHO/UNICEF Joint Monitoring Programme (JMP) for Water Supply and Sanitation',\n", + " 'url': 'https://ourworldindata.org/grapher/rural-without-improved-sanitation'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_702',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Improved drinking water sources are those that have the potential to deliver safe water by nature of their design and construction, and include: piped water, boreholes or tubewells, protected dug wells, protected springs, rainwater, and packaged or delivered water.',\n", + " 'url': 'https://ourworldindata.org/grapher/number-without-improved-water'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_703',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Improved sanitation facilities are those designed to hygienically separate excreta from human contact, and include: flush/pour flush toilets connected to piped sewer systems, septic tanks or pit latrines; pit latrines with slabs (including ventilated pit latrines), and composting toilets.',\n", + " 'url': 'https://ourworldindata.org/grapher/number-without-access-to-improved-sanitation'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_704',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Safely managed drinking water is defined as an “Improved source located on premises, available when needed, and free from microbiological and priority chemical contamination.”',\n", + " 'url': 'https://ourworldindata.org/grapher/number-without-safe-drinking-water'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_705',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Safely managed sanitation is improved facilities which are not shared with other households and where excreta are safely disposed in situ or transported and treated off-site.',\n", + " 'url': 'https://ourworldindata.org/grapher/safe-sanitation-without'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_706',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Basic drinking water services are defined as an improved drinking water source, provided collection time is not more than 30 minutes for a roundtrip including queuing.',\n", + " 'url': 'https://ourworldindata.org/grapher/people-with-access-to-at-least-basic-drinking-water'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_707',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Number of people without access to basic handwashing facilities, with soap and water.',\n", + " 'url': 'https://ourworldindata.org/grapher/number-without-basic-handwashing'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_708',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Share of population in urban areas versus rural areas with access to basic handwashing facilities.',\n", + " 'url': 'https://ourworldindata.org/grapher/proportion-with-basic-handwashing-facilities-urban-vs-rural'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_709',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Countries progress in ratifying and acceding United Nations Convention on the Law of the Sea (UNCLOS) and its two implementing agreements through legal, policy and institutional frameworks. Higher values indicate greater progress.',\n", + " 'url': 'https://ourworldindata.org/grapher/ratification-and-accession-to-unclos'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_710',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimated annual number of deaths attributed to a lack of access to handwashing facilities per 100,000 people.',\n", + " 'url': 'https://ourworldindata.org/grapher/death-rates-from-no-access-to-handwashing-facilities'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_711',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimated annual number of deaths attributed to unsafe sanitation per 100,000 people. Here the attributable burden is the number of deaths per 100,000 people that would no longer occur if the entire population had access to sanitation facilities connected to a sewer or septic tank.',\n", + " 'url': 'https://ourworldindata.org/grapher/death-rate-from-unsafe-sanitation-gbd'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_712',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Estimated annual number of deaths attributed to unsafe water sources per 100,000 people. Here the attributable burden is the number of deaths per 100,000 people that would no longer occur if the entire population had access to high-quality piped water.',\n", + " 'url': 'https://ourworldindata.org/grapher/death-rates-from-unsafe-water-sources-gbd'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_713',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Total population using the five different levels of sanitation services: safely managed; basic, limited, unimproved and open defecation.',\n", + " 'url': 'https://ourworldindata.org/grapher/sanitation-facilities-coverage'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_714',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Rural population using the five different levels of sanitation services: safely managed; basic, limited, unimproved and open defecation.',\n", + " 'url': 'https://ourworldindata.org/grapher/sanitation-facilities-coverage-in-rural-areas'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_715',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Urban population using the five different levels of sanitation services: safely managed; basic, limited, unimproved and open defecation.',\n", + " 'url': 'https://ourworldindata.org/grapher/sanitation-facilities-coverage-in-urban-areas'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_716',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The share of total deaths, from any cause, with unsafe sanitation as an attributed risk factor',\n", + " 'url': 'https://ourworldindata.org/grapher/share-deaths-unsafe-sanitation'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_717',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The share of total deaths, from any cause, with unsafe water sources as an attributed risk factor',\n", + " 'url': 'https://ourworldindata.org/grapher/share-deaths-unsafe-water'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_718',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Open defecation refers to defecation in fields, forests, bushes, bodies of water, or other open spaces.',\n", + " 'url': 'https://ourworldindata.org/grapher/people-practicing-open-defecation-of-population'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_719',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'A basic drinking water service is water from an improved water source that can be collected within a 30-minute round trip, including queuing.',\n", + " 'url': 'https://ourworldindata.org/grapher/population-using-at-least-basic-drinking-water'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_720',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The percent of people who have access to basic handwashing facilities on the premises.',\n", + " 'url': 'https://ourworldindata.org/grapher/proportion-of-population-with-basic-handwashing-facilities-on-premises'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_721',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Improved sanitation facilities are designed to ensure hygienic separation of human excreta from human contact. GDP per capita is measured in constant international-$.',\n", + " 'url': 'https://ourworldindata.org/grapher/improved-sanitation-facilities-vs-gdp-per-capita'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_722',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Access to basic handwashing facilities refers to a device to facilitate handwashing with soap and water available on the premises.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-rural-basic-handwashing'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_723',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Data from multiple sources compiled by the UN',\n", + " 'url': 'https://ourworldindata.org/grapher/schools-access-drinking-water'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_724',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: UNESCO',\n", + " 'url': 'https://ourworldindata.org/grapher/schools-access-to-wash'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_725',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Improved drinking water sources are those that can deliver safe water. They include piped water, boreholes or tube wells, protected dug wells, protected springs, rainwater, and packaged or delivered water.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-without-improved-water'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_726',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Improved sanitation facilities are designed to hygienically separate excreta from human contact. They include flush to the piped sewer system, septic tanks or pit latrines; ventilated improved pit latrines, composting toilets or pit latrines with slabs.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-without-improved-sanitation'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_727',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Basic sanitation services are defined as improved sanitation facilities not shared with other households.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-population-with-improved-sanitation-faciltities'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_728',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: WHO/UNICEF Joint Monitoring Programme for Water Supply, Sanitation and Hygiene (JMP) (2024)',\n", + " 'url': 'https://ourworldindata.org/grapher/access-drinking-water-stacked'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_729',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Safely managed sanitation is improved facilities which are not shared with other households and where excreta are safely disposed in situ or transported and treated off-site.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-using-safely-managed-sanitation'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_730',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: WHO/UNICEF Joint Monitoring Programme for Water Supply, Sanitation and Hygiene (JMP) (2024)',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-the-population-with-access-to-sanitation-facilities'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_731',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Data compiled from multiple sources by World Bank',\n", + " 'url': 'https://ourworldindata.org/grapher/access-to-basic-services'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_732',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: WHO/UNICEF Joint Monitoring Programme for Water Supply, Sanitation and Hygiene (JMP) (2024)',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-the-population-with-access-to-handwashing-facilities'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_733',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Basic sanitation services are improved sanitation facilities that are not shared with other households.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-rural-population-with-improved-sanitation-faciltities'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_734',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Basic drinking water services are defined as an improved drinking water source, provided collection time is not more than 30 minutes for a roundtrip including queuing.',\n", + " 'url': 'https://ourworldindata.org/grapher/rural-population-with-improved-water'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_735',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The share of transboundary basins area within a region or country with an operational arrangement for water cooperation',\n", + " 'url': 'https://ourworldindata.org/grapher/water-basins-cooperation-plan'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_736',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Basic sanitation services are improved sanitation facilities that are not shared with other households.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-urban-population-with-improved-sanitation-facilities'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_737',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Basic drinking water services are defined as an improved drinking water source where the collection time is not more than 30 minutes for a roundtrip, including queuing.',\n", + " 'url': 'https://ourworldindata.org/grapher/urban-population-with-improved-water'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_738',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Share of urban versus rural population using at least a basic drinking water source; that is, an improved source within 30 minutes round trip to collect water.',\n", + " 'url': 'https://ourworldindata.org/grapher/urban-vs-rural-using-at-least-basic-drinking-water'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_739',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Share of urban versus rural population using at least basic sanitation facilities; that is improved sanitation facilities not shared with other households.',\n", + " 'url': 'https://ourworldindata.org/grapher/urban-vs-rural-population-using-at-least-basic-sanitation'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_740',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'A safely managed drinking water service is one that is located on premises, available when needed and free from contamination.',\n", + " 'url': 'https://ourworldindata.org/grapher/urban-vs-rural-safely-managed-drinking-water-source'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_741',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Share of the urban versus population using a safely managed sanitation service; that is, excreta safely disposed of in situ or treated off-site.',\n", + " 'url': 'https://ourworldindata.org/grapher/urban-vs-rural-population-safely-managed-sanitation'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_742',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Water quality is assessed by means of core physical and chemical parameters that reflect natural water quality. A water body is classified as \"good\" quality if at least 80% of monitoring values meet target quality levels.',\n", + " 'url': 'https://ourworldindata.org/grapher/water-bodies-good-water-quality'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_743',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Safely managed drinking water service is defined as an improved water source located on the premises, available when needed, and free from contamination.',\n", + " 'url': 'https://ourworldindata.org/grapher/proportion-using-safely-managed-drinking-water'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_744',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The share of the urban and rural populations using a safely managed drinking water service.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-population-using-safely-managed-drinking-water-services-rural-vs-urban'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_745',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Total water and sanitation-related Official Development Assistance (ODA) disbursements that are included in the government budget. This data is expressed in US dollars. It is adjusted for inflation but does not account for differences in the cost of living between countries.',\n", + " 'url': 'https://ourworldindata.org/grapher/total-oda-for-water-supply-and-sanitation-by-recipient'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_746',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Improved drinking water sources are those that have the potential to deliver safe water by nature of their design and construction, and include: piped water, boreholes or tubewells, protected dug wells, protected springs, rainwater, and packaged or delivered water.',\n", + " 'url': 'https://ourworldindata.org/grapher/urban-improved-water-access-vs-rural-water-access'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_747',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Number of people using at least basic sanitation facilities; that is improved sanitation facilities not shared with other households.',\n", + " 'url': 'https://ourworldindata.org/grapher/number-using-at-least-basic-sanitation'},\n", + " {'category': 'Clean Water & Sanitation',\n", + " 'doc_id': 'owid_748',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Improved drinking water sources include piped water on premises (piped household water connection located inside the user’s dwelling, plot or yard), and other improved drinking water sources (public taps or standpipes, tube wells or boreholes, protected dug wells, protected springs, and rainwater collection).',\n", + " 'url': 'https://ourworldindata.org/grapher/number-of-people-in-the-world-with-and-without-access-to-improved-water-sources'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_749',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"The deviation of a specific year's average surface temperature from the 1991-2020 mean, in degrees Celsius.\",\n", + " 'url': 'https://ourworldindata.org/grapher/annual-temperature-anomalies'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_750',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The minimum and maximum sea ice extent typically occur in February and September each year.',\n", + " 'url': 'https://ourworldindata.org/grapher/antarctica-sea-ice-extent'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_751',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The minimum and maximum sea ice extent typically occur in September and February each year.',\n", + " 'url': 'https://ourworldindata.org/grapher/arctic-sea-ice'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_752',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source:',\n", + " 'url': 'https://ourworldindata.org/grapher/average-monthly-surface-temperature'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_753',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Global average land-sea temperature anomaly relative to the 1961-1990 average temperature.',\n", + " 'url': 'https://ourworldindata.org/grapher/temperature-anomaly'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_754',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Atmospheric carbon dioxide (CO₂) concentration is measured in parts per million (ppm). Long-term trends in CO₂ concentrations can be measured at high-resolution using preserved air samples from ice cores.',\n", + " 'url': 'https://ourworldindata.org/grapher/co2-long-term-concentration'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_755',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Atmospheric nitrous oxide (N₂O) concentration is measured in parts per billion (ppb).',\n", + " 'url': 'https://ourworldindata.org/grapher/nitrous-oxide-long'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_756',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'National adaptation plans are a means of identifying medium- and long-term climate change adaptation needs and developing and implementing strategies and programmes to address those needs.',\n", + " 'url': 'https://ourworldindata.org/grapher/countries-with-national-adaptation-plans-for-climate-change'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_757',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"The deviation of a specific decade's average surface temperature from the 1991-2020 mean, in degrees Celsius.\",\n", + " 'url': 'https://ourworldindata.org/grapher/decadal-temperature-anomaly'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_758',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The total financial support provided to developing countries for climate change mitigation and adaptation. Countries have set a collective goal of mobilizing $100 billion per year from 2020 onwards.',\n", + " 'url': 'https://ourworldindata.org/grapher/green-climate-gcf-fund-pledges'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_759',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Cumulative mass balance of U.S. reference glaciers, relative to the base year 1965. This is given in meters of water equivalent, which represent changes in the average thickness of a glacier.',\n", + " 'url': 'https://ourworldindata.org/grapher/mass-us-glaciers'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_760',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Atmospheric carbon dioxide (CO₂) concentration is measured in parts per million (ppm).',\n", + " 'url': 'https://ourworldindata.org/grapher/global-co2-concentration'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_761',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Atmospheric methane (CH₄) concentration is measured in parts per billion (ppb).',\n", + " 'url': 'https://ourworldindata.org/grapher/global-methane-concentrations'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_762',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Atmospheric nitrous oxide (N₂O) concentration is measured in parts per billion (ppb).',\n", + " 'url': 'https://ourworldindata.org/grapher/global-nitrous-oxide-concentration'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_763',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Combined land-surface air and sea-surface water temperature anomaly, given as the deviation from the 1951-1980 mean, in degrees Celsius.',\n", + " 'url': 'https://ourworldindata.org/grapher/global-monthly-temp-anomaly'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_764',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The global mean surface temperature change as a result of the cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.',\n", + " 'url': 'https://ourworldindata.org/grapher/global-warming-by-gas-and-source'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_765',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"The global mean surface temperature change as a result of a country or region's cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.\",\n", + " 'url': 'https://ourworldindata.org/grapher/warming-fossil-fuels-land-use'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_766',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"This is shown as a country or region's share of the global mean surface temperature change as a result of its cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.\",\n", + " 'url': 'https://ourworldindata.org/grapher/contributions-global-temp-change'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_767',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'This is measured at a nominal depth of 20cm, and given relative to the average temperature from the period of 1961 - 1990. Measured in degrees Celsius.',\n", + " 'url': 'https://ourworldindata.org/grapher/sea-surface-temperature'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_768',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"The deviation of a specific year's average surface temperature from the 1991-2020 mean, in degrees Celsius.\",\n", + " 'url': 'https://ourworldindata.org/grapher/global-yearly-surface-temperature-anomalies'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_769',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Ocean heat content is measured relative to the 1971–2000 average, which is set at zero for reference. It is measured in 10²² joules. For reference, 10²² joules are equal to approximately 17 times the amount of energy used globally every year.',\n", + " 'url': 'https://ourworldindata.org/grapher/ocean-heat-top-2000m'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_770',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Ocean heat content is measured relative to the 1971–2000 average, which is set at zero for reference. It is measured in 10²² joules. For reference, 10²² joules are equal to approximately 17 times the amount of energy used globally every year.',\n", + " 'url': 'https://ourworldindata.org/grapher/ocean-heat-content-upper'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_771',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Cumulative change in mass of ice sheets, measured relative to a base year of 2002. For reference, 1,000 billion metric tons is equal to about 260 cubic miles of ice—enough to raise sea level by about 3 millimeters.',\n", + " 'url': 'https://ourworldindata.org/grapher/ice-sheet-mass-balance'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_772',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in parts per billion.',\n", + " 'url': 'https://ourworldindata.org/grapher/long-run-methane-concentration'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_773',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Ocean heat content is measured relative to the 1971–2000 average, which is set at zero for reference. It is measured in 10²² joules. For reference, 10²² joules are equal to approximately 17 times the amount of energy used globally every year.',\n", + " 'url': 'https://ourworldindata.org/grapher/monthly-ocean-heat-2000m'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_774',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Ocean heat content is measured relative to the 1971–2000 average, which is set at zero for reference. It is measured in 10²² joules. For reference, 10²² joules are equal to approximately 17 times the amount of energy used globally every year.',\n", + " 'url': 'https://ourworldindata.org/grapher/monthly-upper-ocean-heat'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_775',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The temperature of the air measured 2 meters above the ground, encompassing land, sea, and in-land water surfaces.',\n", + " 'url': 'https://ourworldindata.org/grapher/monthly-average-surface-temperatures-by-decade'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_776',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The temperature of the air measured 2 meters above the ground, encompassing land, sea, and in-land water surfaces.',\n", + " 'url': 'https://ourworldindata.org/grapher/monthly-average-surface-temperatures-by-year'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_777',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Average decadal deviation of a specific month's average surface temperature from the 1991-2020 mean, in degrees Celsius.\",\n", + " 'url': 'https://ourworldindata.org/grapher/monthly-surface-temperature-anomalies-by-decade'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_778',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"The deviation of a specific month's average surface temperature from the 1991–2020 mean, in degrees Celsius.\",\n", + " 'url': 'https://ourworldindata.org/grapher/monthly-surface-temperature-anomalies-by-year'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_779',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"The deviation of a specific month's average surface temperature from the 1991–2020 mean, in degrees Celsius.\",\n", + " 'url': 'https://ourworldindata.org/grapher/monthly-temperature-anomalies'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_780',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Nationally determined contributions (NDCs) embody efforts by each country to reduce national emissions and adapt to the impacts of climate change. The Paris Agreement requires each of the 193 Parties to prepare, communicate and maintain NDCs outlining what they intend to achieve. NDCs must be updated every five years.',\n", + " 'url': 'https://ourworldindata.org/grapher/nationally-determined-contributions'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_781',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Mean seawater pH is shown based on in-situ measurements of pH from the Aloha station in Hawaii.',\n", + " 'url': 'https://ourworldindata.org/grapher/seawater-ph'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_782',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Share of young people in each surveyed country that responded \"yes\" to each statement about climate change. 1,000 young people, aged 16 to 25 years old, were surveyed in each country.',\n", + " 'url': 'https://ourworldindata.org/grapher/opinions-young-people-climate'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_783',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Participants were asked if they would contribute 1% of their income to tackle climate change. The share that answered \"yes\" is shown on the horizontal axis. The share of the population in their country that people think would be willing is shown on the vertical axis.',\n", + " 'url': 'https://ourworldindata.org/grapher/willingness-climate-action'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_784',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data from 2017 onwards is projections from the International Energy Agency, based on estimated changes in population and income.',\n", + " 'url': 'https://ourworldindata.org/grapher/air-conditioners-projections'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_785',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Global mean sea level rise is measured relative to the 1993 - 2008 average sea level. This is shown as three series: the widely-cited Church & White dataset; the University of Hawaii Sea Level Center (UHLSC); and the average of the two.',\n", + " 'url': 'https://ourworldindata.org/grapher/sea-level'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_786',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Sea surface temperature anomaly relative to the 1961-1990 average temperature. This is measured in degrees Celsius (°C).',\n", + " 'url': 'https://ourworldindata.org/grapher/sea-surface-temperature-anomaly'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_787',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Seasonal temperature anomaly, compared to the 1901–2000 average temperature. Measured in degrees Fahrenheit.',\n", + " 'url': 'https://ourworldindata.org/grapher/seasonal-temp-anomaly-us'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_788',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: International Energy Agency (IEA). Future of Cooling.',\n", + " 'url': 'https://ourworldindata.org/grapher/households-air-conditioning'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_789',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Participants were asked to score beliefs on a scale from 0 to 100 on four questions: whether action was necessary to avoid a global catastrophe; humans were causing climate change; it was a serious threat to humanity; and was a global emergency.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-believe-climate'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_790',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Based on representative surveys of almost 130,000 people across 125 countries. Participants were asked: \"Do you think the national government should do more to fight global warming?\"',\n", + " 'url': 'https://ourworldindata.org/grapher/support-political-climate-action'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_791',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Support was measured on a scale from 0 to 100 across nine interventions, including carbon taxes on fossil fuels, expanding public transport, more renewable energy, more electric car chargers, taxes on airlines, investments in green jobs and businesses, laws to keep waterways clean, protecting forests, and increasing taxes on carbon-intensive foods.',\n", + " 'url': 'https://ourworldindata.org/grapher/support-policies-climate'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_792',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Based on representative surveys of almost 130,000 people across 125 countries. Participants were asked: \"Do you think that people in [their country] should try to fight global warming?\"',\n", + " 'url': 'https://ourworldindata.org/grapher/support-public-action-climate'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_793',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'This metric measures the area covered by snow, based on an analysis of weekly maps. These data cover all of North America (including Greenland).',\n", + " 'url': 'https://ourworldindata.org/grapher/snow-cover-north-america'},\n", + " {'category': 'Climate Change',\n", + " 'doc_id': 'owid_794',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Surface temperature anomaly, measured in degrees Celsius The temperature anomaly is relative to the 1951-1980 global average temperature. Data is based on the HadCRUT analysis from the Climatic Research Unit (University of East Anglia) in conjunction with the Hadley Centre (UK Met Office).',\n", + " 'url': 'https://ourworldindata.org/grapher/hadcrut-surface-temperature-anomaly'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_795',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The annual monetary value of gross transfers from consumers and taxpayers to agricultural producers, measured at the farm-gate level, arising from policy measures that support agriculture, regardless of their nature, objectives or impacts on farm production or income.',\n", + " 'url': 'https://ourworldindata.org/grapher/agricultural-producer-support'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_796',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/almond-yields'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_797',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'This metric represents the amount of land needed to grow a given crop if it was to meet global vegetable oil demand alone.',\n", + " 'url': 'https://ourworldindata.org/grapher/area-land-needed-to-global-oil'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_798',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'This metric is the inverse of oil yields. It represents the amount of land needed to grow a given crop to produce one tonne of vegetable oil.',\n", + " 'url': 'https://ourworldindata.org/grapher/area-per-tonne-oil'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_799',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/banana-yields'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_800',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/barley-yields'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_801',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/bean-yields'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_802',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/cashew-nut-yields'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_803',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/cassava-yields'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_804',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Average cereal yield, measured in tonnes per hectare versus gross domestic product (GDP) per capita. This data is adjusted for inflation and for differences in the cost of living between countries.',\n", + " 'url': 'https://ourworldindata.org/grapher/cereal-yield-vs-gdp-per-capita'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_805',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Extreme poverty is defined as living below the International Poverty Line of $2.15 per day. This data is adjusted for inflation and differences in the cost of living between countries.',\n", + " 'url': 'https://ourworldindata.org/grapher/cereal-yield-vs-extreme-poverty-scatter'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_806',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare. Fertilizer use is measured in kilograms of nitrogenous fertilizer applied per hectare of cropland.',\n", + " 'url': 'https://ourworldindata.org/grapher/cereal-crop-yield-vs-fertilizer-application'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_807',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare. Cereals include wheat, rice, maize, barley, oats, rye, millet, sorghum, buckwheat, and mixed grains.',\n", + " 'url': 'https://ourworldindata.org/grapher/cereal-yield'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_808',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'All figures are indexed to the start year of the timeline. This means the first year of the time-series is given the value zero.',\n", + " 'url': 'https://ourworldindata.org/grapher/index-of-cereal-production-yield-and-land-use'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_809',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Shown is the change in production, crop yield and area harvested for the oil palm fruit.',\n", + " 'url': 'https://ourworldindata.org/grapher/change-in-production-yield-and-land-palm'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_810',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Food and Agriculture Organization of the United Nations (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/change-of-cereal-yield-vs-land-used'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_811',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/cocoa-bean-yields'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_812',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/coffee-yields'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_813',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/maize-yields'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_814',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Attainable yields are feasible crop yields based on outputs from high-yielding areas of similar climate. They are more conservative than absolute biophysical ‘potential yields’, but are achievable using current technologies and management (e.g. fertilizers and irrigation). Corn (maize) yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/maize-attainable-yield'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_815',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yield gaps measure the difference between actual yields and attainable yields. Attainable yields are more conservative than absolute biophysical ‘potential yields’, but are achievable using current technologies and management (e.g. fertilizers and irrigation). Corn (maize) yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/maize-yield-gap'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_816',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/cotton-yield'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_817',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/key-crop-yields'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_818',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Land sparing is calculated as the amount of additional land that would have been needed to meet global cereal production if average crop yields had not increased since 1961.',\n", + " 'url': 'https://ourworldindata.org/grapher/cereal-land-spared'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_819',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/groundnuts-yield'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_820',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Land sparing is calculated as the amount of additional land that would have been needed to meet crop production if global average crop yields had not increased since 1961.',\n", + " 'url': 'https://ourworldindata.org/grapher/land-sparing-by-crop'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_821',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Indexed change in land used for cereal production versus cereal yields, from 1961 to 2014. Both indexes are measured relative to values in 1961 (i.e. 1961 = 100).',\n", + " 'url': 'https://ourworldindata.org/grapher/land-use-vs-yield-change-in-cereal-production'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_822',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/lettuce-yields'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_823',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/cereal-yields-uk'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_824',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/millet-yield'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_825',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/palm-oil-yields'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_826',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Global oil yields are measured as the average amount of vegetable oil produced (in tonnes) per hectare of land. This is different from the total yield of the crop since only a fraction is available as vegetable oil.',\n", + " 'url': 'https://ourworldindata.org/grapher/oil-yield-by-crop'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_827',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/orange-yields'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_828',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/pea-yields'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_829',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/potato-yields'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_830',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/rapeseed-yields'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_831',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/rice-yields'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_832',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/rye-yield'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_833',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/sorghum-yield'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_834',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/soybean-yields'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_835',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/sugar-beet-yields'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_836',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/sugar-cane-yields'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_837',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/sunflower-seed-yield'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_838',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/tomato-yields'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_839',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Global agricultural growth is measured by the average annual change in economic output from agriculture. This is broken down by its drivers in each decade. Productivity growth measures increase output from a given amount of input: it's driven by factors such as efficiency gains, better seed varieties, land reforms, and better management practices.\",\n", + " 'url': 'https://ourworldindata.org/grapher/global-agri-productivity-growth'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_840',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/wheat-yields'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_841',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Total factor productivity measures changes in the efficiency with which agricultural inputs are transformed into agricultural outputs. If productivity did not improve, inputs would directly track outputs.',\n", + " 'url': 'https://ourworldindata.org/grapher/agriculture-decoupling-productivity'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_842',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Shown is how much nitrogen pollution countries caused compared with how much they reduced their yield gaps relative to directly neighboring countries. Positive values (yellow to red) indicate a country overapplied nitrogen without gains in yield. This is based on yield gap and nitrogen data published between 2012 and 2015.',\n", + " 'url': 'https://ourworldindata.org/grapher/yield-gap-vs-nitrogen-pollution'},\n", + " {'category': 'Crop Yields',\n", + " 'doc_id': 'owid_843',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'All yields are measured in tonnes per hectare.',\n", + " 'url': 'https://ourworldindata.org/grapher/yields-of-important-staple-crops'},\n", + " {'category': 'Diet Compositions',\n", + " 'doc_id': 'owid_844',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'This is measured as the average daily supply per person.',\n", + " 'url': 'https://ourworldindata.org/grapher/animal-protein-consumption'},\n", + " {'category': 'Diet Compositions',\n", + " 'doc_id': 'owid_845',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Countries shown in blue have an average per capita intake below 200g per person per day; countries in green are greater than 200g. National and World Health Organization (WHO) typically set a guideline of 200g per day.',\n", + " 'url': 'https://ourworldindata.org/grapher/average-per-capita-fruit-intake-vs-minimum-recommended-guidelines'},\n", + " {'category': 'Diet Compositions',\n", + " 'doc_id': 'owid_846',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Countries shown in pink have an average per capita intake below 250g per person per day; countries in green are greater than 250g. National and World Health Organization (WHO) recommendations tend to range between 200-250g per day.',\n", + " 'url': 'https://ourworldindata.org/grapher/average-per-capita-vegetable-intake-vs-minimum-recommended-guidelines'},\n", + " {'category': 'Diet Compositions',\n", + " 'doc_id': 'owid_847',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Daily supply of calories is measured in kilocalories.',\n", + " 'url': 'https://ourworldindata.org/grapher/calorie-supply-by-food-group'},\n", + " {'category': 'Diet Compositions',\n", + " 'doc_id': 'owid_848',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Shown is the per capita supply of cocoa and products at the consumer level. This does not account for consumer waste.',\n", + " 'url': 'https://ourworldindata.org/grapher/chocolate-consumption-per-person'},\n", + " {'category': 'Diet Compositions',\n", + " 'doc_id': 'owid_849',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Recommended intakes of animal products in the EAT-Lancet diet are shown relative to average daily per capita supply by country. The EAT-Lancet diet is a diet recommended to balance the goals of healthy nutrition and environmental sustainability for a global population.',\n", + " 'url': 'https://ourworldindata.org/grapher/eat-lancet-diet-animal-products'},\n", + " {'category': 'Diet Compositions',\n", + " 'doc_id': 'owid_850',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The average per capita supply of calories derived from carbohydrates, protein and fat, all measured in kilocalories per person per day.',\n", + " 'url': 'https://ourworldindata.org/grapher/daily-caloric-supply-derived-from-carbohydrates-protein-and-fat'},\n", + " {'category': 'Diet Compositions',\n", + " 'doc_id': 'owid_851',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Share of dietary energy supplied by food commodity types in the average individual's diet in a given country, measured in kilocalories per person per day.\",\n", + " 'url': 'https://ourworldindata.org/grapher/dietary-composition-by-country'},\n", + " {'category': 'Diet Compositions',\n", + " 'doc_id': 'owid_852',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Average per capita dietary energy supply by commodity groups, measured in kilocalories per person per day.',\n", + " 'url': 'https://ourworldindata.org/grapher/dietary-compositions-by-commodity-group'},\n", + " {'category': 'Diet Compositions',\n", + " 'doc_id': 'owid_853',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The share of global habitable land which would be required for agriculture if everyone in the world adopted the average diet of a given country versus gross domestic product (GDP) per capita, measured in constant international-$. We currently use approximately 50% of habitable land for agriculture, as shown by the horizontal line.',\n", + " 'url': 'https://ourworldindata.org/grapher/dietary-land-use-vs-gdp-per-capita'},\n", + " {'category': 'Diet Compositions',\n", + " 'doc_id': 'owid_854',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Average fruit consumption per person, differentiated by fruit types, measured in kilograms per year.',\n", + " 'url': 'https://ourworldindata.org/grapher/fruit-consumption-by-fruit-type'},\n", + " {'category': 'Diet Compositions',\n", + " 'doc_id': 'owid_855',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Average fruit consumption per person, measured in kilograms per year.',\n", + " 'url': 'https://ourworldindata.org/grapher/fruit-consumption-per-capita'},\n", + " {'category': 'Diet Compositions',\n", + " 'doc_id': 'owid_856',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Average per capita fruit supply, measured in kilograms per year versus gross domestic product (GDP) per capita, measured in constant international-$.',\n", + " 'url': 'https://ourworldindata.org/grapher/fruit-consumption-vs-gdp-per-capita'},\n", + " {'category': 'Diet Compositions',\n", + " 'doc_id': 'owid_857',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Diets are shown as average daily per capita supply of different food groups, compared to the EAT-Lancet diet. The EAT-Lancet diet is a diet recommended to balance the goals of healthy nutrition and environmental sustainability for a global population.',\n", + " 'url': 'https://ourworldindata.org/grapher/eat-lancet-diet-comparison'},\n", + " {'category': 'Diet Compositions',\n", + " 'doc_id': 'owid_858',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': '– Flexitarian: mainly vegetarian, but occasionally eat meat or fish. – Pescetarian: eat fish but do not eat meat or poultry. – Vegetarian: do not eat any meat, poultry, game, fish, or shellfish. – Plant-based / Vegan: do not eat dairy products, eggs, or any other animal product.',\n", + " 'url': 'https://ourworldindata.org/grapher/dietary-choices-of-british-adults'},\n", + " {'category': 'Diet Compositions',\n", + " 'doc_id': 'owid_859',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Share of calorie supply in the average diet sourced from animal protein (which includes meat, seafood, eggs and dairy products), measured as the percentage of daily calorie supply, versus GDP per capita, adjusted for inflation and for differences in the cost of living between countries.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-calories-from-animal-protein-vs-gdp-per-capita'},\n", + " {'category': 'Diet Compositions',\n", + " 'doc_id': 'owid_860',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The share of per capita dietary energy derived from protein, measured as the daily caloric supply from protein as a percentage of total caloric supply, versus gross domestic product (GDP) per capita measured in constant international-$.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-dietary-energy-derived-from-protein-vs-gdp-per-capita'},\n", + " {'category': 'Diet Compositions',\n", + " 'doc_id': 'owid_861',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The share of per capita dietary energy derived from carbohydrates, measured as the daily caloric supply from carbohydrates as a percentage of total caloric supply, versus gross domestic product (GDP) per capita measured in constant international-$.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-dietary-energy-supply-from-carbohydrates-vs-gdp-per-capita'},\n", + " {'category': 'Diet Compositions',\n", + " 'doc_id': 'owid_862',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The share of per capita dietary energy derived from fats, measured as the daily caloric supply from fat as a percentage of total caloric supply, versus gross domestic product (GDP) per capita measured in constant international-$.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-dietary-energy-supply-from-fats-vs-gdp-per-capita'},\n", + " {'category': 'Diet Compositions',\n", + " 'doc_id': 'owid_863',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'A high share of energy from cereals, roots and tubers typically represents lower dietary diversity.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-energy-from-cereals-roots-and-tubers-vs-gdp-per-capita'},\n", + " {'category': 'Diet Compositions',\n", + " 'doc_id': 'owid_864',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'The percentage of global habitable land area needed for agriculture if the total world population was to adopt the average diet of any given country. Values greater than 100% are not possible within global land constraints.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-of-global-habitable-land-needed-for-agriculture-if-everyone-had-the-diet-of'},\n", + " {'category': 'Diet Compositions',\n", + " 'doc_id': 'owid_865',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': '– Flexitarian: mainly vegetarian, but occasionally eat meat or fish. – Pescetarian: eat fish but do not eat meat or poultry. – Vegetarian: do not eat any meat, poultry, game, fish, or shellfish. – Plant-based / Vegan: do not eat dairy products, eggs, or any other animal product.',\n", + " 'url': 'https://ourworldindata.org/grapher/dietary-choices-uk'},\n", + " {'category': 'Diet Compositions',\n", + " 'doc_id': 'owid_866',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Average per capita vegetable consumption, measured in kilograms per person per year.',\n", + " 'url': 'https://ourworldindata.org/grapher/vegetable-consumption-per-capita'},\n", + " {'category': 'Electricity',\n", + " 'doc_id': 'owid_867',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in terawatt-hours.',\n", + " 'url': 'https://ourworldindata.org/grapher/electricity-generation'},\n", + " {'category': 'Electricity',\n", + " 'doc_id': 'owid_868',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in terawatt-hours.',\n", + " 'url': 'https://ourworldindata.org/grapher/electricity-production-by-source'},\n", + " {'category': 'Electricity',\n", + " 'doc_id': 'owid_869',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in terawatt-hours.',\n", + " 'url': 'https://ourworldindata.org/grapher/electricity-prod-source-stacked'},\n", + " {'category': 'Electricity',\n", + " 'doc_id': 'owid_870',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in terawatt-hours.',\n", + " 'url': 'https://ourworldindata.org/grapher/elec-fossil-nuclear-renewables'},\n", + " {'category': 'Electricity',\n", + " 'doc_id': 'owid_871',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Target 7.1 of the UN Sustainable Development Goals (SDGs) is to achieve universal and equitable access to modern energy services. Having access to electricity is defined in international statistics as having an electricity source that can provide very basic lighting, and charge a phone or power a radio for 4 hours per day.',\n", + " 'url': 'https://ourworldindata.org/grapher/sdg-target-on-electricity-access'},\n", + " {'category': 'Electricity',\n", + " 'doc_id': 'owid_872',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Having access to electricity is defined in international statistics as having an electricity source that can provide very basic lighting, and charge a phone or power a radio for 4 hours per day.',\n", + " 'url': 'https://ourworldindata.org/grapher/number-of-people-with-and-without-electricity-access'},\n", + " {'category': 'Electricity',\n", + " 'doc_id': 'owid_873',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Having access to electricity is defined in international statistics as having an electricity source that can provide very basic lighting, and charge a phone or power a radio for 4 hours per day.',\n", + " 'url': 'https://ourworldindata.org/grapher/number-without-electricity-by-region'},\n", + " {'category': 'Electricity',\n", + " 'doc_id': 'owid_874',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Having access to electricity is defined in international statistics as having an electricity source that can provide very basic lighting, and charge a phone or power a radio for 4 hours per day.',\n", + " 'url': 'https://ourworldindata.org/grapher/people-without-electricity-country'},\n", + " {'category': 'Electricity',\n", + " 'doc_id': 'owid_875',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual average electricity generation per person, measured in kilowatt-hours.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-electricity-generation'},\n", + " {'category': 'Electricity',\n", + " 'doc_id': 'owid_876',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in kilowatt-hours. Other renewables include geothermal, tidal and wave generation.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-electricity-source-stacked'},\n", + " {'category': 'Electricity',\n", + " 'doc_id': 'owid_877',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Ember (2024); Energy Institute - Statistical Review of World Energy (2023); Population based on various sources (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-electricity-fossil-nuclear-renewables'},\n", + " {'category': 'Electricity',\n", + " 'doc_id': 'owid_878',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Low-carbon electricity is the sum of electricity from nuclear and renewable sources (including solar, wind, hydropower, biomass and waste, geothermal and wave and tidal).',\n", + " 'url': 'https://ourworldindata.org/grapher/share-electricity-low-carbon'},\n", + " {'category': 'Electricity',\n", + " 'doc_id': 'owid_879',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Ember (2024); Energy Institute - Statistical Review of World Energy (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/share-elec-by-source'},\n", + " {'category': 'Electricity',\n", + " 'doc_id': 'owid_880',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Ember (2024); Energy Institute - Statistical Review of World Energy (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/share-electricity-source-facet'},\n", + " {'category': 'Electricity',\n", + " 'doc_id': 'owid_881',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured as a percentage of total electricity.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-electricity-coal'},\n", + " {'category': 'Electricity',\n", + " 'doc_id': 'owid_882',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured as a percentage of total electricity.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-electricity-fossil-fuels'},\n", + " {'category': 'Electricity',\n", + " 'doc_id': 'owid_883',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured as a percentage of total electricity.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-electricity-gas'},\n", + " {'category': 'Electricity',\n", + " 'doc_id': 'owid_884',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured as a percentage of total electricity.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-electricity-hydro'},\n", + " {'category': 'Electricity',\n", + " 'doc_id': 'owid_885',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured as a percentage of total electricity.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-electricity-nuclear'},\n", + " {'category': 'Electricity',\n", + " 'doc_id': 'owid_886',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Renewables include electricity production from hydropower, solar, wind, biomass & waste, geothermal, wave, and tidal sources.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-electricity-renewables'},\n", + " {'category': 'Electricity',\n", + " 'doc_id': 'owid_887',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured as a percentage of total electricity.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-electricity-solar'},\n", + " {'category': 'Electricity',\n", + " 'doc_id': 'owid_888',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured as a percentage of total electricity.',\n", + " 'url': 'https://ourworldindata.org/grapher/share-electricity-wind'},\n", + " {'category': 'Electricity Mix',\n", + " 'doc_id': 'owid_889',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured as a percentage of total, direct primary energy consumption.',\n", + " 'url': 'https://ourworldindata.org/grapher/electricity-as-a-share-of-primary-energy'},\n", + " {'category': 'Electricity Mix',\n", + " 'doc_id': 'owid_890',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Multiple sources compiled by World Bank (2024)',\n", + " 'url': 'https://ourworldindata.org/grapher/electricity-source-wb-stacked'},\n", + " {'category': 'Electricity Mix',\n", + " 'doc_id': 'owid_891',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Target 7.1 of the UN Sustainable Development Goals (SDGs) is to achieve universal and equitable access to modern energy services. Having access to electricity is defined in international statistics as having an electricity source that can provide very basic lighting, and charge a phone or power a radio for 4 hours per day.',\n", + " 'url': 'https://ourworldindata.org/grapher/sdg-target-on-electricity-access'},\n", + " {'category': 'Electricity Mix',\n", + " 'doc_id': 'owid_892',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Net electricity imports are calculated as electricity imports minus exports. This is given as a share of a country's electricity demand. Countries with positive values are net importers of electricity; negative values are net exporters.\",\n", + " 'url': 'https://ourworldindata.org/grapher/electricity-imports-share-demand'},\n", + " {'category': 'Electricity Mix',\n", + " 'doc_id': 'owid_893',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in kilowatt-hours. Other renewables include geothermal, tidal and wave generation.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-electricity-source-stacked'},\n", + " {'category': 'Electricity Mix',\n", + " 'doc_id': 'owid_894',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Multiple sources compiled by World Bank (2024)',\n", + " 'url': 'https://ourworldindata.org/grapher/share-electricity-source-wb'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_895',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual change in primary energy consumption in one year, relative to the previous year. Energy is measured in terawatt-hours, using the substitution method.',\n", + " 'url': 'https://ourworldindata.org/grapher/abs-change-energy-consumption'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_896',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Access to clean fuels or technologies reduce exposure to indoor air pollutants, a leading cause of death in low-income households. Energy is measured in kilowatt-hours per person.',\n", + " 'url': 'https://ourworldindata.org/grapher/access-to-clean-fuels-and-technologies-for-cooking-vs-per-capita-energy-consumption'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_897',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Having access to electricity is defined in international statistics as having an electricity source that can provide very basic lighting, and charge a phone or power a radio for 4 hours per day. GDP per capita is adjusted for inflation and differences in the cost of living between countries.',\n", + " 'url': 'https://ourworldindata.org/grapher/access-to-electricity-vs-gdp-per-capita'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_898',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Change in coal energy consumption relative to the previous year, measured in terawatt-hours.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-change-coal'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_899',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Change in fossil energy consumption, measured in terawatt-hours, relative to the previous year. This is the sum of energy from coal, oil and gas.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-change-fossil-fuels'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_900',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Change in gas energy consumption relative to the previous year, measured in terawatt-hours.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-change-gas'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_901',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Change in energy generation relative to the previous year, using the substitution method and measured in terawatt-hours.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-change-hydro'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_902',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Change in energy generation relative to the previous year, measured in terawatt-hours and using the substitution method. Low-carbon energy is defined as the sum of nuclear and renewable sources.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-change-low-carbon-energy'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_903',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Change in nuclear energy generation relative to the previous year, measured in terawatt-hours and using the substitution method.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-change-nuclear'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_904',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Change in oil energy consumption relative to the previous year, measured in terawatt-hours.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-change-oil'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_905',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Change in primary energy consumption as a percentage of the consumption of the previous year, using the substitution method.',\n", + " 'url': 'https://ourworldindata.org/grapher/change-energy-consumption'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_906',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Change in renewable energy generation relative to the previous year, measured in terawatt-hours and using the substitution method. It includes energy from hydropower, solar, wind, geothermal, wave and tidal, and bioenergy.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-change-renewables'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_907',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Change in solar and wind energy generation relative to the previous year, measured in terawatt-hours of primary energy using the substitution method.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-change-in-solar-and-wind-energy-generation'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_908',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Change in energy generation relative to the previous year, measured in terawatt-hours and using the substitution method.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-change-solar'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_909',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Change in energy generation relative to the previous year, using the substitution method and measured in terawatt-hours.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-change-wind'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_910',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Figures in recent years are subject to a time lag; submitted patents may not yet be reflected in the data.',\n", + " 'url': 'https://ourworldindata.org/grapher/patents-ccs'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_911',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Figures in recent years are subject to a time lag; submitted patents may not yet be reflected in the data.',\n", + " 'url': 'https://ourworldindata.org/grapher/patents-electric-vehicles'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_912',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Figures in recent years are subject to a time lag; submitted patents may not yet be reflected in the data.',\n", + " 'url': 'https://ourworldindata.org/grapher/patents-energy-storage'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_913',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data only includes energy source technologies, and excludes technologies such as energy storage or transport. Figures in recent years are subject to a time lag; submitted patents may not yet be reflected in the data.',\n", + " 'url': 'https://ourworldindata.org/grapher/patents-filed-for-renewables'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_914',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Figures in recent years are subject to a time lag; submitted patents may not yet be reflected in the data.',\n", + " 'url': 'https://ourworldindata.org/grapher/patents-for-renewables-by-country'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_915',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Percentage change in coal energy consumption relative to the previous year.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-percentage-change-coal'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_916',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Percentage change in fossil energy consumption relative to the previous year. This is the sum of energy from coal, oil and gas.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-percentage-change-fossil-fuels'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_917',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Percentage change in gas energy consumption relative to the previous year.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-percentage-change-gas'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_918',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Percentage change in hydropower generation relative to the previous year.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-percentage-change-hydro'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_919',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Shown is the percentage change in low-carbon energy generation relative to the previous year. This is the sum of nuclear and renewable sources.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-percentage-change-low-carbon'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_920',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Percentage change in nuclear energy generation relative to the previous year.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-percentage-change-nuclear'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_921',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Percentage change in oil energy consumption relative to the previous year.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-percentage-change-oil'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_922',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Percentage change in renewable energy generation relative to the previous year. It includes energy from hydropower, solar, wind, geothermal, wave and tidal, and bioenergy.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-percentage-change-renewables'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_923',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Change in energy generation relative to the previous year.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-percentage-change-in-solar-and-wind-energy-generation'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_924',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Percentage change in solar energy generation relative to the previous year.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-percentage-change-solar'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_925',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Percentage change in wind energy generation relative to the previous year.',\n", + " 'url': 'https://ourworldindata.org/grapher/annual-percentage-change-wind'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_926',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Fossil fuel consumption is measured as the average consumption of energy from coal, oil and gas per person. Fossil fuel and industry emissions are included. Land-use change emissions are not included.',\n", + " 'url': 'https://ourworldindata.org/grapher/co-emissions-per-capita-vs-fossil-fuel-consumption-per-capita'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_927',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Carbon dioxide (CO₂) emissions are measured in tonnes per person.',\n", + " 'url': 'https://ourworldindata.org/grapher/co2-per-capita-vs-renewable-electricity'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_928',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Carbon intensity is measured in grams of carbon dioxide-equivalents emitted per kilowatt-hour of electricity generated.',\n", + " 'url': 'https://ourworldindata.org/grapher/carbon-intensity-electricity'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_929',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Consumption-based (trade-adjusted) primary energy use measures domestic energy use minus energy used to produce exported goods, plus energy used to produce imported goods. Gross domestic product (GDP) is adjusted for inflation and differences in the cost of living between countries.',\n", + " 'url': 'https://ourworldindata.org/grapher/energy-use-gdp-decoupling'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_930',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Consumption-based (trade-adjusted) primary energy use measures domestic energy use minus energy used to produce exported goods, plus energy used to produce imported goods. Gross domestic product (GDP) is adjusted for inflation and differences in the cost of living between countries.',\n", + " 'url': 'https://ourworldindata.org/grapher/change-energy-gdp-per-capita'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_931',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Coal use differentiated by its end use category. This is measured in tonnes per year.',\n", + " 'url': 'https://ourworldindata.org/grapher/coal-by-end-user-uk'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_932',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Coal energy consumption per capita is measured in megawatt-hours per person. GDP per capita is adjusted for inflation and for differences in the cost of living between countries.',\n", + " 'url': 'https://ourworldindata.org/grapher/coal-vs-gdp-per-capita'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_933',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Coal output in the United Kingdom, measured from opencast and deepmined sources. This is measured in tonnes of coal per year.',\n", + " 'url': 'https://ourworldindata.org/grapher/coal-uk-opencast-deep-mine'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_934',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Average coal output per worker, measured in tonnes per employee per year. The number employed in the coal industry includes those hired as contractors.',\n", + " 'url': 'https://ourworldindata.org/grapher/coal-output-per-worker-in-the-united-kingdom'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_935',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Coal prices of various production locations are measured in US dollars per tonne. This data is not adjusted for inflation.',\n", + " 'url': 'https://ourworldindata.org/grapher/coal-prices'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_936',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in terawatt-hours.',\n", + " 'url': 'https://ourworldindata.org/grapher/coal-production-by-country'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_937',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Coal production is measured as primary energy in terawatt-hours.',\n", + " 'url': 'https://ourworldindata.org/grapher/coal-production-country'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_938',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Coal production and imports in the United Kingdom, measured in tonnes per year.',\n", + " 'url': 'https://ourworldindata.org/grapher/coal-output-uk-tonnes'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_939',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in kilowatt-hours per person.',\n", + " 'url': 'https://ourworldindata.org/grapher/coal-prod-per-capita'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_940',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Average coal production per capita over the long-term, measured in megawatt-hour (MWh) equivalents per person per year.',\n", + " 'url': 'https://ourworldindata.org/grapher/coal-production-per-capita-over-the-long-term'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_941',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Cobalt production is measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/cobalt-production'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_942',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Energy intensity is measured as the number of kilowatt-hours used per dollar of gross domestic product (GDP). Consumption-based energy adjusts for the energy embedded in traded goods: it is the energy used domestically minus energy used to produce exported goods; plus the energy used for imported goods.',\n", + " 'url': 'https://ourworldindata.org/grapher/consumption-energy-intensity'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_943',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Consumption-based (or trade-adjusted) energy use measures domestic energy use minus energy used to produce exported goods, plus energy used to produce imported goods. Measured in megawatt-hours.',\n", + " 'url': 'https://ourworldindata.org/grapher/consumption-based-energy-per-capita'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_944',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Global crude oil prices, measured in US dollars per cubic meter. This data is not adjusted for inflation.',\n", + " 'url': 'https://ourworldindata.org/grapher/crude-oil-prices'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_945',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Crude oil spot price of the most common oil blends, measured in US dollars per cubic meter. This data is not adjusted for inflation.',\n", + " 'url': 'https://ourworldindata.org/grapher/crude-oil-spot-prices'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_946',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Death rates from indoor air pollution are measured as the number of deaths per 100,000 individuals. Primary energy is based on the substitution method and measured in kilowatt-hours per person.',\n", + " 'url': 'https://ourworldindata.org/grapher/death-rate-from-indoor-air-pollution-vs-per-capita-energy-consumption'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_947',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Death rates are measured based on deaths from accidents and air pollution per terawatt-hour of electricity.',\n", + " 'url': 'https://ourworldindata.org/grapher/death-rates-from-energy-production-per-twh'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_948',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Percentages are in terms of direct primary energy, which means that fossil fuels include the energy lost due to inefficiencies in energy production.',\n", + " 'url': 'https://ourworldindata.org/grapher/primary-energy-fossil-nuclear-renewables'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_949',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Car stocks represent the number of cars that are in use. It is the balance of cumulative sales over time and the number of cars that have been retired or taken off the road. Electric cars include fully battery-electric vehicles and plug-in hybrids.',\n", + " 'url': 'https://ourworldindata.org/grapher/electric-car-stocks'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_950',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured as a percentage of total, direct primary energy consumption.',\n", + " 'url': 'https://ourworldindata.org/grapher/electricity-as-a-share-of-primary-energy'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_951',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Electricity demand is measured in terawatt-hours, as total electricity generation, adjusted for electricity imports and exports.',\n", + " 'url': 'https://ourworldindata.org/grapher/electricity-demand'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_952',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in terawatt-hours.',\n", + " 'url': 'https://ourworldindata.org/grapher/electricity-generation'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_953',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in terawatt-hours.',\n", + " 'url': 'https://ourworldindata.org/grapher/electricity-coal'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_954',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Electricity generation from coal, oil and gas sources combined, measured in terawatt-hours.',\n", + " 'url': 'https://ourworldindata.org/grapher/electricity-fossil-fuels'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_955',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Ember (2024); Energy Institute - Statistical Review of World Energy (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/elec-mix-bar'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_956',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in terawatt-hours.',\n", + " 'url': 'https://ourworldindata.org/grapher/electricity-gas'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_957',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Low-carbon electricity is the sum of electricity generation from nuclear and renewable sources. Renewable sources include hydropower, solar, wind, geothermal, bioenergy, wave and tidal. Measured in terawatt-hours.',\n", + " 'url': 'https://ourworldindata.org/grapher/low-carbon-electricity'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_958',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in terawatt-hours.',\n", + " 'url': 'https://ourworldindata.org/grapher/electricity-oil'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_959',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in terawatt-hours. Renewable sources include hydropower, solar, wind, geothermal, bioenergy, wave and tidal.',\n", + " 'url': 'https://ourworldindata.org/grapher/electricity-renewables'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_960',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in terawatt-hours.',\n", + " 'url': 'https://ourworldindata.org/grapher/electricity-generation-from-solar-and-wind-compared-to-coal'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_961',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in terawatt-hours.',\n", + " 'url': 'https://ourworldindata.org/grapher/electricity-production-by-source'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_962',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in terawatt-hours.',\n", + " 'url': 'https://ourworldindata.org/grapher/electricity-prod-source-stacked'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_963',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Multiple sources compiled by World Bank (2024)',\n", + " 'url': 'https://ourworldindata.org/grapher/electricity-source-wb-stacked'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_964',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in terawatt-hours.',\n", + " 'url': 'https://ourworldindata.org/grapher/elec-fossil-nuclear-renewables'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_965',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Ember (2024); Energy Institute - Statistical Review of World Energy (2023); Department for Business, Energy & Industrial Strategy of the UK (2023)',\n", + " 'url': 'https://ourworldindata.org/grapher/electricity-mix-uk'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_966',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Total number of individuals employed in the coal industry in the United Kingdom. Figures include those employed as contractors by the coal industry.',\n", + " 'url': 'https://ourworldindata.org/grapher/employment-in-the-coal-industry-in-the-united-kingdom'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_967',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in terms of primary energy using the substitution method.',\n", + " 'url': 'https://ourworldindata.org/grapher/energy-consumption-by-source-and-country'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_968',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': \"Net energy embedded in traded goods is the difference in energy embedded in exported goods, and imported goods. A positive value means that a country is a net importer; a negative means it's a net exporter. This is given as a percentage of a country's domestic energy use.\",\n", + " 'url': 'https://ourworldindata.org/grapher/traded-energy-share-domestic'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_969',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Energy trade, measured as the percentage of energy use. Positive values indicate a country or region is a net importer of energy. Negative numbers indicate a country or region is a net exporter.',\n", + " 'url': 'https://ourworldindata.org/grapher/energy-imports-and-exports-energy-use'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_970',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Amount of energy needed to produce one unit of economic output. A lower number means that economies produce economic value in a less energy-intensive way. This data is measured in megajoules per dollar, adjusted for inflation and differences in the cost of living between countries.',\n", + " 'url': 'https://ourworldindata.org/grapher/energy-intensity-of-economies'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_971',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Energy intensity is measured as primary energy consumption per unit of gross domestic product (GDP), in kilowatt-hours per dollar. GDP is adjusted for inflation and differences in the cost of living between countries.',\n", + " 'url': 'https://ourworldindata.org/grapher/energy-intensity'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_972',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Amount of energy needed to produce one unit of economic output. A lower number means that economic value is produced in a less energy-intensive way. This data is measured in megajoules per dollar, adjusted for inflation and differences in the cost of living between countries.',\n", + " 'url': 'https://ourworldindata.org/grapher/energy-intensity-by-sector'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_973',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Energy intensity represents primary energy consumption, using the substitution method, per unit of gross domestic product (GDP). GDP is adjusted for inflation and differences in the cost of living between countries.',\n", + " 'url': 'https://ourworldindata.org/grapher/energy-intensity-vs-gdp'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_974',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Average energy consumption per capita is measured in kilowatt-hours per person. Average carbon dioxide (CO₂) emissions per capita are measured in tonnes per person.',\n", + " 'url': 'https://ourworldindata.org/grapher/energy-use-per-capita-vs-co2-emissions-per-capita'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_975',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in kilowatt-hours per person. Here, energy refers to primary energy using the substitution method.',\n", + " 'url': 'https://ourworldindata.org/grapher/per-capita-energy-use'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_976',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Energy refers to primary energy, measured in kilowatt-hours per person, using the substitution method. Gross domestic product (GDP) is adjusted for inflation and differences in the cost of living between countries.',\n", + " 'url': 'https://ourworldindata.org/grapher/energy-use-per-person-vs-gdp-per-capita'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_977',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in terawatt-hours.',\n", + " 'url': 'https://ourworldindata.org/grapher/fossil-fuel-consumption-by-type'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_978',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in terawatt-hours.',\n", + " 'url': 'https://ourworldindata.org/grapher/fossil-fuel-primary-energy'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_979',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Fossil fuel consumption per capita is measured as the average consumption of energy from coal, oil and gas, in kilowatt-hours per person.',\n", + " 'url': 'https://ourworldindata.org/grapher/fossil-fuels-per-capita'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_980',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in kilowatt-hours per person.',\n", + " 'url': 'https://ourworldindata.org/grapher/fossil-fuel-consumption-per-capita'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_981',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in kilowatt-hours per person.',\n", + " 'url': 'https://ourworldindata.org/grapher/fossil-fuel-cons-per-capita'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_982',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Average global prices of oil, natural gas and coal, measured as an energy index where prices in 2018=100.',\n", + " 'url': 'https://ourworldindata.org/grapher/fossil-fuel-price-index'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_983',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Total fossil fuel production - differentiated by coal, oil and natural gas - by country over the long-run, measured in terawatt-hour (TWh) equivalents per year.',\n", + " 'url': 'https://ourworldindata.org/grapher/fossil-fuel-production-over-the-long-term'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_984',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Average fossil fuel production per capita across countries and regions, measured in megawatt-hours (MWh) per person per year. Fossil fuel consumption has been categorised by coal, oil and natural gas sources.',\n", + " 'url': 'https://ourworldindata.org/grapher/fossil-fuel-production-per-capita'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_985',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual energy use per capita, measured in kilowatt-hours per person vs. gross domestic product (GDP) per capita, which is adjusted for inflation and differences in the cost of living between countries.',\n", + " 'url': 'https://ourworldindata.org/grapher/energy-use-per-capita-vs-gdp-per-capita'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_986',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Natural gas consumption, measured in terawatt-hours.',\n", + " 'url': 'https://ourworldindata.org/grapher/gas-consumption-by-country'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_987',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Annual natural gas consumption is measured in terawatt-hours (TWh).',\n", + " 'url': 'https://ourworldindata.org/grapher/natural-gas-consumption-by-region'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_988',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in terawatt-hours.',\n", + " 'url': 'https://ourworldindata.org/grapher/gas-production-by-country'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_989',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in kilowatt-hours per person.',\n", + " 'url': 'https://ourworldindata.org/grapher/gas-prod-per-capita'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_990',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Proved reserves, measured in cubic meters, are generally those quantities that can be recovered in the future from known reservoirs under existing economic and operating conditions, according to geological and engineering information.',\n", + " 'url': 'https://ourworldindata.org/grapher/natural-gas-proved-reserves'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_991',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Data source: Bergero et al. (2023). Pathways to net-zero emissions from aviation.',\n", + " 'url': 'https://ourworldindata.org/grapher/aviation-demand-efficiency'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_992',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Energy consumption is measured in terawatt-hours, in terms of direct primary energy. This means that fossil fuels include the energy lost due to inefficiencies in energy production.',\n", + " 'url': 'https://ourworldindata.org/grapher/global-primary-energy'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_993',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in terawatt-hours of primary energy consumption.',\n", + " 'url': 'https://ourworldindata.org/grapher/global-fossil-fuel-consumption'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_994',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in terawatt-hours of direct primary energy consumption.',\n", + " 'url': 'https://ourworldindata.org/grapher/global-hydro-consumption'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_995',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in gigawatts (GW).',\n", + " 'url': 'https://ourworldindata.org/grapher/installed-global-renewable-energy-capacity-by-technology'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_996',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Primary energy consumption is measured in terawatt-hours, using the substitution method.',\n", + " 'url': 'https://ourworldindata.org/grapher/global-energy-consumption-source'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_997',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Primary energy is based on the substitution method and measured in terawatt-hours.',\n", + " 'url': 'https://ourworldindata.org/grapher/global-energy-substitution'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_998',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Measured in tonnes.',\n", + " 'url': 'https://ourworldindata.org/grapher/graphite-production'},\n", + " {'category': 'Energy',\n", + " 'doc_id': 'owid_999',\n", + " 'returned_content': '',\n", + " 'source': 'OWID',\n", + " 'subtitle': 'Target 7.1 of the UN Sustainable Development Goals (SDGs) is to achieve universal and equitable access to modern energy services. Having access to electricity is defined in international statistics as having an electricity source that can provide very basic lighting, and charge a phone or power a radio for 4 hours per day.',\n", + " 'url': 'https://ourworldindata.org/grapher/sdg-target-on-electricity-access'},\n", + " ...],\n", + " 'documents': ['Number of people with and without access to clean cooking fuels',\n", + " 'Number of people without access to clean fuels for cooking',\n", + " 'People without clean fuels for cooking, by world region',\n", + " 'Share of the population without access to clean fuels for cooking',\n", + " 'Share with access to electricity vs. per capita energy consumption',\n", + " 'Agricultural export subsidies',\n", + " 'Agricultural general services support',\n", + " 'Agricultural land per capita',\n", + " 'Agricultural land use per person',\n", + " 'Agricultural output',\n", + " 'Agricultural producer support',\n", + " 'Agriculture orientation index for government expenditures',\n", + " 'Apple production',\n", + " 'Arable land use per person',\n", + " 'Average farm size',\n", + " 'Avocado production',\n", + " 'Banana production',\n", + " 'Banana production by region',\n", + " 'Barley production',\n", + " 'Bean production',\n", + " 'Breakdown of habitable land area',\n", + " 'Cashew nut production',\n", + " 'Cassava production',\n", + " 'Cereal production',\n", + " 'Cereals allocated to food, animal feed and fuel',\n", + " 'Cereals: which countries are net importers and exporters?',\n", + " 'Change in corn production and land use in the United States',\n", + " 'Change of cereal yield and land used for cereal production',\n", + " 'Chicken meat production',\n", + " 'Cocoa bean production',\n", + " 'Cocoa bean production by region',\n", + " 'Coffee bean production',\n", + " 'Coffee production by region',\n", + " 'Corn production',\n", + " 'Cropland and pasture per person',\n", + " 'Cropland area',\n", + " 'Cropland extent over the long-term',\n", + " 'Distribution of soil lifespans',\n", + " 'FAO projections of arable land',\n", + " 'Fertilizer use per hectare of cropland',\n", + " 'Global agricultural land use by major crop type',\n", + " 'Global allocation of crops to end uses by farm size',\n", + " 'Global crop production by farm size',\n", + " 'Global food exports: how much comes from Ukraine & Russia?',\n", + " 'Global food production: how much comes from Ukraine & Russia?',\n", + " 'Grape production',\n", + " 'Grazing land use over the long-term',\n", + " 'Labor productivity in agriculture (GDP/worker)',\n", + " 'Land use for vegetable oil crops',\n", + " 'Land used for agriculture',\n", + " 'Long-run cereal yields in the United Kingdom',\n", + " 'Maize exports from Ukraine and Russia in perspective',\n", + " 'Methane emissions from agriculture',\n", + " 'Nitrogen output vs. nitrogen input to agriculture',\n", + " 'Nitrogen use efficiency',\n", + " 'Nitrous oxide emissions from agriculture',\n", + " 'Oil palm production',\n", + " 'Orange production',\n", + " 'Organic agricultural area',\n", + " 'Palm oil imports',\n", + " 'Pea production',\n", + " 'Per capita nitrous oxide emissions from agriculture',\n", + " 'Phosphorous inputs per hectare of cropland',\n", + " 'Potato production',\n", + " 'Productivity of small-scale food producers',\n", + " 'Projections for global peak agricultural land',\n", + " 'Rapeseed production',\n", + " 'Rice production',\n", + " 'Rice production by region',\n", + " 'Rye production',\n", + " 'Sesame seed production',\n", + " 'Share of agricultural land which is irrigated',\n", + " 'Share of agricultural landowners who are women',\n", + " 'Share of arable land which is organic',\n", + " 'Share of cereals allocated to animal feed',\n", + " 'Share of cereals allocated to food, animal feed or fuel',\n", + " 'Share of cereals allocated to human food',\n", + " 'Share of cereals allocated to human food vs. GDP per capita',\n", + " 'Share of cereals allocated to industrial uses',\n", + " 'Share of land area used for agriculture',\n", + " 'Share of land area used for arable agriculture',\n", + " 'Share of land used for permanent meadows and pastures',\n", + " 'Soy production, yield and area harvested',\n", + " 'Soybean production',\n", + " 'Soybeans: are they used for food, feed or fuel?',\n", + " 'Sugar beet production',\n", + " 'Sugar cane production',\n", + " 'Sunflower seed production',\n", + " 'Sweet potato production',\n", + " 'Tea production',\n", + " 'Tea production by region',\n", + " 'Tobacco production',\n", + " 'Tomato production',\n", + " 'Total applied phosphorous to crops',\n", + " 'Total financial assistance and flows for agriculture, by recipient',\n", + " 'Tractors per 100 square kilometers of arable land',\n", + " 'Value of agricultural production',\n", + " 'Vegetable oil production',\n", + " 'What has driven the growth in global agricultural production?',\n", + " 'Wheat exports from Ukraine and Russia in perspective',\n", + " 'Wheat production',\n", + " 'Which countries have managed to decouple agricultural output from more inputs?',\n", + " 'Wine production',\n", + " 'Yams production',\n", + " 'Agricultural export subsidies',\n", + " 'Agricultural general services support',\n", + " 'Agricultural producer support',\n", + " 'Agriculture orientation index for government expenditures',\n", + " 'Total financial assistance and flows for agriculture, by recipient',\n", + " 'Absolute number of deaths from ambient particulate air pollution',\n", + " 'Air pollutant emissions',\n", + " 'Air pollution',\n", + " 'Air pollution deaths from fossil fuels',\n", + " 'Air pollution vs. GDP per capita',\n", + " 'Chronic respiratory diseases death rate',\n", + " 'Death rate attributed to ambient air pollution',\n", + " 'Death rate attributed to household air pollution',\n", + " 'Death rate attributed to household and ambient air pollution',\n", + " 'Death rate from air pollution',\n", + " 'Death rate from air pollution',\n", + " 'Death rate from air pollution',\n", + " 'Death rate from ambient particulate air pollution',\n", + " 'Death rate from outdoor air pollution in 1990 vs. 2019',\n", + " 'Death rate from outdoor air pollution vs. GDP per capita',\n", + " 'Death rate from ozone pollution',\n", + " 'Death rate from ozone pollution',\n", + " 'Death rate from particular matter air pollution vs. PM2.5 concentration',\n", + " 'Deaths from air pollution',\n", + " 'Deaths from air pollution, by age',\n", + " 'Deaths from household and outdoor air pollution',\n", + " 'Deaths from outdoor air pollution',\n", + " 'Deaths from outdoor particulate matter air pollution, by age',\n", + " 'Deaths from outdoor particulate matter air pollution, by region',\n", + " 'Deaths from ozone pollution',\n", + " 'Disease burden from particulate pollution',\n", + " 'Emissions of air pollutants',\n", + " 'Emissions of air pollutants',\n", + " 'Emissions of air pollutants',\n", + " 'Emissions of particulate matter',\n", + " 'Exposure to PM2.5 air pollution vs. GDP per capita',\n", + " 'Exposure to particulate matter air pollution',\n", + " 'Global sulphur dioxide (SO2) emissions by world region',\n", + " 'Number of deaths from air pollution',\n", + " 'Outdoor air pollution death rate',\n", + " 'Outdoor air pollution death rate by age',\n", + " 'Outdoor air pollution deaths in 1990 vs. 2019',\n", + " 'Ozone (O₃) concentration',\n", + " 'Particulate matter exposure in 1990 vs. 2017',\n", + " 'Share of deaths attributed to air pollution',\n", + " 'Share of deaths attributed to outdoor air pollution',\n", + " 'Share of population exposed to air pollution above WHO targets',\n", + " 'Share of the population exposed to air pollution levels above WHO guidelines',\n", + " 'Share of the population without access to clean fuels for cooking',\n", + " 'Sources of air pollution in the UK',\n", + " 'emissions of air pollutants',\n", + " 'Active fur farms',\n", + " 'Animal lives lost per kilogram of product',\n", + " 'Animal lives lost per kilogram of product, including indirect deaths',\n", + " 'Egg production by system in the United Kingdom',\n", + " 'Global number of farmed finfishes used for food',\n", + " 'Kilograms of meat produced per animal',\n", + " 'Land animals slaughtered for meat',\n", + " 'Laying hens in cages and cage-free housing',\n", + " 'Levels of pain endured by the average hen in different production systems',\n", + " 'Number of farmed crustaceans killed for food',\n", + " 'Number of farmed fish killed for food',\n", + " 'Number of wild-caught fish killed for food',\n", + " 'Public attitudes to bans on factory farming and slaughterhouses in the United States',\n", + " 'Public attitudes to dietary choices and meat-eating in the United States',\n", + " 'Public attitudes to livestock treatment and animal pain in the United States',\n", + " 'Self-reported dietary choices by age, United Kingdom',\n", + " 'Share of egg production that is cage-free',\n", + " 'Share of eggs produced by different housing systems',\n", + " 'Time that fast and slower-growing chicken breeds spend in pain over their lifespan',\n", + " 'Vegans, vegetarians and meat-eaters: self-reported dietary choices, United Kingdom',\n", + " 'Which countries have banned bullfighting?',\n", + " 'Which countries have banned chick culling?',\n", + " 'Which countries have banned fur farming?',\n", + " 'Which countries have banned fur trading?',\n", + " 'Yearly number of animals slaughtered for meat',\n", + " 'Antibiotic use in livestock in Europe',\n", + " 'Antibiotic use in livestock vs. GDP per capita',\n", + " 'Antibiotic use in livestock vs. meat supply per capita',\n", + " 'Global antibiotic use in livestock under reduction scenarios',\n", + " 'Share of E. coli infections resistant to cephalosporins',\n", + " 'Share of S. aureus infections resistant to methicillin',\n", + " 'African elephant carcass ratio',\n", + " 'Annual fish catch relative to mean catch',\n", + " 'Annual fish catch relative to mean catch by region',\n", + " 'Aquaculture production',\n", + " 'Black rhino population',\n", + " 'Capture fishery production',\n", + " 'Change in bird populations in the EU',\n", + " 'Change in total mangrove area',\n", + " 'Changes in UK butterfly populations',\n", + " 'Chlorophyll-a deviation from the global average',\n", + " 'Countries have a budget for invasive alien species management',\n", + " 'Countries that are party to the Nagoya Protocol',\n", + " 'Countries that have legislative measures reported to the Access and Benefit-Sharing Clearing-House',\n", + " 'Countries with more than 25 species at risk of losing more than 25% of their habitat by 2050',\n", + " 'Day of the year with peak cherry tree blossom in Kyoto, Japan',\n", + " 'Drivers of recovery in European bird populations',\n", + " 'Endemic amphibian species',\n", + " 'Endemic bird species',\n", + " 'Endemic freshwater crab species',\n", + " 'Endemic mammal species',\n", + " 'Endemic reef-forming coral species',\n", + " 'Endemic shark and ray species',\n", + " 'Fish and seafood production',\n", + " 'Fish catch in the United Kingdom',\n", + " 'Fish discards',\n", + " 'Fish stocks and fishing intensity by group',\n", + " 'Fish stocks and fishing intensity by region',\n", + " 'Fishing intensity',\n", + " 'Fishing intensity by region',\n", + " 'Five centuries of cod catches in Eastern Canada',\n", + " 'Global aquaculture production and wild fish used for animal feed',\n", + " 'Global biomass vs. abundance of taxa',\n", + " 'Global wildlife exports',\n", + " 'Health of fish stocks by fish group',\n", + " 'Health of fish stocks by region',\n", + " 'Indian rhino population',\n", + " 'Javan rhino population',\n", + " 'Living Planet Index',\n", + " 'Living Planet Index by region',\n", + " 'Local animal breeds with conserved genetic material',\n", + " 'Material footprint per capita',\n", + " 'Material footprint per unit of GDP',\n", + " 'Member countries of the International Treaty on Plant Genetic Resources for Food and Agriculture',\n", + " 'Mountain Green Cover Index',\n", + " 'National biodiversity strategy and action plan targets align with Aichi Biodiversity Target 9',\n", + " 'National progress towards Aichi Biodiversity Target 2',\n", + " 'Northern white rhino population',\n", + " 'Number of African elephants',\n", + " 'Number of Asian elephants',\n", + " 'Number of animal species losing habitat due to cropland expansion by 2050',\n", + " 'Number of coral bleaching events',\n", + " 'Number of coral bleaching events by stage of the ENSO cycle',\n", + " 'Number of described species',\n", + " 'Number of parties in multilateral environmental agreements',\n", + " 'Number of rhinos poached',\n", + " 'Number of seized rhino horns and pieces',\n", + " 'Number of severe coral bleaching events by stage of the ENSO cycle',\n", + " 'Number of species evaluated for their level of extinction risk',\n", + " 'Number of species that have gone extinct since 1500',\n", + " 'Number of species threatened with extinction',\n", + " 'Number of threatened endemic mammal species',\n", + " 'Number of unique plant genetic samples in conservation facilities',\n", + " 'Number of whales killed',\n", + " 'Number of whales killed globally per decade',\n", + " 'Projected changes in cropland',\n", + " 'Proportion of local livestock breeds at risk of extinction',\n", + " 'Protected area coverage of marine key biodiversity areas',\n", + " 'Protected area coverage of mountain key biodiversity areas',\n", + " 'Red List Index',\n", + " 'Seafood production: wild fish catch vs. aquaculture',\n", + " 'Seafood production: wild fish catch vs. aquaculture',\n", + " 'Share of Caribbean reefs with Acropora corals present or dominant',\n", + " 'Share of described species that have been evaluated for their extinction risk',\n", + " 'Share of fish stocks that are overexploited',\n", + " 'Share of forest area within protected areas',\n", + " 'Share of freshwater Key Biodiversity Areas that are protected',\n", + " 'Share of land area that is protected',\n", + " 'Share of land covered by forest',\n", + " 'Share of marine territorial waters that are protected',\n", + " 'Share of ocean area that is protected',\n", + " 'Share of species that are traded',\n", + " 'Share of species threatened with extinction',\n", + " 'Share of terrestrial Key Biodiversity Areas that are protected',\n", + " 'Share of traded species that are traded as pets',\n", + " 'Share of traded species that are traded as products',\n", + " 'Southern white rhino population',\n", + " 'Status of membership in the International Whaling Commission',\n", + " \"Status of the world's fish stocks\",\n", + " 'Sumatran rhino population',\n", + " 'The decline of global whale biomass',\n", + " 'The decline of global whale populations',\n", + " 'Threatened bird species',\n", + " 'Threatened endemic bird species',\n", + " 'Threatened endemic reef-forming coral species',\n", + " 'Threatened fish species',\n", + " 'Threatened mammal species',\n", + " 'Total amount donated for biodiversity conservation in developing countries',\n", + " 'Total donations received for biodiversity conservation',\n", + " 'Transboundary animal breeds with conserved genetic material',\n", + " 'Weight of seized rhino horns',\n", + " 'What is wild fish catch used for?',\n", + " 'Which countries are members of the International Whaling Commission?',\n", + " 'Wild fish catch by gear type',\n", + " 'Wild fish catch by gear type',\n", + " 'Wild fish catch from bottom trawling',\n", + " 'Share of cereals allocated to industrial uses',\n", + " 'Countries that have ratified the Biological Weapons Convention',\n", + " 'Countries that have ratified the Chemical Weapons Convention',\n", + " 'Current biological weapons activity',\n", + " 'Current chemical weapons activity',\n", + " 'Historical biological weapons activity',\n", + " 'Historical chemical weapons activity',\n", + " 'Number of countries by their current activity on biological weapons',\n", + " 'Number of countries by their current activity on chemical weapons',\n", + " 'Number of countries by their historical activity on biological weapons',\n", + " 'Number of countries by their historical activity on chemical weapons',\n", + " 'Adjusted net savings per capita',\n", + " 'Annual CO2 emissions',\n", + " 'Annual CO2 emissions by world region',\n", + " 'Annual CO2 emissions from cement',\n", + " 'Annual CO2 emissions from coal',\n", + " 'Annual CO2 emissions from deforestation by product',\n", + " 'Annual CO2 emissions from deforestation for food production',\n", + " 'Annual CO2 emissions from flaring',\n", + " 'Annual CO2 emissions from gas',\n", + " 'Annual CO2 emissions from land-use change',\n", + " 'Annual CO2 emissions from land-use change per capita',\n", + " 'Annual CO2 emissions from oil',\n", + " 'Annual CO2 emissions from other industry',\n", + " 'Annual CO2 emissions including land-use change',\n", + " 'Annual change in GDP and CO2 emissions',\n", + " 'Annual change in GDP, population and CO2 emissions',\n", + " 'Annual greenhouse gas emissions by world region',\n", + " 'Annual percentage change in CO2 emissions',\n", + " 'Are consumption-based CO2 per capita emissions above or below the global average?',\n", + " 'Are per capita CO2 emissions above or below the global average?',\n", + " 'Average temperature anomaly',\n", + " \"Aviation's share of global CO2 emissions\",\n", + " 'CO2 emissions by fuel or industry',\n", + " 'CO2 emissions by fuel or industry type',\n", + " 'CO2 emissions by sector',\n", + " 'CO2 emissions embedded in trade',\n", + " 'CO2 emissions from aviation',\n", + " 'CO2 emissions from domestic air travel',\n", + " 'CO2 emissions from fossil fuels and land-use change',\n", + " 'CO2 emissions from fossil fuels and land-use change',\n", + " 'CO2 emissions from international aviation',\n", + " 'CO2 emissions from transport',\n", + " 'CO2 emissions per capita',\n", + " 'CO2 emissions per capita vs. GDP per capita',\n", + " 'CO2 emissions per capita vs. fossil fuel consumption per capita',\n", + " 'CO2 emissions per capita vs. population growth',\n", + " 'CO2 emissions per capita vs. share of electricity generation from renewables',\n", + " 'CO2 reductions needed to keep global temperature rise below 1.5°C',\n", + " 'CO2 reductions needed to keep global temperature rise below 2°C',\n", + " 'Carbon dioxide emissions by income level',\n", + " 'Carbon dioxide emissions factors',\n", + " 'Carbon emission intensity vs. GDP per capita',\n", + " 'Carbon footprint of travel per kilometer',\n", + " 'Carbon intensity of energy production',\n", + " 'Carbon intensity vs. GDP per capita',\n", + " 'Carbon intensity: CO2 emissions per dollar of GDP',\n", + " 'Carbon opportunity costs per kilogram of food',\n", + " 'Change in CO2 emissions and GDP',\n", + " 'Change in per capita CO2 emissions and GDP',\n", + " 'Change in per capita CO2 emissions and GDP',\n", + " 'Consumption-based CO2 emissions',\n", + " 'Consumption-based CO2 emissions per capita vs. GDP per capita',\n", + " 'Consumption-based CO2 emissions per capita vs. Human Development Index',\n", + " 'Consumption-based carbon intensity',\n", + " 'Consumption-based vs. territorial CO2 emissions per capita',\n", + " 'Contribution to global mean surface temperature rise',\n", + " 'Contribution to global mean surface temperature rise by gas',\n", + " 'Contribution to global mean surface temperature rise from agriculture and land use',\n", + " 'Contribution to global mean surface temperature rise from fossil sources',\n", + " 'Contribution to value added vs. share of CO2 emissions in China',\n", + " 'Contribution to value added vs. share of CO2 emissions in Germany',\n", + " 'Contribution to value added vs. share of CO2 emissions in USA',\n", + " 'Countries using the System of Environmental-Economic Accounting',\n", + " 'Cumulative CO2 emissions',\n", + " 'Cumulative CO2 emissions by source',\n", + " 'Cumulative CO2 emissions by world region',\n", + " 'Cumulative CO2 emissions from cement',\n", + " 'Cumulative CO2 emissions from coal',\n", + " 'Cumulative CO2 emissions from flaring',\n", + " 'Cumulative CO2 emissions from gas',\n", + " 'Cumulative CO2 emissions from land-use change',\n", + " 'Cumulative CO2 emissions from oil',\n", + " 'Cumulative CO2 emissions from other industry',\n", + " 'Cumulative CO2 emissions including land-use change',\n", + " 'Emissions-weighted carbon price',\n", + " 'Emissions-weighted carbon price in emissions trading systems',\n", + " 'Energy use per capita vs. CO2 emissions per capita',\n", + " 'Export of environmentally sound technologies',\n", + " 'Food: emissions from production and the supply chain',\n", + " 'Food: greenhouse gas emissions across the supply chain',\n", + " 'Global emissions from food by life-cycle stage',\n", + " 'Global warming contributions by gas and source',\n", + " 'Global warming contributions from fossil fuels and land use',\n", + " 'Global warming potential of greenhouse gases relative to CO2',\n", + " 'Global warming: Contributions to the change in global mean surface temperature',\n", + " 'Greenhouse gas emissions',\n", + " 'Greenhouse gas emissions by gas',\n", + " 'Greenhouse gas emissions by sector',\n", + " 'Greenhouse gas emissions by sector',\n", + " 'Greenhouse gas emissions from food systems',\n", + " 'Greenhouse gas emissions from plastic by life-cycle stage',\n", + " 'Greenhouse gas emissions from plastics',\n", + " 'Greenhouse gas emissions per 100 grams of protein',\n", + " 'Greenhouse gas emissions per 1000 kilocalories',\n", + " 'Greenhouse gas emissions per kilogram of food product',\n", + " 'Greenhouse gas emissions per kilogram of seafood',\n", + " 'How have things changed?',\n", + " 'Hypothetical number of deaths from energy production',\n", + " 'Import of environmentally sound technologies',\n", + " 'Imported or exported CO2 emissions per capita',\n", + " 'Kaya identity: drivers of CO2 emissions',\n", + " 'Land-use change CO2 emissions: quality of estimates',\n", + " 'Level of implementation of sustainable procurement policies and plans',\n", + " 'Life expectancy at birth vs. CO2 emissions per capita',\n", + " 'Life satisfaction vs. CO2 emissions per capita',\n", + " 'Meat supply vs. GDP per capita',\n", + " 'Mechanisms in place to enhance policy coherence for sustainable development',\n", + " 'Methane concentration in the atmosphere',\n", + " 'Methane emissions',\n", + " 'Methane emissions by sector',\n", + " 'Methane emissions from agriculture',\n", + " 'Monthly CO2 emissions from commercial passenger flights',\n", + " 'Monthly CO2 emissions from domestic and international commercial passenger flights',\n", + " 'Nitrous oxide emissions',\n", + " 'Nitrous oxide emissions by sector',\n", + " 'Nitrous oxide emissions from agriculture',\n", + " 'Number of companies publishing sustainability reports that meet the minimum reporting requirements',\n", + " 'Per capita CO2 emissions from domestic commercial passenger flights',\n", + " 'Per capita CO2 emissions',\n", + " 'Per capita CO2 emissions by fuel type',\n", + " 'Per capita CO2 emissions by region',\n", + " 'Per capita CO2 emissions by sector',\n", + " 'Per capita CO2 emissions by source',\n", + " 'Per capita CO2 emissions from aviation',\n", + " 'Per capita CO2 emissions from cement',\n", + " 'Per capita CO2 emissions from coal',\n", + " 'Per capita CO2 emissions from commercial aviation, tourism-adjusted',\n", + " 'Per capita CO2 emissions from deforestation for food production',\n", + " 'Per capita CO2 emissions from domestic aviation',\n", + " 'Per capita CO2 emissions from domestic aviation vs. GDP per capita',\n", + " 'Per capita CO2 emissions from domestic aviation vs. land area',\n", + " 'Per capita CO2 emissions from flaring',\n", + " 'Per capita CO2 emissions from gas',\n", + " 'Per capita CO2 emissions from international aviation',\n", + " 'Per capita CO2 emissions from international commercial passenger flights, tourism-adjusted',\n", + " 'Per capita CO2 emissions from international passenger flights, tourism-adjusted',\n", + " 'Per capita CO2 emissions from oil',\n", + " 'Per capita CO2 emissions from transport',\n", + " 'Per capita CO2 emissions including land-use change',\n", + " 'Per capita CO2 emissions vs. per capita energy consumption',\n", + " 'Per capita GHG emissions vs. per capita CO2 emissions',\n", + " 'Per capita GHG emissions vs. per capita CO2 emissions',\n", + " 'Per capita consumption-based CO2 emissions',\n", + " 'Per capita greenhouse gas emissions',\n", + " 'Per capita greenhouse gas emissions by sector',\n", + " 'Per capita greenhouse gas emissions, excluding land use and forestry',\n", + " 'Per capita methane emissions',\n", + " 'Per capita methane emissions by sector',\n", + " 'Per capita nitrous oxide emissions',\n", + " 'Per capita nitrous oxide emissions by sector',\n", + " 'Per capita nitrous oxide emissions from agriculture',\n", + " 'Share of CO2 emissions covered by a carbon price',\n", + " 'Share of CO2 emissions embedded in trade',\n", + " 'Share of children who are stunted vs. CO2 emissions per capita',\n", + " 'Share of cumulative CO2 emissions from oil',\n", + " 'Share of global CO2 consumption-based emissions',\n", + " 'Share of global CO2 emissions',\n", + " 'Share of global CO2 emissions and population',\n", + " 'Share of global CO2 emissions from aviation',\n", + " 'Share of global CO2 emissions from cement',\n", + " 'Share of global CO2 emissions from coal',\n", + " 'Share of global CO2 emissions from domestic air travel',\n", + " 'Share of global CO2 emissions from flaring',\n", + " 'Share of global CO2 emissions from gas',\n", + " 'Share of global CO2 emissions from international aviation',\n", + " 'Share of global CO2 emissions from land-use change',\n", + " 'Share of global CO2 emissions from oil',\n", + " 'Share of global CO2 emissions including land-use change',\n", + " 'Share of global CO2 emissions vs. share of population',\n", + " 'Share of global annual CO2 emissions from other industry',\n", + " 'Share of global consumption-based CO2 emissions and population',\n", + " 'Share of global consumption-based CO2 emissions vs. share of population',\n", + " 'Share of global cumulative CO2 emissions',\n", + " 'Share of global cumulative CO2 emissions from cement',\n", + " 'Share of global cumulative CO2 emissions from coal',\n", + " 'Share of global cumulative CO2 emissions from flaring',\n", + " 'Share of global cumulative CO2 emissions from gas',\n", + " 'Share of global cumulative CO2 emissions from land-use change',\n", + " 'Share of global cumulative CO2 emissions from other industry',\n", + " 'Share of global cumulative CO2 emissions including land-use change',\n", + " 'Share of global greenhouse gas emissions',\n", + " 'Share of global greenhouse gas emissions from food',\n", + " 'Share of global methane emissions',\n", + " 'Share of global nitrous oxide emissions',\n", + " 'Share of national greenhouse gas emissions that come from food',\n", + " 'Share of required information submitted to international environmental agreements on hazardous waste and other chemicals',\n", + " 'Share that think people in their country should act to tackle climate change',\n", + " 'Status of net-zero carbon emissions targets',\n", + " 'Territorial and consumption-based CO2 emissions',\n", + " 'Territorial vs. consumption-based CO2 emissions per capita',\n", + " 'Total greenhouse gas emissions per capita',\n", + " 'Total greenhouse gas emissions, excluding land use and forestry',\n", + " \"Transport's share of global greenhouse gas emissions from food\",\n", + " 'Value added growth vs. CO2 emissions growth in China',\n", + " 'Value added growth vs. CO2 emissions growth in Germany',\n", + " 'Value added growth vs. CO2 emissions growth in the USA',\n", + " 'Which countries have a carbon emissions trading system?',\n", + " 'Which countries have a carbon tax?',\n", + " 'Which countries have set a net-zero emissions target?',\n", + " 'Year-on-year change in CO2 emissions',\n", + " 'Are children eligible for COVID-19 vaccination?',\n", + " 'Biweekly change in confirmed COVID-19 cases',\n", + " 'Biweekly change in confirmed COVID-19 deaths',\n", + " 'Biweekly confirmed COVID-19 cases',\n", + " 'Biweekly confirmed COVID-19 cases per million people',\n", + " 'Biweekly confirmed COVID-19 deaths',\n", + " 'Biweekly confirmed COVID-19 deaths per million people',\n", + " 'COVID-19 Containment and Health Index',\n", + " 'COVID-19 testing policies',\n", + " 'COVID-19 vaccination policy',\n", + " 'COVID-19 vaccinations vs. COVID-19 deaths',\n", + " 'COVID-19 vaccine boosters administered',\n", + " 'COVID-19 vaccine boosters administered per 100 people',\n", + " 'COVID-19 vaccine doses administered by manufacturer',\n", + " 'COVID-19 vaccine doses administered per 100 people, by income group',\n", + " 'COVID-19 vaccine doses donated to COVAX',\n", + " 'COVID-19 vaccine doses donated to COVAX, per capita',\n", + " 'COVID-19 vaccine doses donated to COVAX, per dose administered',\n", + " 'COVID-19 vaccine doses donated to COVAX, per million dollars of GDP',\n", + " 'COVID-19: Daily tests vs. daily new confirmed cases',\n", + " 'COVID-19: Daily tests vs. daily new confirmed cases per million',\n", + " \"COVID-19: Where are the world's unvaccinated people?\",\n", + " 'Cancellation of public events during COVID-19 pandemic',\n", + " 'Chile: COVID-19 weekly death rate by vaccination status',\n", + " 'Confirmed COVID-19 deaths per million vs. GDP per capita',\n", + " 'Cumulative confirmed COVID-19 cases and deaths',\n", + " 'Cumulative confirmed COVID-19 cases by world region',\n", + " 'Cumulative confirmed COVID-19 deaths by world region',\n", + " 'Cumulative confirmed COVID-19 deaths vs. cases',\n", + " 'Daily COVID-19 tests',\n", + " 'Daily COVID-19 tests per 1,000 people',\n", + " 'Daily COVID-19 vaccine doses administered',\n", + " 'Daily and total confirmed COVID-19 deaths',\n", + " 'Daily confirmed COVID-19 cases by world region',\n", + " 'Daily confirmed COVID-19 deaths by world region',\n", + " 'Daily new confirmed COVID-19 cases and deaths',\n", + " 'Daily new confirmed COVID-19 deaths in Sweden',\n", + " 'Daily new estimated COVID-19 infections from the ICL model',\n", + " 'Daily new estimated COVID-19 infections from the IHME model',\n", + " 'Daily new estimated COVID-19 infections from the LSHTM model',\n", + " 'Daily new estimated COVID-19 infections from the YYG model',\n", + " 'Daily new estimated infections of COVID-19',\n", + " 'Daily share of the population receiving a COVID-19 vaccine dose',\n", + " 'Daily vs. total confirmed COVID-19 cases per million people',\n", + " 'Debt or contract relief during the COVID-19 pandemic',\n", + " 'Economic decline in the second quarter of 2020',\n", + " 'Economic decline in the second quarter of 2020 vs. confirmed COVID-19 cases per million people',\n", + " 'Economic decline in the second quarter of 2020 vs. total confirmed COVID-19 deaths (as of August 2020)',\n", + " 'England: COVID-19 monthly death rate by vaccination status',\n", + " 'Estimated cumulative excess deaths during COVID',\n", + " 'Estimated cumulative excess deaths during COVID, from the WHO',\n", + " 'Estimated cumulative excess deaths during COVID-19',\n", + " 'Estimated cumulative excess deaths per 100,000 people during COVID, from The Economist',\n", + " 'Estimated cumulative excess deaths, from The Economist and the WHO',\n", + " 'Estimated daily excess deaths during COVID',\n", + " 'Estimated daily excess deaths during COVID',\n", + " 'Estimated daily excess deaths per 100,000 people during COVID, from The Economist',\n", + " 'Excess mortality: Cumulative deaths from all causes compared to projection based on previous years',\n", + " 'Excess mortality: Cumulative deaths from all causes compared to projection based on previous years',\n", + " 'Excess mortality: Cumulative deaths from all causes compared to projection based on previous years, per million people',\n", + " 'Excess mortality: Deaths from all causes compared to average over previous years',\n", + " 'Excess mortality: Deaths from all causes compared to average over previous years, by age',\n", + " 'Excess mortality: Deaths from all causes compared to projection',\n", + " 'Excess mortality: Deaths from all causes compared to projection based on previous years, by age',\n", + " 'Excess mortality: Raw number of deaths from all causes compared to projection based on previous years',\n", + " 'Excess mortality: Raw number of deaths from all causes compared to projection based on previous years',\n", + " 'Face covering policies during the COVID-19 pandemic',\n", + " 'Grocery and pharmacy stores: How did the number of visitors change relative to before the pandemic?',\n", + " 'How did the number of visitors change since the beginning of the pandemic?',\n", + " 'How do key COVID-19 metrics compare to the early 2021 peak in Israel?',\n", + " 'How do key COVID-19 metrics compare to the early 2021 peak in Spain?',\n", + " 'How do key COVID-19 metrics compare to the early 2021 peak?',\n", + " 'Income support during the COVID-19 pandemic',\n", + " 'International travel controls during the COVID-19 pandemic',\n", + " 'Number of COVID-19 patients in ICU per million',\n", + " 'Number of COVID-19 patients in hospital',\n", + " 'Number of COVID-19 patients in hospital per million',\n", + " 'Number of COVID-19 patients in intensive care (ICU)',\n", + " 'Number of people who completed the initial COVID-19 vaccination protocol',\n", + " 'Parks and outdoor spaces: How did the number of visitors change relative to before the pandemic?',\n", + " 'Public information campaigns on the COVID-19 pandemic',\n", + " 'Public transport closures during the COVID-19 pandemic',\n", + " 'Residential areas: How did the time spent at home change relative to before the pandemic?',\n", + " 'Restrictions on internal movement during the COVID-19 pandemic',\n", + " 'Restrictions on public gatherings in the COVID-19 pandemic',\n", + " 'Retail and recreation: How did the number of visitors change relative to before the pandemic?',\n", + " 'SARS-CoV-2 sequences by variant',\n", + " 'SARS-CoV-2 variants in analyzed sequences',\n", + " 'School closures during the COVID-19 pandemic',\n", + " 'Share of SARS-CoV-2 sequences that are the delta variant',\n", + " 'Share of SARS-CoV-2 sequences that are the omicron variant',\n", + " 'Share of global daily COVID-19 vaccine doses administered as boosters',\n", + " 'Share of people who completed the initial COVID-19 vaccination protocol',\n", + " 'Share of people who completed the initial COVID-19 vaccination protocol by age',\n", + " 'Share of people who received at least one dose of COVID-19 vaccine',\n", + " 'Share of people with a COVID-19 booster dose by age',\n", + " 'Share of people with at least one dose of COVID-19 vaccine by age',\n", + " 'Share of total COVID-19 tests that were positive',\n", + " 'Stay-at-home requirements during the COVID-19 pandemic',\n", + " 'Sweden: Daily new confirmed COVID-19 deaths, by date of death',\n", + " 'Switzerland: COVID-19 weekly death rate by vaccination status',\n", + " 'Tests and new confirmed COVID-19 cases per day',\n", + " 'Tests conducted per new confirmed case of COVID-19',\n", + " 'The share of COVID-19 tests that are positive',\n", + " 'Total COVID-19 tests',\n", + " 'Total COVID-19 tests conducted vs. confirmed cases',\n", + " 'Total COVID-19 tests conducted vs. confirmed cases per million',\n", + " 'Total COVID-19 tests per 1,000 people',\n", + " 'Total COVID-19 tests per 1,000 vs. GDP per capita',\n", + " 'Total COVID-19 tests per confirmed case',\n", + " 'Total COVID-19 vaccine doses administered',\n", + " 'Total COVID-19 vaccine doses administered per 100 people',\n", + " 'Total confirmed COVID-19 cases vs. deaths per million',\n", + " 'Total confirmed COVID-19 cases, by source',\n", + " 'Total confirmed COVID-19 deaths and cases per million people',\n", + " 'Total confirmed deaths due to COVID-19 vs. population',\n", + " 'Total confirmed deaths from COVID-19, by source',\n", + " 'Total number of people who received at least one dose of COVID-19 vaccine',\n", + " 'Transit stations: How did the number of visitors change relative to before the pandemic?',\n", + " 'UK: Cumulative confirmed COVID-19 deaths per 100,000',\n", + " 'UK: Daily new confirmed COVID-19 cases',\n", + " 'UK: Daily new confirmed COVID-19 cases per 100,000',\n", + " 'UK: Daily new confirmed COVID-19 deaths',\n", + " 'UK: Daily new hospital admissions for COVID-19',\n", + " 'UK: Number of COVID-19 patients in hospital',\n", + " 'UK: Share of COVID-19 tests that are positive',\n", + " 'US: Daily COVID-19 vaccine doses administered',\n", + " 'US: Daily COVID-19 vaccine doses administered per 100 people',\n", + " 'US: Number of people who completed the initial COVID-19 vaccination protocol',\n", + " 'US: Number of people who received at least one dose of COVID-19 vaccine',\n", + " 'US: Share of available COVID-19 vaccine doses that have been used',\n", + " 'US: Share of people who completed the initial COVID-19 vaccination protocol',\n", + " 'US: Share of people who received at least one dose of COVID-19 vaccine',\n", + " 'US: Total COVID-19 vaccine doses administered',\n", + " 'US: Total COVID-19 vaccine doses administered per 100 people',\n", + " 'US: Total COVID-19 vaccine doses distributed',\n", + " 'US: Total COVID-19 vaccine doses distributed per 100 people',\n", + " 'United States: COVID-19 weekly death rate by vaccination status',\n", + " 'Week by week change in confirmed COVID-19 cases',\n", + " 'Week by week change of confirmed COVID-19 deaths',\n", + " 'Weekly confirmed COVID-19 cases',\n", + " 'Weekly confirmed COVID-19 cases per million people',\n", + " 'Weekly confirmed COVID-19 deaths',\n", + " 'Weekly confirmed COVID-19 deaths per million people',\n", + " 'Weekly new ICU admissions for COVID-19',\n", + " 'Weekly new ICU admissions for COVID-19 per million',\n", + " 'Weekly new hospital admissions for COVID-19',\n", + " 'Weekly new hospital admissions for COVID-19 per million',\n", + " 'What is the youngest age group eligible for COVID-19 vaccination?',\n", + " 'Which countries do COVID-19 contact tracing?',\n", + " 'Willingness to get vaccinated against COVID-19',\n", + " 'Workplace closures during the COVID-19 pandemic',\n", + " 'Workplaces: How did the number of visitors change relative to before the pandemic?',\n", + " 'Bathing sites with excellent water quality',\n", + " 'Death rate from unsafe water sources',\n", + " 'Death rate from unsafe water vs. GDP per capita',\n", + " 'Drinking water service usage',\n", + " 'Drinking water services usage in rural areas',\n", + " 'Has country already reached SDG target on improved water access?',\n", + " 'Improved water sources vs. GDP per capita',\n", + " 'People not using an improved water source',\n", + " 'People not using safe drinking water facilities',\n", + " 'People using at least a basic drinking water source',\n", + " 'Rate of deaths attributed to unsafe water sources',\n", + " 'Share of deaths attributed to unsafe water sources',\n", + " 'Share of population using at least a basic drinking water source',\n", + " 'Share of the population not using an improved water source',\n", + " 'Share of the population using drinking water facilities',\n", + " 'Share of the rural population using at least basic water services',\n", + " 'Share of urban population using at least basic water services',\n", + " 'Share of urban vs. rural population using at least basic drinking water',\n", + " 'Share of urban vs. rural population using safely managed drinking water',\n", + " 'Share using safely managed drinking water',\n", + " 'Urban improved water usage vs. rural water usage',\n", + " 'Usage of improved water sources',\n", + " 'Average ammonium concentration in freshwater',\n", + " 'Average nitrate concentration in freshwater',\n", + " 'Average phosphorus concentration in freshwater',\n", + " 'Bathing sites with excellent water quality',\n", + " 'Death rate attributable to unsafe water, sanitation, and hygiene',\n", + " 'Death rate from no access to hand-washing facilities',\n", + " 'Death rate from unsafe sanitation',\n", + " 'Death rate from unsafe water sources',\n", + " 'Death rate from unsafe water vs. GDP per capita',\n", + " 'Deaths attributed to lack of access to handwashing facilities',\n", + " 'Deaths attributed to unsafe sanitation',\n", + " 'Deaths attributed to unsafe water sources',\n", + " 'Diarrheal disease episodes vs. safely managed sanitation',\n", + " 'Diarrheal diseases death rate in children vs. access to basic handwashing facilities',\n", + " 'Drinking water service usage',\n", + " 'Drinking water services usage in rural areas',\n", + " 'Drinking water services usage in urban areas',\n", + " 'Has country already reached SDG target for usage of improved sanitation facilities?',\n", + " 'Has country already reached SDG target on improved water access?',\n", + " 'Implementation of integrated water resource management',\n", + " 'Improved water sources vs. GDP per capita',\n", + " 'Number of people in rural areas without basic handwashing facilities',\n", + " 'Open defecation in rural areas vs. urban areas',\n", + " 'People in rural areas not using an improved water source',\n", + " 'People in rural areas not using improved sanitation facilities',\n", + " 'People not using an improved water source',\n", + " 'People not using improved sanitation facilities',\n", + " 'People not using safe drinking water facilities',\n", + " 'People not using to safely managed sanitation',\n", + " 'People using at least a basic drinking water source',\n", + " 'People without basic handwashing facilities',\n", + " 'Population with basic handwashing facilities, urban vs. rural',\n", + " 'Progress towards the ratification and accession of UNCLOS',\n", + " 'Rate of deaths attributed to no access to handwashing facilities',\n", + " 'Rate of deaths attributed to unsafe sanitation',\n", + " 'Rate of deaths attributed to unsafe water sources',\n", + " 'Sanitation facilities usage',\n", + " 'Sanitation facilities usage in rural areas',\n", + " 'Sanitation facilities usage in urban areas',\n", + " 'Share of deaths attributed to unsafe sanitation',\n", + " 'Share of deaths attributed to unsafe water sources',\n", + " 'Share of people practicing open defecation',\n", + " 'Share of population using at least a basic drinking water source',\n", + " 'Share of population with access to basic handwashing facilities',\n", + " 'Share of population with improved sanitation vs. GDP per capita',\n", + " 'Share of rural population with access to basic handwashing facilities',\n", + " 'Share of schools with access to basic drinking water',\n", + " 'Share of schools with access to basic handwashing facilities',\n", + " 'Share of the population not using an improved water source',\n", + " 'Share of the population not using improved sanitation',\n", + " 'Share of the population using at least basic sanitation services',\n", + " 'Share of the population using drinking water facilities',\n", + " 'Share of the population using safely managed sanitation facilities',\n", + " 'Share of the population using sanitation facilities',\n", + " 'Share of the population with access to basic services',\n", + " 'Share of the population with access to handwashing facilities',\n", + " 'Share of the rural population using at least basic sanitation services',\n", + " 'Share of the rural population using at least basic water services',\n", + " 'Share of transboundary water basins with arrangement for water cooperation',\n", + " 'Share of urban population using at least basic sanitation services',\n", + " 'Share of urban population using at least basic water services',\n", + " 'Share of urban vs. rural population using at least basic drinking water',\n", + " 'Share of urban vs. rural population using at least basic sanitation',\n", + " 'Share of urban vs. rural population using safely managed drinking water',\n", + " 'Share of urban vs. rural population using safely managed sanitation facilities',\n", + " 'Share of water bodies with good ambient water quality',\n", + " 'Share using safely managed drinking water',\n", + " 'Share using safely managed drinking water, rural vs. urban',\n", + " 'Total official financial flows for water supply and sanitation, by recipient',\n", + " 'Urban improved water usage vs. rural water usage',\n", + " 'Usage of at least basic sanitation facilities',\n", + " 'Usage of improved water sources',\n", + " 'Annual temperature anomalies',\n", + " 'Antarctic sea ice extent',\n", + " 'Arctic sea ice extent',\n", + " 'Average monthly surface temperature',\n", + " 'Average temperature anomaly',\n", + " 'Carbon dioxide concentrations in the atmosphere',\n", + " 'Concentration of nitrous oxide in the atmosphere',\n", + " 'Countries with national adaptation plans for climate change',\n", + " 'Decadal temperature anomalies',\n", + " 'Financial support provided through the Green Climate Fund',\n", + " 'Glaciers: change of mass of US glaciers',\n", + " 'Global atmospheric CO2 concentration',\n", + " 'Global atmospheric methane concentrations',\n", + " 'Global atmospheric nitrous oxide concentration',\n", + " 'Global monthly temperature anomaly',\n", + " 'Global warming contributions by gas and source',\n", + " 'Global warming contributions from fossil fuels and land use',\n", + " 'Global warming: Contributions to the change in global mean surface temperature',\n", + " 'Global warming: monthly sea surface temperature anomaly',\n", + " 'Global yearly surface temperature anomalies',\n", + " \"Heat content in the top 2,000 meters of the world's oceans\",\n", + " \"Heat content in the top 700 meters of the world's oceans\",\n", + " 'Ice sheet mass balance',\n", + " 'Methane concentration in the atmosphere',\n", + " 'Monthly average ocean heat content in the top 2,000 meters',\n", + " 'Monthly average ocean heat content in the top 700 meters',\n", + " 'Monthly average surface temperatures by decade',\n", + " 'Monthly average surface temperatures by year',\n", + " 'Monthly surface temperature anomalies by decade',\n", + " 'Monthly surface temperature anomalies by year',\n", + " 'Monthly temperature anomalies',\n", + " 'Nationally determined contributions to climate change',\n", + " 'Ocean acidification: mean seawater pH',\n", + " 'Opinions of young people on the threats of climate change',\n", + " \"People underestimate others' willingness to take climate action\",\n", + " 'Projected number of air conditioning units',\n", + " 'Sea level rise',\n", + " 'Sea surface temperature anomaly',\n", + " 'Seasonal temperature anomaly in the United States',\n", + " 'Share of households with air conditioning',\n", + " \"Share of people who believe in climate change and think it's a serious threat to humanity\",\n", + " 'Share of people who say their government should do more to tackle climate change',\n", + " 'Share of people who support policies to tackle climate change',\n", + " 'Share that think people in their country should act to tackle climate change',\n", + " 'Snow cover in North America',\n", + " 'Surface temperature anomaly',\n", + " 'Agricultural producer support',\n", + " 'Almond yields',\n", + " 'Area of land needed to meet global vegetable oil demand',\n", + " 'Area of land needed to produce one tonne of vegetable oil',\n", + " 'Banana yields',\n", + " 'Barley yields',\n", + " 'Bean yields',\n", + " 'Cashew nut yields',\n", + " 'Cassava yields',\n", + " 'Cereal yield vs. GDP per capita',\n", + " 'Cereal yield vs. extreme poverty rate',\n", + " 'Cereal yield vs. fertilizer use',\n", + " 'Cereal yields',\n", + " 'Change in cereal production, yield, land use and population',\n", + " 'Change in production, yield and land use of oil palm fruit',\n", + " 'Change of cereal yield and land used for cereal production',\n", + " 'Cocoa bean yields',\n", + " 'Coffee bean yields',\n", + " 'Corn yields',\n", + " 'Corn: Attainable crop yields',\n", + " 'Corn: Yield gap',\n", + " 'Cotton yields',\n", + " 'Crop yields',\n", + " 'Global land spared as a result of cereal yield improvements',\n", + " 'Groundnut yields',\n", + " 'How much cropland has the world spared due to increases in crop yields?',\n", + " 'Land use vs. yield change in cereal production',\n", + " 'Lettuce yields',\n", + " 'Long-run cereal yields in the United Kingdom',\n", + " 'Millet yields',\n", + " 'Oil palm fruit yields',\n", + " 'Oil yields by crop type',\n", + " 'Orange yields',\n", + " 'Pea yields',\n", + " 'Potato yields',\n", + " 'Rapeseed yields',\n", + " 'Rice yields',\n", + " 'Rye yields',\n", + " 'Sorghum yields',\n", + " 'Soybean yields',\n", + " 'Sugar beet yields',\n", + " 'Sugar cane yields',\n", + " 'Sunflower seed yields',\n", + " 'Tomato yields',\n", + " 'What has driven the growth in global agricultural production?',\n", + " 'Wheat yields',\n", + " 'Which countries have managed to decouple agricultural output from more inputs?',\n", + " 'Which countries overapplied nitrogen without gains in crop yields?',\n", + " 'Yields of important staple crops',\n", + " 'Animal protein consumption',\n", + " 'Average per capita fruit intake vs. minimum recommended guidelines',\n", + " 'Average per capita vegetable intake vs. minimum recommended guidelines',\n", + " 'Calorie supply by food group',\n", + " 'Cocoa bean consumption per person',\n", + " 'Consumption of animal products in the EAT-Lancet diet',\n", + " 'Daily caloric supply derived from carbohydrates, protein and fat',\n", + " 'Dietary composition by country',\n", + " 'Dietary compositions by commodity group',\n", + " 'Dietary land use vs. GDP per capita',\n", + " 'Fruit consumption by type',\n", + " 'Fruit consumption per capita',\n", + " 'Fruit consumption vs. GDP per capita',\n", + " 'How do actual diets compare to the EAT-Lancet diet?',\n", + " 'Self-reported dietary choices by age, United Kingdom',\n", + " 'Share of calories from animal protein vs. GDP per capita',\n", + " 'Share of dietary energy derived from protein vs. GDP per capita',\n", + " 'Share of dietary energy supply from carbohydrates vs. GDP per capita',\n", + " 'Share of dietary energy supply from fats vs. GDP per capita',\n", + " 'Share of energy from cereals, roots, and tubers vs. GDP per capita',\n", + " 'Share of global habitable land needed for agriculture if everyone had the diet of...',\n", + " 'Vegans, vegetarians and meat-eaters: self-reported dietary choices, United Kingdom',\n", + " 'Vegetable consumption per capita',\n", + " 'Electricity generation',\n", + " 'Electricity production by source',\n", + " 'Electricity production by source',\n", + " 'Electricity production from fossil fuels, nuclear and renewables',\n", + " 'Has a country already reached SDG target on electricity access?',\n", + " 'Number of people with and without electricity access',\n", + " 'Number of people without access to electricity',\n", + " 'Number of people without access to electricity',\n", + " 'Per capita electricity generation',\n", + " 'Per capita electricity generation by source',\n", + " 'Per capita electricity generation from fossil fuels, nuclear and renewables',\n", + " 'Share of electricity generated by low-carbon sources',\n", + " 'Share of electricity production by source',\n", + " 'Share of electricity production by source',\n", + " 'Share of electricity production from coal',\n", + " 'Share of electricity production from fossil fuels',\n", + " 'Share of electricity production from gas',\n", + " 'Share of electricity production from hydropower',\n", + " 'Share of electricity production from nuclear',\n", + " 'Share of electricity production from renewables',\n", + " 'Share of electricity production from solar',\n", + " 'Share of electricity production from wind',\n", + " 'Electricity as a share of primary energy',\n", + " 'Electricity production by source',\n", + " 'Has a country already reached SDG target on electricity access?',\n", + " 'Net electricity imports as a share of electricity demand',\n", + " 'Per capita electricity generation by source',\n", + " 'Share of electricity production by source',\n", + " 'Absolute annual change in primary energy consumption',\n", + " 'Access to clean fuels for cooking vs. per capita energy use',\n", + " 'Access to electricity vs. GDP per capita',\n", + " 'Annual change in coal energy consumption',\n", + " 'Annual change in fossil fuel consumption',\n", + " 'Annual change in gas consumption',\n", + " 'Annual change in hydropower generation',\n", + " 'Annual change in low-carbon energy generation',\n", + " 'Annual change in nuclear energy generation',\n", + " 'Annual change in oil consumption',\n", + " 'Annual change in primary energy consumption',\n", + " 'Annual change in renewable energy generation',\n", + " 'Annual change in solar and wind energy generation',\n", + " 'Annual change in solar energy generation',\n", + " 'Annual change in wind energy generation',\n", + " 'Annual patents filed for carbon capture and storage technologies',\n", + " 'Annual patents filed for electric vehicle technologies',\n", + " 'Annual patents filed for energy storage technologies',\n", + " 'Annual patents filed for renewable energy technologies',\n", + " 'Annual patents filed in sustainable energy',\n", + " 'Annual percentage change in coal energy consumption',\n", + " 'Annual percentage change in fossil fuel consumption',\n", + " 'Annual percentage change in gas consumption',\n", + " 'Annual percentage change in hydropower generation',\n", + " 'Annual percentage change in low-carbon energy generation',\n", + " 'Annual percentage change in nuclear energy generation',\n", + " 'Annual percentage change in oil consumption',\n", + " 'Annual percentage change in renewable energy generation',\n", + " 'Annual percentage change in solar and wind energy generation',\n", + " 'Annual percentage change in solar energy generation',\n", + " 'Annual percentage change in wind energy generation',\n", + " 'CO2 emissions per capita vs. fossil fuel consumption per capita',\n", + " 'CO2 emissions per capita vs. share of electricity generation from renewables',\n", + " 'Carbon intensity of electricity generation',\n", + " 'Changes in energy use vs. changes in GDP',\n", + " 'Changes in energy use vs. changes in GDP per capita',\n", + " 'Coal by end user in the United Kingdom',\n", + " 'Coal energy consumption per capita vs. GDP per capita',\n", + " 'Coal output from opencast and deepmines in the United Kingdom',\n", + " 'Coal output per worker in the United Kingdom',\n", + " 'Coal prices',\n", + " 'Coal production',\n", + " 'Coal production',\n", + " 'Coal production and imports in the United Kingdom',\n", + " 'Coal production per capita',\n", + " 'Coal production per capita over the long-term',\n", + " 'Cobalt production',\n", + " 'Consumption-based energy intensity per dollar',\n", + " 'Consumption-based energy use per person',\n", + " 'Crude oil prices',\n", + " 'Crude oil spot prices',\n", + " 'Death rate from indoor air pollution vs. per capita energy use',\n", + " 'Death rates per unit of electricity production',\n", + " 'Direct primary energy consumption from fossil fuels, nuclear, and renewables',\n", + " 'Electric car stocks',\n", + " 'Electricity as a share of primary energy',\n", + " 'Electricity demand',\n", + " 'Electricity generation',\n", + " 'Electricity generation from coal',\n", + " 'Electricity generation from fossil fuels',\n", + " 'Electricity generation from fossil fuels, nuclear and renewables',\n", + " 'Electricity generation from gas',\n", + " 'Electricity generation from low-carbon sources',\n", + " 'Electricity generation from oil',\n", + " 'Electricity generation from renewables',\n", + " 'Electricity generation from solar and wind compared to coal',\n", + " 'Electricity production by source',\n", + " 'Electricity production by source',\n", + " 'Electricity production by source',\n", + " 'Electricity production from fossil fuels, nuclear and renewables',\n", + " 'Electricity production in the United Kingdom',\n", + " 'Employment in the coal industry in the United Kingdom',\n", + " 'Energy consumption by source',\n", + " 'Energy embedded in traded goods as a share of domestic energy',\n", + " 'Energy imports and exports',\n", + " 'Energy intensity',\n", + " 'Energy intensity',\n", + " 'Energy intensity by sector',\n", + " 'Energy intensity vs. GDP per capita',\n", + " 'Energy use per capita vs. CO2 emissions per capita',\n", + " 'Energy use per person',\n", + " 'Energy use per person vs. GDP per capita',\n", + " 'Fossil fuel consumption',\n", + " 'Fossil fuel consumption',\n", + " 'Fossil fuel consumption per capita',\n", + " 'Fossil fuel consumption per capita by source',\n", + " 'Fossil fuel consumption per capita by source',\n", + " 'Fossil fuel price index',\n", + " 'Fossil fuel production over the long-term',\n", + " 'Fossil fuel production per capita',\n", + " 'GDP per capita vs. energy use',\n", + " 'Gas consumption',\n", + " 'Gas consumption by region',\n", + " 'Gas production',\n", + " 'Gas production per capita',\n", + " 'Gas reserves',\n", + " 'Global aviation demand, energy efficiency and CO2 emissions',\n", + " 'Global direct primary energy consumption',\n", + " 'Global fossil fuel consumption',\n", + " 'Global hydropower consumption',\n", + " 'Global installed renewable energy capacity by technology',\n", + " 'Global primary energy consumption by source',\n", + " 'Global primary energy consumption by source',\n", + " 'Graphite production',\n", + " 'Has a country already reached SDG target on electricity access?',\n", + " ...]}" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "vectorstore_graphs.get()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(Document(metadata={'category': 'Water Use & Stress', 'doc_id': 'owid_2184', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Water quality is assessed by means of core physical and chemical parameters that reflect natural water quality. A water body is classified as \"good\" quality if at least 80% of monitoring values meet target quality levels.', 'url': 'https://ourworldindata.org/grapher/water-bodies-good-water-quality'}, page_content='Share of water bodies with good ambient water quality'),\n", + " 0.46955257728383504),\n", + " (Document(metadata={'category': 'Clean Water & Sanitation', 'doc_id': 'owid_742', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Water quality is assessed by means of core physical and chemical parameters that reflect natural water quality. A water body is classified as \"good\" quality if at least 80% of monitoring values meet target quality levels.', 'url': 'https://ourworldindata.org/grapher/water-bodies-good-water-quality'}, page_content='Share of water bodies with good ambient water quality'),\n", + " 0.46955245084328956),\n", + " (Document(metadata={'category': 'Water Pollution', 'doc_id': 'owid_2151', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Water quality is assessed by means of core physical and chemical parameters that reflect natural water quality. A water body is classified as \"good\" quality if at least 80% of monitoring values meet target quality levels.', 'url': 'https://ourworldindata.org/grapher/water-bodies-good-water-quality'}, page_content='Share of water bodies with good ambient water quality'),\n", + " 0.46955245084328956),\n", + " (Document(metadata={'category': 'Clean Water', 'doc_id': 'owid_667', 'returned_content': '', 'source': 'OWID', 'subtitle': 'A basic drinking water service is water from an improved water source that can be collected within a 30-minute round trip, including queuing.', 'url': 'https://ourworldindata.org/grapher/population-using-at-least-basic-drinking-water'}, page_content='Share of population using at least a basic drinking water source'),\n", + " 0.43011969078910306)]" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "vectorstore_graphs.similarity_search_with_relevance_scores(\"What is the trend of clean water?\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Retriever for recommended graphs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.1 Custom retriever" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_core.retrievers import BaseRetriever\n", + "from langchain_core.documents.base import Document\n", + "from langchain_core.vectorstores import VectorStore\n", + "from langchain_core.callbacks.manager import CallbackManagerForRetrieverRun\n", + "\n", + "from typing import List\n", + "\n", + "class GraphRetriever(BaseRetriever):\n", + " vectorstore:VectorStore\n", + " sources:list = [\"IEA\", \"OWID\"] # plus tard ajouter OurWorldInData # faudra integrate avec l'autre retriever\n", + " threshold:float = 0.5\n", + " k_total:int = 10\n", + "\n", + " def _get_relevant_documents(\n", + " self, query: str, *, run_manager: CallbackManagerForRetrieverRun\n", + " ) -> List[Document]:\n", + "\n", + " # Check if all elements in the list are IEA or OWID\n", + " assert isinstance(self.sources,list)\n", + " assert any([x in [\"IEA\", \"OWID\"] for x in self.sources])\n", + "\n", + " # Prepare base search kwargs\n", + " filters = {}\n", + "\n", + " filters[\"source\"] = {\"$in\": self.sources}\n", + "\n", + " docs = self.vectorstore.similarity_search_with_score(query=query, filter=filters, k=self.k_total)\n", + " \n", + " # Filter if scores are below threshold\n", + " docs = [x for x in docs if x[1] > self.threshold]\n", + "\n", + " # Add score to metadata\n", + " results = []\n", + " for i,(doc,score) in enumerate(docs):\n", + " doc.metadata[\"similarity_score\"] = score\n", + " doc.metadata[\"content\"] = doc.page_content\n", + " results.append(doc)\n", + "\n", + " return results" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "retriever = GraphRetriever(vectorstore=vectorstore_graphs)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[Document(metadata={'category': 'Energy', 'doc_id': 'owid_969', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Energy trade, measured as the percentage of energy use. Positive values indicate a country or region is a net importer of energy. Negative numbers indicate a country or region is a net exporter.', 'url': 'https://ourworldindata.org/grapher/energy-imports-and-exports-energy-use', 'similarity_score': 0.7722029089927673, 'content': 'Energy imports and exports'}, page_content='Energy imports and exports'),\n", + " Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_400', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Environmentally sound technologies (ESTs) are technologies that have the potential for significantly improved environmental performance relative to other technologies. This indicator shows the value of imported ESTs in current US-$.', 'url': 'https://ourworldindata.org/grapher/import-of-environmentally-sound-technologies', 'similarity_score': 0.782991886138916, 'content': 'Import of environmentally sound technologies'}, page_content='Import of environmentally sound technologies'),\n", + " Document(metadata={'category': 'Energy', 'doc_id': 'owid_1013', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Share of primary energy by source over the long-term, measured as the percentage of total energy consumption. Primary electricity includes: hydropower, nuclear power, wind, photo\\xadvoltaics, tidal, wave and solar thermal and geothermal (only figures for electricity production are included).', 'url': 'https://ourworldindata.org/grapher/long-term-energy-transitions', 'similarity_score': 0.8692131638526917, 'content': 'Long-term energy transitions'}, page_content='Long-term energy transitions'),\n", + " Document(metadata={'category': 'Forests & Deforestation', 'doc_id': 'owid_1376', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Imported deforestation is the amount of deforestation in other countries that is driven by the production of food and forestry products that are imported. This is measured in hectares.', 'url': 'https://ourworldindata.org/grapher/imported-deforestation', 'similarity_score': 0.8846064805984497, 'content': 'Imported deforestation'}, page_content='Imported deforestation'),\n", + " Document(metadata={'category': 'Energy', 'doc_id': 'owid_1019', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Net electricity imports are calculated as electricity imports minus exports. Countries with positive values are net importers of electricity; negative values are net exporters. Measured in terawatt-hours.', 'url': 'https://ourworldindata.org/grapher/net-electricity-imports', 'similarity_score': 0.8954001069068909, 'content': 'Net electricity imports'}, page_content='Net electricity imports'),\n", + " Document(metadata={'category': 'Energy', 'doc_id': 'owid_983', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Total fossil fuel production - differentiated by coal, oil and natural gas - by country over the long-run, measured in terawatt-hour (TWh) equivalents per year.', 'url': 'https://ourworldindata.org/grapher/fossil-fuel-production-over-the-long-term', 'similarity_score': 0.9086273312568665, 'content': 'Fossil fuel production over the long-term'}, page_content='Fossil fuel production over the long-term'),\n", + " Document(metadata={'category': 'Fossil Fuels', 'doc_id': 'owid_1443', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Total fossil fuel production - differentiated by coal, oil and natural gas - by country over the long-run, measured in terawatt-hour (TWh) equivalents per year.', 'url': 'https://ourworldindata.org/grapher/fossil-fuel-production-over-the-long-term', 'similarity_score': 0.9086273312568665, 'content': 'Fossil fuel production over the long-term'}, page_content='Fossil fuel production over the long-term'),\n", + " Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_379', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Environmentally sound technologies (ESTs) are technologies that have the potential for significantly improved environmental performance relative to other technologies. This indicator shows the value of exported ESTs in current US-$.', 'url': 'https://ourworldindata.org/grapher/export-of-environmentally-sound-technologies', 'similarity_score': 0.9094725847244263, 'content': 'Export of environmentally sound technologies'}, page_content='Export of environmentally sound technologies'),\n", + " Document(metadata={'category': 'Electricity Mix', 'doc_id': 'owid_892', 'returned_content': '', 'source': 'OWID', 'subtitle': \"Net electricity imports are calculated as electricity imports minus exports. This is given as a share of a country's electricity demand. Countries with positive values are net importers of electricity; negative values are net exporters.\", 'url': 'https://ourworldindata.org/grapher/electricity-imports-share-demand', 'similarity_score': 0.9217990636825562, 'content': 'Net electricity imports as a share of electricity demand'}, page_content='Net electricity imports as a share of electricity demand'),\n", + " Document(metadata={'category': 'Energy', 'doc_id': 'owid_1020', 'returned_content': '', 'source': 'OWID', 'subtitle': \"Net electricity imports are calculated as electricity imports minus exports. This is given as a share of a country's electricity demand. Countries with positive values are net importers of electricity; negative values are net exporters.\", 'url': 'https://ourworldindata.org/grapher/electricity-imports-share-demand', 'similarity_score': 0.9217990636825562, 'content': 'Net electricity imports as a share of electricity demand'}, page_content='Net electricity imports as a share of electricity demand')]" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=293793a6-6cdd-4e70-ba2d-c1211936330a,id=293793a6-6cdd-4e70-ba2d-c1211936330a\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=83bce3ac-3941-4868-b904-954796b2c87b,id=83bce3ac-3941-4868-b904-954796b2c87b; trace=83bce3ac-3941-4868-b904-954796b2c87b,id=a1e66cdf-541e-45be-a04e-0273eb464bd0; trace=83bce3ac-3941-4868-b904-954796b2c87b,id=aae4ff52-19c8-4d68-8cf3-aa5ef96d90a9\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=83bce3ac-3941-4868-b904-954796b2c87b,id=89c9ee4d-0531-40b3-b7d5-471f2d1d7f72; patch: trace=83bce3ac-3941-4868-b904-954796b2c87b,id=83bce3ac-3941-4868-b904-954796b2c87b; trace=83bce3ac-3941-4868-b904-954796b2c87b,id=aae4ff52-19c8-4d68-8cf3-aa5ef96d90a9\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=2f60f3cb-8969-43c1-9be6-a38da876bbeb; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=8abe438d-b623-444e-acf0-01cbe05204d2; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=9641fded-8e17-440c-9be4-651bcf1e62f8; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=dcb0920c-68a9-4663-8f0f-b8d9bb91d9e8; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=be55ec0c-6a79-410b-8fdd-006518ef4839; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=e69b8a0c-353f-4cca-a888-bc92c1ab80e8\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=5c8a1a4d-cf91-47a4-a1d1-29def2a546f8; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=80fcf03e-55a9-4910-bf68-773e94166b87; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=c55b0d31-4534-4e79-a7dd-9e41e8b60d6f; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=ab9e5151-57c0-47b7-9227-1af10c6edd4d; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=36341116-242a-4979-a0a6-3c6e264213d2; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=19e3b604-d805-4e71-9bb5-040d2fd6ab17; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=720a713f-2ea5-4912-81ac-727205915326; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=cdd69060-8047-44d3-9340-a9523d4a9fd7; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=7cb77350-949b-4800-88fe-cdb91e181a6f; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=e6af6666-4615-453b-9b06-f48e85f7ec0b; patch: trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=dcb0920c-68a9-4663-8f0f-b8d9bb91d9e8; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=e69b8a0c-353f-4cca-a888-bc92c1ab80e8; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=9641fded-8e17-440c-9be4-651bcf1e62f8\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=32397e1b-f5d9-4dbf-9e7a-ec51f6452023; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=2e0caf84-9662-4fea-a510-6b8d143dabdf; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=4c472c44-ac2c-4aa0-8931-22be0135d530; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=e332817e-ae69-4b92-9e50-05f9f77a410c; patch: trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=cdd69060-8047-44d3-9340-a9523d4a9fd7; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=e6af6666-4615-453b-9b06-f48e85f7ec0b\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=4904b6c4-b677-4af4-8a6b-bf088dc8a6f9; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=c117d6db-6a45-4109-9579-5e609395bcae; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=d6c37d55-5e1d-47d1-bfd2-f56f58da3c83; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=e5d01647-1098-4ba5-b0be-5b7b6b086e1b; patch: trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=e332817e-ae69-4b92-9e50-05f9f77a410c; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=2e0caf84-9662-4fea-a510-6b8d143dabdf\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=c3110852-8632-4f8d-a4a8-7c798b1cb1d9; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=b9823098-61d1-4aed-9f49-76e82571869c; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=c615dedd-9e6f-4250-96ea-c25184cd6a2c; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=0f9e226a-e351-4be0-b769-65ecf20b5de7; patch: trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=c117d6db-6a45-4109-9579-5e609395bcae; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=e5d01647-1098-4ba5-b0be-5b7b6b086e1b; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=720a713f-2ea5-4912-81ac-727205915326\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=95c8f0b6-91ab-426f-b492-07d310b8fd2d; patch: trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=0f9e226a-e351-4be0-b769-65ecf20b5de7\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=d39d0b70-ca46-4048-93f9-d60e7c66f60e; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=d4b8077e-99b9-496f-8ef3-a8adaf980fb4; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=3e7aa953-cc67-42f5-a46a-664d4aa61fe1; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=c55fad93-769c-4f5a-b716-80362f6bee24; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=31b02c82-76df-43c2-a276-c5bd8d1af58e; patch: trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=95c8f0b6-91ab-426f-b492-07d310b8fd2d; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=c615dedd-9e6f-4250-96ea-c25184cd6a2c\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "patch: trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=31b02c82-76df-43c2-a276-c5bd8d1af58e\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=af577682-c2ca-4730-aef8-815cd25be223; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=bed906a2-4e90-4737-ba3e-d073676f75ed; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=2932ab68-a73e-4471-a103-7ea64eb92015; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=be7246d2-b55c-4f1e-8805-c6caef632e9a; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=3791cee0-aba4-4f92-89b5-875af21e9dee; patch: trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=3e7aa953-cc67-42f5-a46a-664d4aa61fe1; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=d4b8077e-99b9-496f-8ef3-a8adaf980fb4\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "patch: trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=3791cee0-aba4-4f92-89b5-875af21e9dee\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=56ed1b23-c02d-45a9-89db-82ca85fc523f; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=badb4be6-7362-415c-8784-232b7a1710e7; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=62472c2f-e0f1-4cb9-910c-2263beedc8e0; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=b0830d8e-fdc7-470a-87d7-f70485289152; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=b6f642f0-0cfb-450c-9d96-8a0079d220cf; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=e3234978-eaf6-4046-970f-95e412aa889a; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=8aefd625-7233-4022-9f4b-58d8fabb9c43; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=fac8c029-5fb2-4dc8-9fb3-60f4ad9f3e85; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=dd5cc1ab-6ab5-4665-9d5c-37f957ba37eb; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=5ce47723-33ce-4237-91a1-55b885aef68c; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=a9e6125b-d5f6-4743-85b5-3eb2f087578d; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=1575bbfe-f738-4a87-8df8-c57e55435560; patch: trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=2932ab68-a73e-4471-a103-7ea64eb92015; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=bed906a2-4e90-4737-ba3e-d073676f75ed\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=e8a28082-0011-4e85-a399-9bf6bebd6014; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=6b1a1120-0347-43b1-a0c3-16b53d9da843; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=c0f9923f-791b-4e31-875c-d70a3a7d918e; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=a5aae843-34b2-4f65-ba54-89f09509c737; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=84371741-fb6e-4dfe-9282-c969e3a5d190; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=829425fd-6030-4f2e-aef2-931a9f735554\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=47b58050-adb9-48b0-9c6e-b8a2e22e6123; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=fd05368e-94c9-492f-bc06-90bc13f848d6; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=41e95d82-9788-42e5-a38e-28c929f83208; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=c3480230-c4eb-4fd1-8208-325b22389052; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=0fc6ec9c-5086-4bac-a18d-d6a14eb38a35; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=63e8e2da-c4d9-45c0-b0d0-764915c357eb; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=3c3aa0f0-3966-4ba9-b905-1a2365930fba; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=925489ee-37e4-400c-9c29-59cdc99196cc; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=236b7b18-6994-4748-8f19-a4aed1a5f1db; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=3dda8146-05e3-4623-aa8c-da935e9dbd3f; patch: trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=a5aae843-34b2-4f65-ba54-89f09509c737; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=829425fd-6030-4f2e-aef2-931a9f735554; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=c0f9923f-791b-4e31-875c-d70a3a7d918e\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=892fb4d1-ced5-44d8-a3d6-84a347106ba1; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=09f22061-975e-4395-b8d2-36b3f76ce842; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=da12a1f6-e22f-422f-9f5a-3d3a4b3db8cd; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=42f39dec-a502-4d50-996e-66e9be87fed4; patch: trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=3dda8146-05e3-4623-aa8c-da935e9dbd3f; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=925489ee-37e4-400c-9c29-59cdc99196cc\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=d0f49dfa-20b7-494c-85c3-74bcebce6c2f; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=6fe4ff60-6861-462a-a11f-d760fa62ab83; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=c033925c-9d09-4bb1-90da-151d16102e85; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=79b16023-c50e-41d0-8fea-e14dcf5cfafa; patch: trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=09f22061-975e-4395-b8d2-36b3f76ce842; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=42f39dec-a502-4d50-996e-66e9be87fed4\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=8de99aa7-abfd-4a9f-a784-966679d1f39b; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=790c1454-5451-4476-bab1-9c77fde6a81f; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=065bb675-0ef2-431f-9d33-84cd1bb4935d; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=7933b5ab-f8c9-42b9-8479-f78eceb43224; patch: trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=6fe4ff60-6861-462a-a11f-d760fa62ab83; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=79b16023-c50e-41d0-8fea-e14dcf5cfafa; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=3c3aa0f0-3966-4ba9-b905-1a2365930fba\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=6482b408-5756-4fe7-baec-a256190f9af7; patch: trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=7933b5ab-f8c9-42b9-8479-f78eceb43224\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=eb52c44f-1691-4146-8e69-9711de958cea; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=53b06b0d-dcf7-475b-b6e5-d1930c3cfc52; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=546e246a-66e2-43a5-8181-2678acb61d54; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=248d2e53-c72c-40f0-949c-c5213bb9c3d7; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=8daab8cf-42aa-43e6-8bde-62c60162ccc4; patch: trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=065bb675-0ef2-431f-9d33-84cd1bb4935d; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=6482b408-5756-4fe7-baec-a256190f9af7\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=308241ef-550e-4f19-bb73-c2a9e6e36371; trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=f2c7aa53-940b-48da-aa63-66944e6a6546; trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=c2c6c9d7-5209-41b8-8ed7-c488acaa7d2d; trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=b9dd967c-f23e-4f28-82c6-e9b280c656db; trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=16957e58-4828-4760-8617-0a1918144467; trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=8803740c-a15c-4106-a44c-2aace2b47b13\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "patch: trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=8daab8cf-42aa-43e6-8bde-62c60162ccc4\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=896492a1-99bf-4c4a-a65f-25ce2c28b97e; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=2e836817-4ee7-41f2-9bc4-74735d817872; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=bb2ea30d-0240-47ef-a6d8-2598bd4c5709; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=204239d8-f4ea-4190-ad97-1d907465d888; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=1e38b790-68ce-4424-82f2-26255f21c92b; trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=cbb331c8-2396-4c46-a849-6c338226f518; trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=7a4fcbcf-646e-4e7b-b3f6-ea0ab21ee0ab; trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=7eb5634e-3ea6-4c92-8490-1b4879122c08; trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=8682e1c6-9af5-40da-a206-4653ccb8d239; trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=8de88615-e0b9-423b-9b4f-1bda7afacfa2; trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=769adfd8-cb22-469e-aa4a-7d4e81bc08a9; trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=935cab7e-464e-428c-a134-f262c1805fcd; patch: trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=546e246a-66e2-43a5-8181-2678acb61d54; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=53b06b0d-dcf7-475b-b6e5-d1930c3cfc52; trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=b9dd967c-f23e-4f28-82c6-e9b280c656db; trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=8803740c-a15c-4106-a44c-2aace2b47b13; trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=c2c6c9d7-5209-41b8-8ed7-c488acaa7d2d\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "patch: trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=1e38b790-68ce-4424-82f2-26255f21c92b\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=b34909a7-a575-44cf-89dd-d8fee68f0d8a; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=95e97bc6-9076-4107-aff4-06ca1255e6a3; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=bd1e986a-b723-4ed6-bd49-aeacc994fd85; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=3a935932-9bfe-432a-a96c-07aa27272bf9; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=b5e2a72f-4b67-4e33-a6ba-359320db9473; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=2031547a-490f-4751-829a-ef98a23bb023; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=f0c219e2-e5a4-4beb-84f5-85c393914831; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=b36b252f-1f19-4ccd-aa8d-5cd4a98a5112; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=b73c426d-e259-4249-9058-83de3aa73580; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=9e992bbe-63f5-4a35-afd1-e7e5f30ed0fe; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=d095fff9-919e-47c6-a095-15da390156f6; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=0194d7e5-403d-40ac-86ee-b61538d5dcc2; patch: trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=bb2ea30d-0240-47ef-a6d8-2598bd4c5709; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=2e836817-4ee7-41f2-9bc4-74735d817872\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=c9750ca1-6135-44c6-b335-eff6ba8cfafa; trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=3a5a5526-a619-4505-a578-3ee291080783; trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=2836a100-e2e6-40cf-881a-691c470c6092; trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=b9ebb6ca-9591-413b-92b2-191f4b0e8cd2; trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=58b24ce1-7ff6-40ca-ba6e-cf864fa04a9c; trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=10017df8-ecf8-4bda-8c5f-e9a9701a5514; patch: trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=935cab7e-464e-428c-a134-f262c1805fcd; trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=8de88615-e0b9-423b-9b4f-1bda7afacfa2; trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=8682e1c6-9af5-40da-a206-4653ccb8d239\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=74ce6e89-f717-4846-b7a3-a9e32186d041; trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=996f55c7-6763-4e92-b5a9-6758d57218e4; trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=a4611617-53da-4a93-a1fc-16c76e3ac7d5; trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=c8b9d3a0-5e87-4991-810a-59f9d447ffab; patch: trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=b9ebb6ca-9591-413b-92b2-191f4b0e8cd2; trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=10017df8-ecf8-4bda-8c5f-e9a9701a5514; trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=2836a100-e2e6-40cf-881a-691c470c6092; trace=308241ef-550e-4f19-bb73-c2a9e6e36371,id=308241ef-550e-4f19-bb73-c2a9e6e36371\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=4bfe17a4-c2d7-4b7f-9f81-814ea2e94fa7; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=4eed6d6e-6b18-4605-aa73-0512b6d13408; patch: trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=0194d7e5-403d-40ac-86ee-b61538d5dcc2; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=b5e2a72f-4b67-4e33-a6ba-359320db9473; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=3a935932-9bfe-432a-a96c-07aa27272bf9; trace=e8a28082-0011-4e85-a399-9bf6bebd6014,id=e8a28082-0011-4e85-a399-9bf6bebd6014\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=46398dce-c38f-4b57-9ab8-b70b30ec0711; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=d2212d1f-3b2a-4733-af7b-6194bae1f8a5; patch: trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=1575bbfe-f738-4a87-8df8-c57e55435560; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=b6f642f0-0cfb-450c-9d96-8a0079d220cf; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=b0830d8e-fdc7-470a-87d7-f70485289152; trace=2f60f3cb-8969-43c1-9be6-a38da876bbeb,id=2f60f3cb-8969-43c1-9be6-a38da876bbeb\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=f1c330b0-3a72-4fe3-93cf-eb25a66445c0; trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=6bfb3608-19d8-469d-9e47-206d72f61bed; trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=ee5ed22d-8e5b-496e-8478-2d11506f5b1a; trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=c4d5b203-a217-4640-ae9d-417e37a10447; trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=15f7947e-48e2-4a1f-ba21-31448bb3f17d; trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=2b4b590f-943d-4495-ae0b-212af05bee7f\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=300beffa-9bd9-4084-96cd-a2ad42a2ec6f; trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=5c424b33-bda2-4f07-a050-d06943845061; trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=574cb640-ed02-4b4d-9b9b-f4ff602292fa; trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=00826e0e-7ddd-411a-bfbb-326a438bf771; trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=f711bbcf-a1ed-4087-a0bf-59b32580127d; trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=f477ef0b-11b4-4a28-bb09-ecb45b31870f; trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=34d3b6b4-2145-49bd-a718-8b7098875cd9; patch: trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=2b4b590f-943d-4495-ae0b-212af05bee7f; trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=c4d5b203-a217-4640-ae9d-417e37a10447; trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=ee5ed22d-8e5b-496e-8478-2d11506f5b1a\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=f12b21d7-7f82-4f9c-bee2-e7ea8398fe8e; trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=90f2d256-cbeb-48af-b063-ee672167e505; trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=221ba585-94c5-46ba-8c84-ce984b2ebd33; trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=d9ba91e2-912f-4e47-9420-bb36b7d1cfc7; trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=5e591b84-3227-46b3-9601-ddbc814a7ee8; trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=7cf59b4f-afe1-4f54-8bb7-d44a7e3ce641; patch: trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=34d3b6b4-2145-49bd-a718-8b7098875cd9; trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=f711bbcf-a1ed-4087-a0bf-59b32580127d; trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=00826e0e-7ddd-411a-bfbb-326a438bf771\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=6d4f6338-5d7a-4e6b-b912-28fea3a7fd56; trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=d895936e-62eb-435b-939c-7f1be7bde063; trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=8748fc16-2544-4513-80ef-c80785a8e68b; trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=138a1ded-f2dc-491b-9b37-ec4c0f069d6e; patch: trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=d9ba91e2-912f-4e47-9420-bb36b7d1cfc7; trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=7cf59b4f-afe1-4f54-8bb7-d44a7e3ce641; trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=221ba585-94c5-46ba-8c84-ce984b2ebd33\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "patch: trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=138a1ded-f2dc-491b-9b37-ec4c0f069d6e; trace=f1c330b0-3a72-4fe3-93cf-eb25a66445c0,id=f1c330b0-3a72-4fe3-93cf-eb25a66445c0\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=491f3e66-6b89-4377-8d2b-0567324aa59b; trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=b2c086da-93db-4650-9eb2-ed5c40933900; trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=ce04256f-5a48-49bc-b35b-705cb40fed33; trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=cf90dc89-a96a-442d-b5d4-8bf7781f06d2; trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=ae59a011-e2c9-4d4b-82a4-ac9b79440208; trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=f8a804e2-c4fa-492c-96bb-78ff7424cf28\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=a7b13e32-9118-409e-8681-20b7b67d3685; trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=6f26aba5-5f17-4d71-8578-af3d2a7888e2; trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=62a5af0d-8be9-4fb6-9c78-e16654d0bcdc; trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=415a3f17-ac3c-42cd-9b4e-5fe90e077649; trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=d8ae0cef-b38d-46db-9b75-7d0f08bb3f8d; trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=e9c511c0-d35b-4d92-b2d1-cb8ccfb0765b; trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=65785df3-40bd-4c31-ad0b-00fa4dec7294; patch: trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=cf90dc89-a96a-442d-b5d4-8bf7781f06d2; trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=f8a804e2-c4fa-492c-96bb-78ff7424cf28; trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=ce04256f-5a48-49bc-b35b-705cb40fed33\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=20f771b7-e32a-42d6-abc9-c519d6bcdc72; trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=805436bf-32ef-4c27-9e1a-eb34f8f34f70; trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=a2e50c51-d9ad-4a40-bcd6-0672fa7999fe; trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=cdda352a-c4e3-426d-82f9-405de1196d78; trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=e3bf8d3e-4ae2-466e-8566-d95a8658757c; trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=9cbe96b9-7601-4c50-b04f-8f2573cdd73b; patch: trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=65785df3-40bd-4c31-ad0b-00fa4dec7294; trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=d8ae0cef-b38d-46db-9b75-7d0f08bb3f8d; trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=415a3f17-ac3c-42cd-9b4e-5fe90e077649\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=137ad066-c15a-4d60-abf7-e831cedb7ad7; trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=502fe608-5374-46cf-bfda-ff8f5d2b0297; trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=e39c89c2-72c0-4ddc-8ce3-d20b9c3fa9b5; trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=3ff9d270-d6a0-422c-b9e6-0a75f916192d; patch: trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=cdda352a-c4e3-426d-82f9-405de1196d78; trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=9cbe96b9-7601-4c50-b04f-8f2573cdd73b; trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=a2e50c51-d9ad-4a40-bcd6-0672fa7999fe; trace=491f3e66-6b89-4377-8d2b-0567324aa59b,id=491f3e66-6b89-4377-8d2b-0567324aa59b\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=e2edb52e-5cf3-404b-b3ae-f8830317fda0; trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=014f95c4-8fa5-481c-a664-3f459fb1f058; trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=61be8c64-2bee-43a2-a107-305d4950e1c4; trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=3cc13b0d-bd8f-46c8-8362-74d54f98cdb2; trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=8b08484a-0e45-424d-9c34-62775c3c5f9f; trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=55bc59e8-e5a3-47ba-b4c7-2062ce102680\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=209e52e1-a9b4-4151-a4e3-8e3af16519cc; trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=47e036bd-d91b-44b3-8045-5599c1ef67d2; trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=ec44fa1a-ce6b-4b06-adbd-1f85768d1e01; trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=ddfa373f-f271-49a8-8602-44a7e6f0679e; trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=447540dd-c7ab-49e5-b3b6-18f8f99469c6; trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=21ac4f51-cd70-4cf9-9049-e5d84a4b5199; trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=edf300c5-c07a-4728-a3ac-c4ee52a9ec6d; patch: trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=3cc13b0d-bd8f-46c8-8362-74d54f98cdb2; trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=55bc59e8-e5a3-47ba-b4c7-2062ce102680; trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=61be8c64-2bee-43a2-a107-305d4950e1c4\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=042fe32d-780d-4518-82e9-1f5d67a094b2; trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=36d4d6bf-c37c-4b11-ba2e-5eac1415922e; trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=acac7846-6fa0-47c9-9f63-bba4abdadeda; trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=5e1dd1b0-f251-4e38-b004-6146ae1d5d5f; trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=b6ca0e33-1ad6-4946-9ee5-447c288f2c4f; trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=4fcdf5a2-6a73-4ccc-85c6-7883b84cadd6; patch: trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=edf300c5-c07a-4728-a3ac-c4ee52a9ec6d; trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=447540dd-c7ab-49e5-b3b6-18f8f99469c6; trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=ddfa373f-f271-49a8-8602-44a7e6f0679e\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=1bb46244-06fc-408f-a0ed-e6e16d64519e; trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=dfbf1bfb-e3d8-4827-9b3c-13cb32ec2c81; trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=750a11db-ae8e-424d-9638-037120e8be71; trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=7a9ba21a-78bf-48f3-aa87-773016bccfc7; patch: trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=4fcdf5a2-6a73-4ccc-85c6-7883b84cadd6; trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=5e1dd1b0-f251-4e38-b004-6146ae1d5d5f; trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=acac7846-6fa0-47c9-9f63-bba4abdadeda; trace=e2edb52e-5cf3-404b-b3ae-f8830317fda0,id=e2edb52e-5cf3-404b-b3ae-f8830317fda0\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=02dab163-549d-452b-95f5-357abc76b1ca,id=02dab163-549d-452b-95f5-357abc76b1ca; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=b2276546-d946-4ad3-a0e9-1badcbb00b2c; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=ba3fd8fd-db9a-4183-b14d-cfe9b8f89d70; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=658fd17b-6872-4ced-80d8-6ec7a5526ef6; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=b48d32e1-b01e-4b88-91a6-fc1b51755cb0; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=e9e82ab7-bec0-4505-9169-399202079b30\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=02dab163-549d-452b-95f5-357abc76b1ca,id=b5e1454c-ed29-4593-825f-d2fbbf551f66; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=7fc5c94e-d8e8-4400-a9f8-15e2f599efaf; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=2b9b3d7f-683f-4e47-9cfa-36a30e0f91dd; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=1b8b1051-bf04-4bab-a8d2-7c6317880b6c; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=d496995e-79fb-48ec-81a9-8435de5284be; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=80de6581-7286-4c29-bc9c-2feddeb94bc8; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=c17b7a44-4986-4eba-bcd0-512bcdbbac1a; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=18658beb-1c58-4cc3-9eb7-ba70fe839fab; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=11b7b682-bf75-44aa-940c-28963bdba7b6; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=f2f9b521-b18e-4418-ab71-6b507660bbfa; patch: trace=02dab163-549d-452b-95f5-357abc76b1ca,id=658fd17b-6872-4ced-80d8-6ec7a5526ef6; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=e9e82ab7-bec0-4505-9169-399202079b30; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=ba3fd8fd-db9a-4183-b14d-cfe9b8f89d70\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=02dab163-549d-452b-95f5-357abc76b1ca,id=ea5fbfa7-b672-4313-b656-f3a2774f83d5; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=fac457d6-9b8d-4a61-9049-2cc3fbb85735; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=e7bd60d0-596e-4d3e-a0bd-0d84f1e50cd1; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=c625ba0b-7a65-4c66-a294-8f85adaf9c76; patch: trace=02dab163-549d-452b-95f5-357abc76b1ca,id=18658beb-1c58-4cc3-9eb7-ba70fe839fab; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=f2f9b521-b18e-4418-ab71-6b507660bbfa\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=02dab163-549d-452b-95f5-357abc76b1ca,id=ca6df88d-f280-4f24-ac33-f2441c758acc; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=98bf6d3c-bc56-453c-b018-67ea9cdc7e11; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=2c012d2a-bc66-4321-9f8a-7211506e1f25; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=e79d0d5c-4f84-4fde-9ee3-29a46110844a; patch: trace=02dab163-549d-452b-95f5-357abc76b1ca,id=fac457d6-9b8d-4a61-9049-2cc3fbb85735; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=c625ba0b-7a65-4c66-a294-8f85adaf9c76\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=02dab163-549d-452b-95f5-357abc76b1ca,id=3c381856-3e4d-4815-ae50-ffdc0644639c; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=6e015dc8-be67-4793-a86e-79d568f77ec7; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=94e4fd64-d54d-423f-9c51-c76f3d5fb2b3; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=7144c5ef-7f1c-4d66-b20a-817834923d6d; patch: trace=02dab163-549d-452b-95f5-357abc76b1ca,id=98bf6d3c-bc56-453c-b018-67ea9cdc7e11; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=e79d0d5c-4f84-4fde-9ee3-29a46110844a; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=c17b7a44-4986-4eba-bcd0-512bcdbbac1a\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=02dab163-549d-452b-95f5-357abc76b1ca,id=c794e961-8cdc-4bfa-adf2-309c9c392d70; patch: trace=02dab163-549d-452b-95f5-357abc76b1ca,id=7144c5ef-7f1c-4d66-b20a-817834923d6d\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=02dab163-549d-452b-95f5-357abc76b1ca,id=7a5f6504-348d-4ad5-a8f5-4b8b4e90fe84; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=c22f2aae-81ae-4996-80d3-a3b73850b032; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=98fe14eb-c560-42b6-bc14-90956b6fe3a4; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=5e69617c-fd4c-42ba-a589-ac6f145c611e; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=38849e56-fcbb-45a4-96cb-b8fac6efdc0e; patch: trace=02dab163-549d-452b-95f5-357abc76b1ca,id=c794e961-8cdc-4bfa-adf2-309c9c392d70; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=94e4fd64-d54d-423f-9c51-c76f3d5fb2b3\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "patch: trace=02dab163-549d-452b-95f5-357abc76b1ca,id=38849e56-fcbb-45a4-96cb-b8fac6efdc0e\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=02dab163-549d-452b-95f5-357abc76b1ca,id=ac671d39-be49-46f3-ad7d-215d75551343; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=00f5a628-c403-4924-b172-ca63473a6903; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=1a7ad33d-d834-4908-8cd9-1815c74007b3; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=49d1030f-380b-42e2-9fec-39799575f587; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=58432383-aedc-41e7-8628-7dc0845f757a; patch: trace=02dab163-549d-452b-95f5-357abc76b1ca,id=c22f2aae-81ae-4996-80d3-a3b73850b032; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=98fe14eb-c560-42b6-bc14-90956b6fe3a4\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "patch: trace=02dab163-549d-452b-95f5-357abc76b1ca,id=58432383-aedc-41e7-8628-7dc0845f757a\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=02dab163-549d-452b-95f5-357abc76b1ca,id=11c13c61-f3d2-4173-a2fa-659e7948207c; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=b755f27a-bdd9-4fc7-9d33-e5c992541f03; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=935ac438-e3ab-42fc-94bb-e3b4664e5092; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=0d25e7fd-8b83-4f66-9db0-59a371a32ed8; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=aac7dbf2-7a37-4ed3-be8a-a54a45838ab2; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=3c20511d-c43b-4639-8797-c63e47b4cd85; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=e70182ba-4089-4c3e-8f57-5e4c310643db; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=892b2c6c-4547-4d3b-99cc-642f20d2974c; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=673edae4-acc1-4b62-ac3d-99b514498feb; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=08f01bef-fb34-462a-9021-fdb6f2ca626a; patch: trace=02dab163-549d-452b-95f5-357abc76b1ca,id=02dab163-549d-452b-95f5-357abc76b1ca; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=00f5a628-c403-4924-b172-ca63473a6903; trace=02dab163-549d-452b-95f5-357abc76b1ca,id=1a7ad33d-d834-4908-8cd9-1815c74007b3\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=da982506-c769-4e99-8a13-3ba28464e33b,id=da982506-c769-4e99-8a13-3ba28464e33b; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=803d28f6-b6ea-4cf5-a58a-7dda7d6595b3; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=f6ea6f7c-11e0-4ec0-8246-f17c9e3a1530; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=1df00cc2-16fd-405a-a6c9-6b8145c94831; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=b35ca0a2-f164-4eb6-ad9b-28423952d4e4; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=2ef747d6-4c0c-4815-b129-e48e351ad15d\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=da982506-c769-4e99-8a13-3ba28464e33b,id=bab40355-b53d-4cd9-8ee9-20290527d34e; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=c1990c0d-4619-445a-a520-69512a249b75; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=4ee24498-28c3-44aa-bc41-0172e3a4b1ae; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=9e73082d-b9c3-4c25-84af-70aa7a2f8377; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=4017961e-ad43-4606-be18-af0403b12197; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=e80dd6f0-f708-4b51-8970-938bdaecaa8f; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=b084b76d-4094-4d45-8d14-368d457f32c2; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=0e3b9ea0-127d-44ae-969a-0b6f48c8e4ee; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=ab8439f4-6581-4045-857e-0263dbacb2a7; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=2ac275a0-763a-43ca-b933-c0ecd977fd72; patch: trace=da982506-c769-4e99-8a13-3ba28464e33b,id=1df00cc2-16fd-405a-a6c9-6b8145c94831; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=2ef747d6-4c0c-4815-b129-e48e351ad15d; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=f6ea6f7c-11e0-4ec0-8246-f17c9e3a1530\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=da982506-c769-4e99-8a13-3ba28464e33b,id=2fb7f717-c9a8-4a43-86c2-d85f36e81abf; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=00b153be-2ee7-44a7-aa9e-ec61c6098a38; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=f42be082-2a10-4fcf-a4e6-bb4c497af1ab; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=67f8b219-494c-46fc-8430-8b9a7a52c2ab; patch: trace=da982506-c769-4e99-8a13-3ba28464e33b,id=0e3b9ea0-127d-44ae-969a-0b6f48c8e4ee; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=2ac275a0-763a-43ca-b933-c0ecd977fd72\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=da982506-c769-4e99-8a13-3ba28464e33b,id=0905cb29-5bef-4dcc-947e-bd41be9b0ec2; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=c4801355-a8c1-4df3-89c0-b44d205f3790; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=e154c1c3-b46d-484b-863e-9eca46ffe0ef; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=4b49816d-34bf-4999-aa9f-f2d87b8e2c5c; patch: trace=da982506-c769-4e99-8a13-3ba28464e33b,id=00b153be-2ee7-44a7-aa9e-ec61c6098a38; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=67f8b219-494c-46fc-8430-8b9a7a52c2ab\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=da982506-c769-4e99-8a13-3ba28464e33b,id=dc4cdcc8-b4f8-483e-b5ad-a48a0822ebc9; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=903f59e9-15b7-4011-935c-3f722b2c14a8; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=97d142ef-f894-4d7c-873a-58a068ffd16c; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=3686b997-8404-4be7-9ce4-4c1555e5c444; patch: trace=da982506-c769-4e99-8a13-3ba28464e33b,id=c4801355-a8c1-4df3-89c0-b44d205f3790; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=4b49816d-34bf-4999-aa9f-f2d87b8e2c5c; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=b084b76d-4094-4d45-8d14-368d457f32c2\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=da982506-c769-4e99-8a13-3ba28464e33b,id=db8cd743-d6dd-4cfc-b5b4-6b8020e34c8f; patch: trace=da982506-c769-4e99-8a13-3ba28464e33b,id=3686b997-8404-4be7-9ce4-4c1555e5c444\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=da982506-c769-4e99-8a13-3ba28464e33b,id=1fb6b541-86e8-49d3-a76c-27f51ee91700; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=d5e21461-3554-4392-ba75-1d711b79a62a; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=d0459516-1ced-4de1-9356-7cbc7d4baaec; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=c9639f80-afb8-48f8-8d9a-1b501401d6f9; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=98d54136-8f2a-4209-b67d-7ac9b02cb0a9; patch: trace=da982506-c769-4e99-8a13-3ba28464e33b,id=97d142ef-f894-4d7c-873a-58a068ffd16c; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=db8cd743-d6dd-4cfc-b5b4-6b8020e34c8f\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "patch: trace=da982506-c769-4e99-8a13-3ba28464e33b,id=98d54136-8f2a-4209-b67d-7ac9b02cb0a9\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=da982506-c769-4e99-8a13-3ba28464e33b,id=f28cfa46-8364-45d0-9714-1a2ad3254cb1; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=bd0eabc6-a234-4592-86be-8f9f5c8b855b; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=0bff4eec-387f-484d-8a27-e739d25c3df6; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=6b24c078-4a9b-4e5e-959b-6453d7c95659; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=5b0b1565-7505-4f13-a2ff-92b1260b67cf; patch: trace=da982506-c769-4e99-8a13-3ba28464e33b,id=d5e21461-3554-4392-ba75-1d711b79a62a; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=d0459516-1ced-4de1-9356-7cbc7d4baaec\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "patch: trace=da982506-c769-4e99-8a13-3ba28464e33b,id=5b0b1565-7505-4f13-a2ff-92b1260b67cf\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=da982506-c769-4e99-8a13-3ba28464e33b,id=dad8a97a-01d7-42c2-b511-e07843681bf1; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=0b20f8a9-eb2e-4874-adbe-821b0d472974; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=a4f0328f-3347-4e88-83c3-db81240d21e8; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=9cfce8f4-12fc-4dfb-902e-f8ebe1f76d5f; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=61373688-556e-4e19-b5be-97b5ce3d6232; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=cc47f4f3-286c-4b88-8692-4345c63abad8; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=b2035953-5c25-4bea-b4ad-57d249c7d1dd; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=daab100c-dcf2-47c5-bf5c-bbfa11184c48; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=090231d4-2f0d-47b8-91ec-204a2899e2b8; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=4fa94396-fe15-47a2-a393-b4d01e579c4b; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=7af40ed7-5329-4432-a158-9daafa6e3768; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=c7a9c907-315b-488b-a03a-b9164cc392e4; patch: trace=da982506-c769-4e99-8a13-3ba28464e33b,id=bd0eabc6-a234-4592-86be-8f9f5c8b855b; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=0bff4eec-387f-484d-8a27-e739d25c3df6\n", + "WARNING:langsmith.client:Failed to batch ingest runs: langsmith.utils.LangSmithAuthError: Authentication failed for https://api.smith.langchain.com/runs/batch. HTTPError('401 Client Error: Unauthorized for url: https://api.smith.langchain.com/runs/batch', '{\"detail\":\"Using legacy API key. Please generate a new API key.\"}')\n", + "post: trace=da982506-c769-4e99-8a13-3ba28464e33b,id=e9b1009a-8388-41e5-9f5d-b23e5d7a0135; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=5d2f00d2-b8f3-423e-b7b5-b6751cd18ee2; patch: trace=da982506-c769-4e99-8a13-3ba28464e33b,id=c7a9c907-315b-488b-a03a-b9164cc392e4; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=61373688-556e-4e19-b5be-97b5ce3d6232; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=9cfce8f4-12fc-4dfb-902e-f8ebe1f76d5f; trace=da982506-c769-4e99-8a13-3ba28464e33b,id=da982506-c769-4e99-8a13-3ba28464e33b\n" + ] + } + ], + "source": [ + "retriever.invoke(\"hydrogen import evolutions\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3.2 Retriever node" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "import os\n", + "from contextlib import contextmanager\n", + "\n", + "from climateqa.engine.reranker import rerank_docs\n", + "\n", + "\n", + "\n", + "def divide_into_parts(target, parts):\n", + " # Base value for each part\n", + " base = target // parts\n", + " # Remainder to distribute\n", + " remainder = target % parts\n", + " # List to hold the result\n", + " result = []\n", + " \n", + " for i in range(parts):\n", + " if i < remainder:\n", + " # These parts get base value + 1\n", + " result.append(base + 1)\n", + " else:\n", + " # The rest get the base value\n", + " result.append(base)\n", + " \n", + " return result\n", + "\n", + "\n", + "@contextmanager\n", + "def suppress_output():\n", + " # Open a null device\n", + " with open(os.devnull, 'w') as devnull:\n", + " # Store the original stdout and stderr\n", + " old_stdout = sys.stdout\n", + " old_stderr = sys.stderr\n", + " # Redirect stdout and stderr to the null device\n", + " sys.stdout = devnull\n", + " sys.stderr = devnull\n", + " try:\n", + " yield\n", + " finally:\n", + " # Restore stdout and stderr\n", + " sys.stdout = old_stdout\n", + " sys.stderr = old_stderr\n", + "\n", + "\n", + "def make_graph_retriever_node(vectorstore, reranker, rerank_by_question=True, k_final=15, k_before_reranking=100):\n", + "\n", + " def retrieve_graphs(state):\n", + " print(\"---- Retrieving graphs ----\")\n", + " \n", + " POSSIBLE_SOURCES = [\"IEA\", \"OWID\"]\n", + " questions = state[\"questions\"]\n", + " sources_input = state[\"sources_input\"]\n", + "\n", + " auto_mode = \"auto\" in sources_input\n", + "\n", + " # There are several options to get the final top k\n", + " # Option 1 - Get 100 documents by question and rerank by question\n", + " # Option 2 - Get 100/n documents by question and rerank the total\n", + " if rerank_by_question:\n", + " k_by_question = divide_into_parts(k_final,len(questions))\n", + " \n", + " docs = []\n", + " \n", + " for i,q in enumerate(questions):\n", + " \n", + " question = q[\"question\"]\n", + " \n", + " print(f\"Subquestion {i}: {question}\")\n", + " \n", + " # If auto mode, we use all sources\n", + " if auto_mode:\n", + " sources = POSSIBLE_SOURCES\n", + " # Otherwise, we use the config\n", + " else:\n", + " sources = sources_input\n", + "\n", + " if any([x in POSSIBLE_SOURCES for x in sources]):\n", + "\n", + " sources = [x for x in sources if x in POSSIBLE_SOURCES]\n", + " \n", + " # Search the document store using the retriever\n", + " retriever = GraphRetriever(\n", + " vectorstore = vectorstore,\n", + " sources = sources,\n", + " k_total = k_before_reranking,\n", + " threshold = 0.5,\n", + " )\n", + " docs_question = retriever.get_relevant_documents(question)\n", + " \n", + " # Rerank\n", + " if reranker is not None:\n", + " with suppress_output():\n", + " docs_question = rerank_docs(reranker,docs_question,question)\n", + " else:\n", + " # Add a default reranking score\n", + " for doc in docs_question:\n", + " doc.metadata[\"reranking_score\"] = doc.metadata[\"similarity_score\"]\n", + " \n", + " # If rerank by question we select the top documents for each question\n", + " if rerank_by_question:\n", + " docs_question = docs_question[:k_by_question[i]]\n", + " \n", + " # Add sources used in the metadata\n", + " for doc in docs_question:\n", + " doc.metadata[\"sources_used\"] = sources\n", + " \n", + " print(f\"{len(docs_question)} graphs retrieved for subquestion {i + 1}: {docs_question}\")\n", + " \n", + " # Add to the list of docs\n", + " docs.extend(docs_question)\n", + "\n", + " else:\n", + " print(f\"There are no graphs which match the sources filtered on. Sources filtered on: {sources}. Sources available: {POSSIBLE_SOURCES}.\")\n", + " \n", + " # Sorting the list in descending order by rerank_score\n", + " # Then select the top k\n", + " docs = sorted(docs, key=lambda x: x.metadata[\"reranking_score\"], reverse=True)\n", + " docs = docs[:k_final]\n", + "\n", + " return {\"recommended_content\": docs}\n", + " \n", + " return retrieve_graphs" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "# import sys\n", + "# import os\n", + "# from contextlib import contextmanager\n", + "\n", + "# from climateqa.engine.reranker import rerank_docs\n", + "\n", + "\n", + "# def divide_into_parts(target, parts):\n", + "# # Base value for each part\n", + "# base = target // parts\n", + "# # Remainder to distribute\n", + "# remainder = target % parts\n", + "# # List to hold the result\n", + "# result = []\n", + " \n", + "# for i in range(parts):\n", + "# if i < remainder:\n", + "# # These parts get base value + 1\n", + "# result.append(base + 1)\n", + "# else:\n", + "# # The rest get the base value\n", + "# result.append(base)\n", + " \n", + "# return result\n", + "\n", + "\n", + "# @contextmanager\n", + "# def suppress_output():\n", + "# # Open a null device\n", + "# with open(os.devnull, 'w') as devnull:\n", + "# # Store the original stdout and stderr\n", + "# old_stdout = sys.stdout\n", + "# old_stderr = sys.stderr\n", + "# # Redirect stdout and stderr to the null device\n", + "# sys.stdout = devnull\n", + "# sys.stderr = devnull\n", + "# try:\n", + "# yield\n", + "# finally:\n", + "# # Restore stdout and stderr\n", + "# sys.stdout = old_stdout\n", + "# sys.stderr = old_stderr\n", + "\n", + "\n", + "\n", + "# def make_retriever_node(vectorstore, reranker, rerank_by_question=True, k_final=15, k_before_reranking=100):\n", + "\n", + "# def retrieve_documents(state):\n", + " \n", + "# POSSIBLE_SOURCES = [\"IEA\",\"OWID\"]\n", + "# questions = state[\"questions\"]\n", + "# sources_input = state[\"sources_input\"]\n", + " \n", + "# # Sert à rien pour l'instant puisqu'on a des valeurs par défaut et qu'on fait pas de query transformation sur les sources de graphs\n", + "# # Use sources from the user input or from the LLM detection\n", + "# if \"sources_input\" not in state or state[\"sources_input\"] is None:\n", + "# sources_input = [\"auto\"]\n", + "# else:\n", + "# sources_input = state[\"sources_input\"]\n", + "# auto_mode = \"auto\" in sources_input\n", + "\n", + "# # There are several options to get the final top k\n", + "# # Option 1 - Get 100 documents by question and rerank by question\n", + "# # Option 2 - Get 100/n documents by question and rerank the total\n", + "# if rerank_by_question:\n", + "# k_by_question = divide_into_parts(k_final,len(questions))\n", + " \n", + "# docs = []\n", + " \n", + "# for i,q in enumerate(questions):\n", + " \n", + "# sources = q[\"sources\"]\n", + "# question = q[\"question\"]\n", + " \n", + "# # If auto mode, we use the sources detected by the LLM\n", + "# if auto_mode:\n", + "# sources = [x for x in sources if x in POSSIBLE_SOURCES]\n", + " \n", + "# # Otherwise, we use the config\n", + "# else:\n", + "# sources = sources_input\n", + " \n", + "# # Search the document store using the retriever\n", + "# # Configure high top k for further reranking step\n", + "# retriever = GraphRetriever(\n", + "# vectorstore=vectorstore,\n", + "# sources = sources,\n", + "# k_total = k_before_reranking,\n", + "# threshold = 0.5,\n", + "# )\n", + "# docs_question = retriever.get_relevant_documents(question)\n", + " \n", + "# # Rerank\n", + "# if reranker is not None:\n", + "# with suppress_output():\n", + "# docs_question = rerank_docs(reranker,docs_question,question)\n", + "# else:\n", + "# # Add a default reranking score\n", + "# for doc in docs_question:\n", + "# # doc.metadata[\"reranking_score\"] = doc.metadata[\"similarity_score\"]\n", + "# doc.metadata[\"reranking_score\"] = \"No reranking\"\n", + " \n", + "# # If rerank by question we select the top documents for each question\n", + "# if rerank_by_question:\n", + "# docs_question = docs_question[:k_by_question[i]]\n", + " \n", + "# # Add sources used in the metadata\n", + "# for doc in docs_question:\n", + "# doc.metadata[\"sources_used\"] = sources\n", + " \n", + "# # Add to the list of docs\n", + "# docs.extend(docs_question)\n", + " \n", + "# # Sorting the list in descending order by rerank_score\n", + "# # Then select the top k\n", + "# docs = sorted(docs, key=lambda x: x.metadata[\"reranking_score\"], reverse=True)\n", + "# docs = docs[:k_final]\n", + " \n", + "# new_state = {\"documents\": docs}\n", + "# return new_state\n", + " \n", + "# return retrieve_documents" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Node functions" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "from operator import itemgetter\n", + "\n", + "from langchain_core.prompts import ChatPromptTemplate\n", + "from langchain_core.output_parsers import StrOutputParser\n", + "from langchain_core.prompts.prompt import PromptTemplate\n", + "from langchain_core.prompts.base import format_document\n", + "\n", + "DEFAULT_DOCUMENT_PROMPT = PromptTemplate.from_template(template=\"\"\"Title: {page_content}. \\n\\n Embedding link: {returned_content}\"\"\")\n", + "\n", + "def _combine_recommended_content(\n", + " docs, document_prompt=DEFAULT_DOCUMENT_PROMPT, sep=\"\\n\\n-----------------\\n\\n\"\n", + "):\n", + "\n", + " doc_strings = []\n", + "\n", + " for i,doc in enumerate(docs):\n", + " # chunk_type = \"Doc\" if doc.metadata[\"chunk_type\"] == \"text\" else \"Image\"\n", + " chunk_type = \"Graph\"\n", + " if isinstance(doc,str):\n", + " doc_formatted = doc\n", + " else:\n", + " doc_formatted = format_document(doc, document_prompt)\n", + "\n", + " doc_string = f\"{chunk_type} {i+1}: \\n\\n\" + doc_formatted\n", + " # doc_string = doc_string.replace(\"\\n\",\" \") \n", + " doc_strings.append(doc_string)\n", + "\n", + " return sep.join(doc_strings)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "# display(Markdown(_combine_recommended_content(output[\"recommended_content\"])))" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_core.output_parsers import JsonOutputParser\n", + "from langchain_core.prompts import PromptTemplate\n", + "from langchain_core.pydantic_v1 import BaseModel, Field\n", + "from langchain_openai import ChatOpenAI\n", + "\n", + "from climateqa.engine.chains.prompts import answer_prompt_graph_template\n", + "\n", + "class RecommendedGraph(BaseModel):\n", + " title: str = Field(description=\"Title of the graph\")\n", + " embedding: str = Field(description=\"Embedding link of the graph\")\n", + "\n", + "# class RecommendedGraphs(BaseModel):\n", + "# recommended_content: List[RecommendedGraph] = Field(description=\"List of recommended graphs\")\n", + "\n", + "def make_rag_graph_chain(llm):\n", + " parser = JsonOutputParser(pydantic_object=RecommendedGraph)\n", + " prompt = PromptTemplate(\n", + " template=answer_prompt_graph_template,\n", + " input_variables=[\"query\", \"recommended_content\"],\n", + " partial_variables={\"format_instructions\": parser.get_format_instructions()},\n", + " )\n", + "\n", + " chain = prompt | llm | parser\n", + " return chain\n", + "\n", + "def make_rag_graph_node(llm):\n", + " chain = make_rag_graph_chain(llm)\n", + "\n", + " def answer_rag_graph(state):\n", + " output = chain.invoke(state)\n", + " return {\"graph_returned\": output}\n", + "\n", + " return answer_rag_graph" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 5. Graph" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5.1 Make graph agent" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "import os\n", + "from contextlib import contextmanager\n", + "\n", + "from langchain.schema import Document\n", + "from langgraph.graph import END, StateGraph\n", + "from langchain_core.runnables.graph import MermaidDrawMethod\n", + "\n", + "from typing_extensions import TypedDict\n", + "from typing import List, Dict\n", + "\n", + "from IPython.display import display, HTML, Image\n", + "\n", + "from climateqa.engine.chains.answer_chitchat import make_chitchat_node\n", + "from climateqa.engine.chains.answer_ai_impact import make_ai_impact_node\n", + "from climateqa.engine.chains.query_transformation import make_query_transform_node\n", + "from climateqa.engine.chains.translation import make_translation_node\n", + "from climateqa.engine.chains.intent_categorization import make_intent_categorization_node\n", + "from climateqa.engine.chains.retriever import make_retriever_node\n", + "from climateqa.engine.chains.answer_rag import make_rag_node\n", + "from climateqa.engine.chains.set_defaults import set_defaults\n", + "from climateqa.engine.chains.graph_retriever import make_graph_retriever_node\n", + "\n", + "\n", + "class GraphState(TypedDict):\n", + " \"\"\"\n", + " Represents the state of our graph.\n", + " \"\"\"\n", + " user_input : str\n", + " language : str\n", + " intent : str\n", + " query: str\n", + " questions : List[dict]\n", + " answer: str\n", + " audience: str\n", + " sources_input: List[str]\n", + " documents: List[Document]\n", + " recommended_content : List[Document]\n", + " graph_returned: Dict[str,str]\n", + "\n", + "def search(state):\n", + " return {}\n", + "\n", + "def route_intent(state):\n", + " intent = state[\"intent\"]\n", + " if intent in [\"chitchat\",\"esg\"]:\n", + " return \"answer_chitchat\"\n", + " elif intent == \"ai_impact\":\n", + " return \"answer_ai_impact\"\n", + " else:\n", + " # Search route\n", + " return \"search\"\n", + " \n", + "def route_translation(state):\n", + " if state[\"language\"].lower() == \"english\":\n", + " return \"transform_query\"\n", + " else:\n", + " return \"translate_query\"\n", + " \n", + "def route_based_on_relevant_docs(state,threshold_docs=0.2):\n", + " docs = [x for x in state[\"documents\"] if x.metadata[\"reranking_score\"] > threshold_docs]\n", + " if len(docs) > 0:\n", + " return \"answer_rag\"\n", + " else:\n", + " return \"answer_rag_no_docs\"\n", + " \n", + "\n", + "def make_id_dict(values):\n", + " return {k:k for k in values}\n", + "\n", + "def make_graph_agent(llm, vectorstore_ipcc, vectorstore_graphs, reranker, threshold_docs=0.2):\n", + " \n", + " workflow = StateGraph(GraphState)\n", + "\n", + " # Define the node functions\n", + " categorize_intent = make_intent_categorization_node(llm)\n", + " transform_query = make_query_transform_node(llm)\n", + " translate_query = make_translation_node(llm)\n", + " answer_chitchat = make_chitchat_node(llm)\n", + " answer_ai_impact = make_ai_impact_node(llm)\n", + " retrieve_documents = make_retriever_node(vectorstore_ipcc, reranker)\n", + " retrieve_graphs = make_graph_retriever_node(vectorstore_graphs, reranker)\n", + " answer_rag_graph = make_rag_graph_node(llm)\n", + " answer_rag = make_rag_node(llm, with_docs=True)\n", + " answer_rag_no_docs = make_rag_node(llm, with_docs=False)\n", + "\n", + " # Define the nodes\n", + " workflow.add_node(\"set_defaults\", set_defaults)\n", + " workflow.add_node(\"categorize_intent\", categorize_intent)\n", + " workflow.add_node(\"search\", search)\n", + " workflow.add_node(\"transform_query\", transform_query)\n", + " workflow.add_node(\"translate_query\", translate_query)\n", + " workflow.add_node(\"answer_chitchat\", answer_chitchat)\n", + " workflow.add_node(\"answer_ai_impact\", answer_ai_impact)\n", + " workflow.add_node(\"retrieve_graphs\", retrieve_graphs)\n", + " workflow.add_node(\"answer_rag_graph\", answer_rag_graph)\n", + " workflow.add_node(\"retrieve_documents\", retrieve_documents)\n", + " workflow.add_node(\"answer_rag\", answer_rag)\n", + " workflow.add_node(\"answer_rag_no_docs\", answer_rag_no_docs)\n", + "\n", + " # Entry point\n", + " workflow.set_entry_point(\"set_defaults\")\n", + "\n", + " # CONDITIONAL EDGES\n", + " workflow.add_conditional_edges(\n", + " \"categorize_intent\",\n", + " route_intent,\n", + " make_id_dict([\"answer_chitchat\",\"answer_ai_impact\",\"search\"])\n", + " )\n", + "\n", + " workflow.add_conditional_edges(\n", + " \"search\",\n", + " route_translation,\n", + " make_id_dict([\"translate_query\",\"transform_query\"])\n", + " )\n", + "\n", + " workflow.add_conditional_edges(\n", + " \"retrieve_documents\",\n", + " lambda x : route_based_on_relevant_docs(x,threshold_docs=threshold_docs),\n", + " make_id_dict([\"answer_rag\",\"answer_rag_no_docs\"])\n", + " )\n", + "\n", + " # Define the edges\n", + " workflow.add_edge(\"set_defaults\", \"categorize_intent\")\n", + " workflow.add_edge(\"translate_query\", \"transform_query\")\n", + " workflow.add_edge(\"transform_query\", \"retrieve_graphs\")\n", + " workflow.add_edge(\"retrieve_graphs\", \"answer_rag_graph\")\n", + " workflow.add_edge(\"answer_rag_graph\", \"retrieve_documents\")\n", + " workflow.add_edge(\"answer_rag\", END)\n", + " workflow.add_edge(\"answer_rag_no_docs\", END)\n", + " workflow.add_edge(\"answer_chitchat\", END)\n", + " workflow.add_edge(\"answer_ai_impact\", END)\n", + "\n", + " # Compile\n", + " app = workflow.compile()\n", + " return app\n", + "\n", + "\n", + "\n", + "\n", + "def display_graph(app):\n", + "\n", + " display(\n", + " Image(\n", + " app.get_graph(xray = True).draw_mermaid_png(\n", + " draw_method=MermaidDrawMethod.API,\n", + " )\n", + " )\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---- Translate query ----\n" + ] + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "app = make_graph_agent(llm=llm, vectorstore_ipcc=vectorstore, vectorstore_graphs=vectorstore_graphs, reranker=reranker)\n", + "display_graph(app)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n" + ] + }, + { + "data": { + "text/plain": [ + "{'environment': True}" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from climateqa.engine.chains.chitchat_categorization import make_chitchat_intent_categorization_chain\n", + "\n", + "chain = make_chitchat_intent_categorization_chain(llm)\n", + "chain.invoke({\"input\": \"should i eat fish\"})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5.2 Testing graph agent" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---- Translate query ----\n" + ] + }, + { + "data": { + "image/jpeg": "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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from climateqa.engine.graph import make_graph_agent, display_graph\n", + "\n", + "app = make_graph_agent(llm=llm, vectorstore_ipcc=vectorstore, vectorstore_graphs=vectorstore_graphs, reranker=reranker)\n", + "display_graph(app)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:httpx:HTTP Request: GET https://api.gradio.app/gradio-messaging/en \"HTTP/1.1 200 OK\"\n", + "/tmp/ipykernel_13585/659967580.py:28: LangChainBetaWarning: This API is in beta and may change in the future.\n", + " result = app.astream_events(inputs,version = \"v1\") #{\"callbacks\":[MyCustomAsyncHandler()]})\n" + ] + }, + { + "ename": "TypeError", + "evalue": "'Metadata' object is not subscriptable", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[32], line 52\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m event[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mname\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;129;01min\u001b[39;00m steps_display\u001b[38;5;241m.\u001b[39mkeys() \u001b[38;5;129;01mand\u001b[39;00m event[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mevent\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mon_chain_start\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;66;03m#display steps\u001b[39;00m\n\u001b[1;32m 51\u001b[0m event_description,display_output \u001b[38;5;241m=\u001b[39m steps_display[node]\n\u001b[0;32m---> 52\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(history[\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m], \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mmetadata\u001b[39m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;129;01mor\u001b[39;00m \u001b[43mhistory\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m]\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmetadata\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtitle\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m \u001b[38;5;241m!=\u001b[39m event_description: \u001b[38;5;66;03m# if a new step begins\u001b[39;00m\n\u001b[1;32m 53\u001b[0m history\u001b[38;5;241m.\u001b[39mappend(ChatMessage(role\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124massistant\u001b[39m\u001b[38;5;124m\"\u001b[39m, content \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\"\u001b[39m, metadata\u001b[38;5;241m=\u001b[39m{\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtitle\u001b[39m\u001b[38;5;124m'\u001b[39m :event_description}))\n\u001b[1;32m 55\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m event[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mname\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m!=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtransform_query\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m event[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mevent\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mon_chat_model_stream\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m node \u001b[38;5;129;01min\u001b[39;00m [\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124manswer_rag\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124manswer_search\u001b[39m\u001b[38;5;124m\"\u001b[39m]:\u001b[38;5;66;03m# if streaming answer\u001b[39;00m\n", + "\u001b[0;31mTypeError\u001b[0m: 'Metadata' object is not subscriptable" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---- Categorize_message ----\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "Output intent categorization: {'intent': 'search'}\n", + "\n", + "---- Transform query ----\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", + "/home/tim/ai4s/climate_qa/climate-question-answering/climateqa/engine/chains/graph_retriever.py:91: LangChainDeprecationWarning: The method `BaseRetriever.get_relevant_documents` was deprecated in langchain-core 0.1.46 and will be removed in 1.0. Use invoke instead.\n", + " docs_question = retriever.get_relevant_documents(question)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---- Retrieving graphs ----\n", + "Subquestion 0: What is radiative forcing and how does it affect climate change?\n", + "8 graphs retrieved for subquestion 1: [Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_386', 'returned_content': '', 'source': 'OWID', 'subtitle': \"This is shown as a country or region's share of the global mean surface temperature change as a result of its cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.\", 'url': 'https://ourworldindata.org/grapher/contributions-global-temp-change', 'similarity_score': 0.8423357605934143, 'content': 'Global warming: Contributions to the change in global mean surface temperature', 'reranking_score': 0.005384462885558605, 'query_used_for_retrieval': 'What is radiative forcing and how does it affect climate change?', 'sources_used': ['IEA', 'OWID']}, page_content='Global warming: Contributions to the change in global mean surface temperature'), Document(metadata={'category': 'Climate Change', 'doc_id': 'owid_780', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Nationally determined contributions (NDCs) embody efforts by each country to reduce national emissions and adapt to the impacts of climate change. The Paris Agreement requires each of the 193 Parties to prepare, communicate and maintain NDCs outlining what they intend to achieve. NDCs must be updated every five years.', 'url': 'https://ourworldindata.org/grapher/nationally-determined-contributions', 'similarity_score': 0.8526537418365479, 'content': 'Nationally determined contributions to climate change', 'reranking_score': 7.293858652701601e-05, 'query_used_for_retrieval': 'What is radiative forcing and how does it affect climate change?', 'sources_used': ['IEA', 'OWID']}, page_content='Nationally determined contributions to climate change'), Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_342', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Emissions factors quantify the average CO₂ output per unit of energy. They are measured in kilograms of CO₂ per megawatt-hour (MWh) of energy from various fossil fuel sources.', 'url': 'https://ourworldindata.org/grapher/carbon-dioxide-emissions-factor', 'similarity_score': 0.8662314414978027, 'content': 'Carbon dioxide emissions factors', 'reranking_score': 6.450313958339393e-05, 'query_used_for_retrieval': 'What is radiative forcing and how does it affect climate change?', 'sources_used': ['IEA', 'OWID']}, page_content='Carbon dioxide emissions factors'), Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_358', 'returned_content': '', 'source': 'OWID', 'subtitle': \"The global mean surface temperature change as a result of a country or region's cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.\", 'url': 'https://ourworldindata.org/grapher/contribution-to-temp-rise-by-gas', 'similarity_score': 0.8814464807510376, 'content': 'Contribution to global mean surface temperature rise by gas', 'reranking_score': 2.3544196665170603e-05, 'query_used_for_retrieval': 'What is radiative forcing and how does it affect climate change?', 'sources_used': ['IEA', 'OWID']}, page_content='Contribution to global mean surface temperature rise by gas'), Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_357', 'returned_content': '', 'source': 'OWID', 'subtitle': \"The global mean surface temperature change as a result of a country or region's cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.\", 'url': 'https://ourworldindata.org/grapher/contribution-temp-rise-degrees', 'similarity_score': 0.8828883171081543, 'content': 'Contribution to global mean surface temperature rise', 'reranking_score': 1.724368667055387e-05, 'query_used_for_retrieval': 'What is radiative forcing and how does it affect climate change?', 'sources_used': ['IEA', 'OWID']}, page_content='Contribution to global mean surface temperature rise'), Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_383', 'returned_content': '', 'source': 'OWID', 'subtitle': 'The global mean surface temperature change as a result of the cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.', 'url': 'https://ourworldindata.org/grapher/global-warming-by-gas-and-source', 'similarity_score': 0.8840625286102295, 'content': 'Global warming contributions by gas and source', 'reranking_score': 1.6588734069955535e-05, 'query_used_for_retrieval': 'What is radiative forcing and how does it affect climate change?', 'sources_used': ['IEA', 'OWID']}, page_content='Global warming contributions by gas and source'), Document(metadata={'category': 'Climate Change', 'doc_id': 'owid_767', 'returned_content': '', 'source': 'OWID', 'subtitle': 'This is measured at a nominal depth of 20cm, and given relative to the average temperature from the period of 1961 - 1990. Measured in degrees Celsius.', 'url': 'https://ourworldindata.org/grapher/sea-surface-temperature', 'similarity_score': 0.9009610414505005, 'content': 'Global warming: monthly sea surface temperature anomaly', 'reranking_score': 1.570666063344106e-05, 'query_used_for_retrieval': 'What is radiative forcing and how does it affect climate change?', 'sources_used': ['IEA', 'OWID']}, page_content='Global warming: monthly sea surface temperature anomaly'), Document(metadata={'category': 'Climate Change', 'doc_id': 'owid_768', 'returned_content': '', 'source': 'OWID', 'subtitle': \"The deviation of a specific year's average surface temperature from the 1991-2020 mean, in degrees Celsius.\", 'url': 'https://ourworldindata.org/grapher/global-yearly-surface-temperature-anomalies', 'similarity_score': 0.9119041562080383, 'content': 'Global yearly surface temperature anomalies', 'reranking_score': 1.5241118489939254e-05, 'query_used_for_retrieval': 'What is radiative forcing and how does it affect climate change?', 'sources_used': ['IEA', 'OWID']}, page_content='Global yearly surface temperature anomalies')]\n", + "Subquestion 1: What are the different types of radiative forcing and their impacts on the environment?\n", + "7 graphs retrieved for subquestion 2: [Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_342', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Emissions factors quantify the average CO₂ output per unit of energy. They are measured in kilograms of CO₂ per megawatt-hour (MWh) of energy from various fossil fuel sources.', 'url': 'https://ourworldindata.org/grapher/carbon-dioxide-emissions-factor', 'similarity_score': 0.8055480122566223, 'content': 'Carbon dioxide emissions factors', 'reranking_score': 2.3946791770868003e-05, 'query_used_for_retrieval': 'What are the different types of radiative forcing and their impacts on the environment?', 'sources_used': ['IEA', 'OWID']}, page_content='Carbon dioxide emissions factors'), Document(metadata={'category': 'Natural Disasters', 'doc_id': 'owid_1760', 'returned_content': '', 'source': 'OWID', 'subtitle': 'The annual reported number of natural disasters, categorised by type. The number of global reported natural disaster events in any given year. Note that this largely reflects increases in data reporting, and should not be used to assess the total number of events.', 'url': 'https://ourworldindata.org/grapher/natural-disasters-by-type', 'similarity_score': 0.8462469577789307, 'content': 'Global reported natural disasters by type', 'reranking_score': 1.6791396774351597e-05, 'query_used_for_retrieval': 'What are the different types of radiative forcing and their impacts on the environment?', 'sources_used': ['IEA', 'OWID']}, page_content='Global reported natural disasters by type'), Document(metadata={'category': 'Ozone Layer', 'doc_id': 'owid_1844', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Annual consumption of ozone-depleting substances. Emissions of each gas are given in ODP tonnes, which accounts for the quantity of gas emitted and how \"strong\" it is in terms of depleting ozone.', 'url': 'https://ourworldindata.org/grapher/ozone-depleting-substance-consumption', 'similarity_score': 0.8488471508026123, 'content': 'Emissions of ozone-depleting substances', 'reranking_score': 1.35105183289852e-05, 'query_used_for_retrieval': 'What are the different types of radiative forcing and their impacts on the environment?', 'sources_used': ['IEA', 'OWID']}, page_content='Emissions of ozone-depleting substances'), Document(metadata={'category': 'Ozone Layer', 'doc_id': 'owid_1847', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Ozone-depleting substance emissions are measured in ODP tonnes.', 'url': 'https://ourworldindata.org/grapher/ozone-depleting-substance-emissions', 'similarity_score': 0.8520827293395996, 'content': 'Ozone-depleting substance emissions', 'reranking_score': 1.2769949535140768e-05, 'query_used_for_retrieval': 'What are the different types of radiative forcing and their impacts on the environment?', 'sources_used': ['IEA', 'OWID']}, page_content='Ozone-depleting substance emissions'), Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_383', 'returned_content': '', 'source': 'OWID', 'subtitle': 'The global mean surface temperature change as a result of the cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.', 'url': 'https://ourworldindata.org/grapher/global-warming-by-gas-and-source', 'similarity_score': 0.8670639395713806, 'content': 'Global warming contributions by gas and source', 'reranking_score': 1.2466728549043182e-05, 'query_used_for_retrieval': 'What are the different types of radiative forcing and their impacts on the environment?', 'sources_used': ['IEA', 'OWID']}, page_content='Global warming contributions by gas and source'), Document(metadata={'category': 'Air Pollution', 'doc_id': 'owid_138', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Annual emissions of particulate matter from all human-induced sources. This is measured in terms of PM₁₀ and PM₂.₅, which denotes particulate matter less than 10 and 2.5 microns in diameter, respectively.', 'url': 'https://ourworldindata.org/grapher/emissions-of-particulate-matter', 'similarity_score': 0.8681329488754272, 'content': 'Emissions of particulate matter', 'reranking_score': 1.2325931493251119e-05, 'query_used_for_retrieval': 'What are the different types of radiative forcing and their impacts on the environment?', 'sources_used': ['IEA', 'OWID']}, page_content='Emissions of particulate matter'), Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_387', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Greenhouse gas emissions include carbon dioxide, methane and nitrous oxide from all sources, including land-use change. They are measured in tonnes of carbon dioxide-equivalents over a 100-year timescale.', 'url': 'https://ourworldindata.org/grapher/total-ghg-emissions', 'similarity_score': 0.8768877983093262, 'content': 'Greenhouse gas emissions', 'reranking_score': 1.1929207175853662e-05, 'query_used_for_retrieval': 'What are the different types of radiative forcing and their impacts on the environment?', 'sources_used': ['IEA', 'OWID']}, page_content='Greenhouse gas emissions')]\n", + "---- Retrieve documents ----\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING:langchain_core.callbacks.manager:Error in LogStreamCallbackHandler.on_chain_start callback: ValidationError(model='Run', errors=[{'loc': ('__root__',), 'msg': \"argument of type 'NoneType' is not iterable\", 'type': 'type_error'}])\n", + "WARNING:langchain_core.callbacks.manager:Error in LangChainTracer.on_chain_start callback: ValidationError(model='Run', errors=[{'loc': ('__root__',), 'msg': \"argument of type 'NoneType' is not iterable\", 'type': 'type_error'}])\n", + "WARNING:langchain_core.callbacks.manager:Error in LogStreamCallbackHandler.on_chain_end callback: TracerException('No indexed run ID d589b647-b2b8-4479-8654-0237320b13e7.')\n", + "WARNING:langchain_core.callbacks.manager:Error in LangChainTracer.on_chain_end callback: TracerException('No indexed run ID d589b647-b2b8-4479-8654-0237320b13e7.')\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---- Retrieve documents ----\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING:langchain_core.callbacks.manager:Error in LogStreamCallbackHandler.on_chain_start callback: ValidationError(model='Run', errors=[{'loc': ('__root__',), 'msg': \"argument of type 'NoneType' is not iterable\", 'type': 'type_error'}])\n", + "WARNING:langchain_core.callbacks.manager:Error in LangChainTracer.on_chain_start callback: ValidationError(model='Run', errors=[{'loc': ('__root__',), 'msg': \"argument of type 'NoneType' is not iterable\", 'type': 'type_error'}])\n", + "WARNING:langchain_core.callbacks.manager:Error in LogStreamCallbackHandler.on_chain_end callback: TracerException('No indexed run ID 3025729a-c358-4d18-b4eb-7564073fbde4.')\n", + "WARNING:langchain_core.callbacks.manager:Error in LangChainTracer.on_chain_end callback: TracerException('No indexed run ID 3025729a-c358-4d18-b4eb-7564073fbde4.')\n", + "WARNING:langchain_core.callbacks.manager:Error in LogStreamCallbackHandler.on_chain_start callback: ValidationError(model='Run', errors=[{'loc': ('__root__',), 'msg': \"argument of type 'NoneType' is not iterable\", 'type': 'type_error'}])\n", + "WARNING:langchain_core.callbacks.manager:Error in LangChainTracer.on_chain_start callback: ValidationError(model='Run', errors=[{'loc': ('__root__',), 'msg': \"argument of type 'NoneType' is not iterable\", 'type': 'type_error'}])\n", + "WARNING:langchain_core.callbacks.manager:Error in LogStreamCallbackHandler.on_chain_end callback: TracerException('No indexed run ID 16e0d163-397b-44a4-b854-0962de03abe9.')\n", + "WARNING:langchain_core.callbacks.manager:Error in LangChainTracer.on_chain_end callback: TracerException('No indexed run ID 16e0d163-397b-44a4-b854-0962de03abe9.')\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---- Answer RAG ----\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "Answer:\n", + "Radiative forcing is a key concept in understanding how human activities affect the Earth's climate. It refers to the change in energy balance in the Earth's atmosphere due to various factors, primarily greenhouse gases (GHGs) and aerosols. Here’s a breakdown of its impact:\n", + "\n", + "### What is Radiative Forcing?\n", + "- **Definition**: Radiative forcing measures how much energy is added to or taken away from the Earth's atmosphere. Positive radiative forcing leads to warming, while negative radiative forcing can cause cooling.\n", + "- **Current Status**: As of 2019, human-caused radiative forcing was estimated at 2.72 watts per square meter (W/m²) compared to pre-industrial levels (1750). This represents a significant increase, primarily due to higher concentrations of greenhouse gases like carbon dioxide (CO2) [Doc 1, Doc 9].\n", + "\n", + "### How Does It Affect the Climate?\n", + "- **Energy Accumulation**: The increase in radiative forcing results in more energy being trapped in the climate system, leading to an overall warming effect. The average rate of heating has risen from 0.50 W/m² (1971-2006) to 0.79 W/m² (2006-2018) [Doc 2].\n", + "- **Ocean Warming**: A large portion (91%) of this energy accumulation is absorbed by the oceans, which leads to rising sea temperatures. Other areas affected include land warming, ice loss, and atmospheric warming [Doc 2].\n", + "\n", + "### Contributions to Climate Change\n", + "- **Greenhouse Gases**: The primary driver of positive radiative forcing is the increase in greenhouse gases, which trap heat in the atmosphere. Since 2011, the contribution from GHGs has increased by 0.34 W/m² [Doc 1].\n", + "- **Aerosols**: While aerosols can have a cooling effect by reflecting sunlight, their overall impact is less than that of greenhouse gases. Changes in aerosol concentrations and their effects on climate are also being better understood [Doc 1, Doc 4].\n", + "\n", + "### Future Implications\n", + "- **Temperature Projections**: The cumulative emissions of CO2 and other greenhouse gases will determine the likelihood of limiting global warming to critical thresholds, such as 1.5°C above pre-industrial levels [Doc 3, Doc 12].\n", + "- **Policy and Action**: Understanding radiative forcing is crucial for developing effective climate policies aimed at reducing emissions and mitigating climate change impacts.\n", + "\n", + "In summary, radiative forcing is a fundamental concept that helps explain how human activities, particularly the release of greenhouse gases, are warming our planet. The ongoing changes in our climate system highlight the urgent need for action to reduce emissions and limit future warming.\n" + ] + } + ], + "source": [ + "from climateqa.engine.chains.prompts import audience_prompts\n", + "from front.utils import make_html_source,parse_output_llm_with_sources,serialize_docs,make_toolbox,generate_html_graphs\n", + "from gradio import ChatMessage\n", + "init_prompt = \"\"\n", + "\n", + "docs = []\n", + "docs_used = True\n", + "docs_html = \"\"\n", + "current_graphs = []\n", + "output_query = \"\"\n", + "output_language = \"\"\n", + "output_keywords = \"\"\n", + "gallery = []\n", + "updates = []\n", + "start_streaming = False\n", + "\n", + "steps_display = {\n", + " \"categorize_intent\":(\"🔄️ Analyzing user message\",True),\n", + " \"transform_query\":(\"🔄️ Thinking step by step to answer the question\",True),\n", + " \"retrieve_documents\":(\"🔄️ Searching in the knowledge base\",False),\n", + "}\n", + "query = \"what is the impact of radiative forcing\"\n", + "inputs = {\"user_input\": query,\"audience\": audience_prompts[\"general\"] ,\"sources\": [\"IPCC\", \"IPBES\", \"IPOS\"]}\n", + "history = [ChatMessage(role=\"assistant\", content=init_prompt)]\n", + "history + [ChatMessage(role=\"user\", content=query)]\n", + "\n", + "\n", + "result = app.astream_events(inputs,version = \"v1\") #{\"callbacks\":[MyCustomAsyncHandler()]})\n", + "\n", + "async for event in result:\n", + " if \"langgraph_node\" in event[\"metadata\"]:\n", + " node = event[\"metadata\"][\"langgraph_node\"]\n", + "\n", + " if event[\"event\"] == \"on_chain_end\" and event[\"name\"] == \"retrieve_documents\" :# when documents are retrieved\n", + " try:\n", + " docs = event[\"data\"][\"output\"][\"documents\"]\n", + " docs_html = []\n", + " for i, d in enumerate(docs, 1):\n", + " docs_html.append(make_html_source(d, i))\n", + " \n", + " used_documents = used_documents + [d.metadata[\"name\"] for d in docs]\n", + " history[-1].content = \"Adding sources :\\n\\n - \" + \"\\n - \".join(np.unique(used_documents))\n", + " \n", + " docs_html = \"\".join(docs_html)\n", + " \n", + " except Exception as e:\n", + " print(f\"Error getting documents: {e}\")\n", + " print(event)\n", + "\n", + " elif event[\"name\"] in steps_display.keys() and event[\"event\"] == \"on_chain_start\": #display steps\n", + " event_description,display_output = steps_display[node]\n", + " if not hasattr(history[-1], 'metadata') or history[-1].metadata[\"title\"] != event_description: # if a new step begins\n", + " history.append(ChatMessage(role=\"assistant\", content = \"\", metadata={'title' :event_description}))\n", + "\n", + " elif event[\"name\"] != \"transform_query\" and event[\"event\"] == \"on_chat_model_stream\" and node in [\"answer_rag\", \"answer_search\"]:# if streaming answer\n", + " if start_streaming == False:\n", + " start_streaming = True\n", + " history.append(ChatMessage(role=\"assistant\", content = \"\"))\n", + " answer_message_content += event[\"data\"][\"chunk\"].content\n", + " answer_message_content = parse_output_llm_with_sources(answer_message_content)\n", + " history[-1] = ChatMessage(role=\"assistant\", content = answer_message_content)\n", + " \n", + " elif event[\"name\"] in [\"retrieve_graphs\", \"retrieve_graphs_ai\"] and event[\"event\"] == \"on_chain_end\":\n", + " try:\n", + " recommended_content = event[\"data\"][\"output\"][\"recommended_content\"]\n", + " # graphs = [\n", + " # {\n", + " # \"embedding\": x.metadata[\"returned_content\"],\n", + " # \"metadata\": {\n", + " # \"source\": x.metadata[\"source\"],\n", + " # \"category\": x.metadata[\"category\"]\n", + " # }\n", + " # } for x in recommended_content if x.metadata[\"source\"] == \"OWID\"\n", + " # ]\n", + " \n", + " unique_graphs = []\n", + " seen_embeddings = set()\n", + "\n", + " for x in recommended_content:\n", + " embedding = x.metadata[\"returned_content\"]\n", + " \n", + " # Check if the embedding has already been seen\n", + " if embedding not in seen_embeddings:\n", + " unique_graphs.append({\n", + " \"embedding\": embedding,\n", + " \"metadata\": {\n", + " \"source\": x.metadata[\"source\"],\n", + " \"category\": x.metadata[\"category\"]\n", + " }\n", + " })\n", + " # Add the embedding to the seen set\n", + " seen_embeddings.add(embedding)\n", + "\n", + "\n", + " categories = {}\n", + " for graph in unique_graphs:\n", + " category = graph['metadata']['category']\n", + " if category not in categories:\n", + " categories[category] = []\n", + " categories[category].append(graph['embedding'])\n", + "\n", + " # graphs_html = \"\"\n", + " for category, embeddings in categories.items():\n", + " # graphs_html += f\"

{category}

\"\n", + " # current_graphs.append(f\"

{category}

\")\n", + " for embedding in embeddings:\n", + " current_graphs.append([embedding, category])\n", + " # graphs_html += f\"
{embedding}
\"\n", + " \n", + " except Exception as e:\n", + " print(f\"Error getting graphs: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "'Metadata' object is not subscriptable", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[33], line 49\u001b[0m\n\u001b[1;32m 47\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m event[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mname\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;129;01min\u001b[39;00m steps_display\u001b[38;5;241m.\u001b[39mkeys() \u001b[38;5;129;01mand\u001b[39;00m event[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mevent\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mon_chain_start\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;66;03m#display steps\u001b[39;00m\n\u001b[1;32m 48\u001b[0m event_description,display_output \u001b[38;5;241m=\u001b[39m steps_display[node]\n\u001b[0;32m---> 49\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(history[\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m], \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mmetadata\u001b[39m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;129;01mor\u001b[39;00m \u001b[43mhistory\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m]\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmetadata\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mtitle\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m \u001b[38;5;241m!=\u001b[39m event_description: \u001b[38;5;66;03m# if a new step begins\u001b[39;00m\n\u001b[1;32m 50\u001b[0m history\u001b[38;5;241m.\u001b[39mappend(ChatMessage(role\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124massistant\u001b[39m\u001b[38;5;124m\"\u001b[39m, content \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m\"\u001b[39m, metadata\u001b[38;5;241m=\u001b[39m{\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtitle\u001b[39m\u001b[38;5;124m'\u001b[39m :event_description}))\n\u001b[1;32m 52\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m event[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mname\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m!=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtransform_query\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m event[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mevent\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mon_chat_model_stream\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m node \u001b[38;5;129;01min\u001b[39;00m [\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124manswer_rag\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124manswer_search\u001b[39m\u001b[38;5;124m\"\u001b[39m]:\u001b[38;5;66;03m# if streaming answer\u001b[39;00m\n", + "\u001b[0;31mTypeError\u001b[0m: 'Metadata' object is not subscriptable" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---- Categorize_message ----\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "Output intent categorization: {'intent': 'search'}\n", + "\n", + "---- Transform query ----\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---- Retrieving graphs ----\n", + "Subquestion 0: What is radiative forcing and how does it affect climate change?\n", + "8 graphs retrieved for subquestion 1: [Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_386', 'returned_content': '', 'source': 'OWID', 'subtitle': \"This is shown as a country or region's share of the global mean surface temperature change as a result of its cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.\", 'url': 'https://ourworldindata.org/grapher/contributions-global-temp-change', 'similarity_score': 0.8423357605934143, 'content': 'Global warming: Contributions to the change in global mean surface temperature', 'reranking_score': 0.005384462885558605, 'query_used_for_retrieval': 'What is radiative forcing and how does it affect climate change?', 'sources_used': ['IEA', 'OWID']}, page_content='Global warming: Contributions to the change in global mean surface temperature'), Document(metadata={'category': 'Climate Change', 'doc_id': 'owid_780', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Nationally determined contributions (NDCs) embody efforts by each country to reduce national emissions and adapt to the impacts of climate change. The Paris Agreement requires each of the 193 Parties to prepare, communicate and maintain NDCs outlining what they intend to achieve. NDCs must be updated every five years.', 'url': 'https://ourworldindata.org/grapher/nationally-determined-contributions', 'similarity_score': 0.8526537418365479, 'content': 'Nationally determined contributions to climate change', 'reranking_score': 7.293858652701601e-05, 'query_used_for_retrieval': 'What is radiative forcing and how does it affect climate change?', 'sources_used': ['IEA', 'OWID']}, page_content='Nationally determined contributions to climate change'), Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_342', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Emissions factors quantify the average CO₂ output per unit of energy. They are measured in kilograms of CO₂ per megawatt-hour (MWh) of energy from various fossil fuel sources.', 'url': 'https://ourworldindata.org/grapher/carbon-dioxide-emissions-factor', 'similarity_score': 0.8662314414978027, 'content': 'Carbon dioxide emissions factors', 'reranking_score': 6.450313958339393e-05, 'query_used_for_retrieval': 'What is radiative forcing and how does it affect climate change?', 'sources_used': ['IEA', 'OWID']}, page_content='Carbon dioxide emissions factors'), Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_358', 'returned_content': '', 'source': 'OWID', 'subtitle': \"The global mean surface temperature change as a result of a country or region's cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.\", 'url': 'https://ourworldindata.org/grapher/contribution-to-temp-rise-by-gas', 'similarity_score': 0.8814464807510376, 'content': 'Contribution to global mean surface temperature rise by gas', 'reranking_score': 2.3544196665170603e-05, 'query_used_for_retrieval': 'What is radiative forcing and how does it affect climate change?', 'sources_used': ['IEA', 'OWID']}, page_content='Contribution to global mean surface temperature rise by gas'), Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_357', 'returned_content': '', 'source': 'OWID', 'subtitle': \"The global mean surface temperature change as a result of a country or region's cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.\", 'url': 'https://ourworldindata.org/grapher/contribution-temp-rise-degrees', 'similarity_score': 0.8828883171081543, 'content': 'Contribution to global mean surface temperature rise', 'reranking_score': 1.724368667055387e-05, 'query_used_for_retrieval': 'What is radiative forcing and how does it affect climate change?', 'sources_used': ['IEA', 'OWID']}, page_content='Contribution to global mean surface temperature rise'), Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_383', 'returned_content': '', 'source': 'OWID', 'subtitle': 'The global mean surface temperature change as a result of the cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.', 'url': 'https://ourworldindata.org/grapher/global-warming-by-gas-and-source', 'similarity_score': 0.8840625286102295, 'content': 'Global warming contributions by gas and source', 'reranking_score': 1.6588734069955535e-05, 'query_used_for_retrieval': 'What is radiative forcing and how does it affect climate change?', 'sources_used': ['IEA', 'OWID']}, page_content='Global warming contributions by gas and source'), Document(metadata={'category': 'Climate Change', 'doc_id': 'owid_767', 'returned_content': '', 'source': 'OWID', 'subtitle': 'This is measured at a nominal depth of 20cm, and given relative to the average temperature from the period of 1961 - 1990. Measured in degrees Celsius.', 'url': 'https://ourworldindata.org/grapher/sea-surface-temperature', 'similarity_score': 0.9009610414505005, 'content': 'Global warming: monthly sea surface temperature anomaly', 'reranking_score': 1.570666063344106e-05, 'query_used_for_retrieval': 'What is radiative forcing and how does it affect climate change?', 'sources_used': ['IEA', 'OWID']}, page_content='Global warming: monthly sea surface temperature anomaly'), Document(metadata={'category': 'Climate Change', 'doc_id': 'owid_768', 'returned_content': '', 'source': 'OWID', 'subtitle': \"The deviation of a specific year's average surface temperature from the 1991-2020 mean, in degrees Celsius.\", 'url': 'https://ourworldindata.org/grapher/global-yearly-surface-temperature-anomalies', 'similarity_score': 0.9119041562080383, 'content': 'Global yearly surface temperature anomalies', 'reranking_score': 1.5241118489939254e-05, 'query_used_for_retrieval': 'What is radiative forcing and how does it affect climate change?', 'sources_used': ['IEA', 'OWID']}, page_content='Global yearly surface temperature anomalies')]\n", + "Subquestion 1: What are the specific impacts of radiative forcing on global temperatures and weather patterns?\n", + "7 graphs retrieved for subquestion 2: [Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_386', 'returned_content': '', 'source': 'OWID', 'subtitle': \"This is shown as a country or region's share of the global mean surface temperature change as a result of its cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.\", 'url': 'https://ourworldindata.org/grapher/contributions-global-temp-change', 'similarity_score': 0.743827223777771, 'content': 'Global warming: Contributions to the change in global mean surface temperature', 'reranking_score': 0.02035224437713623, 'query_used_for_retrieval': 'What are the specific impacts of radiative forcing on global temperatures and weather patterns?', 'sources_used': ['IEA', 'OWID']}, page_content='Global warming: Contributions to the change in global mean surface temperature'), Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_357', 'returned_content': '', 'source': 'OWID', 'subtitle': \"The global mean surface temperature change as a result of a country or region's cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.\", 'url': 'https://ourworldindata.org/grapher/contribution-temp-rise-degrees', 'similarity_score': 0.7458232045173645, 'content': 'Contribution to global mean surface temperature rise', 'reranking_score': 0.010060282424092293, 'query_used_for_retrieval': 'What are the specific impacts of radiative forcing on global temperatures and weather patterns?', 'sources_used': ['IEA', 'OWID']}, page_content='Contribution to global mean surface temperature rise'), Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_358', 'returned_content': '', 'source': 'OWID', 'subtitle': \"The global mean surface temperature change as a result of a country or region's cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.\", 'url': 'https://ourworldindata.org/grapher/contribution-to-temp-rise-by-gas', 'similarity_score': 0.7628831267356873, 'content': 'Contribution to global mean surface temperature rise by gas', 'reranking_score': 0.0008739086915738881, 'query_used_for_retrieval': 'What are the specific impacts of radiative forcing on global temperatures and weather patterns?', 'sources_used': ['IEA', 'OWID']}, page_content='Contribution to global mean surface temperature rise by gas'), Document(metadata={'category': 'Climate Change', 'doc_id': 'owid_768', 'returned_content': '', 'source': 'OWID', 'subtitle': \"The deviation of a specific year's average surface temperature from the 1991-2020 mean, in degrees Celsius.\", 'url': 'https://ourworldindata.org/grapher/global-yearly-surface-temperature-anomalies', 'similarity_score': 0.7884460687637329, 'content': 'Global yearly surface temperature anomalies', 'reranking_score': 0.000565648078918457, 'query_used_for_retrieval': 'What are the specific impacts of radiative forcing on global temperatures and weather patterns?', 'sources_used': ['IEA', 'OWID']}, page_content='Global yearly surface temperature anomalies'), Document(metadata={'category': 'Natural Disasters', 'doc_id': 'owid_1759', 'returned_content': '', 'source': 'OWID', 'subtitle': 'This indicator shows annual anomalies compared with the average precipitation from 1901 to 2000 based on rainfall and snowfall measurements from land-based weather stations worldwide.', 'url': 'https://ourworldindata.org/grapher/global-precipitation-anomaly', 'similarity_score': 0.7976844906806946, 'content': 'Global precipitation anomaly', 'reranking_score': 0.00035785927320830524, 'query_used_for_retrieval': 'What are the specific impacts of radiative forcing on global temperatures and weather patterns?', 'sources_used': ['IEA', 'OWID']}, page_content='Global precipitation anomaly'), Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_359', 'returned_content': '', 'source': 'OWID', 'subtitle': \"The global mean surface temperature change as a result of a country or region's cumulative emissions of carbon dioxide, methane, and nitrous oxide. This is for land use and agriculture only.\", 'url': 'https://ourworldindata.org/grapher/global-warming-land', 'similarity_score': 0.8079851269721985, 'content': 'Contribution to global mean surface temperature rise from agriculture and land use', 'reranking_score': 0.00035303618642501533, 'query_used_for_retrieval': 'What are the specific impacts of radiative forcing on global temperatures and weather patterns?', 'sources_used': ['IEA', 'OWID']}, page_content='Contribution to global mean surface temperature rise from agriculture and land use'), Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_383', 'returned_content': '', 'source': 'OWID', 'subtitle': 'The global mean surface temperature change as a result of the cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.', 'url': 'https://ourworldindata.org/grapher/global-warming-by-gas-and-source', 'similarity_score': 0.8176379203796387, 'content': 'Global warming contributions by gas and source', 'reranking_score': 0.00030412289197556674, 'query_used_for_retrieval': 'What are the specific impacts of radiative forcing on global temperatures and weather patterns?', 'sources_used': ['IEA', 'OWID']}, page_content='Global warming contributions by gas and source')]\n", + "---- Retrieve documents ----\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "Answer:\n", + "Radiative forcing is a key concept in understanding how human activities affect the Earth's climate. It refers to the change in energy balance in the atmosphere due to various factors, primarily greenhouse gases (GHGs) and aerosols. Here’s a breakdown of its impact:\n", + "\n", + "### Key Points on Radiative Forcing:\n", + "\n", + "- **Human Influence**: Since the mid-18th century, human activities have significantly increased the concentration of greenhouse gases in the atmosphere, leading to a radiative forcing of approximately 2.72 watts per square meter (W/m²) by 2019. This represents a 19% increase since the last major assessment in 2014, primarily due to rising GHG levels [Doc 1, Doc 3].\n", + "\n", + "- **Energy Accumulation**: The increase in radiative forcing results in more energy being trapped in the climate system, which leads to warming. The average rate of heating has risen from 0.50 W/m² between 1971 and 2006 to 0.79 W/m² from 2006 to 2018. Most of this heat (91%) is absorbed by the oceans, while land, ice, and the atmosphere account for smaller portions [Doc 2].\n", + "\n", + "- **Cooling Effects**: While GHGs contribute to warming, aerosols (tiny particles in the atmosphere) can have a cooling effect. However, the overall impact of human-caused radiative forcing is still positive, meaning it leads to net warming [Doc 1].\n", + "\n", + "- **Future Implications**: The cumulative emissions of CO2 and other gases will determine how much the Earth warms in the future. For instance, limiting warming to 1.5°C above pre-industrial levels will require significant reductions in emissions [Doc 4, Doc 10].\n", + "\n", + "### Summary of Impacts:\n", + "- **Increased Global Temperatures**: The rise in radiative forcing is a major driver of global temperature increases, which can lead to more extreme weather events, rising sea levels, and disruptions to ecosystems.\n", + "- **Ocean Warming**: The majority of the heat from increased radiative forcing is absorbed by the oceans, which can affect marine life and weather patterns.\n", + "- **Long-term Climate Change**: Continued radiative forcing will have lasting effects on the climate, making it crucial to understand and mitigate these impacts through reduced emissions and other strategies.\n", + "\n", + "In summary, radiative forcing is a fundamental mechanism by which human activities are changing the climate, primarily through the increase of greenhouse gases, leading to significant warming and associated impacts on the environment and society [Doc 1, Doc 2, Doc 4].\n" + ] + } + ], + "source": [ + "from climateqa.engine.chains.prompts import audience_prompts\n", + "from front.utils import make_html_source,parse_output_llm_with_sources,serialize_docs,make_toolbox,generate_html_graphs\n", + "from gradio import ChatMessage\n", + "init_prompt = \"\"\n", + "\n", + "docs = []\n", + "docs_used = True\n", + "docs_html = \"\"\n", + "current_graphs = []\n", + "output_query = \"\"\n", + "output_language = \"\"\n", + "output_keywords = \"\"\n", + "gallery = []\n", + "updates = []\n", + "start_streaming = False\n", + "history = [ChatMessage(role=\"assistant\", content=init_prompt)]\n", + "steps_display = {\n", + " \"categorize_intent\":(\"🔄️ Analyzing user message\",True),\n", + " \"transform_query\":(\"🔄️ Thinking step by step to answer the question\",True),\n", + " \"retrieve_documents\":(\"🔄️ Searching in the knowledge base\",False),\n", + "}\n", + "query = \"what is the impact of radiative forcing\"\n", + "inputs = {\"user_input\": query,\"audience\": audience_prompts[\"general\"] ,\"sources\": [\"IPCC\", \"IPBES\", \"IPOS\"]}\n", + "\n", + "result = app.astream_events(inputs,version = \"v1\") #{\"callbacks\":[MyCustomAsyncHandler()]})\n", + "\n", + "async for event in result:\n", + " if \"langgraph_node\" in event[\"metadata\"]:\n", + " node = event[\"metadata\"][\"langgraph_node\"]\n", + "\n", + " if event[\"event\"] == \"on_chain_end\" and event[\"name\"] == \"retrieve_documents\" :# when documents are retrieved\n", + " try:\n", + " docs = event[\"data\"][\"output\"][\"documents\"]\n", + " docs_html = []\n", + " for i, d in enumerate(docs, 1):\n", + " docs_html.append(make_html_source(d, i))\n", + " \n", + " used_documents = used_documents + [d.metadata[\"name\"] for d in docs]\n", + " history[-1].content = \"Adding sources :\\n\\n - \" + \"\\n - \".join(np.unique(used_documents))\n", + " \n", + " docs_html = \"\".join(docs_html)\n", + " \n", + " except Exception as e:\n", + " print(f\"Error getting documents: {e}\")\n", + " print(event)\n", + "\n", + " elif event[\"name\"] in steps_display.keys() and event[\"event\"] == \"on_chain_start\": #display steps\n", + " event_description,display_output = steps_display[node]\n", + " if not hasattr(history[-1], 'metadata') or history[-1].metadata[\"title\"] != event_description: # if a new step begins\n", + " history.append(ChatMessage(role=\"assistant\", content = \"\", metadata={'title' :event_description}))\n", + "\n", + " elif event[\"name\"] != \"transform_query\" and event[\"event\"] == \"on_chat_model_stream\" and node in [\"answer_rag\", \"answer_search\"]:# if streaming answer\n", + " if start_streaming == False:\n", + " start_streaming = True\n", + " history.append(ChatMessage(role=\"assistant\", content = \"\"))\n", + " answer_message_content += event[\"data\"][\"chunk\"].content\n", + " answer_message_content = parse_output_llm_with_sources(answer_message_content)\n", + " history[-1] = ChatMessage(role=\"assistant\", content = answer_message_content)\n", + " \n", + " elif event[\"name\"] in [\"retrieve_graphs\", \"retrieve_graphs_ai\"] and event[\"event\"] == \"on_chain_end\":\n", + " try:\n", + " recommended_content = event[\"data\"][\"output\"][\"recommended_content\"]\n", + " # graphs = [\n", + " # {\n", + " # \"embedding\": x.metadata[\"returned_content\"],\n", + " # \"metadata\": {\n", + " # \"source\": x.metadata[\"source\"],\n", + " # \"category\": x.metadata[\"category\"]\n", + " # }\n", + " # } for x in recommended_content if x.metadata[\"source\"] == \"OWID\"\n", + " # ]\n", + " \n", + " unique_graphs = []\n", + " seen_embeddings = set()\n", + "\n", + " for x in recommended_content:\n", + " embedding = x.metadata[\"returned_content\"]\n", + " \n", + " # Check if the embedding has already been seen\n", + " if embedding not in seen_embeddings:\n", + " unique_graphs.append({\n", + " \"embedding\": embedding,\n", + " \"metadata\": {\n", + " \"source\": x.metadata[\"source\"],\n", + " \"category\": x.metadata[\"category\"]\n", + " }\n", + " })\n", + " # Add the embedding to the seen set\n", + " seen_embeddings.add(embedding)\n", + "\n", + "\n", + " categories = {}\n", + " for graph in unique_graphs:\n", + " category = graph['metadata']['category']\n", + " if category not in categories:\n", + " categories[category] = []\n", + " categories[category].append(graph['embedding'])\n", + "\n", + " # graphs_html = \"\"\n", + " for category, embeddings in categories.items():\n", + " # graphs_html += f\"

{category}

\"\n", + " # current_graphs.append(f\"

{category}

\")\n", + " for embedding in embeddings:\n", + " current_graphs.append([embedding, category])\n", + " # graphs_html += f\"
{embedding}
\"\n", + " \n", + " except Exception as e:\n", + " print(f\"Error getting graphs: {e}\")\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " # ### old\n", + " # if event[\"event\"] == \"on_chat_model_stream\" and event[\"metadata\"][\"langgraph_node\"] in [\"answer_rag\", \"answer_rag_no_docs\", \"answer_chitchat\", \"answer_ai_impact\"]:\n", + " # if start_streaming == False:\n", + " # start_streaming = True\n", + " # history.append(ChatMessage(role=\"assistant\", content = \"\"))\n", + "\n", + " # answer_message_content += event[\"data\"][\"chunk\"].content\n", + " # answer_message_content = parse_output_llm_with_sources(answer_message_content)\n", + " # history[-1] = ChatMessage(role=\"assistant\", content = answer_message_content)\n", + "\n", + "\n", + " # if docs_used is True and event[\"metadata\"][\"langgraph_node\"] in [\"answer_rag_no_docs\", \"answer_chitchat\", \"answer_ai_impact\"]:\n", + " # docs_used = False\n", + " \n", + " # elif docs_used is True and event[\"name\"] == \"retrieve_documents\" and event[\"event\"] == \"on_chain_end\":\n", + " # try:\n", + " # docs = event[\"data\"][\"output\"][\"documents\"]\n", + " # docs_html = []\n", + " # for i, d in enumerate(docs, 1):\n", + " # docs_html.append(make_html_source(d, i))\n", + " # docs_html = \"\".join(docs_html)\n", + "\n", + " # except Exception as e:\n", + " # print(f\"Error getting documents: {e}\")\n", + " # print(event)\n", + "\n", + " # elif event[\"name\"] == \"retrieve_documents\" and event[\"event\"] == \"on_chain_start\":\n", + " # print(event)\n", + " # questions = event[\"data\"][\"input\"][\"questions\"]\n", + " # questions = \"\\n\".join([f\"{i+1}. {q['question']} ({q['source']})\" for i,q in enumerate(questions)])\n", + " # answer_yet = \"🔄️ Searching in the knowledge base\\n{questions}\"\n", + " # history[-1] = (query,answer_yet)\n", + "\n", + " # elif event[\"name\"] in [\"retrieve_graphs\", \"retrieve_graphs_ai\"] and event[\"event\"] == \"on_chain_end\":\n", + " # try:\n", + " # recommended_content = event[\"data\"][\"output\"][\"recommended_content\"]\n", + " # # graphs = [\n", + " # # {\n", + " # # \"embedding\": x.metadata[\"returned_content\"],\n", + " # # \"metadata\": {\n", + " # # \"source\": x.metadata[\"source\"],\n", + " # # \"category\": x.metadata[\"category\"]\n", + " # # }\n", + " # # } for x in recommended_content if x.metadata[\"source\"] == \"OWID\"\n", + " # # ]\n", + " \n", + " # unique_graphs = []\n", + " # seen_embeddings = set()\n", + "\n", + " # for x in recommended_content:\n", + " # embedding = x.metadata[\"returned_content\"]\n", + " \n", + " # # Check if the embedding has already been seen\n", + " # if embedding not in seen_embeddings:\n", + " # unique_graphs.append({\n", + " # \"embedding\": embedding,\n", + " # \"metadata\": {\n", + " # \"source\": x.metadata[\"source\"],\n", + " # \"category\": x.metadata[\"category\"]\n", + " # }\n", + " # })\n", + " # # Add the embedding to the seen set\n", + " # seen_embeddings.add(embedding)\n", + "\n", + "\n", + " # categories = {}\n", + " # for graph in unique_graphs:\n", + " # category = graph['metadata']['category']\n", + " # if category not in categories:\n", + " # categories[category] = []\n", + " # categories[category].append(graph['embedding'])\n", + "\n", + " # # graphs_html = \"\"\n", + " # for category, embeddings in categories.items():\n", + " # # graphs_html += f\"

{category}

\"\n", + " # # current_graphs.append(f\"

{category}

\")\n", + " # for embedding in embeddings:\n", + " # current_graphs.append([embedding, category])\n", + " # # graphs_html += f\"
{embedding}
\"\n", + " \n", + " # except Exception as e:\n", + " # print(f\"Error getting graphs: {e}\")\n", + "\n", + " # elif event[\"name\"] in steps_display.keys() and event[\"event\"] == \"on_chain_start\": #display steps\n", + " # node = event[\"metadata\"][\"langgraph_node\"]\n", + " # event_description,display_output = steps_display[node]\n", + " # if not hasattr(history[-1], 'metadata') or history[-1].metadata[\"title\"] != event_description: # if a new step begins\n", + " # history.append(ChatMessage(role=\"assistant\", content = \"\", metadata={'title' :event_description}))\n", + "\n", + " # for event_name,(event_description,display_output) in steps_display.items():\n", + " # if event[\"name\"] == event_name:\n", + " # if event[\"event\"] == \"on_chain_start\":\n", + " # # answer_yet = f\"

{event_description}

\"\n", + " # # answer_yet = make_toolbox(event_description, \"\", checked = False)\n", + " # answer_yet = event_description\n", + "\n", + " # history[-1] = (query,answer_yet)\n", + " # elif event[\"event\"] == \"on_chain_end\":\n", + " # answer_yet = \"\"\n", + " # history[-1] = (query,answer_yet)\n", + " # if display_output:\n", + " # print(event[\"data\"][\"output\"])\n", + "\n", + " # if op['path'] == path_reformulation: # reforulated question\n", + " # try:\n", + " # output_language = op['value'][\"language\"] # str\n", + " # output_query = op[\"value\"][\"question\"]\n", + " # except Exception as e:\n", + " # raise gr.Error(f\"ClimateQ&A Error: {e} - The error has been noted, try another question and if the error remains, you can contact us :)\")\n", + " \n", + " # if op[\"path\"] == path_keywords:\n", + " # try:\n", + " # output_keywords = op['value'][\"keywords\"] # str\n", + " # output_keywords = \" AND \".join(output_keywords)\n", + " # except Exception as e:\n", + " # pass\n", + "\n", + "\n", + "\n", + " # history = [tuple(x) for x in history]" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---- Categorize_message ----\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "Output intent categorization: {'intent': 'search'}\n", + "\n", + "---- Transform query ----\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---- Retrieving graphs ----\n", + "Subquestion 0: What are the effects of climate change on the environment?\n", + "8 graphs retrieved for subquestion 1: [Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_349', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Consumption-based emissions are national emissions that have been adjusted for trade. This measures fossil fuel and industry emissions. Land-use change is not included.', 'url': 'https://ourworldindata.org/grapher/co2-emissions-and-gdp', 'similarity_score': 0.7941333055496216, 'content': 'Change in CO2 emissions and GDP', 'reranking_score': 0.279598593711853, 'query_used_for_retrieval': 'What are the effects of climate change on the environment?', 'sources_used': ['IEA', 'OWID']}, page_content='Change in CO2 emissions and GDP'), Document(metadata={'category': 'Climate Change', 'doc_id': 'owid_780', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Nationally determined contributions (NDCs) embody efforts by each country to reduce national emissions and adapt to the impacts of climate change. The Paris Agreement requires each of the 193 Parties to prepare, communicate and maintain NDCs outlining what they intend to achieve. NDCs must be updated every five years.', 'url': 'https://ourworldindata.org/grapher/nationally-determined-contributions', 'similarity_score': 0.7979490756988525, 'content': 'Nationally determined contributions to climate change', 'reranking_score': 0.012760520912706852, 'query_used_for_retrieval': 'What are the effects of climate change on the environment?', 'sources_used': ['IEA', 'OWID']}, page_content='Nationally determined contributions to climate change'), Document(metadata={'category': 'Climate Change', 'doc_id': 'owid_756', 'returned_content': '', 'source': 'OWID', 'subtitle': 'National adaptation plans are a means of identifying medium- and long-term climate change adaptation needs and developing and implementing strategies and programmes to address those needs.', 'url': 'https://ourworldindata.org/grapher/countries-with-national-adaptation-plans-for-climate-change', 'similarity_score': 0.7981775999069214, 'content': 'Countries with national adaptation plans for climate change', 'reranking_score': 0.004124350380152464, 'query_used_for_retrieval': 'What are the effects of climate change on the environment?', 'sources_used': ['IEA', 'OWID']}, page_content='Countries with national adaptation plans for climate change'), Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_386', 'returned_content': '', 'source': 'OWID', 'subtitle': \"This is shown as a country or region's share of the global mean surface temperature change as a result of its cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.\", 'url': 'https://ourworldindata.org/grapher/contributions-global-temp-change', 'similarity_score': 0.7989407181739807, 'content': 'Global warming: Contributions to the change in global mean surface temperature', 'reranking_score': 0.0036289971321821213, 'query_used_for_retrieval': 'What are the effects of climate change on the environment?', 'sources_used': ['IEA', 'OWID']}, page_content='Global warming: Contributions to the change in global mean surface temperature'), Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_383', 'returned_content': '', 'source': 'OWID', 'subtitle': 'The global mean surface temperature change as a result of the cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.', 'url': 'https://ourworldindata.org/grapher/global-warming-by-gas-and-source', 'similarity_score': 0.8071538805961609, 'content': 'Global warming contributions by gas and source', 'reranking_score': 0.0016414257697761059, 'query_used_for_retrieval': 'What are the effects of climate change on the environment?', 'sources_used': ['IEA', 'OWID']}, page_content='Global warming contributions by gas and source'), Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_350', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Consumption-based emissions include those from fossil fuels and industry. Land-use change emissions are not included.', 'url': 'https://ourworldindata.org/grapher/co2-emissions-and-gdp-per-capita', 'similarity_score': 0.8269157409667969, 'content': 'Change in per capita CO2 emissions and GDP', 'reranking_score': 0.00023705528292339295, 'query_used_for_retrieval': 'What are the effects of climate change on the environment?', 'sources_used': ['IEA', 'OWID']}, page_content='Change in per capita CO2 emissions and GDP'), Document(metadata={'category': 'Biodiversity', 'doc_id': 'owid_199', 'returned_content': '', 'source': 'OWID', 'subtitle': 'The number of species at risk of losing greater than 25% of their habitat as a result of agricultural expansion under business-as-usual projections to 2050. This is shown for countries with more than 25 species at risk.', 'url': 'https://ourworldindata.org/grapher/habitat-loss-25-species', 'similarity_score': 0.8301026225090027, 'content': 'Countries with more than 25 species at risk of losing more than 25% of their habitat by 2050', 'reranking_score': 7.497359911212698e-05, 'query_used_for_retrieval': 'What are the effects of climate change on the environment?', 'sources_used': ['IEA', 'OWID']}, page_content='Countries with more than 25 species at risk of losing more than 25% of their habitat by 2050'), Document(metadata={'category': 'Climate Change', 'doc_id': 'owid_782', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Share of young people in each surveyed country that responded \"yes\" to each statement about climate change. 1,000 young people, aged 16 to 25 years old, were surveyed in each country.', 'url': 'https://ourworldindata.org/grapher/opinions-young-people-climate', 'similarity_score': 0.8306424617767334, 'content': 'Opinions of young people on the threats of climate change', 'reranking_score': 2.747046346485149e-05, 'query_used_for_retrieval': 'What are the effects of climate change on the environment?', 'sources_used': ['IEA', 'OWID']}, page_content='Opinions of young people on the threats of climate change')]\n", + "Subquestion 1: How does climate change affect human health and society?\n", + "7 graphs retrieved for subquestion 2: [Document(metadata={'category': 'Climate Change', 'doc_id': 'owid_789', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Participants were asked to score beliefs on a scale from 0 to 100 on four questions: whether action was necessary to avoid a global catastrophe; humans were causing climate change; it was a serious threat to humanity; and was a global emergency.', 'url': 'https://ourworldindata.org/grapher/share-believe-climate', 'similarity_score': 0.7580230236053467, 'content': \"Share of people who believe in climate change and think it's a serious threat to humanity\", 'reranking_score': 0.005214352160692215, 'query_used_for_retrieval': 'How does climate change affect human health and society?', 'sources_used': ['IEA', 'OWID']}, page_content=\"Share of people who believe in climate change and think it's a serious threat to humanity\"), Document(metadata={'category': 'Climate Change', 'doc_id': 'owid_782', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Share of young people in each surveyed country that responded \"yes\" to each statement about climate change. 1,000 young people, aged 16 to 25 years old, were surveyed in each country.', 'url': 'https://ourworldindata.org/grapher/opinions-young-people-climate', 'similarity_score': 0.8168312311172485, 'content': 'Opinions of young people on the threats of climate change', 'reranking_score': 0.004852706100791693, 'query_used_for_retrieval': 'How does climate change affect human health and society?', 'sources_used': ['IEA', 'OWID']}, page_content='Opinions of young people on the threats of climate change'), Document(metadata={'category': 'Climate Change', 'doc_id': 'owid_756', 'returned_content': '', 'source': 'OWID', 'subtitle': 'National adaptation plans are a means of identifying medium- and long-term climate change adaptation needs and developing and implementing strategies and programmes to address those needs.', 'url': 'https://ourworldindata.org/grapher/countries-with-national-adaptation-plans-for-climate-change', 'similarity_score': 0.8196202516555786, 'content': 'Countries with national adaptation plans for climate change', 'reranking_score': 0.0012044497998431325, 'query_used_for_retrieval': 'How does climate change affect human health and society?', 'sources_used': ['IEA', 'OWID']}, page_content='Countries with national adaptation plans for climate change'), Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_386', 'returned_content': '', 'source': 'OWID', 'subtitle': \"This is shown as a country or region's share of the global mean surface temperature change as a result of its cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.\", 'url': 'https://ourworldindata.org/grapher/contributions-global-temp-change', 'similarity_score': 0.8402930498123169, 'content': 'Global warming: Contributions to the change in global mean surface temperature', 'reranking_score': 0.00041706717456690967, 'query_used_for_retrieval': 'How does climate change affect human health and society?', 'sources_used': ['IEA', 'OWID']}, page_content='Global warming: Contributions to the change in global mean surface temperature'), Document(metadata={'category': 'Climate Change', 'doc_id': 'owid_780', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Nationally determined contributions (NDCs) embody efforts by each country to reduce national emissions and adapt to the impacts of climate change. The Paris Agreement requires each of the 193 Parties to prepare, communicate and maintain NDCs outlining what they intend to achieve. NDCs must be updated every five years.', 'url': 'https://ourworldindata.org/grapher/nationally-determined-contributions', 'similarity_score': 0.8433299660682678, 'content': 'Nationally determined contributions to climate change', 'reranking_score': 0.00030759291257709265, 'query_used_for_retrieval': 'How does climate change affect human health and society?', 'sources_used': ['IEA', 'OWID']}, page_content='Nationally determined contributions to climate change'), Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_357', 'returned_content': '', 'source': 'OWID', 'subtitle': \"The global mean surface temperature change as a result of a country or region's cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.\", 'url': 'https://ourworldindata.org/grapher/contribution-temp-rise-degrees', 'similarity_score': 0.8584674596786499, 'content': 'Contribution to global mean surface temperature rise', 'reranking_score': 0.00025533974985592067, 'query_used_for_retrieval': 'How does climate change affect human health and society?', 'sources_used': ['IEA', 'OWID']}, page_content='Contribution to global mean surface temperature rise'), Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_317', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Percentage change in gross domestic product (GDP), population, and carbon dioxide (CO₂) emissions.', 'url': 'https://ourworldindata.org/grapher/co2-gdp-pop-growth', 'similarity_score': 0.8730868697166443, 'content': 'Annual change in GDP, population and CO2 emissions', 'reranking_score': 0.0002404096449026838, 'query_used_for_retrieval': 'How does climate change affect human health and society?', 'sources_used': ['IEA', 'OWID']}, page_content='Annual change in GDP, population and CO2 emissions')]\n", + "---- Retrieve documents ----\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING:langchain_core.callbacks.manager:Error in LangChainTracer.on_chain_start callback: ValidationError(model='Run', errors=[{'loc': ('__root__',), 'msg': \"argument of type 'NoneType' is not iterable\", 'type': 'type_error'}])\n", + "WARNING:langchain_core.callbacks.manager:Error in LangChainTracer.on_chain_end callback: TracerException('No indexed run ID aa00a789-394b-42e1-922b-28d51bd4c441.')\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---- Retrieve documents ----\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING:langchain_core.callbacks.manager:Error in LangChainTracer.on_chain_start callback: ValidationError(model='Run', errors=[{'loc': ('__root__',), 'msg': \"argument of type 'NoneType' is not iterable\", 'type': 'type_error'}])\n", + "WARNING:langchain_core.callbacks.manager:Error in LangChainTracer.on_chain_end callback: TracerException('No indexed run ID 511833e2-a8c6-4d5f-ace1-cb7978dcf3e7.')\n", + "WARNING:langchain_core.callbacks.manager:Error in LangChainTracer.on_chain_start callback: ValidationError(model='Run', errors=[{'loc': ('__root__',), 'msg': \"argument of type 'NoneType' is not iterable\", 'type': 'type_error'}])\n", + "WARNING:langchain_core.callbacks.manager:Error in LangChainTracer.on_chain_end callback: TracerException('No indexed run ID 561b415c-c77e-4ed7-82c8-9963ec1d1c7d.')\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---- Answer RAG ----\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "Answer:\n", + "Climate change has profound and multifaceted impacts on both human systems and the natural environment, with significant implications for health, biodiversity, agriculture, and infrastructure. Here are the key impacts:\n", + "\n", + "### 1. **Human Health**\n", + "- **Physical and Mental Health**: Climate change adversely affects physical health globally, leading to increased mortality and morbidity due to extreme heat events. It also exacerbates mental health issues, particularly in vulnerable populations [Doc 1, Doc 11].\n", + "- **Disease Dynamics**: There is a notable increase in climate-related diseases, including vector-borne diseases (e.g., malaria, dengue) due to the expansion of disease vectors. Additionally, the incidence of water- and food-borne diseases has risen, influenced by higher temperatures and increased rainfall, which can lead to outbreaks of diseases like cholera [Doc 1, Doc 13].\n", + "- **Food Security and Nutrition**: Climate change impacts food production through altered agricultural yields, which can lead to malnutrition and food insecurity, particularly in regions already facing challenges [Doc 2, Doc 6].\n", + "\n", + "### 2. **Biodiversity and Ecosystems**\n", + "- **Species and Habitat Changes**: Climate change drives shifts in species ranges, habitat locations, and seasonal timing, which can lead to biodiversity loss. Many species are unable to adapt or migrate quickly enough to cope with the rapid changes [Doc 4, Doc 9].\n", + "- **Ecosystem Functionality**: Changes in climate affect critical ecosystem functions such as water regulation, food production, and carbon sequestration. This can lead to decreased resilience of ecosystems and increased vulnerability to other stressors like pollution and habitat degradation [Doc 5, Doc 9].\n", + "\n", + "### 3. **Agriculture and Food Production**\n", + "- **Agricultural Yields**: Climate change directly affects agricultural productivity through changes in temperature, precipitation patterns, and CO2 concentrations. These changes can lead to reduced crop yields and increased pest populations, further threatening food security [Doc 6, Doc 10].\n", + "- **Land Degradation**: The interaction of climate change with other drivers of land degradation is expected to exacerbate the extent and severity of land degradation, complicating restoration efforts and necessitating new adaptive strategies [Doc 6].\n", + "\n", + "### 4. **Infrastructure and Urban Areas**\n", + "- **Impact on Cities**: Urban areas are particularly vulnerable to climate change, experiencing intensified heatwaves, flooding, and other extreme weather events. These impacts can compromise infrastructure, disrupt services, and lead to significant economic losses, disproportionately affecting marginalized communities [Doc 11, Doc 10].\n", + "- **Economic Implications**: The economic sectors are also at risk, with climate change causing damage to cities and infrastructure, which can hinder development and adaptation efforts [Doc 2, Doc 10].\n", + "\n", + "### 5. **Interconnectedness of Impacts**\n", + "- The effects of climate change are compounded by interactions with other environmental, socio-cultural, political, and economic drivers, making the challenges more complex and requiring integrated approaches for mitigation and adaptation [Doc 12, Doc 10].\n", + "\n", + "In summary, climate change poses significant risks across various domains, necessitating urgent action to mitigate its impacts and adapt to the changing conditions. The interplay between health, biodiversity, agriculture, and infrastructure highlights the need for comprehensive strategies to address these interconnected challenges.\n" + ] + }, + { + "data": { + "text/plain": [ + "{'user_input': 'what is the impact of climate change ?',\n", + " 'language': 'English',\n", + " 'intent': 'search',\n", + " 'query': 'what is the impact of climate change ?',\n", + " 'remaining_questions': [],\n", + " 'n_questions': 2,\n", + " 'answer': 'Climate change has profound and multifaceted impacts on both human systems and the natural environment, with significant implications for health, biodiversity, agriculture, and infrastructure. Here are the key impacts:\\n\\n### 1. **Human Health**\\n- **Physical and Mental Health**: Climate change adversely affects physical health globally, leading to increased mortality and morbidity due to extreme heat events. It also exacerbates mental health issues, particularly in vulnerable populations [Doc 1, Doc 11].\\n- **Disease Dynamics**: There is a notable increase in climate-related diseases, including vector-borne diseases (e.g., malaria, dengue) due to the expansion of disease vectors. Additionally, the incidence of water- and food-borne diseases has risen, influenced by higher temperatures and increased rainfall, which can lead to outbreaks of diseases like cholera [Doc 1, Doc 13].\\n- **Food Security and Nutrition**: Climate change impacts food production through altered agricultural yields, which can lead to malnutrition and food insecurity, particularly in regions already facing challenges [Doc 2, Doc 6].\\n\\n### 2. **Biodiversity and Ecosystems**\\n- **Species and Habitat Changes**: Climate change drives shifts in species ranges, habitat locations, and seasonal timing, which can lead to biodiversity loss. Many species are unable to adapt or migrate quickly enough to cope with the rapid changes [Doc 4, Doc 9].\\n- **Ecosystem Functionality**: Changes in climate affect critical ecosystem functions such as water regulation, food production, and carbon sequestration. This can lead to decreased resilience of ecosystems and increased vulnerability to other stressors like pollution and habitat degradation [Doc 5, Doc 9].\\n\\n### 3. **Agriculture and Food Production**\\n- **Agricultural Yields**: Climate change directly affects agricultural productivity through changes in temperature, precipitation patterns, and CO2 concentrations. These changes can lead to reduced crop yields and increased pest populations, further threatening food security [Doc 6, Doc 10].\\n- **Land Degradation**: The interaction of climate change with other drivers of land degradation is expected to exacerbate the extent and severity of land degradation, complicating restoration efforts and necessitating new adaptive strategies [Doc 6].\\n\\n### 4. **Infrastructure and Urban Areas**\\n- **Impact on Cities**: Urban areas are particularly vulnerable to climate change, experiencing intensified heatwaves, flooding, and other extreme weather events. These impacts can compromise infrastructure, disrupt services, and lead to significant economic losses, disproportionately affecting marginalized communities [Doc 11, Doc 10].\\n- **Economic Implications**: The economic sectors are also at risk, with climate change causing damage to cities and infrastructure, which can hinder development and adaptation efforts [Doc 2, Doc 10].\\n\\n### 5. **Interconnectedness of Impacts**\\n- The effects of climate change are compounded by interactions with other environmental, socio-cultural, political, and economic drivers, making the challenges more complex and requiring integrated approaches for mitigation and adaptation [Doc 12, Doc 10].\\n\\nIn summary, climate change poses significant risks across various domains, necessitating urgent action to mitigate its impacts and adapt to the changing conditions. The interplay between health, biodiversity, agriculture, and infrastructure highlights the need for comprehensive strategies to address these interconnected challenges.',\n", + " 'audience': 'scientifique',\n", + " 'documents': [Document(metadata={'chunk_type': 'text', 'document_id': 'document4', 'document_number': 4.0, 'element_id': 'N/A', 'figure_code': 'N/A', 'file_size': 'N/A', 'image_path': 'N/A', 'n_pages': 34.0, 'name': 'Summary for Policymakers. In: Climate Change 2022: Impacts, Adaptation and Vulnerability. Contribution of the WGII to the AR6 of the IPCC', 'num_characters': 1223.0, 'num_tokens': 225.0, 'num_tokens_approx': 272.0, 'num_words': 204.0, 'page_number': 11, 'release_date': 2022.0, 'report_type': 'SPM', 'section_header': '(b) Observed impacts of climate change on human systems', 'short_name': 'IPCC AR6 WGII SPM', 'source': 'IPCC', 'toc_level0': 'B: Observed and Projected Impacts and Risks', 'toc_level1': 'Observed Impacts from Climate Change', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://www.ipcc.ch/report/ar6/wg2/downloads/report/IPCC_AR6_WGII_SummaryForPolicymakers.pdf', 'similarity_score': 0.783784747, 'content': 'B.1.4 Climate change has adversely affected physical health of people globally (very high confidence) and mental health of people in the assessed regions (very high confidence). Climate change impacts on health are mediated through natural and human systems, including economic and social conditions and disruptions (high confidence). In all regions extreme heat events have resulted in human mortality and morbidity (very high confidence). The occurrence of climate-related food-borne and water-borne diseases has increased (very high confidence). The incidence of vector-borne diseases has increased from range expansion and/or increased reproduction of disease vectors (high confidence). Animal and human diseases, including zoonoses, are emerging in new areas (high confidence). Water and food-borne disease risks have increased regionally from climate-sensitive aquatic pathogens, including Vibrio spp. (high confidence), and from toxic substances from harmful freshwater cyanobacteria (medium confidence). Although diarrheal diseases have decreased globally, higher temperatures, increased rain and flooding have increased the occurrence of diarrheal diseases, including cholera (very high confidence)', 'reranking_score': 0.9999046325683594, 'query_used_for_retrieval': 'How does climate change affect human health and society?', 'sources_used': ['IPOS', 'IPCC', 'IPBES'], 'question_used': 'How does climate change affect human health and society?', 'index_used': 'Vector'}, page_content='B.1.4 Climate change has adversely affected physical health of people globally (very high confidence) and mental health of people in the assessed regions (very high confidence). Climate change impacts on health are mediated through natural and human systems, including economic and social conditions and disruptions (high confidence). In all regions extreme heat events have resulted in human mortality and morbidity (very high confidence). The occurrence of climate-related food-borne and water-borne diseases has increased (very high confidence). The incidence of vector-borne diseases has increased from range expansion and/or increased reproduction of disease vectors (high confidence). Animal and human diseases, including zoonoses, are emerging in new areas (high confidence). Water and food-borne disease risks have increased regionally from climate-sensitive aquatic pathogens, including Vibrio spp. (high confidence), and from toxic substances from harmful freshwater cyanobacteria (medium confidence). Although diarrheal diseases have decreased globally, higher temperatures, increased rain and flooding have increased the occurrence of diarrheal diseases, including cholera (very high confidence)'),\n", + " Document(metadata={'chunk_type': 'image', 'document_id': 'document4', 'document_number': 4.0, 'element_id': 'Picture_1_9', 'figure_code': 'Figure SPM.2', 'file_size': 221.7900390625, 'image_path': '/dbfs/mnt/ai4sclqa/raw/climateqa/documents/document4/images/Picture_1_9.png', 'n_pages': 34.0, 'name': 'Summary for Policymakers. In: Climate Change 2022: Impacts, Adaptation and Vulnerability. Contribution of the WGII to the AR6 of the IPCC', 'num_characters': 'N/A', 'num_tokens': 'N/A', 'num_tokens_approx': 'N/A', 'num_words': 'N/A', 'page_number': 10, 'release_date': 2022.0, 'report_type': 'SPM', 'section_header': 'N/A', 'short_name': 'IPCC AR6 WGII SPM', 'source': 'IPCC', 'toc_level0': 'B: Observed and Projected Impacts and Risks', 'toc_level1': 'Observed Impacts from Climate Change', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://www.ipcc.ch/report/ar6/wg2/downloads/report/IPCC_AR6_WGII_SummaryForPolicymakers.pdf', 'similarity_score': 0.753355443, 'content': \"Summary: This visual summarizes the observed impacts of climate change on various human systems across different global regions, including effects on water scarcity, food production (agriculture, livestock, fisheries), human health (infectious diseases, malnutrition, mental health), displacement, and the damage to cities, infrastructure, and economic sectors. The graphic highlights the degree of confidence in the attribution of these impacts to climate change, with varied confidence levels indicated by the color and filling of symbols for global assessments and regional assessments. Each region's row indicates the observed impacts, allowing a comparison of how climate change has differentially affected human systems around the world.\", 'reranking_score': 0.9998388290405273, 'query_used_for_retrieval': 'How does climate change affect human health and society?', 'sources_used': ['IPOS', 'IPCC', 'IPBES'], 'question_used': 'How does climate change affect human health and society?', 'index_used': 'Vector'}, page_content=\"Summary: This visual summarizes the observed impacts of climate change on various human systems across different global regions, including effects on water scarcity, food production (agriculture, livestock, fisheries), human health (infectious diseases, malnutrition, mental health), displacement, and the damage to cities, infrastructure, and economic sectors. The graphic highlights the degree of confidence in the attribution of these impacts to climate change, with varied confidence levels indicated by the color and filling of symbols for global assessments and regional assessments. Each region's row indicates the observed impacts, allowing a comparison of how climate change has differentially affected human systems around the world.\"),\n", + " Document(metadata={'chunk_type': 'text', 'document_id': 'document10', 'document_number': 10.0, 'element_id': 'N/A', 'figure_code': 'N/A', 'file_size': 'N/A', 'image_path': 'N/A', 'n_pages': 36.0, 'name': 'Synthesis report of the IPCC Sixth Assesment Report AR6', 'num_characters': 416.0, 'num_tokens': 74.0, 'num_tokens_approx': 84.0, 'num_words': 63.0, 'page_number': 13, 'release_date': 2023.0, 'report_type': 'SPM', 'section_header': 'Observed Changes and Impacts', 'short_name': 'IPCC AR6 SYR', 'source': 'IPCC', 'toc_level0': 'N/A', 'toc_level1': 'N/A', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://www.ipcc.ch/report/ar6/syr/downloads/report/IPCC_AR6_SYR_SPM.pdf', 'similarity_score': 0.739644825, 'content': 'Adverse impacts from human-caused climate change will continue to intensify\\na) Observed widespread and substantial impacts and related losses and damages attributed to climate change\\nHealth and well-being\\nWater availability and food production \\nCities, settlements and infrastructure\\nb) Impacts are driven by changes in multiple physical climate conditions, which are increasingly attributed to human influence', 'reranking_score': 0.9997883439064026, 'query_used_for_retrieval': 'How does climate change affect human health and society?', 'sources_used': ['IPOS', 'IPCC', 'IPBES'], 'question_used': 'How does climate change affect human health and society?', 'index_used': 'Vector'}, page_content='Adverse impacts from human-caused climate change will continue to intensify\\na) Observed widespread and substantial impacts and related losses and damages attributed to climate change\\nHealth and well-being\\nWater availability and food production \\nCities, settlements and infrastructure\\nb) Impacts are driven by changes in multiple physical climate conditions, which are increasingly attributed to human influence'),\n", + " Document(metadata={'chunk_type': 'text', 'document_id': 'document34', 'document_number': 34.0, 'element_id': 'N/A', 'figure_code': 'N/A', 'file_size': 'N/A', 'image_path': 'N/A', 'n_pages': 52.0, 'name': 'Summary for Policymakers. Regional Assessment Report on Biodiversity and Ecosystem Services for Europe and Central Asia', 'num_characters': 827.0, 'num_tokens': 206.0, 'num_tokens_approx': 226.0, 'num_words': 170.0, 'page_number': 30, 'release_date': 2018.0, 'report_type': 'SPM', 'section_header': \"Figure SPM 8 Trends in direct drivers of biodiversity and nature's contributions to people in the \\r\\nlast 20 years.\", 'short_name': 'IPBES RAR ECA SPM', 'source': 'IPBES', 'toc_level0': 'N/A', 'toc_level1': 'N/A', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://zenodo.org/record/3237468/files/ipbes_assessment_spm_eca_EN.pdf', 'similarity_score': 0.742851615, 'content': 'Climate change shifts seasonal timing, growth and productivity, species ranges and habitat location, which affects biodiversity, agriculture, forestry, and fisheries (well \\nestablished) {4.7.1.1, 4.7.1.3}. Many species will not migrate or adapt fast enough to keep pace with projected rates of climate change (established but incomplete) {4.7.1}. Droughts decrease biomass productivity, increase biodiversity loss and net carbon flux to the atmosphere, and decrease water quality in aquatic systems (established but incomplete) {4.7.1.2, 5.2}. Climate change causes ocean acidification, rising sea levels and changes ocean stratification, reducing biodiversity, growth and productivity, impairing fisheries and increasing CO2 release into the atmosphere (established but incomplete) {4.7.1.1, 4.7.1.3}.', 'reranking_score': 0.9997496008872986, 'query_used_for_retrieval': 'What are the effects of climate change on the environment?', 'sources_used': ['IPOS', 'IPCC', 'IPBES'], 'question_used': 'What are the effects of climate change on the environment?', 'index_used': 'Vector'}, page_content='Climate change shifts seasonal timing, growth and productivity, species ranges and habitat location, which affects biodiversity, agriculture, forestry, and fisheries (well \\nestablished) {4.7.1.1, 4.7.1.3}. Many species will not migrate or adapt fast enough to keep pace with projected rates of climate change (established but incomplete) {4.7.1}. Droughts decrease biomass productivity, increase biodiversity loss and net carbon flux to the atmosphere, and decrease water quality in aquatic systems (established but incomplete) {4.7.1.2, 5.2}. Climate change causes ocean acidification, rising sea levels and changes ocean stratification, reducing biodiversity, growth and productivity, impairing fisheries and increasing CO2 release into the atmosphere (established but incomplete) {4.7.1.1, 4.7.1.3}.'),\n", + " Document(metadata={'chunk_type': 'text', 'document_id': 'document30', 'document_number': 30.0, 'element_id': 'N/A', 'figure_code': 'N/A', 'file_size': 'N/A', 'image_path': 'N/A', 'n_pages': 44.0, 'name': 'Summary for Policymakers. Regional Assessment Report on Biodiversity and Ecosystem Services for the Americas', 'num_characters': 886.0, 'num_tokens': 173.0, 'num_tokens_approx': 194.0, 'num_words': 146.0, 'page_number': 15, 'release_date': 2018.0, 'report_type': 'SPM', 'section_header': \"C. DRIVERS OF TRENDS IN \\r\\nBIODIVERSITY AND NATURE'S \\r\\nCONTRIBUTIONS TO PEOPLE\", 'short_name': 'IPBES RAR AM SPM', 'source': 'IPBES', 'toc_level0': 'N/A', 'toc_level1': 'N/A', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://zenodo.org/record/3236292/files/ipbes_assessment_spm_americas_EN.pdf', 'similarity_score': 0.734894216, 'content': \"C4 Human-induced climate change is becoming an increasingly important direct driver, amplifying the impacts of other drivers (i.e., habitat degradation, pollution, invasive species and overexploitation) through changes in temperature, precipitation and the nature of some extreme events. Regional changes in temperature of the atmosphere and the ocean will be accompanied by changes in glacial extent, rainfall, river discharge, wind and ocean currents and sea level, among many other environmental features, which, on balance, have had adverse impacts on biodiversity and nature's contributions to people. The majority of ecosystems in the Americas have already experienced increased mean and extreme temperatures and/or, in some places, mean and \\nextreme precipitation, causing changes in species distributions and interactions and in ecosystem boundaries.\", 'reranking_score': 0.9997311234474182, 'query_used_for_retrieval': 'What are the effects of climate change on the environment?', 'sources_used': ['IPOS', 'IPCC', 'IPBES'], 'question_used': 'What are the effects of climate change on the environment?', 'index_used': 'Vector'}, page_content=\"C4 Human-induced climate change is becoming an increasingly important direct driver, amplifying the impacts of other drivers (i.e., habitat degradation, pollution, invasive species and overexploitation) through changes in temperature, precipitation and the nature of some extreme events. Regional changes in temperature of the atmosphere and the ocean will be accompanied by changes in glacial extent, rainfall, river discharge, wind and ocean currents and sea level, among many other environmental features, which, on balance, have had adverse impacts on biodiversity and nature's contributions to people. The majority of ecosystems in the Americas have already experienced increased mean and extreme temperatures and/or, in some places, mean and \\nextreme precipitation, causing changes in species distributions and interactions and in ecosystem boundaries.\"),\n", + " Document(metadata={'chunk_type': 'text', 'document_id': 'document36', 'document_number': 36.0, 'element_id': 'N/A', 'figure_code': 'N/A', 'file_size': 'N/A', 'image_path': 'N/A', 'n_pages': 48.0, 'name': 'Summary for Policymakers. Assessment Report on Land Degradation and Restoration', 'num_characters': 978.0, 'num_tokens': 211.0, 'num_tokens_approx': 248.0, 'num_words': 186.0, 'page_number': 34, 'release_date': 2018.0, 'report_type': 'SPM', 'section_header': 'Figure SPM 11 Illustration of the biodiversity impacts of international trade in 2000. ', 'short_name': 'IPBES AR LDR SPM', 'source': 'IPBES', 'toc_level0': 'N/A', 'toc_level1': 'N/A', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://zenodo.org/records/3237411/files/ipbes_assessment_spm_ldra_EN.pdf?download=1', 'similarity_score': 0.727124453, 'content': '25 Climate change threatens to become an increasingly important driver of land degradation throughout the twenty-first century, exacerbating both the extent and severity of land degradation as well as reducing the effectiveness and sustainability of restoration options {3.4}. Climate change can have a direct effect on agricultural yields, through changes in the means and extremes of temperature, precipitation and CO2 concentrations, as well as on species distributions and population dynamics, for instance, pest species {3.4.1, 3.4.2, 3.4.4, 4.2.8, 7.2.6}. However, the greatest effects of climate change on land is likely to come from interactions with other degradation drivers {3.4.5}. Long-established sustainable land management and restoration practices may no longer be viable under future climatic regimes in the places where they were developed, requiring rapid adaptation and innovation, but also opening new opportunities {3.5}.', 'reranking_score': 0.9997143149375916, 'query_used_for_retrieval': 'What are the effects of climate change on the environment?', 'sources_used': ['IPOS', 'IPCC', 'IPBES'], 'question_used': 'What are the effects of climate change on the environment?', 'index_used': 'Vector'}, page_content='25 Climate change threatens to become an increasingly important driver of land degradation throughout the twenty-first century, exacerbating both the extent and severity of land degradation as well as reducing the effectiveness and sustainability of restoration options {3.4}. Climate change can have a direct effect on agricultural yields, through changes in the means and extremes of temperature, precipitation and CO2 concentrations, as well as on species distributions and population dynamics, for instance, pest species {3.4.1, 3.4.2, 3.4.4, 4.2.8, 7.2.6}. However, the greatest effects of climate change on land is likely to come from interactions with other degradation drivers {3.4.5}. Long-established sustainable land management and restoration practices may no longer be viable under future climatic regimes in the places where they were developed, requiring rapid adaptation and innovation, but also opening new opportunities {3.5}.'),\n", + " Document(metadata={'chunk_type': 'text', 'document_id': 'document30', 'document_number': 30.0, 'element_id': 'N/A', 'figure_code': 'N/A', 'file_size': 'N/A', 'image_path': 'N/A', 'n_pages': 44.0, 'name': 'Summary for Policymakers. Regional Assessment Report on Biodiversity and Ecosystem Services for the Americas', 'num_characters': 290.0, 'num_tokens': 65.0, 'num_tokens_approx': 77.0, 'num_words': 58.0, 'page_number': 29, 'release_date': 2018.0, 'report_type': 'SPM', 'section_header': \"C. Drivers of trends in biodiversity \\r\\nand nature's contributions to people \", 'short_name': 'IPBES RAR AM SPM', 'source': 'IPBES', 'toc_level0': 'N/A', 'toc_level1': 'N/A', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://zenodo.org/record/3236292/files/ipbes_assessment_spm_americas_EN.pdf', 'similarity_score': 0.725049078, 'content': 'is also associated with trends of accelerated tree mortality in tropical forests {4.4.3}. Climate change is likely to have a substantial impact on mangrove ecosystems through factors including sea level rise, changing ocean currents increased temperature and others {4.4.3, 5.4.11}.', 'reranking_score': 0.9997047781944275, 'query_used_for_retrieval': 'What are the effects of climate change on the environment?', 'sources_used': ['IPOS', 'IPCC', 'IPBES'], 'question_used': 'What are the effects of climate change on the environment?', 'index_used': 'Vector'}, page_content='is also associated with trends of accelerated tree mortality in tropical forests {4.4.3}. Climate change is likely to have a substantial impact on mangrove ecosystems through factors including sea level rise, changing ocean currents increased temperature and others {4.4.3, 5.4.11}.'),\n", + " Document(metadata={'chunk_type': 'image', 'document_id': 'document10', 'document_number': 10.0, 'element_id': 'Picture_0_12', 'figure_code': 'N/A', 'file_size': 109.03125, 'image_path': '/dbfs/mnt/ai4sclqa/raw/climateqa/documents/document10/images/Picture_0_12.png', 'n_pages': 36.0, 'name': 'Synthesis report of the IPCC Sixth Assesment Report AR6', 'num_characters': 'N/A', 'num_tokens': 'N/A', 'num_tokens_approx': 'N/A', 'num_words': 'N/A', 'page_number': 13, 'release_date': 2023.0, 'report_type': 'SPM', 'section_header': 'N/A', 'short_name': 'IPCC AR6 SYR', 'source': 'IPCC', 'toc_level0': 'N/A', 'toc_level1': 'N/A', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://www.ipcc.ch/report/ar6/syr/downloads/report/IPCC_AR6_SYR_SPM.pdf', 'similarity_score': 0.721349299, 'content': 'Summary: This image provides a visual summary of the impacts of climate change on various aspects such as health, well-being, agriculture, water availability, and ecosystems. It shows the relationships between physical climate conditions altered by human influence and the consequential effects on food production, human health, and biodiversity. The visual icons depict specific areas affected by climate change, including crop production, animal and livestock health, fisheries, infectious diseases, mental health, and displacement due to extreme weather events. Additionally, it addresses the impacts on cities, settlements, and infrastructure, illustrating issues like inland flooding, storm-induced coastal damage, and damage to key economic sectors. For biodiversity, it highlights the changes occurring in terrestrial, freshwater, and ocean ecosystems. These elements are critical for understanding targeted areas for climate resilience and adaptation strategies.', 'reranking_score': 0.9997047781944275, 'query_used_for_retrieval': 'What are the effects of climate change on the environment?', 'sources_used': ['IPOS', 'IPCC', 'IPBES'], 'question_used': 'What are the effects of climate change on the environment?', 'index_used': 'Vector'}, page_content='Summary: This image provides a visual summary of the impacts of climate change on various aspects such as health, well-being, agriculture, water availability, and ecosystems. It shows the relationships between physical climate conditions altered by human influence and the consequential effects on food production, human health, and biodiversity. The visual icons depict specific areas affected by climate change, including crop production, animal and livestock health, fisheries, infectious diseases, mental health, and displacement due to extreme weather events. Additionally, it addresses the impacts on cities, settlements, and infrastructure, illustrating issues like inland flooding, storm-induced coastal damage, and damage to key economic sectors. For biodiversity, it highlights the changes occurring in terrestrial, freshwater, and ocean ecosystems. These elements are critical for understanding targeted areas for climate resilience and adaptation strategies.'),\n", + " Document(metadata={'chunk_type': 'text', 'document_id': 'document33', 'document_number': 33.0, 'element_id': 'N/A', 'figure_code': 'N/A', 'file_size': 'N/A', 'image_path': 'N/A', 'n_pages': 894.0, 'name': 'Full Report. Regional Assessment Report on Biodiversity and Ecosystem Services for Europe and Central Asia', 'num_characters': 918.0, 'num_tokens': 233.0, 'num_tokens_approx': 230.0, 'num_words': 173.0, 'page_number': 530, 'release_date': 2018.0, 'report_type': 'Full Report', 'section_header': '4.7 DRIVERS AND \\r\\nEFFECTS OF CLIMATE \\r\\nCHANGE ', 'short_name': 'IPBES RAR ECA FR', 'source': 'IPBES', 'toc_level0': \"CHAPTER 4: DIRECT AND INDIRECT DRIVERS OF CHANGE IN BIODIVERSITY AND NATURE'S CONTRIBUTIONS PEOPLE\", 'toc_level1': '4.7 Drivers and effects of climate change ', 'toc_level2': '4.7.1 Effects of climate change on biodiversity', 'toc_level3': 'N/A', 'url': 'https://zenodo.org/record/3237429/files/ipbes_assessment_report_eca_EN.pdf', 'similarity_score': 0.767219245, 'content': \"4.7 DRIVERS AND EFFECTS OF CLIMATE CHANGE \\n4.7.1 Effects of climate change on biodiversity\\n4.7.1 Effects of climate change on biodiversity\\n 4.7.1 Effects of climate change on biodiversity \\n\\nand modulate important ecosystem functions and processes that underpin human livelihoods and nature's contributions to people, such as water regulation, food production, and carbon sequestration (CBD, 2016; Gallardo et al., 2015; IPBES, 2016a; IPCC, 2014a; MEA, 2005a).\\nClimate change is a complex driver of ecosystem change, consisting of changes in precipitation and temperature patterns which lead to changes in drought, flood, and fire risk, ocean-atmosphere interchange, marine circulation and stratification, and the concentrations and distribution of O2 and CO2 in the atmosphere and in the ocean (IPCC, 2014a). These impacts affect species and influence\", 'reranking_score': 0.9996898174285889, 'query_used_for_retrieval': 'What are the effects of climate change on the environment?', 'sources_used': ['IPOS', 'IPCC', 'IPBES'], 'question_used': 'What are the effects of climate change on the environment?', 'index_used': 'Vector'}, page_content=\"4.7 DRIVERS AND EFFECTS OF CLIMATE CHANGE \\n4.7.1 Effects of climate change on biodiversity\\n4.7.1 Effects of climate change on biodiversity\\n 4.7.1 Effects of climate change on biodiversity \\n\\nand modulate important ecosystem functions and processes that underpin human livelihoods and nature's contributions to people, such as water regulation, food production, and carbon sequestration (CBD, 2016; Gallardo et al., 2015; IPBES, 2016a; IPCC, 2014a; MEA, 2005a).\\nClimate change is a complex driver of ecosystem change, consisting of changes in precipitation and temperature patterns which lead to changes in drought, flood, and fire risk, ocean-atmosphere interchange, marine circulation and stratification, and the concentrations and distribution of O2 and CO2 in the atmosphere and in the ocean (IPCC, 2014a). These impacts affect species and influence\"),\n", + " Document(metadata={'chunk_type': 'text', 'document_id': 'document4', 'document_number': 4.0, 'element_id': 'N/A', 'figure_code': 'N/A', 'file_size': 'N/A', 'image_path': 'N/A', 'n_pages': 34.0, 'name': 'Summary for Policymakers. In: Climate Change 2022: Impacts, Adaptation and Vulnerability. Contribution of the WGII to the AR6 of the IPCC', 'num_characters': 743.0, 'num_tokens': 243.0, 'num_tokens_approx': 282.0, 'num_words': 212.0, 'page_number': 9, 'release_date': 2022.0, 'report_type': 'SPM', 'section_header': 'Observed Impacts from Climate Change', 'short_name': 'IPCC AR6 WGII SPM', 'source': 'IPCC', 'toc_level0': 'B: Observed and Projected Impacts and Risks', 'toc_level1': 'Observed Impacts from Climate Change', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://www.ipcc.ch/report/ar6/wg2/downloads/report/IPCC_AR6_WGII_SummaryForPolicymakers.pdf', 'similarity_score': 0.737967908, 'content': 'B.1 Human-induced climate change, including more frequent and intense extreme events, has caused widespread adverse impacts and related losses and damages to nature and people, beyond natural climate variability. Some development and adaptation efforts have reduced vulnerability. Across sectors and regions the most vulnerable people and systems are ob\\x02served to be disproportionately affected. The rise in weather and climate extremes has led to some irreversible impacts as natural and human systems are pushed beyond their ability to adapt. (high confidence) (Figure SPM.2) {TS B.1, Figure TS.5, 1.3, 2.3, 2.4, 2.6, 3.3, 3.4, 3.5, 4.2, 4.3, 5.2, 5.12, 6.2, 7.2, 8.2, 9.6, 9.8, 9.10, 9.11, 10.4, 11.3, 12.3, 12.4, 13.10, 14.4, 14.5,', 'reranking_score': 0.9996700286865234, 'query_used_for_retrieval': 'How does climate change affect human health and society?', 'sources_used': ['IPOS', 'IPCC', 'IPBES'], 'question_used': 'How does climate change affect human health and society?', 'index_used': 'Vector'}, page_content='B.1 Human-induced climate change, including more frequent and intense extreme events, has caused widespread adverse impacts and related losses and damages to nature and people, beyond natural climate variability. Some development and adaptation efforts have reduced vulnerability. Across sectors and regions the most vulnerable people and systems are ob\\x02served to be disproportionately affected. The rise in weather and climate extremes has led to some irreversible impacts as natural and human systems are pushed beyond their ability to adapt. (high confidence) (Figure SPM.2) {TS B.1, Figure TS.5, 1.3, 2.3, 2.4, 2.6, 3.3, 3.4, 3.5, 4.2, 4.3, 5.2, 5.12, 6.2, 7.2, 8.2, 9.6, 9.8, 9.10, 9.11, 10.4, 11.3, 12.3, 12.4, 13.10, 14.4, 14.5,'),\n", + " Document(metadata={'chunk_type': 'text', 'document_id': 'document4', 'document_number': 4.0, 'element_id': 'N/A', 'figure_code': 'N/A', 'file_size': 'N/A', 'image_path': 'N/A', 'n_pages': 34.0, 'name': 'Summary for Policymakers. In: Climate Change 2022: Impacts, Adaptation and Vulnerability. Contribution of the WGII to the AR6 of the IPCC', 'num_characters': 989.0, 'num_tokens': 226.0, 'num_tokens_approx': 273.0, 'num_words': 205.0, 'page_number': 11, 'release_date': 2022.0, 'report_type': 'SPM', 'section_header': '(b) Observed impacts of climate change on human systems', 'short_name': 'IPCC AR6 WGII SPM', 'source': 'IPCC', 'toc_level0': 'B: Observed and Projected Impacts and Risks', 'toc_level1': 'Observed Impacts from Climate Change', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://www.ipcc.ch/report/ar6/wg2/downloads/report/IPCC_AR6_WGII_SummaryForPolicymakers.pdf', 'similarity_score': 0.725235641, 'content': 'B.1.5 In urban settings, observed climate change has caused impacts on human health, livelihoods and key infrastructure (high confidence). Multiple climate and non-climate hazards impact cities, settlements and infrastructure and sometimes coincide, magnifying damage (high confidence). Hot extremes including heatwaves have intensified in cities (high confidence), where they have also aggravated air pollution events (medium confidence) and limited functioning of key infrastructure (high confidence). Observed impacts are concentrated amongst the economically and socially marginalized urban residents, e.g., in informal settlements (high confidence). Infrastructure, including transportation, water, sanitation and energy systems have been compromised by extreme and slow-onset events, with resulting economic losses, disruptions of services and impacts to well-being (high confidence). {4.3, 6.2, 7.1, 7.2, 9.9, 10.4, 11.3, 12.3, 13.6, 14.5, 15.3, CCP2.2, CCP4.2, CCP5.2}', 'reranking_score': 0.9996700286865234, 'query_used_for_retrieval': 'How does climate change affect human health and society?', 'sources_used': ['IPOS', 'IPCC', 'IPBES'], 'question_used': 'How does climate change affect human health and society?', 'index_used': 'Vector'}, page_content='B.1.5 In urban settings, observed climate change has caused impacts on human health, livelihoods and key infrastructure (high confidence). Multiple climate and non-climate hazards impact cities, settlements and infrastructure and sometimes coincide, magnifying damage (high confidence). Hot extremes including heatwaves have intensified in cities (high confidence), where they have also aggravated air pollution events (medium confidence) and limited functioning of key infrastructure (high confidence). Observed impacts are concentrated amongst the economically and socially marginalized urban residents, e.g., in informal settlements (high confidence). Infrastructure, including transportation, water, sanitation and energy systems have been compromised by extreme and slow-onset events, with resulting economic losses, disruptions of services and impacts to well-being (high confidence). {4.3, 6.2, 7.1, 7.2, 9.9, 10.4, 11.3, 12.3, 13.6, 14.5, 15.3, CCP2.2, CCP4.2, CCP5.2}'),\n", + " Document(metadata={'chunk_type': 'text', 'document_id': 'document25', 'document_number': 25.0, 'element_id': 'N/A', 'figure_code': 'N/A', 'file_size': 'N/A', 'image_path': 'N/A', 'n_pages': 1008.0, 'name': 'Full Report. Thematic assessment of the sustainable use of wild species of the IPBES', 'num_characters': 307.0, 'num_tokens': 66.0, 'num_tokens_approx': 76.0, 'num_words': 57.0, 'page_number': 516, 'release_date': 2022.0, 'report_type': 'Full Report', 'section_header': 'Environmental drivers', 'short_name': 'IPBES TAM SW FR', 'source': 'IPBES', 'toc_level0': 'Chapter 4 - Table of Contents', 'toc_level1': 'N/A', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://zenodo.org/record/7755805/files/IPBES_ASSESSMENT_SUWS_FULL_REPORT.pdf', 'similarity_score': 0.748966157, 'content': '- The effects of climate change are compounded and complicated by interactions with other environmental, socio-cultural, political, and economic drivers (established but incomplete) {4.2.1.2}.\\nBiological hazards: Zoonotic disease and the use of wild species are interconnected. Species for wild meat', 'reranking_score': 0.9996500015258789, 'query_used_for_retrieval': 'What are the effects of climate change on the environment?', 'sources_used': ['IPOS', 'IPCC', 'IPBES'], 'question_used': 'What are the effects of climate change on the environment?', 'index_used': 'Vector'}, page_content='- The effects of climate change are compounded and complicated by interactions with other environmental, socio-cultural, political, and economic drivers (established but incomplete) {4.2.1.2}.\\nBiological hazards: Zoonotic disease and the use of wild species are interconnected. Species for wild meat'),\n", + " Document(metadata={'chunk_type': 'text', 'document_id': 'document6', 'document_number': 6.0, 'element_id': 'N/A', 'figure_code': 'N/A', 'file_size': 'N/A', 'image_path': 'N/A', 'n_pages': 3068.0, 'name': 'Full Report. In: Climate Change 2022: Impacts, Adaptation and Vulnerability. Contribution of the WGII to the AR6 of the IPCC', 'num_characters': 1158.0, 'num_tokens': 221.0, 'num_tokens_approx': 274.0, 'num_words': 206.0, 'page_number': 1138, 'release_date': 2022.0, 'report_type': 'Full Report', 'section_header': 'FAQ 7.1 | How will climate change affect physical and mental health and well-being?', 'short_name': 'IPCC AR6 WGII FR', 'source': 'IPCC', 'toc_level0': 'Chapters and Cross-Chapter Papers ', 'toc_level1': 'Chapter 7 Health, Wellbeing and the Changing Structure of Communities', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://report.ipcc.ch/ar6/wg2/IPCC_AR6_WGII_FullReport.pdf', 'similarity_score': 0.825700223, 'content': 'Climate change will affect human health and well-being in a variety of direct and indirect ways that depend on exposure to hazards and vulnerabilities that are heterogeneous and vary within societies, and that are influenced by social, economic and geographical factors and individual differences (see Figure FAQ7.1.1). Changes in the magnitude, frequency and intensity of extreme climate events (e.g., storms, floods, wildfires, heatwaves and dust storms) will expose people to increased risks of climate-sensitive illnesses and injuries and, in the worst cases, higher mortality rates. Increased risks for mental health and well-being are associated with changes caused by the impacts of climate change on climate-sensitive health outcomes and systems (see Figure FAQ7.1.2). Higher temperatures and changing geographical and seasonal precipitation patterns will facilitate the spread of mosquito- and tick-borne diseases, such as Lyme disease and dengue fever, and water- and food-borne diseases. An increase in the frequency of extreme heat events will exacerbate health risks associated with cardiovascular disease and affect access to', 'reranking_score': 0.9996476173400879, 'query_used_for_retrieval': 'How does climate change affect human health and society?', 'sources_used': ['IPOS', 'IPCC', 'IPBES'], 'question_used': 'How does climate change affect human health and society?', 'index_used': 'Vector'}, page_content='Climate change will affect human health and well-being in a variety of direct and indirect ways that depend on exposure to hazards and vulnerabilities that are heterogeneous and vary within societies, and that are influenced by social, economic and geographical factors and individual differences (see Figure FAQ7.1.1). Changes in the magnitude, frequency and intensity of extreme climate events (e.g., storms, floods, wildfires, heatwaves and dust storms) will expose people to increased risks of climate-sensitive illnesses and injuries and, in the worst cases, higher mortality rates. Increased risks for mental health and well-being are associated with changes caused by the impacts of climate change on climate-sensitive health outcomes and systems (see Figure FAQ7.1.2). Higher temperatures and changing geographical and seasonal precipitation patterns will facilitate the spread of mosquito- and tick-borne diseases, such as Lyme disease and dengue fever, and water- and food-borne diseases. An increase in the frequency of extreme heat events will exacerbate health risks associated with cardiovascular disease and affect access to'),\n", + " Document(metadata={'chunk_type': 'text', 'document_id': 'document6', 'document_number': 6.0, 'element_id': 'N/A', 'figure_code': 'N/A', 'file_size': 'N/A', 'image_path': 'N/A', 'n_pages': 3068.0, 'name': 'Full Report. In: Climate Change 2022: Impacts, Adaptation and Vulnerability. Contribution of the WGII to the AR6 of the IPCC', 'num_characters': 493.0, 'num_tokens': 96.0, 'num_tokens_approx': 114.0, 'num_words': 86.0, 'page_number': 2483, 'release_date': 2022.0, 'report_type': 'Full Report', 'section_header': '16.5.4 RKR Interactions', 'short_name': 'IPCC AR6 WGII FR', 'source': 'IPCC', 'toc_level0': 'Chapters and Cross-Chapter Papers ', 'toc_level1': 'Chapter 16 Key Risks across Sectors and Regions', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://report.ipcc.ch/ar6/wg2/IPCC_AR6_WGII_FullReport.pdf', 'similarity_score': 0.791373491, 'content': 'and international trade. Such disturbances to socioecological systems and economies pose climate-related risks to human health (RKR-E) as well as to peace and human mobility (RKR-H). Indeed, while health is concerned with direct influence of climate change, for example through hotter air temperatures impacting morbidity and mortality or the spatial distribution of disease vectors such as mosquitos, it is also at risk of being stressed by direct and secondary climate impacts on', 'reranking_score': 0.9995015859603882, 'query_used_for_retrieval': 'How does climate change affect human health and society?', 'sources_used': ['IPOS', 'IPCC', 'IPBES'], 'question_used': 'How does climate change affect human health and society?', 'index_used': 'Vector'}, page_content='and international trade. Such disturbances to socioecological systems and economies pose climate-related risks to human health (RKR-E) as well as to peace and human mobility (RKR-H). Indeed, while health is concerned with direct influence of climate change, for example through hotter air temperatures impacting morbidity and mortality or the spatial distribution of disease vectors such as mosquitos, it is also at risk of being stressed by direct and secondary climate impacts on')],\n", + " 'recommended_content': [Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_349', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Consumption-based emissions are national emissions that have been adjusted for trade. This measures fossil fuel and industry emissions. Land-use change is not included.', 'url': 'https://ourworldindata.org/grapher/co2-emissions-and-gdp', 'similarity_score': 0.7941333055496216, 'content': 'Change in CO2 emissions and GDP', 'reranking_score': 0.279598593711853, 'query_used_for_retrieval': 'What are the effects of climate change on the environment?', 'sources_used': ['IEA', 'OWID']}, page_content='Change in CO2 emissions and GDP'),\n", + " Document(metadata={'category': 'Climate Change', 'doc_id': 'owid_780', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Nationally determined contributions (NDCs) embody efforts by each country to reduce national emissions and adapt to the impacts of climate change. The Paris Agreement requires each of the 193 Parties to prepare, communicate and maintain NDCs outlining what they intend to achieve. NDCs must be updated every five years.', 'url': 'https://ourworldindata.org/grapher/nationally-determined-contributions', 'similarity_score': 0.7979490756988525, 'content': 'Nationally determined contributions to climate change', 'reranking_score': 0.012760520912706852, 'query_used_for_retrieval': 'What are the effects of climate change on the environment?', 'sources_used': ['IEA', 'OWID']}, page_content='Nationally determined contributions to climate change'),\n", + " Document(metadata={'category': 'Climate Change', 'doc_id': 'owid_789', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Participants were asked to score beliefs on a scale from 0 to 100 on four questions: whether action was necessary to avoid a global catastrophe; humans were causing climate change; it was a serious threat to humanity; and was a global emergency.', 'url': 'https://ourworldindata.org/grapher/share-believe-climate', 'similarity_score': 0.7580230236053467, 'content': \"Share of people who believe in climate change and think it's a serious threat to humanity\", 'reranking_score': 0.005214352160692215, 'query_used_for_retrieval': 'How does climate change affect human health and society?', 'sources_used': ['IEA', 'OWID']}, page_content=\"Share of people who believe in climate change and think it's a serious threat to humanity\"),\n", + " Document(metadata={'category': 'Climate Change', 'doc_id': 'owid_782', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Share of young people in each surveyed country that responded \"yes\" to each statement about climate change. 1,000 young people, aged 16 to 25 years old, were surveyed in each country.', 'url': 'https://ourworldindata.org/grapher/opinions-young-people-climate', 'similarity_score': 0.8168312311172485, 'content': 'Opinions of young people on the threats of climate change', 'reranking_score': 0.004852706100791693, 'query_used_for_retrieval': 'How does climate change affect human health and society?', 'sources_used': ['IEA', 'OWID']}, page_content='Opinions of young people on the threats of climate change'),\n", + " Document(metadata={'category': 'Climate Change', 'doc_id': 'owid_756', 'returned_content': '', 'source': 'OWID', 'subtitle': 'National adaptation plans are a means of identifying medium- and long-term climate change adaptation needs and developing and implementing strategies and programmes to address those needs.', 'url': 'https://ourworldindata.org/grapher/countries-with-national-adaptation-plans-for-climate-change', 'similarity_score': 0.7981775999069214, 'content': 'Countries with national adaptation plans for climate change', 'reranking_score': 0.004124350380152464, 'query_used_for_retrieval': 'What are the effects of climate change on the environment?', 'sources_used': ['IEA', 'OWID']}, page_content='Countries with national adaptation plans for climate change'),\n", + " Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_386', 'returned_content': '', 'source': 'OWID', 'subtitle': \"This is shown as a country or region's share of the global mean surface temperature change as a result of its cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.\", 'url': 'https://ourworldindata.org/grapher/contributions-global-temp-change', 'similarity_score': 0.7989407181739807, 'content': 'Global warming: Contributions to the change in global mean surface temperature', 'reranking_score': 0.0036289971321821213, 'query_used_for_retrieval': 'What are the effects of climate change on the environment?', 'sources_used': ['IEA', 'OWID']}, page_content='Global warming: Contributions to the change in global mean surface temperature'),\n", + " Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_383', 'returned_content': '', 'source': 'OWID', 'subtitle': 'The global mean surface temperature change as a result of the cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.', 'url': 'https://ourworldindata.org/grapher/global-warming-by-gas-and-source', 'similarity_score': 0.8071538805961609, 'content': 'Global warming contributions by gas and source', 'reranking_score': 0.0016414257697761059, 'query_used_for_retrieval': 'What are the effects of climate change on the environment?', 'sources_used': ['IEA', 'OWID']}, page_content='Global warming contributions by gas and source'),\n", + " Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_357', 'returned_content': '', 'source': 'OWID', 'subtitle': \"The global mean surface temperature change as a result of a country or region's cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.\", 'url': 'https://ourworldindata.org/grapher/contribution-temp-rise-degrees', 'similarity_score': 0.8584674596786499, 'content': 'Contribution to global mean surface temperature rise', 'reranking_score': 0.00025533974985592067, 'query_used_for_retrieval': 'How does climate change affect human health and society?', 'sources_used': ['IEA', 'OWID']}, page_content='Contribution to global mean surface temperature rise'),\n", + " Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_317', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Percentage change in gross domestic product (GDP), population, and carbon dioxide (CO₂) emissions.', 'url': 'https://ourworldindata.org/grapher/co2-gdp-pop-growth', 'similarity_score': 0.8730868697166443, 'content': 'Annual change in GDP, population and CO2 emissions', 'reranking_score': 0.0002404096449026838, 'query_used_for_retrieval': 'How does climate change affect human health and society?', 'sources_used': ['IEA', 'OWID']}, page_content='Annual change in GDP, population and CO2 emissions'),\n", + " Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_350', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Consumption-based emissions include those from fossil fuels and industry. Land-use change emissions are not included.', 'url': 'https://ourworldindata.org/grapher/co2-emissions-and-gdp-per-capita', 'similarity_score': 0.8269157409667969, 'content': 'Change in per capita CO2 emissions and GDP', 'reranking_score': 0.00023705528292339295, 'query_used_for_retrieval': 'What are the effects of climate change on the environment?', 'sources_used': ['IEA', 'OWID']}, page_content='Change in per capita CO2 emissions and GDP'),\n", + " Document(metadata={'category': 'Biodiversity', 'doc_id': 'owid_199', 'returned_content': '', 'source': 'OWID', 'subtitle': 'The number of species at risk of losing greater than 25% of their habitat as a result of agricultural expansion under business-as-usual projections to 2050. This is shown for countries with more than 25 species at risk.', 'url': 'https://ourworldindata.org/grapher/habitat-loss-25-species', 'similarity_score': 0.8301026225090027, 'content': 'Countries with more than 25 species at risk of losing more than 25% of their habitat by 2050', 'reranking_score': 7.497359911212698e-05, 'query_used_for_retrieval': 'What are the effects of climate change on the environment?', 'sources_used': ['IEA', 'OWID']}, page_content='Countries with more than 25 species at risk of losing more than 25% of their habitat by 2050')]}" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# output = await app.ainvoke({\"user_input\": \"should I be a vegetarian ?\"})\n", + "output = await app.ainvoke({\"user_input\": \"what is the impact of climate change ?\", \"audience\": \"scientifique\", \"sources\": [\"IPCC\", \"IPBES\", \"IPOS\"]})\n", + "output" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_keys(['user_input', 'language', 'intent', 'query', 'remaining_questions', 'n_questions', 'answer', 'audience', 'documents', 'recommended_content'])" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "output.keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[Document(metadata={'category': 'Meat & Dairy Production', 'doc_id': 'owid_1678', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Impacts are measured per liter of milk. These are based on a meta-analysis of food system impact studies across the supply chain which includes land use change, on-farm production, processing, transport, and packaging.', 'url': 'https://ourworldindata.org/grapher/environmental-footprint-milks', 'similarity_score': 0.6826351881027222, 'content': 'Environmental footprints of dairy and plant-based milks', 'reranking_score': 0.025419369339942932, 'query_used_for_retrieval': 'What are the environmental impacts of being a vegetarian?', 'sources_used': ['IEA', 'OWID']}, page_content='Environmental footprints of dairy and plant-based milks'),\n", + " Document(metadata={'category': 'Animal Welfare', 'doc_id': 'owid_174', 'returned_content': '', 'source': 'OWID', 'subtitle': '– Flexitarian: mainly vegetarian, but occasionally eat meat or fish. – Pescetarian: eat fish but do not eat meat or poultry. – Vegetarian: do not eat any meat, poultry, game, fish, or shellfish. – Plant-based / Vegan: do not eat dairy products, eggs, or any other animal product.', 'url': 'https://ourworldindata.org/grapher/dietary-choices-uk', 'similarity_score': 0.7397687435150146, 'content': 'Vegans, vegetarians and meat-eaters: self-reported dietary choices, United Kingdom', 'reranking_score': 0.0008887002477422357, 'query_used_for_retrieval': 'What are the health benefits of being a vegetarian?', 'sources_used': ['IEA', 'OWID']}, page_content='Vegans, vegetarians and meat-eaters: self-reported dietary choices, United Kingdom'),\n", + " Document(metadata={'category': 'Meat & Dairy Production', 'doc_id': 'owid_1688', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Expressed in tonnes of meat. Data from 1961-2013 is based on published FAO estimates; from 2013-2050 based on FAO projections. Projections are based on future population projections and the expected impacts of regional and national economic growth trends on meat consumption.', 'url': 'https://ourworldindata.org/grapher/global-meat-projections-to-2050', 'similarity_score': 0.7610733509063721, 'content': 'Global meat consumption', 'reranking_score': 5.71148339076899e-05, 'query_used_for_retrieval': 'What are the environmental impacts of being a vegetarian?', 'sources_used': ['IEA', 'OWID']}, page_content='Global meat consumption'),\n", + " Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_382', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Emissions from the food system are broken down by their stage in the life-cycle, from land use and on-farm production through to consumer waste. Emissions are measured in tonnes of carbon dioxide-equivalents.', 'url': 'https://ourworldindata.org/grapher/food-emissions-life-cycle', 'similarity_score': 0.7992925047874451, 'content': 'Global emissions from food by life-cycle stage', 'reranking_score': 4.49202379968483e-05, 'query_used_for_retrieval': 'What are the environmental impacts of being a vegetarian?', 'sources_used': ['IEA', 'OWID']}, page_content='Global emissions from food by life-cycle stage'),\n", + " Document(metadata={'category': 'Plastic Pollution', 'doc_id': 'owid_1889', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Number of times a given grocery bag type would have to be reused to have an environmental impact as low as a standard single-use plastic bag.', 'url': 'https://ourworldindata.org/grapher/grocery-bag-environmental-impact', 'similarity_score': 0.824555516242981, 'content': 'Environmental impacts of different types of grocery bags', 'reranking_score': 2.8800952350138687e-05, 'query_used_for_retrieval': 'What are the environmental impacts of being a vegetarian?', 'sources_used': ['IEA', 'OWID']}, page_content='Environmental impacts of different types of grocery bags'),\n", + " Document(metadata={'category': 'Environmental Impacts of Food Production', 'doc_id': 'owid_1175', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Emissions are measured in tonnes of carbon dioxide-equivalents.', 'url': 'https://ourworldindata.org/grapher/emissions-from-food', 'similarity_score': 0.8313338756561279, 'content': 'Greenhouse gas emissions from food systems', 'reranking_score': 1.8187101886724122e-05, 'query_used_for_retrieval': 'What are the environmental impacts of being a vegetarian?', 'sources_used': ['IEA', 'OWID']}, page_content='Greenhouse gas emissions from food systems'),\n", + " Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_483', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Food system emissions include agriculture, land-use change, and supply chain emissions (transport, packaging, food processing, retail, cooking, and waste). Emissions are quantified based on food production, not consumption. This means they do not account for international trade.', 'url': 'https://ourworldindata.org/grapher/share-global-food-emissions', 'similarity_score': 0.8323527574539185, 'content': 'Share of global greenhouse gas emissions from food', 'reranking_score': 1.6353857063222677e-05, 'query_used_for_retrieval': 'What are the environmental impacts of being a vegetarian?', 'sources_used': ['IEA', 'OWID']}, page_content='Share of global greenhouse gas emissions from food'),\n", + " Document(metadata={'category': 'Meat & Dairy Production', 'doc_id': 'owid_1673', 'returned_content': '', 'source': 'OWID', 'subtitle': 'The percentage of global habitable land area needed for agriculture if the total world population was to adopt the average diet of any given country versus annual per capita beef consumption. Globally we use approximately 50% of habitable land for agriculture, as shown by the grey horizontal line.', 'url': 'https://ourworldindata.org/grapher/dietary-land-use-vs-beef-consumption', 'similarity_score': 0.8455410003662109, 'content': 'Dietary land use vs. beef consumption', 'reranking_score': 1.4984153494879138e-05, 'query_used_for_retrieval': 'What are the environmental impacts of being a vegetarian?', 'sources_used': ['IEA', 'OWID']}, page_content='Dietary land use vs. beef consumption'),\n", + " Document(metadata={'category': 'Animal Welfare', 'doc_id': 'owid_168', 'returned_content': '', 'source': 'OWID', 'subtitle': 'The survey measured attitudes towards animal farming with around 1,500 adults in the United States, census-balanced to be representative of age, gender, region, ethnicity, and income.', 'url': 'https://ourworldindata.org/grapher/survey-dietary-choices-sentience', 'similarity_score': 0.8580029010772705, 'content': 'Public attitudes to dietary choices and meat-eating in the United States', 'reranking_score': 1.3065436178294476e-05, 'query_used_for_retrieval': 'What are the health benefits of being a vegetarian?', 'sources_used': ['IEA', 'OWID']}, page_content='Public attitudes to dietary choices and meat-eating in the United States'),\n", + " Document(metadata={'category': 'Diet Compositions', 'doc_id': 'owid_849', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Recommended intakes of animal products in the EAT-Lancet diet are shown relative to average daily per capita supply by country. The EAT-Lancet diet is a diet recommended to balance the goals of healthy nutrition and environmental sustainability for a global population.', 'url': 'https://ourworldindata.org/grapher/eat-lancet-diet-animal-products', 'similarity_score': 0.8636244535446167, 'content': 'Consumption of animal products in the EAT-Lancet diet', 'reranking_score': 1.1884163541253656e-05, 'query_used_for_retrieval': 'What are the health benefits of being a vegetarian?', 'sources_used': ['IEA', 'OWID']}, page_content='Consumption of animal products in the EAT-Lancet diet'),\n", + " Document(metadata={'category': 'Food Supply', 'doc_id': 'owid_1310', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Daily meat consumption is shown relative to the expected EU average of 165g per person in 2030. This projection comes from the livestock antibiotic scenarios from Van Boeckel et al. (2017).', 'url': 'https://ourworldindata.org/grapher/daily-meat-consumption-per-person', 'similarity_score': 0.876916766166687, 'content': 'Daily meat consumption per person', 'reranking_score': 1.1853918294946197e-05, 'query_used_for_retrieval': 'What are the health benefits of being a vegetarian?', 'sources_used': ['IEA', 'OWID']}, page_content='Daily meat consumption per person'),\n", + " Document(metadata={'category': 'Food Supply', 'doc_id': 'owid_1316', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Daily per capita protein supply is measured in grams per person per day. Protein of animal origin includes protein from all meat commodities, eggs and dairy products, and fish & seafood.', 'url': 'https://ourworldindata.org/grapher/daily-protein-supply-from-animal-and-plant-based-foods', 'similarity_score': 0.9169386029243469, 'content': 'Daily protein supply from animal and plant-based foods', 'reranking_score': 1.122933372244006e-05, 'query_used_for_retrieval': 'What are the health benefits of being a vegetarian?', 'sources_used': ['IEA', 'OWID']}, page_content='Daily protein supply from animal and plant-based foods')]" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "output[\"recommended_content\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "# display(Markdown(_combine_recommended_content(output[\"recommended_content\"])))" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n" + ] + }, + { + "data": { + "text/plain": [ + "{'graphs': [{'embedding': '',\n", + " 'category': 'Diet Compositions',\n", + " 'source': 'OWID'},\n", + " {'embedding': '',\n", + " 'category': 'Diet Compositions',\n", + " 'source': 'OWID'},\n", + " {'embedding': '',\n", + " 'category': 'Diet Compositions',\n", + " 'source': 'OWID'}]}" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + }, + { + "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 here for more info. \n", + "\u001b[1;31mView Jupyter log for further details." + ] + } + ], + "source": [ + "from climateqa.engine.chains.answer_rag_graph import make_rag_graph_chain, _format_graphs\n", + "\n", + "chain = make_rag_graph_chain(llm)\n", + "chain.invoke({\"query\": \"salade de fruits\", \"recommended_content\": output[\"recommended_content\"]})" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Title: Nationally determined contributions to climate change\\nEmbedding: \\nSource: OWID\\nCategory: Climate Change\\n\\nTitle: Contribution to global mean surface temperature rise from fossil sources\\nEmbedding: \\nSource: OWID\\nCategory: CO2 & Greenhouse Gas Emissions\\n\\nTitle: Global warming contributions by gas and source\\nEmbedding: \\nSource: OWID\\nCategory: CO2 & Greenhouse Gas Emissions\\n\\nTitle: Share of people who believe in climate change and think it\\'s a serious threat to humanity\\nEmbedding: \\nSource: OWID\\nCategory: Climate Change\\n\\nTitle: Global warming contributions from fossil fuels and land use\\nEmbedding: \\nSource: OWID\\nCategory: CO2 & Greenhouse Gas Emissions\\n\\nTitle: Opinions of young people on the threats of climate change\\nEmbedding: \\nSource: OWID\\nCategory: Climate Change\\n\\nTitle: Global warming: Contributions to the change in global mean surface temperature\\nEmbedding: \\nSource: OWID\\nCategory: CO2 & Greenhouse Gas Emissions\\n\\nTitle: People underestimate others\\' willingness to take climate action\\nEmbedding: \\nSource: OWID\\nCategory: Climate Change\\n\\nTitle: Share of people who support policies to tackle climate change\\nEmbedding: \\nSource: OWID\\nCategory: Climate Change\\n\\nTitle: Decadal temperature anomalies\\nEmbedding: \\nSource: OWID\\nCategory: Climate Change\\n'" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "graphs = []\n", + "for x in output[\"recommended_content\"]:\n", + " embedding = x.metadata[\"returned_content\"]\n", + " \n", + " # Check if the embedding has already been seen\n", + " graphs.append({\n", + " \"title\": x.page_content,\n", + " \"embedding\": embedding,\n", + " \"metadata\": {\n", + " \"source\": x.metadata[\"source\"],\n", + " \"category\": x.metadata[\"category\"]\n", + " }\n", + " })\n", + "format_data(graphs)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---- Setting defaults ----\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n", + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---- Retrieving graphs ----\n", + "Subquestion 0: What are the ingredients of a fruit salad?\n", + "8 graphs retrieved for subquestion 1: [Document(page_content='Fruit consumption by type', metadata={'category': 'Diet Compositions', 'doc_id': 'owid_854', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Average fruit consumption per person, differentiated by fruit types, measured in kilograms per year.', 'url': 'https://ourworldindata.org/grapher/fruit-consumption-by-fruit-type', 'similarity_score': 0.8464472889900208, 'content': 'Fruit consumption by type', 'reranking_score': 3.988455864600837e-05, 'query_used_for_retrieval': 'What are the ingredients of a fruit salad?', 'sources_used': ['IEA', 'OWID']}), Document(page_content='Dietary compositions by commodity group', metadata={'category': 'Diet Compositions', 'doc_id': 'owid_852', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Average per capita dietary energy supply by commodity groups, measured in kilocalories per person per day.', 'url': 'https://ourworldindata.org/grapher/dietary-compositions-by-commodity-group', 'similarity_score': 0.8874290585517883, 'content': 'Dietary compositions by commodity group', 'reranking_score': 3.573522553779185e-05, 'query_used_for_retrieval': 'What are the ingredients of a fruit salad?', 'sources_used': ['IEA', 'OWID']}), Document(page_content='Dietary composition by country', metadata={'category': 'Diet Compositions', 'doc_id': 'owid_851', 'returned_content': '', 'source': 'OWID', 'subtitle': \"Share of dietary energy supplied by food commodity types in the average individual's diet in a given country, measured in kilocalories per person per day.\", 'url': 'https://ourworldindata.org/grapher/dietary-composition-by-country', 'similarity_score': 0.947216272354126, 'content': 'Dietary composition by country', 'reranking_score': 3.129038304905407e-05, 'query_used_for_retrieval': 'What are the ingredients of a fruit salad?', 'sources_used': ['IEA', 'OWID']}), Document(page_content='Fruit consumption per capita', metadata={'category': 'Diet Compositions', 'doc_id': 'owid_855', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Average fruit consumption per person, measured in kilograms per year.', 'url': 'https://ourworldindata.org/grapher/fruit-consumption-per-capita', 'similarity_score': 0.9761286973953247, 'content': 'Fruit consumption per capita', 'reranking_score': 2.5951983843697235e-05, 'query_used_for_retrieval': 'What are the ingredients of a fruit salad?', 'sources_used': ['IEA', 'OWID']}), Document(page_content='Average per capita fruit intake vs. minimum recommended guidelines', metadata={'category': 'Diet Compositions', 'doc_id': 'owid_845', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Countries shown in blue have an average per capita intake below 200g per person per day; countries in green are greater than 200g. National and World Health Organization (WHO) typically set a guideline of 200g per day.', 'url': 'https://ourworldindata.org/grapher/average-per-capita-fruit-intake-vs-minimum-recommended-guidelines', 'similarity_score': 0.9765768051147461, 'content': 'Average per capita fruit intake vs. minimum recommended guidelines', 'reranking_score': 2.5002520487760194e-05, 'query_used_for_retrieval': 'What are the ingredients of a fruit salad?', 'sources_used': ['IEA', 'OWID']}), Document(page_content='Cashew nut yields', metadata={'category': 'Crop Yields', 'doc_id': 'owid_802', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Yields are measured in tonnes per hectare.', 'url': 'https://ourworldindata.org/grapher/cashew-nut-yields', 'similarity_score': 1.038257122039795, 'content': 'Cashew nut yields', 'reranking_score': 2.4257407858385704e-05, 'query_used_for_retrieval': 'What are the ingredients of a fruit salad?', 'sources_used': ['IEA', 'OWID']}), Document(page_content='Daily protein supply from animal and plant-based foods', metadata={'category': 'Food Supply', 'doc_id': 'owid_1316', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Daily per capita protein supply is measured in grams per person per day. Protein of animal origin includes protein from all meat commodities, eggs and dairy products, and fish & seafood.', 'url': 'https://ourworldindata.org/grapher/daily-protein-supply-from-animal-and-plant-based-foods', 'similarity_score': 1.039305329322815, 'content': 'Daily protein supply from animal and plant-based foods', 'reranking_score': 2.3620234060217626e-05, 'query_used_for_retrieval': 'What are the ingredients of a fruit salad?', 'sources_used': ['IEA', 'OWID']}), Document(page_content='Daily caloric supply derived from carbohydrates, protein and fat', metadata={'category': 'Diet Compositions', 'doc_id': 'owid_850', 'returned_content': '', 'source': 'OWID', 'subtitle': 'The average per capita supply of calories derived from carbohydrates, protein and fat, all measured in kilocalories per person per day.', 'url': 'https://ourworldindata.org/grapher/daily-caloric-supply-derived-from-carbohydrates-protein-and-fat', 'similarity_score': 1.0418040752410889, 'content': 'Daily caloric supply derived from carbohydrates, protein and fat', 'reranking_score': 2.3583004804095253e-05, 'query_used_for_retrieval': 'What are the ingredients of a fruit salad?', 'sources_used': ['IEA', 'OWID']})]\n", + "Subquestion 1: How to make a fruit salad?\n", + "7 graphs retrieved for subquestion 2: [Document(page_content='Fruit consumption by type', metadata={'category': 'Diet Compositions', 'doc_id': 'owid_854', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Average fruit consumption per person, differentiated by fruit types, measured in kilograms per year.', 'url': 'https://ourworldindata.org/grapher/fruit-consumption-by-fruit-type', 'similarity_score': 0.8765200972557068, 'content': 'Fruit consumption by type', 'reranking_score': 3.0426110242842697e-05, 'query_used_for_retrieval': 'How to make a fruit salad?', 'sources_used': ['IEA', 'OWID']}), Document(page_content='Average per capita fruit intake vs. minimum recommended guidelines', metadata={'category': 'Diet Compositions', 'doc_id': 'owid_845', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Countries shown in blue have an average per capita intake below 200g per person per day; countries in green are greater than 200g. National and World Health Organization (WHO) typically set a guideline of 200g per day.', 'url': 'https://ourworldindata.org/grapher/average-per-capita-fruit-intake-vs-minimum-recommended-guidelines', 'similarity_score': 0.9526513814926147, 'content': 'Average per capita fruit intake vs. minimum recommended guidelines', 'reranking_score': 2.9851042199879885e-05, 'query_used_for_retrieval': 'How to make a fruit salad?', 'sources_used': ['IEA', 'OWID']}), Document(page_content='Cashew nut production', metadata={'category': 'Agricultural Production', 'doc_id': 'owid_21', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Cashew nut production is measured in tonnes.', 'url': 'https://ourworldindata.org/grapher/cashew-nut-production', 'similarity_score': 0.9603457450866699, 'content': 'Cashew nut production', 'reranking_score': 2.8193233447382227e-05, 'query_used_for_retrieval': 'How to make a fruit salad?', 'sources_used': ['IEA', 'OWID']}), Document(page_content='Fruit consumption per capita', metadata={'category': 'Diet Compositions', 'doc_id': 'owid_855', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Average fruit consumption per person, measured in kilograms per year.', 'url': 'https://ourworldindata.org/grapher/fruit-consumption-per-capita', 'similarity_score': 0.9623799920082092, 'content': 'Fruit consumption per capita', 'reranking_score': 2.4916422262322158e-05, 'query_used_for_retrieval': 'How to make a fruit salad?', 'sources_used': ['IEA', 'OWID']}), Document(page_content='Avocado production', metadata={'category': 'Agricultural Production', 'doc_id': 'owid_15', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Avocado production is measured in tonnes.', 'url': 'https://ourworldindata.org/grapher/avocado-production', 'similarity_score': 0.96598219871521, 'content': 'Avocado production', 'reranking_score': 2.4747036150074564e-05, 'query_used_for_retrieval': 'How to make a fruit salad?', 'sources_used': ['IEA', 'OWID']}), Document(page_content='Banana production', metadata={'category': 'Agricultural Production', 'doc_id': 'owid_16', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Data source: Food and Agriculture Organization of the United Nations (2023)', 'url': 'https://ourworldindata.org/grapher/banana-production', 'similarity_score': 0.9927387237548828, 'content': 'Banana production', 'reranking_score': 2.4040627977228723e-05, 'query_used_for_retrieval': 'How to make a fruit salad?', 'sources_used': ['IEA', 'OWID']}), Document(page_content='Orange production', metadata={'category': 'Agricultural Production', 'doc_id': 'owid_57', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Orange production is measured in tonnes.', 'url': 'https://ourworldindata.org/grapher/orange-production', 'similarity_score': 1.0025488138198853, 'content': 'Orange production', 'reranking_score': 2.3612847144249827e-05, 'query_used_for_retrieval': 'How to make a fruit salad?', 'sources_used': ['IEA', 'OWID']})]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "DOCS USED: False\n", + "\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "Answer:\n", + "Ce n'est pas lié aux questions environnementales, ce n'est pas de mon ressort.\n" + ] + } + ], + "source": [ + "docs_used = True\n", + "\n", + "async for event in app.astream_events({\"user_input\": \"salade de fruits\"}, version = \"v1\"):\n", + " if docs_used is True and \"metadata\" in event and \"langgraph_node\" in event[\"metadata\"]:\n", + " if event[\"metadata\"][\"langgraph_node\"] in [\"answer_rag_no_docs\", \"answer_chitchat\", \"answer_ai_impact\"]:\n", + " docs_used = False\n", + " print(f\"\\nDOCS USED: {docs_used}\\n\")\n", + " # if event[\"name\"] == \"retrieve_documents\" and event[\"event\"] == \"on_chain_end\":\n", + " # print(event)\n", + " # print(event)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/dora/anaconda3/envs/climateqa_huggingface/lib/python3.12/site-packages/langchain_core/_api/beta_decorator.py:87: LangChainBetaWarning: This API is in beta and may change in the future.\n", + " warn_beta(\n" + ] + } + ], + "source": [ + "inputs = {'user_input': 'impact of ai?', 'audience': 'expert and climate scientists that are not afraid of technical terms', 'sources': ['IPCC']}\n", + "result = app.astream_events(inputs,version = \"v1\")" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'event': 'on_chain_start', 'run_id': 'da753bb9-2339-4fc0-b1d7-86443019c4df', 'name': 'LangGraph', 'tags': [], 'metadata': {}, 'data': {'input': {'user_input': 'impact of ai?', 'audience': 'expert and climate scientists that are not afraid of technical terms', 'sources': ['IPCC']}}}\n", + "{'event': 'on_chain_start', 'name': '__start__', 'run_id': '07d726da-2d7c-48a3-ad2b-5c28e29729a9', 'tags': ['graph:step:0', 'langsmith:hidden'], 'metadata': {'langgraph_step': 0, 'langgraph_node': '__start__'}, 'data': {'input': {'user_input': 'impact of ai?', 'audience': 'expert and climate scientists that are not afraid of technical terms', 'sources': ['IPCC']}}}\n", + "{'event': 'on_chain_end', 'name': '__start__', 'run_id': '07d726da-2d7c-48a3-ad2b-5c28e29729a9', 'tags': ['graph:step:0', 'langsmith:hidden'], 'metadata': {'langgraph_step': 0, 'langgraph_node': '__start__'}, 'data': {'input': {'user_input': 'impact of ai?', 'audience': 'expert and climate scientists that are not afraid of technical terms', 'sources': ['IPCC']}, 'output': {'user_input': 'impact of ai?', 'audience': 'expert and climate scientists that are not afraid of technical terms', 'sources': ['IPCC']}}}\n", + "{'event': 'on_chain_start', 'name': 'set_defaults', 'run_id': '2f946975-07d9-403b-b617-7bca602d4419', 'tags': ['graph:step:1'], 'metadata': {'langgraph_step': 1, 'langgraph_node': 'set_defaults'}, 'data': {}}\n", + "---- Setting defaults ----\n", + "{'event': 'on_chain_start', 'name': 'ChannelWrite', 'run_id': '22442e33-6cb8-4796-8224-fb3107783979', 'tags': ['seq:step:2', 'langsmith:hidden'], 'metadata': {'langgraph_step': 1, 'langgraph_node': 'set_defaults'}, 'data': {'input': {'user_input': 'impact of ai?', 'language': None, 'intent': None, 'query': None, 'questions': None, 'answer': None, 'audience': 'expert and climate scientists that are not afraid of technical terms', 'sources_input': ['auto'], 'documents': None, 'recommended_content': None, 'graph_returned': None}}}\n", + "{'event': 'on_chain_end', 'name': 'ChannelWrite', 'run_id': '22442e33-6cb8-4796-8224-fb3107783979', 'tags': ['seq:step:2', 'langsmith:hidden'], 'metadata': {'langgraph_step': 1, 'langgraph_node': 'set_defaults'}, 'data': {'input': {'user_input': 'impact of ai?', 'language': None, 'intent': None, 'query': None, 'questions': None, 'answer': None, 'audience': 'expert and climate scientists that are not afraid of technical terms', 'sources_input': ['auto'], 'documents': None, 'recommended_content': None, 'graph_returned': None}, 'output': {'user_input': 'impact of ai?', 'language': None, 'intent': None, 'query': None, 'questions': None, 'answer': None, 'audience': 'expert and climate scientists that are not afraid of technical terms', 'sources_input': ['auto'], 'documents': None, 'recommended_content': None, 'graph_returned': None}}}\n", + "{'event': 'on_chain_stream', 'name': 'set_defaults', 'run_id': '2f946975-07d9-403b-b617-7bca602d4419', 'tags': ['graph:step:1'], 'metadata': {'langgraph_step': 1, 'langgraph_node': 'set_defaults'}, 'data': {'chunk': {'user_input': 'impact of ai?', 'language': None, 'intent': None, 'query': None, 'questions': None, 'answer': None, 'audience': 'expert and climate scientists that are not afraid of technical terms', 'sources_input': ['auto'], 'documents': None, 'recommended_content': None, 'graph_returned': None}}}\n", + "{'event': 'on_chain_end', 'name': 'set_defaults', 'run_id': '2f946975-07d9-403b-b617-7bca602d4419', 'tags': ['graph:step:1'], 'metadata': {'langgraph_step': 1, 'langgraph_node': 'set_defaults'}, 'data': {'input': {'user_input': 'impact of ai?', 'language': None, 'intent': None, 'query': None, 'questions': None, 'answer': None, 'audience': 'expert and climate scientists that are not afraid of technical terms', 'sources_input': ['auto'], 'documents': None, 'recommended_content': None, 'graph_returned': None}, 'output': {'user_input': 'impact of ai?', 'language': None, 'intent': None, 'query': None, 'questions': None, 'answer': None, 'audience': 'expert and climate scientists that are not afraid of technical terms', 'sources_input': ['auto'], 'documents': None, 'recommended_content': None, 'graph_returned': None}}}\n", + "{'event': 'on_chain_stream', 'run_id': 'da753bb9-2339-4fc0-b1d7-86443019c4df', 'tags': [], 'metadata': {}, 'name': 'LangGraph', 'data': {'chunk': {'set_defaults': {'user_input': 'impact of ai?', 'language': None, 'intent': None, 'query': None, 'questions': None, 'answer': None, 'audience': 'expert and climate scientists that are not afraid of technical terms', 'sources_input': ['auto'], 'documents': None, 'recommended_content': None, 'graph_returned': None}}}}\n", + "{'event': 'on_chain_start', 'name': 'categorize_intent', 'run_id': '66f31c85-1a4b-48b4-9e4f-ad884263809c', 'tags': ['graph:step:2'], 'metadata': {'langgraph_step': 2, 'langgraph_node': 'categorize_intent'}, 'data': {}}\n", + "{'event': 'on_chain_start', 'name': 'RunnableSequence', 'run_id': 'e5b8bbe4-eeb1-478a-a105-254d4f4a516b', 'tags': ['seq:step:1'], 'metadata': {'langgraph_step': 2, 'langgraph_node': 'categorize_intent'}, 'data': {'input': {'input': 'impact of ai?'}}}\n", + "{'event': 'on_prompt_start', 'name': 'ChatPromptTemplate', 'run_id': '6fda6f8f-64ba-4b08-8c16-d7f77390f671', 'tags': ['seq:step:1'], 'metadata': {'langgraph_step': 2, 'langgraph_node': 'categorize_intent'}, 'data': {'input': {'input': 'impact of ai?'}}}\n", + "{'event': 'on_prompt_end', 'name': 'ChatPromptTemplate', 'run_id': '6fda6f8f-64ba-4b08-8c16-d7f77390f671', 'tags': ['seq:step:1'], 'metadata': {'langgraph_step': 2, 'langgraph_node': 'categorize_intent'}, 'data': {'input': {'input': 'impact of ai?'}, 'output': ChatPromptValue(messages=[SystemMessage(content='You are a helpful assistant, you will analyze, translate and reformulate the user input message using the function provided'), HumanMessage(content='input: impact of ai?')])}}\n", + "{'event': 'on_chat_model_start', 'name': 'ChatOpenAI', 'run_id': '2d9ccf59-3d78-42b1-8458-83a9c3479ef8', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 2, 'langgraph_node': 'categorize_intent', 'ls_model_type': 'chat'}, 'data': {'input': {'messages': [[SystemMessage(content='You are a helpful assistant, you will analyze, translate and reformulate the user input message using the function provided'), HumanMessage(content='input: impact of ai?')]]}}}\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': '2d9ccf59-3d78-42b1-8458-83a9c3479ef8', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 2, 'langgraph_node': 'categorize_intent', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='', additional_kwargs={'function_call': {'arguments': '', 'name': 'IntentCategorizer'}}, id='run-2d9ccf59-3d78-42b1-8458-83a9c3479ef8')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': '2d9ccf59-3d78-42b1-8458-83a9c3479ef8', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 2, 'langgraph_node': 'categorize_intent', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='', additional_kwargs={'function_call': {'arguments': '{\"', 'name': ''}}, id='run-2d9ccf59-3d78-42b1-8458-83a9c3479ef8')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': '2d9ccf59-3d78-42b1-8458-83a9c3479ef8', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 2, 'langgraph_node': 'categorize_intent', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='', additional_kwargs={'function_call': {'arguments': 'intent', 'name': ''}}, id='run-2d9ccf59-3d78-42b1-8458-83a9c3479ef8')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': '2d9ccf59-3d78-42b1-8458-83a9c3479ef8', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 2, 'langgraph_node': 'categorize_intent', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='', additional_kwargs={'function_call': {'arguments': '\":\"', 'name': ''}}, id='run-2d9ccf59-3d78-42b1-8458-83a9c3479ef8')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': '2d9ccf59-3d78-42b1-8458-83a9c3479ef8', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 2, 'langgraph_node': 'categorize_intent', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='', additional_kwargs={'function_call': {'arguments': 'ai', 'name': ''}}, id='run-2d9ccf59-3d78-42b1-8458-83a9c3479ef8')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': '2d9ccf59-3d78-42b1-8458-83a9c3479ef8', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 2, 'langgraph_node': 'categorize_intent', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='', additional_kwargs={'function_call': {'arguments': '_imp', 'name': ''}}, id='run-2d9ccf59-3d78-42b1-8458-83a9c3479ef8')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': '2d9ccf59-3d78-42b1-8458-83a9c3479ef8', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 2, 'langgraph_node': 'categorize_intent', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='', additional_kwargs={'function_call': {'arguments': 'act', 'name': ''}}, id='run-2d9ccf59-3d78-42b1-8458-83a9c3479ef8')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': '2d9ccf59-3d78-42b1-8458-83a9c3479ef8', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 2, 'langgraph_node': 'categorize_intent', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='', additional_kwargs={'function_call': {'arguments': '\"}', 'name': ''}}, id='run-2d9ccf59-3d78-42b1-8458-83a9c3479ef8')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': '2d9ccf59-3d78-42b1-8458-83a9c3479ef8', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 2, 'langgraph_node': 'categorize_intent', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='', response_metadata={'finish_reason': 'stop'}, id='run-2d9ccf59-3d78-42b1-8458-83a9c3479ef8')}}\n", + "{'event': 'on_chat_model_end', 'name': 'ChatOpenAI', 'run_id': '2d9ccf59-3d78-42b1-8458-83a9c3479ef8', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 2, 'langgraph_node': 'categorize_intent', 'ls_model_type': 'chat'}, 'data': {'input': {'messages': [[SystemMessage(content='You are a helpful assistant, you will analyze, translate and reformulate the user input message using the function provided'), HumanMessage(content='input: impact of ai?')]]}, 'output': {'generations': [[{'text': '', 'generation_info': {'finish_reason': 'stop'}, 'type': 'ChatGeneration', 'message': AIMessage(content='', additional_kwargs={'function_call': {'arguments': '{\"intent\":\"ai_impact\"}', 'name': 'IntentCategorizer'}}, response_metadata={'finish_reason': 'stop'}, id='run-2d9ccf59-3d78-42b1-8458-83a9c3479ef8')}]], 'llm_output': None, 'run': None}}}\n", + "{'event': 'on_parser_start', 'name': 'JsonOutputFunctionsParser', 'run_id': 'bca6f5e6-2496-46bb-b94c-397c844977a0', 'tags': ['seq:step:3'], 'metadata': {'langgraph_step': 2, 'langgraph_node': 'categorize_intent'}, 'data': {'input': AIMessage(content='', additional_kwargs={'function_call': {'arguments': '{\"intent\":\"ai_impact\"}', 'name': 'IntentCategorizer'}}, response_metadata={'finish_reason': 'stop'}, id='run-2d9ccf59-3d78-42b1-8458-83a9c3479ef8')}}\n", + "{'event': 'on_parser_end', 'name': 'JsonOutputFunctionsParser', 'run_id': 'bca6f5e6-2496-46bb-b94c-397c844977a0', 'tags': ['seq:step:3'], 'metadata': {'langgraph_step': 2, 'langgraph_node': 'categorize_intent'}, 'data': {'input': AIMessage(content='', additional_kwargs={'function_call': {'arguments': '{\"intent\":\"ai_impact\"}', 'name': 'IntentCategorizer'}}, response_metadata={'finish_reason': 'stop'}, id='run-2d9ccf59-3d78-42b1-8458-83a9c3479ef8'), 'output': {'intent': 'ai_impact'}}}\n", + "{'event': 'on_chain_end', 'name': 'RunnableSequence', 'run_id': 'e5b8bbe4-eeb1-478a-a105-254d4f4a516b', 'tags': ['seq:step:1'], 'metadata': {'langgraph_step': 2, 'langgraph_node': 'categorize_intent'}, 'data': {'input': {'input': 'impact of ai?'}, 'output': {'intent': 'ai_impact'}}}\n", + "{'event': 'on_chain_start', 'name': 'ChannelWrite', 'run_id': 'e89033a5-67a4-4ec1-813a-484d9192de38', 'tags': ['seq:step:2', 'langsmith:hidden'], 'metadata': {'langgraph_step': 2, 'langgraph_node': 'categorize_intent'}, 'data': {'input': {'intent': 'ai_impact', 'language': 'English', 'query': 'impact of ai?'}}}\n", + "{'event': 'on_chain_end', 'name': 'ChannelWrite', 'run_id': 'e89033a5-67a4-4ec1-813a-484d9192de38', 'tags': ['seq:step:2', 'langsmith:hidden'], 'metadata': {'langgraph_step': 2, 'langgraph_node': 'categorize_intent'}, 'data': {'input': {'intent': 'ai_impact', 'language': 'English', 'query': 'impact of ai?'}, 'output': {'intent': 'ai_impact', 'language': 'English', 'query': 'impact of ai?'}}}\n", + "{'event': 'on_chain_start', 'name': 'route_intent', 'run_id': '824d4a79-cc72-4068-ad0f-d0723e49af5d', 'tags': ['seq:step:3'], 'metadata': {'langgraph_step': 2, 'langgraph_node': 'categorize_intent'}, 'data': {'input': {'user_input': 'impact of ai?', 'language': 'English', 'intent': 'ai_impact', 'query': 'impact of ai?', 'audience': 'expert and climate scientists that are not afraid of technical terms', 'sources_input': ['auto']}}}\n", + "{'event': 'on_chain_end', 'name': 'route_intent', 'run_id': '824d4a79-cc72-4068-ad0f-d0723e49af5d', 'tags': ['seq:step:3'], 'metadata': {'langgraph_step': 2, 'langgraph_node': 'categorize_intent'}, 'data': {'input': {'user_input': 'impact of ai?', 'language': 'English', 'intent': 'ai_impact', 'query': 'impact of ai?', 'audience': 'expert and climate scientists that are not afraid of technical terms', 'sources_input': ['auto']}, 'output': 'answer_ai_impact'}}\n", + "{'event': 'on_chain_start', 'name': 'ChannelWrite', 'run_id': '107efbf2-bde3-4722-83f6-cdba0b3efaf4', 'tags': ['seq:step:3', 'langsmith:hidden'], 'metadata': {'langgraph_step': 2, 'langgraph_node': 'categorize_intent'}, 'data': {'input': {'intent': 'ai_impact', 'language': 'English', 'query': 'impact of ai?'}}}\n", + "{'event': 'on_chain_end', 'name': 'ChannelWrite', 'run_id': '107efbf2-bde3-4722-83f6-cdba0b3efaf4', 'tags': ['seq:step:3', 'langsmith:hidden'], 'metadata': {'langgraph_step': 2, 'langgraph_node': 'categorize_intent'}, 'data': {'input': {'intent': 'ai_impact', 'language': 'English', 'query': 'impact of ai?'}, 'output': {'intent': 'ai_impact', 'language': 'English', 'query': 'impact of ai?'}}}\n", + "{'event': 'on_chain_stream', 'name': 'categorize_intent', 'run_id': '66f31c85-1a4b-48b4-9e4f-ad884263809c', 'tags': ['graph:step:2'], 'metadata': {'langgraph_step': 2, 'langgraph_node': 'categorize_intent'}, 'data': {'chunk': {'intent': 'ai_impact', 'language': 'English', 'query': 'impact of ai?'}}}\n", + "{'event': 'on_chain_end', 'name': 'categorize_intent', 'run_id': '66f31c85-1a4b-48b4-9e4f-ad884263809c', 'tags': ['graph:step:2'], 'metadata': {'langgraph_step': 2, 'langgraph_node': 'categorize_intent'}, 'data': {'input': {'user_input': 'impact of ai?', 'language': None, 'intent': None, 'query': None, 'questions': None, 'answer': None, 'audience': 'expert and climate scientists that are not afraid of technical terms', 'sources_input': ['auto'], 'documents': None, 'recommended_content': None, 'graph_returned': None}, 'output': {'intent': 'ai_impact', 'language': 'English', 'query': 'impact of ai?'}}}\n", + "{'event': 'on_chain_stream', 'run_id': 'da753bb9-2339-4fc0-b1d7-86443019c4df', 'tags': [], 'metadata': {}, 'name': 'LangGraph', 'data': {'chunk': {'categorize_intent': {'language': 'English', 'intent': 'ai_impact', 'query': 'impact of ai?'}}}}\n", + "{'event': 'on_chain_start', 'name': 'answer_ai_impact', 'run_id': '07ee7e5d-b2a1-4149-a7ee-8512df8fe31f', 'tags': ['graph:step:3'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact'}, 'data': {}}\n", + "{'event': 'on_chain_start', 'name': 'ai_impact_chain', 'run_id': '421aeadf-3c89-4fde-95c1-fe5967773978', 'tags': ['seq:step:1'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact'}, 'data': {'input': {'question': 'impact of ai?'}}}\n", + "{'event': 'on_prompt_start', 'name': 'ChatPromptTemplate', 'run_id': '113204c2-80d8-4e39-9397-3b7845991f57', 'tags': ['seq:step:1'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact'}, 'data': {'input': {'question': 'impact of ai?'}}}\n", + "{'event': 'on_prompt_end', 'name': 'ChatPromptTemplate', 'run_id': '113204c2-80d8-4e39-9397-3b7845991f57', 'tags': ['seq:step:1'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact'}, 'data': {'input': {'question': 'impact of ai?'}, 'output': ChatPromptValue(messages=[SystemMessage(content=\"\\nYou are ClimateQ&A, an helpful AI Assistant specialized in answering climate-related questions using info from the IPCC and/or IPBES reports. \\nAlways stay true to climate and nature science and do not make up information. \\nIf you do not know the answer, just say you do not know.\\n\\n## Guidelines\\n- Explain that the environmental impact of AI is not covered by the IPCC or IPBES reports, but you can recommend info based on the sources below\\n- Answer the question in the original language of the question\\n\\n## Sources\\n- You can propose to visit this page https://climateqa.com/docs/carbon-footprint/ to learn more about ClimateQ&A's own carbon footprint\\n- You can recommend to look at the work of the AI & climate expert scientist Sasha Luccioni with in in particular those papers\\n - Power Hungry Processing: Watts Driving the Cost of AI Deployment? - https://arxiv.org/abs/2311.16863 - about the carbon footprint at the inference stage of AI models\\n - Counting Carbon: A Survey of Factors Influencing the Emissions of Machine Learning - https://arxiv.org/abs/2302.08476\\n - Estimating the Carbon Footprint of BLOOM, a 176B Parameter Language Model - https://arxiv.org/abs/2211.02001 - about the carbon footprint of training a large language model \\n- You can also recommend the following tools to calculate the carbon footprint of AI models\\n - CodeCarbon - https://github.com/mlco2/codecarbon to measure the carbon footprint of your code\\n - Ecologits - https://ecologits.ai/ to measure the carbon footprint of using LLMs APIs such\\n\"), HumanMessage(content='impact of ai?')])}}\n", + "{'event': 'on_chat_model_start', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'input': {'messages': [[SystemMessage(content=\"\\nYou are ClimateQ&A, an helpful AI Assistant specialized in answering climate-related questions using info from the IPCC and/or IPBES reports. \\nAlways stay true to climate and nature science and do not make up information. \\nIf you do not know the answer, just say you do not know.\\n\\n## Guidelines\\n- Explain that the environmental impact of AI is not covered by the IPCC or IPBES reports, but you can recommend info based on the sources below\\n- Answer the question in the original language of the question\\n\\n## Sources\\n- You can propose to visit this page https://climateqa.com/docs/carbon-footprint/ to learn more about ClimateQ&A's own carbon footprint\\n- You can recommend to look at the work of the AI & climate expert scientist Sasha Luccioni with in in particular those papers\\n - Power Hungry Processing: Watts Driving the Cost of AI Deployment? - https://arxiv.org/abs/2311.16863 - about the carbon footprint at the inference stage of AI models\\n - Counting Carbon: A Survey of Factors Influencing the Emissions of Machine Learning - https://arxiv.org/abs/2302.08476\\n - Estimating the Carbon Footprint of BLOOM, a 176B Parameter Language Model - https://arxiv.org/abs/2211.02001 - about the carbon footprint of training a large language model \\n- You can also recommend the following tools to calculate the carbon footprint of AI models\\n - CodeCarbon - https://github.com/mlco2/codecarbon to measure the carbon footprint of your code\\n - Ecologits - https://ecologits.ai/ to measure the carbon footprint of using LLMs APIs such\\n\"), HumanMessage(content='impact of ai?')]]}}}\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='The', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' environmental', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' impact', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' of', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' AI', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' is', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' not', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' covered', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' by', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' the', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' IPCC', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' or', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' IP', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='B', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='ES', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' reports', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='.', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' However', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=',', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' there', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' are', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' studies', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' and', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' tools', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' available', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' that', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' can', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' help', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' understand', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' the', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' carbon', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' footprint', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' of', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' AI', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' models', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='.', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' \\n\\n', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='For', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' more', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' information', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' on', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' the', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' carbon', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' footprint', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' of', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' AI', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' models', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=',', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' you', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' can', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' visit', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' this', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' page', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=':', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' [', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='Climate', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='Q', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='&A', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=\"'s\", id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' own', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' carbon', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' footprint', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='](', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='https', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='://', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='climate', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='qa', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='.com', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='/docs', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='/c', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='arbon', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='-foot', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='print', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='/', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=').\\n\\n', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='Additionally', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=',', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' you', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' may', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' want', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' to', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' look', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' into', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' the', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' work', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' of', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' AI', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' &', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' climate', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' expert', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' scientist', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' Sasha', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' Lu', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='ccion', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='i', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='.', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' Some', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' of', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' their', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' papers', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=',', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' such', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' as', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' \"', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='Power', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' Hung', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='ry', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' Processing', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=':', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' Watts', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' Driving', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' the', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' Cost', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' of', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' AI', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' Deployment', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='?\"', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' and', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' \"', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='Est', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='imating', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' the', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' Carbon', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' Foot', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='print', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' of', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' B', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='LO', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='OM', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=',', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' a', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' ', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='176', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='B', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' Parameter', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' Language', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' Model', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=',\"', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' provide', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' insights', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' into', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' the', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' carbon', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' footprint', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' of', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' AI', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' models', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='.\\n\\n', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='To', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' calculate', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' the', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' carbon', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' footprint', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' of', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' AI', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' models', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=',', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' tools', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' like', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' Code', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='Carbon', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' and', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' Ec', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='olog', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='its', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' can', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' be', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' used', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='.', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' Code', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='Carbon', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' helps', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' measure', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' the', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' carbon', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' footprint', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' of', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' your', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' code', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=',', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' while', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' Ec', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='olog', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='its', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' can', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' measure', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' the', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' carbon', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' footprint', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' of', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' using', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' Large', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' Language', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' Models', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' (', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='LL', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='Ms', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=')', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content=' APIs', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='.', id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_stream', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'chunk': AIMessageChunk(content='', response_metadata={'finish_reason': 'stop'}, id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_chat_model_end', 'name': 'ChatOpenAI', 'run_id': 'db848c5f-43af-45e1-8b97-345044f399d6', 'tags': ['seq:step:2'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact', 'ls_model_type': 'chat'}, 'data': {'input': {'messages': [[SystemMessage(content=\"\\nYou are ClimateQ&A, an helpful AI Assistant specialized in answering climate-related questions using info from the IPCC and/or IPBES reports. \\nAlways stay true to climate and nature science and do not make up information. \\nIf you do not know the answer, just say you do not know.\\n\\n## Guidelines\\n- Explain that the environmental impact of AI is not covered by the IPCC or IPBES reports, but you can recommend info based on the sources below\\n- Answer the question in the original language of the question\\n\\n## Sources\\n- You can propose to visit this page https://climateqa.com/docs/carbon-footprint/ to learn more about ClimateQ&A's own carbon footprint\\n- You can recommend to look at the work of the AI & climate expert scientist Sasha Luccioni with in in particular those papers\\n - Power Hungry Processing: Watts Driving the Cost of AI Deployment? - https://arxiv.org/abs/2311.16863 - about the carbon footprint at the inference stage of AI models\\n - Counting Carbon: A Survey of Factors Influencing the Emissions of Machine Learning - https://arxiv.org/abs/2302.08476\\n - Estimating the Carbon Footprint of BLOOM, a 176B Parameter Language Model - https://arxiv.org/abs/2211.02001 - about the carbon footprint of training a large language model \\n- You can also recommend the following tools to calculate the carbon footprint of AI models\\n - CodeCarbon - https://github.com/mlco2/codecarbon to measure the carbon footprint of your code\\n - Ecologits - https://ecologits.ai/ to measure the carbon footprint of using LLMs APIs such\\n\"), HumanMessage(content='impact of ai?')]]}, 'output': {'generations': [[{'text': 'The environmental impact of AI is not covered by the IPCC or IPBES reports. However, there are studies and tools available that can help understand the carbon footprint of AI models. \\n\\nFor more information on the carbon footprint of AI models, you can visit this page: [ClimateQ&A\\'s own carbon footprint](https://climateqa.com/docs/carbon-footprint/).\\n\\nAdditionally, you may want to look into the work of AI & climate expert scientist Sasha Luccioni. Some of their papers, such as \"Power Hungry Processing: Watts Driving the Cost of AI Deployment?\" and \"Estimating the Carbon Footprint of BLOOM, a 176B Parameter Language Model,\" provide insights into the carbon footprint of AI models.\\n\\nTo calculate the carbon footprint of AI models, tools like CodeCarbon and Ecologits can be used. CodeCarbon helps measure the carbon footprint of your code, while Ecologits can measure the carbon footprint of using Large Language Models (LLMs) APIs.', 'generation_info': {'finish_reason': 'stop'}, 'type': 'ChatGeneration', 'message': AIMessage(content='The environmental impact of AI is not covered by the IPCC or IPBES reports. However, there are studies and tools available that can help understand the carbon footprint of AI models. \\n\\nFor more information on the carbon footprint of AI models, you can visit this page: [ClimateQ&A\\'s own carbon footprint](https://climateqa.com/docs/carbon-footprint/).\\n\\nAdditionally, you may want to look into the work of AI & climate expert scientist Sasha Luccioni. Some of their papers, such as \"Power Hungry Processing: Watts Driving the Cost of AI Deployment?\" and \"Estimating the Carbon Footprint of BLOOM, a 176B Parameter Language Model,\" provide insights into the carbon footprint of AI models.\\n\\nTo calculate the carbon footprint of AI models, tools like CodeCarbon and Ecologits can be used. CodeCarbon helps measure the carbon footprint of your code, while Ecologits can measure the carbon footprint of using Large Language Models (LLMs) APIs.', response_metadata={'finish_reason': 'stop'}, id='run-db848c5f-43af-45e1-8b97-345044f399d6')}]], 'llm_output': None, 'run': None}}}\n", + "{'event': 'on_parser_start', 'name': 'StrOutputParser', 'run_id': 'bd6980fe-1dc1-4733-a38e-a461801250a8', 'tags': ['seq:step:3'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact'}, 'data': {'input': AIMessage(content='The environmental impact of AI is not covered by the IPCC or IPBES reports. However, there are studies and tools available that can help understand the carbon footprint of AI models. \\n\\nFor more information on the carbon footprint of AI models, you can visit this page: [ClimateQ&A\\'s own carbon footprint](https://climateqa.com/docs/carbon-footprint/).\\n\\nAdditionally, you may want to look into the work of AI & climate expert scientist Sasha Luccioni. Some of their papers, such as \"Power Hungry Processing: Watts Driving the Cost of AI Deployment?\" and \"Estimating the Carbon Footprint of BLOOM, a 176B Parameter Language Model,\" provide insights into the carbon footprint of AI models.\\n\\nTo calculate the carbon footprint of AI models, tools like CodeCarbon and Ecologits can be used. CodeCarbon helps measure the carbon footprint of your code, while Ecologits can measure the carbon footprint of using Large Language Models (LLMs) APIs.', response_metadata={'finish_reason': 'stop'}, id='run-db848c5f-43af-45e1-8b97-345044f399d6')}}\n", + "{'event': 'on_parser_end', 'name': 'StrOutputParser', 'run_id': 'bd6980fe-1dc1-4733-a38e-a461801250a8', 'tags': ['seq:step:3'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact'}, 'data': {'input': AIMessage(content='The environmental impact of AI is not covered by the IPCC or IPBES reports. However, there are studies and tools available that can help understand the carbon footprint of AI models. \\n\\nFor more information on the carbon footprint of AI models, you can visit this page: [ClimateQ&A\\'s own carbon footprint](https://climateqa.com/docs/carbon-footprint/).\\n\\nAdditionally, you may want to look into the work of AI & climate expert scientist Sasha Luccioni. Some of their papers, such as \"Power Hungry Processing: Watts Driving the Cost of AI Deployment?\" and \"Estimating the Carbon Footprint of BLOOM, a 176B Parameter Language Model,\" provide insights into the carbon footprint of AI models.\\n\\nTo calculate the carbon footprint of AI models, tools like CodeCarbon and Ecologits can be used. CodeCarbon helps measure the carbon footprint of your code, while Ecologits can measure the carbon footprint of using Large Language Models (LLMs) APIs.', response_metadata={'finish_reason': 'stop'}, id='run-db848c5f-43af-45e1-8b97-345044f399d6'), 'output': 'The environmental impact of AI is not covered by the IPCC or IPBES reports. However, there are studies and tools available that can help understand the carbon footprint of AI models. \\n\\nFor more information on the carbon footprint of AI models, you can visit this page: [ClimateQ&A\\'s own carbon footprint](https://climateqa.com/docs/carbon-footprint/).\\n\\nAdditionally, you may want to look into the work of AI & climate expert scientist Sasha Luccioni. Some of their papers, such as \"Power Hungry Processing: Watts Driving the Cost of AI Deployment?\" and \"Estimating the Carbon Footprint of BLOOM, a 176B Parameter Language Model,\" provide insights into the carbon footprint of AI models.\\n\\nTo calculate the carbon footprint of AI models, tools like CodeCarbon and Ecologits can be used. CodeCarbon helps measure the carbon footprint of your code, while Ecologits can measure the carbon footprint of using Large Language Models (LLMs) APIs.'}}\n", + "{'event': 'on_chain_end', 'name': 'ai_impact_chain', 'run_id': '421aeadf-3c89-4fde-95c1-fe5967773978', 'tags': ['seq:step:1'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact'}, 'data': {'input': {'question': 'impact of ai?'}, 'output': 'The environmental impact of AI is not covered by the IPCC or IPBES reports. However, there are studies and tools available that can help understand the carbon footprint of AI models. \\n\\nFor more information on the carbon footprint of AI models, you can visit this page: [ClimateQ&A\\'s own carbon footprint](https://climateqa.com/docs/carbon-footprint/).\\n\\nAdditionally, you may want to look into the work of AI & climate expert scientist Sasha Luccioni. Some of their papers, such as \"Power Hungry Processing: Watts Driving the Cost of AI Deployment?\" and \"Estimating the Carbon Footprint of BLOOM, a 176B Parameter Language Model,\" provide insights into the carbon footprint of AI models.\\n\\nTo calculate the carbon footprint of AI models, tools like CodeCarbon and Ecologits can be used. CodeCarbon helps measure the carbon footprint of your code, while Ecologits can measure the carbon footprint of using Large Language Models (LLMs) APIs.'}}\n", + "{'event': 'on_chain_start', 'name': 'ChannelWrite', 'run_id': 'c3f2dc9c-e005-436a-91ff-6236b9359548', 'tags': ['seq:step:2', 'langsmith:hidden'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact'}, 'data': {'input': {'answer': 'The environmental impact of AI is not covered by the IPCC or IPBES reports. However, there are studies and tools available that can help understand the carbon footprint of AI models. \\n\\nFor more information on the carbon footprint of AI models, you can visit this page: [ClimateQ&A\\'s own carbon footprint](https://climateqa.com/docs/carbon-footprint/).\\n\\nAdditionally, you may want to look into the work of AI & climate expert scientist Sasha Luccioni. Some of their papers, such as \"Power Hungry Processing: Watts Driving the Cost of AI Deployment?\" and \"Estimating the Carbon Footprint of BLOOM, a 176B Parameter Language Model,\" provide insights into the carbon footprint of AI models.\\n\\nTo calculate the carbon footprint of AI models, tools like CodeCarbon and Ecologits can be used. CodeCarbon helps measure the carbon footprint of your code, while Ecologits can measure the carbon footprint of using Large Language Models (LLMs) APIs.'}}}\n", + "{'event': 'on_chain_end', 'name': 'ChannelWrite', 'run_id': 'c3f2dc9c-e005-436a-91ff-6236b9359548', 'tags': ['seq:step:2', 'langsmith:hidden'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact'}, 'data': {'input': {'answer': 'The environmental impact of AI is not covered by the IPCC or IPBES reports. However, there are studies and tools available that can help understand the carbon footprint of AI models. \\n\\nFor more information on the carbon footprint of AI models, you can visit this page: [ClimateQ&A\\'s own carbon footprint](https://climateqa.com/docs/carbon-footprint/).\\n\\nAdditionally, you may want to look into the work of AI & climate expert scientist Sasha Luccioni. Some of their papers, such as \"Power Hungry Processing: Watts Driving the Cost of AI Deployment?\" and \"Estimating the Carbon Footprint of BLOOM, a 176B Parameter Language Model,\" provide insights into the carbon footprint of AI models.\\n\\nTo calculate the carbon footprint of AI models, tools like CodeCarbon and Ecologits can be used. CodeCarbon helps measure the carbon footprint of your code, while Ecologits can measure the carbon footprint of using Large Language Models (LLMs) APIs.'}, 'output': {'answer': 'The environmental impact of AI is not covered by the IPCC or IPBES reports. However, there are studies and tools available that can help understand the carbon footprint of AI models. \\n\\nFor more information on the carbon footprint of AI models, you can visit this page: [ClimateQ&A\\'s own carbon footprint](https://climateqa.com/docs/carbon-footprint/).\\n\\nAdditionally, you may want to look into the work of AI & climate expert scientist Sasha Luccioni. Some of their papers, such as \"Power Hungry Processing: Watts Driving the Cost of AI Deployment?\" and \"Estimating the Carbon Footprint of BLOOM, a 176B Parameter Language Model,\" provide insights into the carbon footprint of AI models.\\n\\nTo calculate the carbon footprint of AI models, tools like CodeCarbon and Ecologits can be used. CodeCarbon helps measure the carbon footprint of your code, while Ecologits can measure the carbon footprint of using Large Language Models (LLMs) APIs.'}}}\n", + "{'event': 'on_chain_stream', 'name': 'answer_ai_impact', 'run_id': '07ee7e5d-b2a1-4149-a7ee-8512df8fe31f', 'tags': ['graph:step:3'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact'}, 'data': {'chunk': {'answer': 'The environmental impact of AI is not covered by the IPCC or IPBES reports. However, there are studies and tools available that can help understand the carbon footprint of AI models. \\n\\nFor more information on the carbon footprint of AI models, you can visit this page: [ClimateQ&A\\'s own carbon footprint](https://climateqa.com/docs/carbon-footprint/).\\n\\nAdditionally, you may want to look into the work of AI & climate expert scientist Sasha Luccioni. Some of their papers, such as \"Power Hungry Processing: Watts Driving the Cost of AI Deployment?\" and \"Estimating the Carbon Footprint of BLOOM, a 176B Parameter Language Model,\" provide insights into the carbon footprint of AI models.\\n\\nTo calculate the carbon footprint of AI models, tools like CodeCarbon and Ecologits can be used. CodeCarbon helps measure the carbon footprint of your code, while Ecologits can measure the carbon footprint of using Large Language Models (LLMs) APIs.'}}}\n", + "{'event': 'on_chain_end', 'name': 'answer_ai_impact', 'run_id': '07ee7e5d-b2a1-4149-a7ee-8512df8fe31f', 'tags': ['graph:step:3'], 'metadata': {'langgraph_step': 3, 'langgraph_node': 'answer_ai_impact'}, 'data': {'input': {'user_input': 'impact of ai?', 'language': 'English', 'intent': 'ai_impact', 'query': 'impact of ai?', 'questions': None, 'answer': None, 'audience': 'expert and climate scientists that are not afraid of technical terms', 'sources_input': ['auto'], 'documents': None, 'recommended_content': None, 'graph_returned': None}, 'output': {'answer': 'The environmental impact of AI is not covered by the IPCC or IPBES reports. However, there are studies and tools available that can help understand the carbon footprint of AI models. \\n\\nFor more information on the carbon footprint of AI models, you can visit this page: [ClimateQ&A\\'s own carbon footprint](https://climateqa.com/docs/carbon-footprint/).\\n\\nAdditionally, you may want to look into the work of AI & climate expert scientist Sasha Luccioni. Some of their papers, such as \"Power Hungry Processing: Watts Driving the Cost of AI Deployment?\" and \"Estimating the Carbon Footprint of BLOOM, a 176B Parameter Language Model,\" provide insights into the carbon footprint of AI models.\\n\\nTo calculate the carbon footprint of AI models, tools like CodeCarbon and Ecologits can be used. CodeCarbon helps measure the carbon footprint of your code, while Ecologits can measure the carbon footprint of using Large Language Models (LLMs) APIs.'}}}\n", + "{'event': 'on_chain_stream', 'run_id': 'da753bb9-2339-4fc0-b1d7-86443019c4df', 'tags': [], 'metadata': {}, 'name': 'LangGraph', 'data': {'chunk': {'answer_ai_impact': {'answer': 'The environmental impact of AI is not covered by the IPCC or IPBES reports. However, there are studies and tools available that can help understand the carbon footprint of AI models. \\n\\nFor more information on the carbon footprint of AI models, you can visit this page: [ClimateQ&A\\'s own carbon footprint](https://climateqa.com/docs/carbon-footprint/).\\n\\nAdditionally, you may want to look into the work of AI & climate expert scientist Sasha Luccioni. Some of their papers, such as \"Power Hungry Processing: Watts Driving the Cost of AI Deployment?\" and \"Estimating the Carbon Footprint of BLOOM, a 176B Parameter Language Model,\" provide insights into the carbon footprint of AI models.\\n\\nTo calculate the carbon footprint of AI models, tools like CodeCarbon and Ecologits can be used. CodeCarbon helps measure the carbon footprint of your code, while Ecologits can measure the carbon footprint of using Large Language Models (LLMs) APIs.'}}}}\n", + "{'event': 'on_chain_end', 'name': 'LangGraph', 'run_id': 'da753bb9-2339-4fc0-b1d7-86443019c4df', 'tags': [], 'metadata': {}, 'data': {'output': {'answer_ai_impact': {'answer': 'The environmental impact of AI is not covered by the IPCC or IPBES reports. However, there are studies and tools available that can help understand the carbon footprint of AI models. \\n\\nFor more information on the carbon footprint of AI models, you can visit this page: [ClimateQ&A\\'s own carbon footprint](https://climateqa.com/docs/carbon-footprint/).\\n\\nAdditionally, you may want to look into the work of AI & climate expert scientist Sasha Luccioni. Some of their papers, such as \"Power Hungry Processing: Watts Driving the Cost of AI Deployment?\" and \"Estimating the Carbon Footprint of BLOOM, a 176B Parameter Language Model,\" provide insights into the carbon footprint of AI models.\\n\\nTo calculate the carbon footprint of AI models, tools like CodeCarbon and Ecologits can be used. CodeCarbon helps measure the carbon footprint of your code, while Ecologits can measure the carbon footprint of using Large Language Models (LLMs) APIs.'}}}}\n" + ] + }, + { + "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 here for more info. \n", + "\u001b[1;31mView Jupyter log for further details." + ] + } + ], + "source": [ + "async for event in result:\n", + " print(event)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 6. Gradio" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "from front.utils import make_html_source,parse_output_llm_with_sources,serialize_docs,make_toolbox\n", + "query = inputs[\"user_input\"]\n", + "steps_display = {\n", + "\"categorize_intent\":(\"🔄️ Analyzing user message\",True),\n", + "\"transform_query\":(\"🔄️ Thinking step by step to answer the question\",True),\n", + "\"retrieve_documents\":(\"🔄️ Searching in the knowledge base\",False),\n", + "}\n", + "history = [(query,None)]\n", + "start_streaming = False\n", + "intent = None\n", + "\n", + "\n", + "async for event in result:\n", + "\n", + " if event[\"event\"] == \"on_chat_model_stream\" and event[\"metadata\"][\"langgraph_node\"] in [\"answer_rag\", \"answer_chitchat\", \"answer_ai_impact\"]:\n", + " if start_streaming == False:\n", + " start_streaming = True\n", + " history[-1] = (query,\"\")\n", + "\n", + " new_token = event[\"data\"][\"chunk\"].content\n", + " # time.sleep(0.01)\n", + " previous_answer = history[-1][1]\n", + " previous_answer = previous_answer if previous_answer is not None else \"\"\n", + " answer_yet = previous_answer + new_token\n", + " answer_yet = parse_output_llm_with_sources(answer_yet)\n", + " history[-1] = (query,answer_yet)\n", + "\n", + " \n", + " elif event[\"name\"] == \"retrieve_documents\" and event[\"event\"] == \"on_chain_end\":\n", + " try:\n", + " docs = event[\"data\"][\"output\"][\"documents\"]\n", + " docs_html = []\n", + " for i, d in enumerate(docs, 1):\n", + " docs_html.append(make_html_source(d, i))\n", + " docs_html = \"\".join(docs_html)\n", + " except Exception as e:\n", + " print(f\"Error getting documents: {e}\")\n", + " print(event)\n", + "\n", + " # elif event[\"name\"] == \"retrieve_documents\" and event[\"event\"] == \"on_chain_start\":\n", + " # print(event)\n", + " # questions = event[\"data\"][\"input\"][\"questions\"]\n", + " # questions = \"\\n\".join([f\"{i+1}. {q['question']} ({q['source']})\" for i,q in enumerate(questions)])\n", + " # answer_yet = \"🔄️ Searching in the knowledge base\\n{questions}\"\n", + " # history[-1] = (query,answer_yet)\n", + "\n", + " elif event[\"name\"] == \"retrieve_graphs\" and event[\"event\"] == \"on_chain_end\":\n", + " try:\n", + " graphs = event[\"data\"][\"output\"][\"recommended_content\"]\n", + " except Exception as e:\n", + " print(f\"Error getting graphs: {e}\")\n", + " print(event)\n", + "\n", + "\n", + " for event_name,(event_description,display_output) in steps_display.items():\n", + " if event[\"name\"] == event_name:\n", + " if event[\"event\"] == \"on_chain_start\":\n", + " # answer_yet = f\"

{event_description}

\"\n", + " # answer_yet = make_toolbox(event_description, \"\", checked = False)\n", + " answer_yet = event_description\n", + " history[-1] = (query,answer_yet)\n", + " # elif event[\"event\"] == \"on_chain_end\":\n", + " # answer_yet = \"\"\n", + " # history[-1] = (query,answer_yet)\n", + " # if display_output:\n", + " # print(event[\"data\"][\"output\"])\n", + "\n", + " # if op['path'] == path_reformulation: # reforulated question\n", + " # try:\n", + " # output_language = op['value'][\"language\"] # str\n", + " # output_query = op[\"value\"][\"question\"]\n", + " # except Exception as e:\n", + " # raise gr.Error(f\"ClimateQ&A Error: {e} - The error has been noted, try another question and if the error remains, you can contact us :)\")\n", + " \n", + " # if op[\"path\"] == path_keywords:\n", + " # try:\n", + " # output_keywords = op['value'][\"keywords\"] # str\n", + " # output_keywords = \" AND \".join(output_keywords)\n", + " # except Exception as e:\n", + " # pass\n", + "\n", + "\n", + "\n", + " history = [tuple(x) for x in history]\n", + " # yield history,docs_html,output_query,output_language,gallery,output_query,output_keywords" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_383', 'returned_content': '', 'source': 'OWID', 'subtitle': 'The global mean surface temperature change as a result of the cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.', 'url': 'https://ourworldindata.org/grapher/global-warming-by-gas-and-source', 'similarity_score': 0.5550143122673035, 'content': 'Global warming contributions by gas and source', 'reranking_score': 0.651607871055603, 'query_used_for_retrieval': 'How do human activities contribute to global warming?', 'sources_used': ['IEA', 'OWID']}, page_content='Global warming contributions by gas and source'),\n", + " Document(metadata={'category': 'Climate Change', 'doc_id': 'owid_764', 'returned_content': '', 'source': 'OWID', 'subtitle': 'The global mean surface temperature change as a result of the cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.', 'url': 'https://ourworldindata.org/grapher/global-warming-by-gas-and-source', 'similarity_score': 0.5550143122673035, 'content': 'Global warming contributions by gas and source', 'reranking_score': 0.651607871055603, 'query_used_for_retrieval': 'How do human activities contribute to global warming?', 'sources_used': ['IEA', 'OWID']}, page_content='Global warming contributions by gas and source'),\n", + " Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_384', 'returned_content': '', 'source': 'OWID', 'subtitle': \"The global mean surface temperature change as a result of a country or region's cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.\", 'url': 'https://ourworldindata.org/grapher/warming-fossil-fuels-land-use', 'similarity_score': 0.6049439907073975, 'content': 'Global warming contributions from fossil fuels and land use', 'reranking_score': 0.22002366185188293, 'query_used_for_retrieval': 'How do human activities contribute to global warming?', 'sources_used': ['IEA', 'OWID']}, page_content='Global warming contributions from fossil fuels and land use'),\n", + " Document(metadata={'category': 'Climate Change', 'doc_id': 'owid_765', 'returned_content': '', 'source': 'OWID', 'subtitle': \"The global mean surface temperature change as a result of a country or region's cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.\", 'url': 'https://ourworldindata.org/grapher/warming-fossil-fuels-land-use', 'similarity_score': 0.6049439907073975, 'content': 'Global warming contributions from fossil fuels and land use', 'reranking_score': 0.22002366185188293, 'query_used_for_retrieval': 'How do human activities contribute to global warming?', 'sources_used': ['IEA', 'OWID']}, page_content='Global warming contributions from fossil fuels and land use'),\n", + " Document(metadata={'appears_in': 'Global Methane Tracker 2024', 'appears_in_url': 'https://www.iea.org/reports/global-methane-tracker-2024', 'doc_id': 'iea_133', 'returned_content': 'https://www.iea.org/data-and-statistics/charts/main-sources-of-methane-emissions', 'source': 'IEA', 'sources': 'Methane emissions and abatement potential for oil, gas, and coal are based on the IEA (2023) Global Methane Tracker (https://www.iea.org/data-and-statistics/data-tools/methane-tracker-data-explorer) ; agriculture and waste is based on UNEP (2023), Global Methane Assessment (https://www.unep.org/resources/report/global-methane-assessment-benefits-and-costs-mitigating-methane-emissions). Emissions from biomass and bioenergy burning, which total around 10 Mt (https://essd.copernicus.org/articles/12/1561/2020/) of methane per year each, are not shown.', 'similarity_score': 0.6158384084701538, 'content': 'Main sources of methane emissions', 'reranking_score': 0.0806397795677185, 'query_used_for_retrieval': 'What are the main causes of global warming?', 'sources_used': ['IEA', 'OWID']}, page_content='Main sources of methane emissions'),\n", + " Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_386', 'returned_content': '', 'source': 'OWID', 'subtitle': \"This is shown as a country or region's share of the global mean surface temperature change as a result of its cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.\", 'url': 'https://ourworldindata.org/grapher/contributions-global-temp-change', 'similarity_score': 0.6807445883750916, 'content': 'Global warming: Contributions to the change in global mean surface temperature', 'reranking_score': 0.03409431874752045, 'query_used_for_retrieval': 'How do human activities contribute to global warming?', 'sources_used': ['IEA', 'OWID']}, page_content='Global warming: Contributions to the change in global mean surface temperature'),\n", + " Document(metadata={'category': 'Climate Change', 'doc_id': 'owid_766', 'returned_content': '', 'source': 'OWID', 'subtitle': \"This is shown as a country or region's share of the global mean surface temperature change as a result of its cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.\", 'url': 'https://ourworldindata.org/grapher/contributions-global-temp-change', 'similarity_score': 0.6807445883750916, 'content': 'Global warming: Contributions to the change in global mean surface temperature', 'reranking_score': 0.03409431874752045, 'query_used_for_retrieval': 'How do human activities contribute to global warming?', 'sources_used': ['IEA', 'OWID']}, page_content='Global warming: Contributions to the change in global mean surface temperature'),\n", + " Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_342', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Emissions factors quantify the average CO₂ output per unit of energy. They are measured in kilograms of CO₂ per megawatt-hour (MWh) of energy from various fossil fuel sources.', 'url': 'https://ourworldindata.org/grapher/carbon-dioxide-emissions-factor', 'similarity_score': 0.6963810324668884, 'content': 'Carbon dioxide emissions factors', 'reranking_score': 0.007733839564025402, 'query_used_for_retrieval': 'What are the main causes of global warming?', 'sources_used': ['IEA', 'OWID']}, page_content='Carbon dioxide emissions factors'),\n", + " Document(metadata={'category': 'Fossil Fuels', 'doc_id': 'owid_1408', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Emissions factors quantify the average CO₂ output per unit of energy. They are measured in kilograms of CO₂ per megawatt-hour (MWh) of energy from various fossil fuel sources.', 'url': 'https://ourworldindata.org/grapher/carbon-dioxide-emissions-factor', 'similarity_score': 0.6963810324668884, 'content': 'Carbon dioxide emissions factors', 'reranking_score': 0.007733839564025402, 'query_used_for_retrieval': 'What are the main causes of global warming?', 'sources_used': ['IEA', 'OWID']}, page_content='Carbon dioxide emissions factors'),\n", + " Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_359', 'returned_content': '', 'source': 'OWID', 'subtitle': \"The global mean surface temperature change as a result of a country or region's cumulative emissions of carbon dioxide, methane, and nitrous oxide. This is for land use and agriculture only.\", 'url': 'https://ourworldindata.org/grapher/global-warming-land', 'similarity_score': 0.7010847330093384, 'content': 'Contribution to global mean surface temperature rise from agriculture and land use', 'reranking_score': 0.006090907845646143, 'query_used_for_retrieval': 'How do human activities contribute to global warming?', 'sources_used': ['IEA', 'OWID']}, page_content='Contribution to global mean surface temperature rise from agriculture and land use'),\n", + " Document(metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_387', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Greenhouse gas emissions include carbon dioxide, methane and nitrous oxide from all sources, including land-use change. They are measured in tonnes of carbon dioxide-equivalents over a 100-year timescale.', 'url': 'https://ourworldindata.org/grapher/total-ghg-emissions', 'similarity_score': 0.711588978767395, 'content': 'Greenhouse gas emissions', 'reranking_score': 0.001999091589823365, 'query_used_for_retrieval': 'What are the main causes of global warming?', 'sources_used': ['IEA', 'OWID']}, page_content='Greenhouse gas emissions')]" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from langchain_core.documents import Document\n", + "\n", + "graphs = [Document(page_content='Global warming contributions by gas and source', metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_383', 'returned_content': '', 'source': 'OWID', 'subtitle': 'The global mean surface temperature change as a result of the cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.', 'url': 'https://ourworldindata.org/grapher/global-warming-by-gas-and-source', 'similarity_score': 0.5550143122673035, 'content': 'Global warming contributions by gas and source', 'reranking_score': 0.651607871055603, 'query_used_for_retrieval': 'How do human activities contribute to global warming?', 'sources_used': ['IEA', 'OWID']}), Document(page_content='Global warming contributions by gas and source', metadata={'category': 'Climate Change', 'doc_id': 'owid_764', 'returned_content': '', 'source': 'OWID', 'subtitle': 'The global mean surface temperature change as a result of the cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.', 'url': 'https://ourworldindata.org/grapher/global-warming-by-gas-and-source', 'similarity_score': 0.5550143122673035, 'content': 'Global warming contributions by gas and source', 'reranking_score': 0.651607871055603, 'query_used_for_retrieval': 'How do human activities contribute to global warming?', 'sources_used': ['IEA', 'OWID']}), Document(page_content='Global warming contributions from fossil fuels and land use', metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_384', 'returned_content': '', 'source': 'OWID', 'subtitle': \"The global mean surface temperature change as a result of a country or region's cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.\", 'url': 'https://ourworldindata.org/grapher/warming-fossil-fuels-land-use', 'similarity_score': 0.6049439907073975, 'content': 'Global warming contributions from fossil fuels and land use', 'reranking_score': 0.22002366185188293, 'query_used_for_retrieval': 'How do human activities contribute to global warming?', 'sources_used': ['IEA', 'OWID']}), Document(page_content='Global warming contributions from fossil fuels and land use', metadata={'category': 'Climate Change', 'doc_id': 'owid_765', 'returned_content': '', 'source': 'OWID', 'subtitle': \"The global mean surface temperature change as a result of a country or region's cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.\", 'url': 'https://ourworldindata.org/grapher/warming-fossil-fuels-land-use', 'similarity_score': 0.6049439907073975, 'content': 'Global warming contributions from fossil fuels and land use', 'reranking_score': 0.22002366185188293, 'query_used_for_retrieval': 'How do human activities contribute to global warming?', 'sources_used': ['IEA', 'OWID']}), Document(page_content='Main sources of methane emissions', metadata={'appears_in': 'Global Methane Tracker 2024', 'appears_in_url': 'https://www.iea.org/reports/global-methane-tracker-2024', 'doc_id': 'iea_133', 'returned_content': 'https://www.iea.org/data-and-statistics/charts/main-sources-of-methane-emissions', 'source': 'IEA', 'sources': 'Methane emissions and abatement potential for oil, gas, and coal are based on the IEA (2023) Global Methane Tracker (https://www.iea.org/data-and-statistics/data-tools/methane-tracker-data-explorer) ; agriculture and waste is based on UNEP (2023), Global Methane Assessment (https://www.unep.org/resources/report/global-methane-assessment-benefits-and-costs-mitigating-methane-emissions). Emissions from biomass and bioenergy burning, which total around 10 Mt (https://essd.copernicus.org/articles/12/1561/2020/) of methane per year each, are not shown.', 'similarity_score': 0.6158384084701538, 'content': 'Main sources of methane emissions', 'reranking_score': 0.0806397795677185, 'query_used_for_retrieval': 'What are the main causes of global warming?', 'sources_used': ['IEA', 'OWID']}), Document(page_content='Global warming: Contributions to the change in global mean surface temperature', metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_386', 'returned_content': '', 'source': 'OWID', 'subtitle': \"This is shown as a country or region's share of the global mean surface temperature change as a result of its cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.\", 'url': 'https://ourworldindata.org/grapher/contributions-global-temp-change', 'similarity_score': 0.6807445883750916, 'content': 'Global warming: Contributions to the change in global mean surface temperature', 'reranking_score': 0.03409431874752045, 'query_used_for_retrieval': 'How do human activities contribute to global warming?', 'sources_used': ['IEA', 'OWID']}), Document(page_content='Global warming: Contributions to the change in global mean surface temperature', metadata={'category': 'Climate Change', 'doc_id': 'owid_766', 'returned_content': '', 'source': 'OWID', 'subtitle': \"This is shown as a country or region's share of the global mean surface temperature change as a result of its cumulative emissions of three gases – carbon dioxide, methane, and nitrous oxide.\", 'url': 'https://ourworldindata.org/grapher/contributions-global-temp-change', 'similarity_score': 0.6807445883750916, 'content': 'Global warming: Contributions to the change in global mean surface temperature', 'reranking_score': 0.03409431874752045, 'query_used_for_retrieval': 'How do human activities contribute to global warming?', 'sources_used': ['IEA', 'OWID']}), Document(page_content='Carbon dioxide emissions factors', metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_342', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Emissions factors quantify the average CO₂ output per unit of energy. They are measured in kilograms of CO₂ per megawatt-hour (MWh) of energy from various fossil fuel sources.', 'url': 'https://ourworldindata.org/grapher/carbon-dioxide-emissions-factor', 'similarity_score': 0.6963810324668884, 'content': 'Carbon dioxide emissions factors', 'reranking_score': 0.007733839564025402, 'query_used_for_retrieval': 'What are the main causes of global warming?', 'sources_used': ['IEA', 'OWID']}), Document(page_content='Carbon dioxide emissions factors', metadata={'category': 'Fossil Fuels', 'doc_id': 'owid_1408', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Emissions factors quantify the average CO₂ output per unit of energy. They are measured in kilograms of CO₂ per megawatt-hour (MWh) of energy from various fossil fuel sources.', 'url': 'https://ourworldindata.org/grapher/carbon-dioxide-emissions-factor', 'similarity_score': 0.6963810324668884, 'content': 'Carbon dioxide emissions factors', 'reranking_score': 0.007733839564025402, 'query_used_for_retrieval': 'What are the main causes of global warming?', 'sources_used': ['IEA', 'OWID']}), Document(page_content='Contribution to global mean surface temperature rise from agriculture and land use', metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_359', 'returned_content': '', 'source': 'OWID', 'subtitle': \"The global mean surface temperature change as a result of a country or region's cumulative emissions of carbon dioxide, methane, and nitrous oxide. This is for land use and agriculture only.\", 'url': 'https://ourworldindata.org/grapher/global-warming-land', 'similarity_score': 0.7010847330093384, 'content': 'Contribution to global mean surface temperature rise from agriculture and land use', 'reranking_score': 0.006090907845646143, 'query_used_for_retrieval': 'How do human activities contribute to global warming?', 'sources_used': ['IEA', 'OWID']}), Document(page_content='Greenhouse gas emissions', metadata={'category': 'CO2 & Greenhouse Gas Emissions', 'doc_id': 'owid_387', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Greenhouse gas emissions include carbon dioxide, methane and nitrous oxide from all sources, including land-use change. They are measured in tonnes of carbon dioxide-equivalents over a 100-year timescale.', 'url': 'https://ourworldindata.org/grapher/total-ghg-emissions', 'similarity_score': 0.711588978767395, 'content': 'Greenhouse gas emissions', 'reranking_score': 0.001999091589823365, 'query_used_for_retrieval': 'What are the main causes of global warming?', 'sources_used': ['IEA', 'OWID']})]\n", + "graphs" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'embedding': '',\n", + " 'metadata': {'source': 'OWID',\n", + " 'category': 'CO2 & Greenhouse Gas Emissions'}},\n", + " {'embedding': '',\n", + " 'metadata': {'source': 'OWID', 'category': 'Climate Change'}},\n", + " {'embedding': '',\n", + " 'metadata': {'source': 'OWID',\n", + " 'category': 'CO2 & Greenhouse Gas Emissions'}},\n", + " {'embedding': '',\n", + " 'metadata': {'source': 'OWID', 'category': 'Climate Change'}},\n", + " {'embedding': '',\n", + " 'metadata': {'source': 'OWID',\n", + " 'category': 'CO2 & Greenhouse Gas Emissions'}},\n", + " {'embedding': '',\n", + " 'metadata': {'source': 'OWID', 'category': 'Climate Change'}},\n", + " {'embedding': '',\n", + " 'metadata': {'source': 'OWID',\n", + " 'category': 'CO2 & Greenhouse Gas Emissions'}},\n", + " {'embedding': '',\n", + " 'metadata': {'source': 'OWID', 'category': 'Fossil Fuels'}},\n", + " {'embedding': '',\n", + " 'metadata': {'source': 'OWID',\n", + " 'category': 'CO2 & Greenhouse Gas Emissions'}},\n", + " {'embedding': '',\n", + " 'metadata': {'source': 'OWID',\n", + " 'category': 'CO2 & Greenhouse Gas Emissions'}}]" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "graphs = [\n", + " {\n", + " \"embedding\": x.metadata[\"returned_content\"],\n", + " \"metadata\": {\n", + " \"source\": x.metadata[\"source\"],\n", + " \"category\": x.metadata[\"category\"]\n", + " }\n", + " } for x in graphs if x.metadata[\"source\"] == \"OWID\"\n", + " ]\n", + "\n", + "graphs" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [], + "source": [ + "from collections import defaultdict\n", + "\n", + "def generate_html(graphs):\n", + " # Organize graphs by category\n", + " categories = defaultdict(list)\n", + " for graph in graphs:\n", + " category = graph['metadata']['category']\n", + " categories[category].append(graph['embedding'])\n", + "\n", + " # Begin constructing the HTML\n", + " html_code = '''\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " Graphs by Category\n", + " \n", + " \n", + "\n", + "\n", + "
\n", + "'''\n", + "\n", + " # Add buttons for each category\n", + " for i, category in enumerate(categories.keys()):\n", + " active_class = 'active' if i == 0 else ''\n", + " html_code += f''\n", + "\n", + " html_code += '
'\n", + "\n", + " # Add content for each category\n", + " for i, (category, embeds) in enumerate(categories.items()):\n", + " active_class = 'active' if i == 0 else ''\n", + " html_code += f'
'\n", + " for embed in embeds:\n", + " html_code += embed\n", + " html_code += '
'\n", + "\n", + " html_code += '''\n", + "\n", + "\n", + "'''\n", + "\n", + " return html_code\n" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'\\n\\n\\n\\n \\n \\n Graphs by Category\\n \\n \\n\\n\\n
\\n
\\n\\n\\n'" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "generate_html(graphs)" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Document(metadata={'category': 'Water Use & Stress', 'doc_id': 'owid_2184', 'returned_content': '', 'source': 'OWID', 'subtitle': 'Water quality is assessed by means of core physical and chemical parameters that reflect natural water quality. A water body is classified as \"good\" quality if at least 80% of monitoring values meet target quality levels.', 'url': 'https://ourworldindata.org/grapher/water-bodies-good-water-quality'}, page_content='Share of water bodies with good ambient water quality')" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "vectorstore_graphs.similarity_search_with_relevance_scores(\"What is the trend of clean water?\")[0][0]" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['',\n", + " '',\n", + " '',\n", + " '']" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test_graphs = [x[0].metadata[\"returned_content\"] for x in vectorstore_graphs.similarity_search_with_relevance_scores(\"What is the trend of clean water?\")]\n", + "test_graphs" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:httpx:HTTP Request: GET https://api.gradio.app/pkg-version \"HTTP/1.1 200 OK\"\n", + "INFO:httpx:HTTP Request: GET http://127.0.0.1:7868/gradio_api/startup-events \"HTTP/1.1 200 OK\"\n", + "INFO:httpx:HTTP Request: HEAD http://127.0.0.1:7868/ \"HTTP/1.1 200 OK\"\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "* Running on local URL: http://127.0.0.1:7868\n", + "\n", + "To create a public link, set `share=True` in `launch()`.\n" + ] + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [] + }, + "execution_count": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# simple gradio\n", + "import gradio as gr\n", + "with gr.Blocks() as blocks:\n", + " state_test = gr.State([])\n", + " \n", + " button = gr.Button(\"abc\")\n", + " button.click(lambda : graphs, inputs = [], outputs = state_test)\n", + " with gr.Column():\n", + " # gr.HTML(generate_html(graphs), elem_id=\"graphs-placeholder\")\n", + " gr.HTML(test_graphs)\n", + " # gr.HTML(generate_html(state_test), elem_id=\"graphs-placeholder\")\n", + "\n", + "blocks.launch()\n", + "\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:sentence_transformers.SentenceTransformer:Use pytorch device_name: cpu\n", + "INFO:sentence_transformers.SentenceTransformer:Load pretrained SentenceTransformer: BAAI/bge-base-en-v1.5\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Loading embeddings model: BAAI/bge-base-en-v1.5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/dora/anaconda3/envs/climateqa_huggingface/lib/python3.12/site-packages/huggingface_hub/file_download.py:1132: FutureWarning: `resume_download` is deprecated and will be removed in version 1.0.0. Downloads always resume when possible. If you want to force a new download, use `force_download=True`.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Loading FlashRankRanker model ms-marco-TinyBERT-L-2-v2\n", + "Loading model FlashRank model ms-marco-TinyBERT-L-2-v2...\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:chromadb.telemetry.posthog:Anonymized telemetry enabled. See https://docs.trychroma.com/telemetry for more information.\n" + ] + }, + { + "ename": "NameError", + "evalue": "name 'make_graph_agent' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[18], line 10\u001b[0m\n\u001b[1;32m 7\u001b[0m vectorstore_graphs \u001b[38;5;241m=\u001b[39m Chroma(persist_directory\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m/home/dora/climate-question-answering/data/vectorstore\u001b[39m\u001b[38;5;124m\"\u001b[39m, embedding_function\u001b[38;5;241m=\u001b[39membeddings_function)\n\u001b[1;32m 9\u001b[0m \u001b[38;5;66;03m# agent = make_graph_agent(llm,vectorstore,reranker)\u001b[39;00m\n\u001b[0;32m---> 10\u001b[0m agent \u001b[38;5;241m=\u001b[39m \u001b[43mmake_graph_agent\u001b[49m(llm\u001b[38;5;241m=\u001b[39mllm, vectorstore_ipcc\u001b[38;5;241m=\u001b[39mvectorstore, vectorstore_graphs\u001b[38;5;241m=\u001b[39mvectorstore_graphs, reranker\u001b[38;5;241m=\u001b[39mreranker)\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mchat\u001b[39m(query,history,audience,sources,reports):\n\u001b[1;32m 13\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"taking a query and a message history, use a pipeline (reformulation, retriever, answering) to yield a tuple of:\u001b[39;00m\n\u001b[1;32m 14\u001b[0m \u001b[38;5;124;03m (messages in gradio format, messages in langchain format, source documents)\"\"\"\u001b[39;00m\n", + "\u001b[0;31mNameError\u001b[0m: name 'make_graph_agent' is not defined" + ] + } + ], + "source": [ + "embeddings_function = get_embeddings_function()\n", + "llm = get_llm(provider=\"openai\",max_tokens = 1024,temperature = 0.0)\n", + "reranker = get_reranker(\"nano\")\n", + "\n", + "# Create vectorstore and retriever\n", + "vectorstore = get_pinecone_vectorstore(embeddings_function)\n", + "vectorstore_graphs = Chroma(persist_directory=f\"{ROOT_DIR}/data/vectorstore\", embedding_function=embeddings_function)\n", + "\n", + "# agent = make_graph_agent(llm,vectorstore,reranker)\n", + "agent = make_graph_agent(llm=llm, vectorstore_ipcc=vectorstore, vectorstore_graphs=vectorstore_graphs, reranker=reranker)\n", + "\n", + "async def chat(query,history,audience,sources,reports):\n", + " \"\"\"taking a query and a message history, use a pipeline (reformulation, retriever, answering) to yield a tuple of:\n", + " (messages in gradio format, messages in langchain format, source documents)\"\"\"\n", + "\n", + " date_now = datetime.now().strftime(\"%Y-%m-%d %H:%M:%S\")\n", + " print(f\">> NEW QUESTION ({date_now}) : {query}\")\n", + "\n", + " if audience == \"Children\":\n", + " audience_prompt = audience_prompts[\"children\"]\n", + " elif audience == \"General public\":\n", + " audience_prompt = audience_prompts[\"general\"]\n", + " elif audience == \"Experts\":\n", + " audience_prompt = audience_prompts[\"experts\"]\n", + " else:\n", + " audience_prompt = audience_prompts[\"experts\"]\n", + "\n", + " # Prepare default values\n", + " if len(sources) == 0:\n", + " sources = [\"IPCC\"]\n", + "\n", + " if len(reports) == 0:\n", + " reports = []\n", + " \n", + " inputs = {\"user_input\": query,\"audience\": audience_prompt,\"sources\":sources}\n", + " print(f\"\\n\\nInputs:\\n {inputs}\\n\\n\")\n", + " result = agent.astream_events(inputs,version = \"v1\") #{\"callbacks\":[MyCustomAsyncHandler()]})\n", + " # result = rag_chain.stream(inputs)\n", + "\n", + " # path_reformulation = \"/logs/reformulation/final_output\"\n", + " # path_keywords = \"/logs/keywords/final_output\"\n", + " # path_retriever = \"/logs/find_documents/final_output\"\n", + " # path_answer = \"/logs/answer/streamed_output_str/-\"\n", + "\n", + " docs = []\n", + " graphs_html = \"\"\n", + " docs_html = \"\"\n", + " output_query = \"\"\n", + " output_language = \"\"\n", + " output_keywords = \"\"\n", + " gallery = []\n", + " updates = {}\n", + " start_streaming = False\n", + "\n", + " steps_display = {\n", + " \"categorize_intent\":(\"🔄️ Analyzing user message\",True),\n", + " \"transform_query\":(\"🔄️ Thinking step by step to answer the question\",True),\n", + " \"retrieve_documents\":(\"🔄️ Searching in the knowledge base\",False),\n", + " }\n", + "\n", + " try:\n", + " async for event in result:\n", + "\n", + " if event[\"event\"] == \"on_chat_model_stream\" and event[\"metadata\"][\"langgraph_node\"] in [\"answer_rag\", \"answer_chitchat\", \"answer_ai_impact\"]:\n", + " if start_streaming == False:\n", + " start_streaming = True\n", + " history[-1] = (query,\"\")\n", + "\n", + " new_token = event[\"data\"][\"chunk\"].content\n", + " # time.sleep(0.01)\n", + " previous_answer = history[-1][1]\n", + " previous_answer = previous_answer if previous_answer is not None else \"\"\n", + " answer_yet = previous_answer + new_token\n", + " answer_yet = parse_output_llm_with_sources(answer_yet)\n", + " history[-1] = (query,answer_yet)\n", + " \n", + " elif event[\"name\"] == \"retrieve_documents\" and event[\"event\"] == \"on_chain_end\":\n", + " try:\n", + " docs = event[\"data\"][\"output\"][\"documents\"]\n", + " docs_html = []\n", + " for i, d in enumerate(docs, 1):\n", + " docs_html.append(make_html_source(d, i))\n", + " docs_html = \"\".join(docs_html)\n", + "\n", + " print(docs_html)\n", + " except Exception as e:\n", + " print(f\"Error getting documents: {e}\")\n", + " print(event)\n", + "\n", + " # elif event[\"name\"] == \"retrieve_documents\" and event[\"event\"] == \"on_chain_start\":\n", + " # print(event)\n", + " # questions = event[\"data\"][\"input\"][\"questions\"]\n", + " # questions = \"\\n\".join([f\"{i+1}. {q['question']} ({q['source']})\" for i,q in enumerate(questions)])\n", + " # answer_yet = \"🔄️ Searching in the knowledge base\\n{questions}\"\n", + " # history[-1] = (query,answer_yet)\n", + "\n", + " elif event[\"name\"] == \"retrieve_graphs\" and event[\"event\"] == \"on_chain_end\":\n", + " try:\n", + " recommended_content = event[\"data\"][\"output\"][\"recommended_content\"]\n", + " graphs = [\n", + " {\n", + " \"embedding\": x.metadata[\"returned_content\"],\n", + " \"metadata\": {\n", + " \"source\": x.metadata[\"source\"],\n", + " \"category\": x.metadata[\"category\"]\n", + " }\n", + " } for x in recommended_content if x.metadata[\"source\"] == \"OWID\"\n", + " ]\n", + " \n", + " graphs_by_category = defaultdict(list)\n", + " \n", + " # Organize graphs by category\n", + " for graph in graphs:\n", + " category = graph['metadata']['category']\n", + " graphs_by_category[category].append(graph['embedding']) \n", + "\n", + " \n", + " for category, graphs in graphs_by_category.items():\n", + " embeddings = \"\\n\".join(graphs)\n", + " updates[graph_displays[category]] = embeddings\n", + " \n", + " print(f\"\\n\\nUpdates:\\n {updates}\\n\\n\")\n", + " \n", + " except Exception as e:\n", + " print(f\"Error getting graphs: {e}\")\n", + "\n", + " for event_name,(event_description,display_output) in steps_display.items():\n", + " if event[\"name\"] == event_name:\n", + " if event[\"event\"] == \"on_chain_start\":\n", + " # answer_yet = f\"

{event_description}

\"\n", + " # answer_yet = make_toolbox(event_description, \"\", checked = False)\n", + " answer_yet = event_description\n", + " history[-1] = (query,answer_yet)\n", + " # elif event[\"event\"] == \"on_chain_end\":\n", + " # answer_yet = \"\"\n", + " # history[-1] = (query,answer_yet)\n", + " # if display_output:\n", + " # print(event[\"data\"][\"output\"])\n", + "\n", + " # if op['path'] == path_reformulation: # reforulated question\n", + " # try:\n", + " # output_language = op['value'][\"language\"] # str\n", + " # output_query = op[\"value\"][\"question\"]\n", + " # except Exception as e:\n", + " # raise gr.Error(f\"ClimateQ&A Error: {e} - The error has been noted, try another question and if the error remains, you can contact us :)\")\n", + " \n", + " # if op[\"path\"] == path_keywords:\n", + " # try:\n", + " # output_keywords = op['value'][\"keywords\"] # str\n", + " # output_keywords = \" AND \".join(output_keywords)\n", + " # except Exception as e:\n", + " # pass\n", + "\n", + "\n", + "\n", + " history = [tuple(x) for x in history]\n", + " yield history,docs_html,output_query,output_language,gallery,updates#,output_query,output_keywords\n", + "\n", + "\n", + " except Exception as e:\n", + " raise gr.Error(f\"{e}\")\n", + "\n", + "\n", + " try:\n", + " # Log answer on Azure Blob Storage\n", + " if os.getenv(\"GRADIO_ENV\") != \"local\":\n", + " timestamp = str(datetime.now().timestamp())\n", + " file = timestamp + \".json\"\n", + " prompt = history[-1][0]\n", + " logs = {\n", + " \"user_id\": str(user_id),\n", + " \"prompt\": prompt,\n", + " \"query\": prompt,\n", + " \"question\":output_query,\n", + " \"sources\":sources,\n", + " \"docs\":serialize_docs(docs),\n", + " \"answer\": history[-1][1],\n", + " \"time\": timestamp,\n", + " }\n", + " log_on_azure(file, logs, share_client)\n", + " except Exception as e:\n", + " print(f\"Error logging on Azure Blob Storage: {e}\")\n", + " raise gr.Error(f\"ClimateQ&A Error: {str(e)[:100]} - The error has been noted, try another question and if the error remains, you can contact us :)\")\n", + "\n", + " image_dict = {}\n", + " for i,doc in enumerate(docs):\n", + " \n", + " if doc.metadata[\"chunk_type\"] == \"image\":\n", + " try:\n", + " key = f\"Image {i+1}\"\n", + " image_path = doc.metadata[\"image_path\"].split(\"documents/\")[1]\n", + " img = get_image_from_azure_blob_storage(image_path)\n", + "\n", + " # Convert the image to a byte buffer\n", + " buffered = BytesIO()\n", + " img.save(buffered, format=\"PNG\")\n", + " img_str = base64.b64encode(buffered.getvalue()).decode()\n", + "\n", + " # Embedding the base64 string in Markdown\n", + " markdown_image = f\"![Alt text](data:image/png;base64,{img_str})\"\n", + " image_dict[key] = {\"img\":img,\"md\":markdown_image,\"caption\":doc.page_content,\"key\":key,\"figure_code\":doc.metadata[\"figure_code\"]}\n", + " except Exception as e:\n", + " print(f\"Skipped adding image {i} because of {e}\")\n", + "\n", + " if len(image_dict) > 0:\n", + "\n", + " gallery = [x[\"img\"] for x in list(image_dict.values())]\n", + " img = list(image_dict.values())[0]\n", + " img_md = img[\"md\"]\n", + " img_caption = img[\"caption\"]\n", + " img_code = img[\"figure_code\"]\n", + " if img_code != \"N/A\":\n", + " img_name = f\"{img['key']} - {img['figure_code']}\"\n", + " else:\n", + " img_name = f\"{img['key']}\"\n", + "\n", + " answer_yet = history[-1][1] + f\"\\n\\n{img_md}\\n

{img_name} - {img_caption}

\"\n", + " history[-1] = (history[-1][0],answer_yet)\n", + " history = [tuple(x) for x in history]\n", + "\n", + " print(f\"\\n\\nImages:\\n{gallery}\")\n", + "\n", + " # gallery = [x.metadata[\"image_path\"] for x in docs if (len(x.metadata[\"image_path\"]) > 0 and \"IAS\" in x.metadata[\"image_path\"])]\n", + " # if len(gallery) > 0:\n", + " # gallery = list(set(\"|\".join(gallery).split(\"|\")))\n", + " # gallery = [get_image_from_azure_blob_storage(x) for x in gallery]\n", + "\n", + " yield history,docs_html,output_query,output_language,gallery,updates#,output_query,output_keywords\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "climateqa", + "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.9" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}