{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "07f255d7", "metadata": { "tags": [] }, "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", "\n", "%load_ext autoreload\n", "%autoreload 2\n", "\n", "import sys\n", "sys.path.append(\"C:/git/climate-question-answering\")\n", "sys.path.append(\"/mnt/c/git/climate-question-answering\")\n", "\n", "from dotenv import load_dotenv\n", "load_dotenv()" ] }, { "cell_type": "markdown", "id": "4c9258cc-3800-4485-bdd8-889b299b9133", "metadata": {}, "source": [ "# Import objects" ] }, { "cell_type": "code", "execution_count": 2, "id": "6af1a96e", "metadata": { "tags": [] }, "outputs": [], "source": [ "from climateqa.engine.llm import get_llm\n", "from climateqa.engine.llm.ollama import get_llm as get_llm_ollama\n", "\n", "llm = get_llm(provider=\"openai\")\n", "# llm = get_llm_ollama(model = \"llama3\")" ] }, { "cell_type": "code", "execution_count": 3, "id": "a9128bfc-4b24-4b25-b7a7-68423b1124b1", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/theolvs/.local/lib/python3.10/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" ] }, { "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" ] } ], "source": [ "from climateqa.engine.reranker import get_reranker\n", "\n", "# reranker = get_reranker(\"large\")\n", "reranker = get_reranker(\"nano\")\n", "# from rerankers import Reranker\n", "# # Specific flashrank model.\n", "# # reranker = Reranker('ms-marco-TinyBERT-L-2-v2', model_type='flashrank')\n", "# # reranker = Reranker('ms-marco-MiniLM-L-12-v2', model_type='flashrank')\n", "# # reranker = Reranker('cross-encoder/ms-marco-MiniLM-L-4-v2', model_type='cross-encoder')\n", "# # reranker = Reranker(\"mixedbread-ai/mxbai-rerank-xsmall-v1\", model_type='cross-encoder')\n", "# # reranker = Reranker(\"mixedbread-ai/mxbai-rerank-xsmall-v1\", model_type='cross-encoder')\n", "# reranker = Reranker(\"cohere\", lang='en', api_key = \"XXX\")" ] }, { "cell_type": "code", "execution_count": 4, "id": "942d2705-22dd-46cf-8c31-6daa127e4743", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Loading embeddings model: BAAI/bge-base-en-v1.5\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:sentence_transformers.SentenceTransformer:Load pretrained SentenceTransformer: BAAI/bge-base-en-v1.5\n", "INFO:sentence_transformers.SentenceTransformer:Use pytorch device_name: cuda\n", "/home/theolvs/miniconda3/envs/climateqa/lib/python3.10/site-packages/langchain_core/_api/deprecation.py:119: LangChainDeprecationWarning: The class `Pinecone` was deprecated in LangChain 0.0.18 and will be removed in 0.2.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", " warn_deprecated(\n" ] } ], "source": [ "from climateqa.engine.vectorstore import get_pinecone_vectorstore\n", "from climateqa.engine.embeddings import get_embeddings_function\n", "from climateqa.knowledge.retriever import ClimateQARetriever\n", "\n", "embeddings_function = get_embeddings_function()\n", "vectorstore = get_pinecone_vectorstore(embeddings_function)" ] }, { "cell_type": "code", "execution_count": 5, "id": "882811c8-5890-4048-8630-d052c5179d7d", "metadata": {}, "outputs": [], "source": [ "import torch" ] }, { "cell_type": "code", "execution_count": 6, "id": "51aed81d-860b-409a-bae0-f0e1eeb0f120", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "torch.cuda.is_available()" ] }, { "cell_type": "markdown", "id": "16eb91cb-3bfb-4c0c-b29e-753c954c2399", "metadata": {}, "source": [ "# Semantic Routing" ] }, { "cell_type": "code", "execution_count": 7, "id": "1e769371-1f8c-4f34-89c5-c0f9914d47a0", "metadata": { "tags": [] }, "outputs": [], "source": [ "from climateqa.engine.chains.intent_categorization import make_intent_categorization_chain" ] }, { "cell_type": "code", "execution_count": 8, "id": "480ad611-33c7-49ea-b02c-94d6ce1f1d1a", "metadata": { "tags": [] }, "outputs": [], "source": [ "cat_chain = make_intent_categorization_chain(llm)" ] }, { "cell_type": "code", "execution_count": 9, "id": "82cf49d9-d48e-4d5c-8666-bcc95f637371", "metadata": { "tags": [] }, "outputs": [], "source": [ "# for question in SAMPLE_QUESTIONS:\n", "# output = router_chain.invoke({\"input\":question})\n", "# print(question)\n", "# print(output)\n", "# print(\"-\"*100)\n", "# break" ] }, { "cell_type": "code", "execution_count": 10, "id": "d8ef7e0f-ac5f-4323-b02e-753ce2b4afda", "metadata": { "tags": [] }, "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": [ "{'intent': 'search'}" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cat_chain.invoke({\"input\":\"Which industries have the highest GHG emissions?\"})" ] }, { "cell_type": "code", "execution_count": 11, "id": "a9c89f2d-c597-47b8-ae50-75eda964e609", "metadata": {}, "outputs": [], "source": [ "from climateqa.knowledge.openalex import OpenAlexRetriever\n", "from climateqa.engine.chains.keywords_extraction import make_keywords_extraction_chain" ] }, { "cell_type": "code", "execution_count": 12, "id": "0c609d34-5767-47a6-90a4-d5987e9499ee", "metadata": {}, "outputs": [], "source": [ "kec = make_keywords_extraction_chain(llm)" ] }, { "cell_type": "code", "execution_count": 13, "id": "5d781cd4-228b-462f-bd0e-55c02084a616", "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" ] } ], "source": [ "output = kec.invoke(\"What is the environmental footprint of artificial intelligence\")" ] }, { "cell_type": "code", "execution_count": 14, "id": "553fd4d4-fe5a-4050-ae31-dffa2c7af7b2", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'keywords': ['environmental footprint', 'artificial intelligence']}" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "output" ] }, { "cell_type": "code", "execution_count": 15, "id": "50a57f08-40e5-4419-8568-0739a13af904", "metadata": {}, "outputs": [], "source": [ "ROUTING_INDEX = {\n", " \"Vector\":[\"IPCC\",\"IPBES\",\"IPOS\"],\n", " \"OpenAlex\":[\"OpenAlex\"],\n", "}\n", "\n", "POSSIBLE_SOURCES = [y for values in ROUTING_INDEX.values() for y in values]" ] }, { "cell_type": "code", "execution_count": 16, "id": "6b45dd9c-58c3-4204-bf44-7b9eb35dcb9d", "metadata": {}, "outputs": [], "source": [ "questions = [\n", " {\"question\":\"What is climate change ?\",\"sources\":[\"IPCC\",\"IPBES\"]},\n", " {\"question\":\"What is the link between El Nino and climate change ?\",\"sources\":[\"IPCC\",\"OpenAlex\"]},\n", "]\n", "\n", "state = {\"remaining_questions\":questions,\"auto_mode\":False,\"sources_input\":[\"OpenAlex\"]}" ] }, { "cell_type": "code", "execution_count": 17, "id": "90b02a8e-6e67-4592-8bc7-959b544e914b", "metadata": {}, "outputs": [ { "ename": "ModuleNotFoundError", "evalue": "No module named 'climateqa.engine.chains.search'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[17], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mclimateqa\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mengine\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mchains\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01msearch\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m make_search_node\n\u001b[1;32m 3\u001b[0m start_search \u001b[38;5;241m=\u001b[39m make_search_node()\n", "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'climateqa.engine.chains.search'" ] } ], "source": [ "from climateqa.engine.chains.search import make_search_node\n", "\n", "start_search = make_search_node()" ] }, { "cell_type": "code", "execution_count": 18, "id": "347737d8-c4cb-45a7-9e5d-74d1a2e3f5a2", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'start_search' 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 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m state\u001b[38;5;241m.\u001b[39mupdate(\u001b[43mstart_search\u001b[49m(state))\n\u001b[1;32m 2\u001b[0m state\n", "\u001b[0;31mNameError\u001b[0m: name 'start_search' is not defined" ] } ], "source": [ "state.update(start_search(state))\n", "state" ] }, { "cell_type": "code", "execution_count": 177, "id": "a27425de-1297-417a-af02-fba270df8e38", "metadata": {}, "outputs": [], "source": [ "from climateqa.engine.chains.retrieve_documents import make_retriever_node" ] }, { "cell_type": "code", "execution_count": 178, "id": "fde71c99-8bdd-4fd5-b36e-6804ec21bf2c", "metadata": {}, "outputs": [], "source": [ "retrieve = make_retriever_node(vectorstore,reranker,llm)" ] }, { "cell_type": "code", "execution_count": 179, "id": "cdad5b2f-2103-43d6-9d7f-e2addc2c2c3f", "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" ] }, { "name": "stdout", "output_type": "stream", "text": [ "... OpenAlex query: climate change\n" ] } ], "source": [ "new_state = await retrieve.ainvoke(state)" ] }, { "cell_type": "code", "execution_count": 183, "id": "751a9a6a-8271-4e89-8754-e2065cd7d737", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7" ] }, "execution_count": 183, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(new_state[\"documents\"])" ] }, { "cell_type": "code", "execution_count": 182, "id": "06db606d-0b04-4e7d-9f55-4f7cefbce654", "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "'Document' 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[182], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mnew_state\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mdocuments\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mreranking_score\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\n", "\u001b[0;31mTypeError\u001b[0m: 'Document' object is not subscriptable" ] } ], "source": [ "new_state[\"documents\"][1][\"reranking_score\"]" ] }, { "cell_type": "code", "execution_count": 26, "id": "a5ed23f9-bbbe-4a0b-b919-429e08837765", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'IPCC'}" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "set([\"IPCC\",\"OpenAlex\"]).intersection(set([\"IPCC\",\"IPBES\",\"IPOS\"]))" ] }, { "cell_type": "code", "execution_count": 27, "id": "ca801dc5-958b-4392-88ac-5cb69e5f6fab", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'question': \"C'est quoi le réchauffement?\",\n", " 'sources': ['IPCC', 'IPBES'],\n", " 'index': 'Vector'},\n", " {'question': \"C'est quoi le réchauffement?\",\n", " 'sources': ['OpenAlex'],\n", " 'index': 'OpenAlex'},\n", " {'question': \"C'est quoi le YOO?\", 'sources': ['IPBES'], 'index': 'Vector'},\n", " {'question': \"C'est quoi le YOO?\",\n", " 'sources': ['OpenAlex'],\n", " 'index': 'OpenAlex'}]" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "new_questions = []\n", "\n", "for q in questions:\n", " question,sources = q[\"question\"],q[\"sources\"]\n", "\n", " for index,index_sources in ROUTING_INDEX.items():\n", " selected_sources = list(set(sources).intersection(index_sources))\n", " new_questions.append({\"question\":question,\"sources\":selected_sources,\"index\":index})\n", "\n", "new_questions" ] }, { "cell_type": "code", "execution_count": 199, "id": "6091ada7-851c-4ffc-859e-ea33a6fbb310", "metadata": {}, "outputs": [], "source": [ "oa = OpenAlex()" ] }, { "cell_type": "code", "execution_count": 216, "id": "8c5771bb-9074-45e0-afdb-f9eda2cb5ad4", "metadata": {}, "outputs": [], "source": [ "test = oa.search(\"warming AND impoverished communities\")" ] }, { "cell_type": "code", "execution_count": 217, "id": "5ef2094a-2e98-4ed9-b0a6-7536ae8057ca", "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", " \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", " \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", " \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", " \n", " \n", " \n", "
iddoititledisplay_namerelevance_scorepublication_yearpublication_dateidslanguageprimary_location...cited_by_api_urlcounts_by_yearupdated_datecreated_dateabstractis_oapdf_urlurlcontentnum_tokens
0https://openalex.org/W2117777590https://doi.org/10.1111/j.1523-1739.1990.tb002...The Onslaught of Alien Species, and Other Chal...The Onslaught of Alien Species, and Other Chal...155.60701019901990-09-01{'openalex': 'https://openalex.org/W2117777590...en{'is_oa': False, 'landing_page_url': 'https://......https://api.openalex.org/works?filter=cites:W2...[{'year': 2024, 'cited_by_count': 1}, {'year':...2024-07-01T21:42:17.5926812016-06-24Abstract: Among the many environmental challen...FalseNonehttps://openalex.org/W2117777590The Onslaught of Alien Species, and Other Chal...231
1https://openalex.org/W2057596265https://doi.org/10.1016/j.bjid.2014.11.004Impact of human schistosomiasis in sub-Saharan...Impact of human schistosomiasis in sub-Saharan...136.45924020152015-03-01{'openalex': 'https://openalex.org/W2057596265...en{'is_oa': True, 'landing_page_url': 'https://d......https://api.openalex.org/works?filter=cites:W2...[{'year': 2024, 'cited_by_count': 18}, {'year'...2024-06-26T01:44:20.8317262016-06-24Schistosomiasis, a neglected tropical disease ...TrueNonehttps://openalex.org/W2057596265Impact of human schistosomiasis in sub-Saharan...385
2https://openalex.org/W2094131597https://doi.org/10.1111/j.1472-4642.2010.00637.xHalf a century of succession in a temperate oa...Half a century of succession in a temperate oa...129.60660020102010-02-21{'openalex': 'https://openalex.org/W2094131597...en{'is_oa': True, 'landing_page_url': 'https://d......https://api.openalex.org/works?filter=cites:W2...[{'year': 2024, 'cited_by_count': 8}, {'year':...2024-07-01T13:42:04.9868772016-06-24Abstract Aim Lowland woodlands in Europe went ...Truehttps://onlinelibrary.wiley.com/doi/pdfdirect/...https://openalex.org/W2094131597Half a century of succession in a temperate oa...394
3https://openalex.org/W2042539814https://doi.org/10.1080/0028825x.1964.10428748Facets of the distribution of forest vegetatio...Facets of the distribution of forest vegetatio...100.42501019641964-12-01{'openalex': 'https://openalex.org/W2042539814...en{'is_oa': True, 'landing_page_url': 'https://d......https://api.openalex.org/works?filter=cites:W2...[{'year': 2024, 'cited_by_count': 2}, {'year':...2024-06-26T19:33:50.8444632016-06-24Summary The altitudinal sequences of vegetatio...Truehttps://www.tandfonline.com/doi/pdf/10.1080/00...https://openalex.org/W2042539814Facets of the distribution of forest vegetatio...463
4https://openalex.org/W1982291004https://doi.org/10.1016/j.jhevol.2010.04.002The Early–Middle Pleistocene environmental and...The Early–Middle Pleistocene environmental and...97.53789520112011-04-01{'openalex': 'https://openalex.org/W1982291004...en{'is_oa': False, 'landing_page_url': 'https://......https://api.openalex.org/works?filter=cites:W1...[{'year': 2024, 'cited_by_count': 3}, {'year':...2024-07-01T20:12:53.4095762016-06-24The dispersal of hominins may have been favore...TrueNonehttps://openalex.org/W1982291004The Early–Middle Pleistocene environmental and...312
..................................................................
95https://openalex.org/W2079111689https://doi.org/10.1111/j.0030-1299.2004.13255.xImpacts of multiple stressors on biodiversity ...Impacts of multiple stressors on biodiversity ...19.72595020042004-02-16{'openalex': 'https://openalex.org/W2079111689...en{'is_oa': False, 'landing_page_url': 'https://......https://api.openalex.org/works?filter=cites:W2...[{'year': 2024, 'cited_by_count': 18}, {'year'...2024-06-26T10:03:56.8711062016-06-24Ecosystem resistance to a single stressor reli...FalseNonehttps://openalex.org/W2079111689Impacts of multiple stressors on biodiversity ...193
96https://openalex.org/W2911810635https://doi.org/10.1007/978-981-13-2101-6_1Introduction: The Dynamics of Sustainability a...Introduction: The Dynamics of Sustainability a...19.62872920192019-01-01{'openalex': 'https://openalex.org/W2911810635...en{'is_oa': False, 'landing_page_url': 'https://......https://api.openalex.org/works?filter=cites:W2...[{'year': 2019, 'cited_by_count': 1}]2024-06-27T09:59:31.3405592019-02-21Challenges to achieving sustainable communitie...FalseNonehttps://openalex.org/W2911810635Introduction: The Dynamics of Sustainability a...204
97https://openalex.org/W2037356735https://doi.org/10.1046/j.1523-1739.2002.01025.xEcosystem Decay of Amazonian Forest Fragments:...Ecosystem Decay of Amazonian Forest Fragments:...19.59756720022002-05-28{'openalex': 'https://openalex.org/W2037356735...en{'is_oa': True, 'landing_page_url': 'https://d......https://api.openalex.org/works?filter=cites:W2...[{'year': 2024, 'cited_by_count': 24}, {'year'...2024-07-02T00:54:07.1746412016-06-24Abstract: We synthesized key findings from the...Truehttps://onlinelibrary.wiley.com/doi/pdfdirect/...https://openalex.org/W2037356735Ecosystem Decay of Amazonian Forest Fragments:...199
98https://openalex.org/W4214639054https://doi.org/10.2307/1129836The Determinants of Parenting: A Process ModelThe Determinants of Parenting: A Process Model19.50923319841984-02-01{'openalex': 'https://openalex.org/W4214639054...en{'is_oa': False, 'landing_page_url': 'https://......https://api.openalex.org/works?filter=cites:W4...[{'year': 2024, 'cited_by_count': 76}, {'year'...2024-07-02T04:42:30.9260042022-03-02FalseNonehttps://openalex.org/W4214639054The Determinants of Parenting: A Process Model10
99https://openalex.org/W1971797150https://doi.org/10.2307/2092897Tally's Corner: A Study of Negro Streetcorner ...Tally's Corner: A Study of Negro Streetcorner ...19.46401419681968-10-01{'openalex': 'https://openalex.org/W1971797150...en{'is_oa': False, 'landing_page_url': 'https://......https://api.openalex.org/works?filter=cites:W1...[{'year': 2024, 'cited_by_count': 3}, {'year':...2024-06-30T03:20:06.0545912016-06-24Chapter 1 Foreword to the 2003 Edition Chapter...FalseNonehttps://openalex.org/W1971797150Tally's Corner: A Study of Negro Streetcorner ...125
\n", "

99 rows × 55 columns

\n", "
" ], "text/plain": [ " id \\\n", "0 https://openalex.org/W2117777590 \n", "1 https://openalex.org/W2057596265 \n", "2 https://openalex.org/W2094131597 \n", "3 https://openalex.org/W2042539814 \n", "4 https://openalex.org/W1982291004 \n", ".. ... \n", "95 https://openalex.org/W2079111689 \n", "96 https://openalex.org/W2911810635 \n", "97 https://openalex.org/W2037356735 \n", "98 https://openalex.org/W4214639054 \n", "99 https://openalex.org/W1971797150 \n", "\n", " doi \\\n", "0 https://doi.org/10.1111/j.1523-1739.1990.tb002... \n", "1 https://doi.org/10.1016/j.bjid.2014.11.004 \n", "2 https://doi.org/10.1111/j.1472-4642.2010.00637.x \n", "3 https://doi.org/10.1080/0028825x.1964.10428748 \n", "4 https://doi.org/10.1016/j.jhevol.2010.04.002 \n", ".. ... \n", "95 https://doi.org/10.1111/j.0030-1299.2004.13255.x \n", "96 https://doi.org/10.1007/978-981-13-2101-6_1 \n", "97 https://doi.org/10.1046/j.1523-1739.2002.01025.x \n", "98 https://doi.org/10.2307/1129836 \n", "99 https://doi.org/10.2307/2092897 \n", "\n", " title \\\n", "0 The Onslaught of Alien Species, and Other Chal... \n", "1 Impact of human schistosomiasis in sub-Saharan... \n", "2 Half a century of succession in a temperate oa... \n", "3 Facets of the distribution of forest vegetatio... \n", "4 The Early–Middle Pleistocene environmental and... \n", ".. ... \n", "95 Impacts of multiple stressors on biodiversity ... \n", "96 Introduction: The Dynamics of Sustainability a... \n", "97 Ecosystem Decay of Amazonian Forest Fragments:... \n", "98 The Determinants of Parenting: A Process Model \n", "99 Tally's Corner: A Study of Negro Streetcorner ... \n", "\n", " display_name relevance_score \\\n", "0 The Onslaught of Alien Species, and Other Chal... 155.607010 \n", "1 Impact of human schistosomiasis in sub-Saharan... 136.459240 \n", "2 Half a century of succession in a temperate oa... 129.606600 \n", "3 Facets of the distribution of forest vegetatio... 100.425010 \n", "4 The Early–Middle Pleistocene environmental and... 97.537895 \n", ".. ... ... \n", "95 Impacts of multiple stressors on biodiversity ... 19.725950 \n", "96 Introduction: The Dynamics of Sustainability a... 19.628729 \n", "97 Ecosystem Decay of Amazonian Forest Fragments:... 19.597567 \n", "98 The Determinants of Parenting: A Process Model 19.509233 \n", "99 Tally's Corner: A Study of Negro Streetcorner ... 19.464014 \n", "\n", " publication_year publication_date \\\n", "0 1990 1990-09-01 \n", "1 2015 2015-03-01 \n", "2 2010 2010-02-21 \n", "3 1964 1964-12-01 \n", "4 2011 2011-04-01 \n", ".. ... ... \n", "95 2004 2004-02-16 \n", "96 2019 2019-01-01 \n", "97 2002 2002-05-28 \n", "98 1984 1984-02-01 \n", "99 1968 1968-10-01 \n", "\n", " ids language \\\n", "0 {'openalex': 'https://openalex.org/W2117777590... en \n", "1 {'openalex': 'https://openalex.org/W2057596265... en \n", "2 {'openalex': 'https://openalex.org/W2094131597... en \n", "3 {'openalex': 'https://openalex.org/W2042539814... en \n", "4 {'openalex': 'https://openalex.org/W1982291004... en \n", ".. ... ... \n", "95 {'openalex': 'https://openalex.org/W2079111689... en \n", "96 {'openalex': 'https://openalex.org/W2911810635... en \n", "97 {'openalex': 'https://openalex.org/W2037356735... en \n", "98 {'openalex': 'https://openalex.org/W4214639054... en \n", "99 {'openalex': 'https://openalex.org/W1971797150... en \n", "\n", " primary_location ... \\\n", "0 {'is_oa': False, 'landing_page_url': 'https://... ... \n", "1 {'is_oa': True, 'landing_page_url': 'https://d... ... \n", "2 {'is_oa': True, 'landing_page_url': 'https://d... ... \n", "3 {'is_oa': True, 'landing_page_url': 'https://d... ... \n", "4 {'is_oa': False, 'landing_page_url': 'https://... ... \n", ".. ... ... \n", "95 {'is_oa': False, 'landing_page_url': 'https://... ... \n", "96 {'is_oa': False, 'landing_page_url': 'https://... ... \n", "97 {'is_oa': True, 'landing_page_url': 'https://d... ... \n", "98 {'is_oa': False, 'landing_page_url': 'https://... ... \n", "99 {'is_oa': False, 'landing_page_url': 'https://... ... \n", "\n", " cited_by_api_url \\\n", "0 https://api.openalex.org/works?filter=cites:W2... \n", "1 https://api.openalex.org/works?filter=cites:W2... \n", "2 https://api.openalex.org/works?filter=cites:W2... \n", "3 https://api.openalex.org/works?filter=cites:W2... \n", "4 https://api.openalex.org/works?filter=cites:W1... \n", ".. ... \n", "95 https://api.openalex.org/works?filter=cites:W2... \n", "96 https://api.openalex.org/works?filter=cites:W2... \n", "97 https://api.openalex.org/works?filter=cites:W2... \n", "98 https://api.openalex.org/works?filter=cites:W4... \n", "99 https://api.openalex.org/works?filter=cites:W1... \n", "\n", " counts_by_year \\\n", "0 [{'year': 2024, 'cited_by_count': 1}, {'year':... \n", "1 [{'year': 2024, 'cited_by_count': 18}, {'year'... \n", "2 [{'year': 2024, 'cited_by_count': 8}, {'year':... \n", "3 [{'year': 2024, 'cited_by_count': 2}, {'year':... \n", "4 [{'year': 2024, 'cited_by_count': 3}, {'year':... \n", ".. ... \n", "95 [{'year': 2024, 'cited_by_count': 18}, {'year'... \n", "96 [{'year': 2019, 'cited_by_count': 1}] \n", "97 [{'year': 2024, 'cited_by_count': 24}, {'year'... \n", "98 [{'year': 2024, 'cited_by_count': 76}, {'year'... \n", "99 [{'year': 2024, 'cited_by_count': 3}, {'year':... \n", "\n", " updated_date created_date \\\n", "0 2024-07-01T21:42:17.592681 2016-06-24 \n", "1 2024-06-26T01:44:20.831726 2016-06-24 \n", "2 2024-07-01T13:42:04.986877 2016-06-24 \n", "3 2024-06-26T19:33:50.844463 2016-06-24 \n", "4 2024-07-01T20:12:53.409576 2016-06-24 \n", ".. ... ... \n", "95 2024-06-26T10:03:56.871106 2016-06-24 \n", "96 2024-06-27T09:59:31.340559 2019-02-21 \n", "97 2024-07-02T00:54:07.174641 2016-06-24 \n", "98 2024-07-02T04:42:30.926004 2022-03-02 \n", "99 2024-06-30T03:20:06.054591 2016-06-24 \n", "\n", " abstract is_oa \\\n", "0 Abstract: Among the many environmental challen... False \n", "1 Schistosomiasis, a neglected tropical disease ... True \n", "2 Abstract Aim Lowland woodlands in Europe went ... True \n", "3 Summary The altitudinal sequences of vegetatio... True \n", "4 The dispersal of hominins may have been favore... True \n", ".. ... ... \n", "95 Ecosystem resistance to a single stressor reli... False \n", "96 Challenges to achieving sustainable communitie... False \n", "97 Abstract: We synthesized key findings from the... True \n", "98 False \n", "99 Chapter 1 Foreword to the 2003 Edition Chapter... False \n", "\n", " pdf_url \\\n", "0 None \n", "1 None \n", "2 https://onlinelibrary.wiley.com/doi/pdfdirect/... \n", "3 https://www.tandfonline.com/doi/pdf/10.1080/00... \n", "4 None \n", ".. ... \n", "95 None \n", "96 None \n", "97 https://onlinelibrary.wiley.com/doi/pdfdirect/... \n", "98 None \n", "99 None \n", "\n", " url \\\n", "0 https://openalex.org/W2117777590 \n", "1 https://openalex.org/W2057596265 \n", "2 https://openalex.org/W2094131597 \n", "3 https://openalex.org/W2042539814 \n", "4 https://openalex.org/W1982291004 \n", ".. ... \n", "95 https://openalex.org/W2079111689 \n", "96 https://openalex.org/W2911810635 \n", "97 https://openalex.org/W2037356735 \n", "98 https://openalex.org/W4214639054 \n", "99 https://openalex.org/W1971797150 \n", "\n", " content num_tokens \n", "0 The Onslaught of Alien Species, and Other Chal... 231 \n", "1 Impact of human schistosomiasis in sub-Saharan... 385 \n", "2 Half a century of succession in a temperate oa... 394 \n", "3 Facets of the distribution of forest vegetatio... 463 \n", "4 The Early–Middle Pleistocene environmental and... 312 \n", ".. ... ... \n", "95 Impacts of multiple stressors on biodiversity ... 193 \n", "96 Introduction: The Dynamics of Sustainability a... 204 \n", "97 Ecosystem Decay of Amazonian Forest Fragments:... 199 \n", "98 The Determinants of Parenting: A Process Model 10 \n", "99 Tally's Corner: A Study of Negro Streetcorner ... 125 \n", "\n", "[99 rows x 55 columns]" ] }, "execution_count": 217, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test" ] }, { "cell_type": "code", "execution_count": 213, "id": "0996d61d-905e-4e88-bce3-3f905846dd73", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "title 1\n", "abstract 0\n", "dtype: int64" ] }, "execution_count": 213, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test[[\"title\",\"abstract\"]].isnull().sum()" ] }, { "cell_type": "markdown", "id": "6ee7ab03-2cb5-4c43-b38e-0996951d1649", "metadata": {}, "source": [ "##### test[\"content\"].dropna()" ] }, { "cell_type": "code", "execution_count": 218, "id": "677b95e3-ad04-41eb-85e6-76d45db81933", "metadata": {}, "outputs": [], "source": [ "oa = OpenAlexRetriever(min_year = 1960)" ] }, { "cell_type": "code", "execution_count": 232, "id": "c4d15feb-9faa-44bd-af2d-425351747725", "metadata": {}, "outputs": [], "source": [ "docs = oa.invoke(\"cloud formations AND Earth's radiative balance\")" ] }, { "cell_type": "code", "execution_count": 234, "id": "d8eac98e-1efc-4f85-b8f5-41a8c0c03a8e", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "Document(page_content=\"Ion-induced sulfuric acid–ammonia nucleation drives particle formation in coastal Antarctica\\nFormation of new aerosol particles from trace gases is a major source of cloud condensation nuclei (CCN) in the global atmosphere, with potentially large effects on cloud optical properties and Earth's radiative balance. Controlled laboratory experiments have resolved, in detail, the different nucleation pathways likely responsible for atmospheric new particle formation, yet very little is known from field studies about the molecular steps and compounds involved in different regions of the atmosphere. The scarcity of primary particle sources makes secondary aerosol formation particularly important in the Antarctic atmosphere. Here, we report on the observation of ion-induced nucleation of sulfuric acid and ammonia-a process experimentally investigated by the CERN CLOUD experiment-as a major source of secondary aerosol particles over coastal Antarctica. We further show that measured high sulfuric acid concentrations, exceeding 107 molecules cm-3, are sufficient to explain the observed new particle growth rates. Our findings show that ion-induced nucleation is the dominant particle formation mechanism, implying that galactic cosmic radiation plays a key role in new particle formation in the pristine Antarctic atmosphere.\", metadata={'id': 'https://openalex.org/W2902694464', 'doi': 'https://doi.org/10.1126/sciadv.aat9744', 'title': 'Ion-induced sulfuric acid–ammonia nucleation drives particle formation in coastal Antarctica', 'display_name': 'Ion-induced sulfuric acid–ammonia nucleation drives particle formation in coastal Antarctica', 'relevance_score': 174.29054, 'publication_year': 2018, 'publication_date': '2018-11-02', 'ids': {'openalex': 'https://openalex.org/W2902694464', 'doi': 'https://doi.org/10.1126/sciadv.aat9744', 'mag': '2902694464', 'pmid': 'https://pubmed.ncbi.nlm.nih.gov/30498779', 'pmcid': 'https://www.ncbi.nlm.nih.gov/pmc/articles/6261657'}, 'language': 'en', 'primary_location': {'is_oa': True, 'landing_page_url': 'https://doi.org/10.1126/sciadv.aat9744', 'pdf_url': 'https://advances.sciencemag.org/content/advances/4/11/eaat9744.full.pdf', 'source': {'id': 'https://openalex.org/S2737427234', 'display_name': 'Science advances', 'issn_l': '2375-2548', 'issn': ['2375-2548'], 'is_oa': True, 'is_in_doaj': True, 'is_core': True, 'host_organization': 'https://openalex.org/P4310315823', 'host_organization_name': 'American Association for the Advancement of Science', 'host_organization_lineage': ['https://openalex.org/P4310315823'], 'host_organization_lineage_names': ['American Association for the Advancement of Science'], 'type': 'journal'}, 'license': 'cc-by-nc', 'license_id': 'https://openalex.org/licenses/cc-by-nc', 'version': 'publishedVersion', 'is_accepted': True, 'is_published': True}, 'type': 'article', 'type_crossref': 'journal-article', 'indexed_in': ['crossref', 'pubmed'], 'open_access': {'is_oa': True, 'oa_status': 'gold', 'oa_url': 'https://advances.sciencemag.org/content/advances/4/11/eaat9744.full.pdf', 'any_repository_has_fulltext': True}, 'authorships': [{'author_position': 'first', 'author': {'id': 'https://openalex.org/A5043850385', 'display_name': 'Tuija Jokinen', 'orcid': 'https://orcid.org/0000-0002-1280-1396'}, 'institutions': [{'id': 'https://openalex.org/I133731052', 'display_name': 'University of Helsinki', 'ror': 'https://ror.org/040af2s02', 'country_code': 'FI', 'type': 'education', 'lineage': ['https://openalex.org/I133731052']}], 'countries': ['FI'], 'is_corresponding': True, 'raw_author_name': 'T. Jokinen', 'raw_affiliation_strings': ['INAR–Institute for Atmospheric and Earth System Research, P.O. Box 64, 00014 University of Helsinki, Finland.'], 'affiliations': [{'raw_affiliation_string': 'INAR–Institute for Atmospheric and Earth System Research, P.O. Box 64, 00014 University of Helsinki, Finland.', 'institution_ids': ['https://openalex.org/I133731052']}]}, {'author_position': 'middle', 'author': {'id': 'https://openalex.org/A5049530714', 'display_name': 'Mikko Sipilä', 'orcid': 'https://orcid.org/0000-0002-8594-7003'}, 'institutions': [{'id': 'https://openalex.org/I133731052', 'display_name': 'University of Helsinki', 'ror': 'https://ror.org/040af2s02', 'country_code': 'FI', 'type': 'education', 'lineage': ['https://openalex.org/I133731052']}], 'countries': ['FI'], 'is_corresponding': False, 'raw_author_name': 'M. Sipilä', 'raw_affiliation_strings': ['INAR–Institute for Atmospheric and Earth System Research, P.O. Box 64, 00014 University of Helsinki, Finland.'], 'affiliations': [{'raw_affiliation_string': 'INAR–Institute for Atmospheric and Earth System Research, P.O. Box 64, 00014 University of Helsinki, Finland.', 'institution_ids': ['https://openalex.org/I133731052']}]}, {'author_position': 'middle', 'author': {'id': 'https://openalex.org/A5041077752', 'display_name': 'Jenni Kontkanen', 'orcid': 'https://orcid.org/0000-0002-5373-3537'}, 'institutions': [{'id': 'https://openalex.org/I133731052', 'display_name': 'University of Helsinki', 'ror': 'https://ror.org/040af2s02', 'country_code': 'FI', 'type': 'education', 'lineage': ['https://openalex.org/I133731052']}], 'countries': ['FI'], 'is_corresponding': False, 'raw_author_name': 'J. Kontkanen', 'raw_affiliation_strings': ['INAR–Institute for Atmospheric and Earth System Research, P.O. Box 64, 00014 University of Helsinki, Finland.'], 'affiliations': [{'raw_affiliation_string': 'INAR–Institute for Atmospheric and Earth System Research, P.O. Box 64, 00014 University of Helsinki, Finland.', 'institution_ids': ['https://openalex.org/I133731052']}]}, {'author_position': 'middle', 'author': {'id': 'https://openalex.org/A5067947954', 'display_name': 'Ville Vakkari', 'orcid': None}, 'institutions': [{'id': 'https://openalex.org/I1285790362', 'display_name': 'Finnish Meteorological Institute', 'ror': 'https://ror.org/05hppb561', 'country_code': 'FI', 'type': 'government', 'lineage': ['https://openalex.org/I1284112523', 'https://openalex.org/I1285790362']}], 'countries': ['FI'], 'is_corresponding': False, 'raw_author_name': 'V. Vakkari', 'raw_affiliation_strings': ['Finnish Meteorological Institute, Erik Palménin aukio 1, 00560 Helsinki, Finland.'], 'affiliations': [{'raw_affiliation_string': 'Finnish Meteorological Institute, Erik Palménin aukio 1, 00560 Helsinki, Finland.', 'institution_ids': ['https://openalex.org/I1285790362']}]}, {'author_position': 'middle', 'author': {'id': 'https://openalex.org/A5004260866', 'display_name': 'Priit Tisler', 'orcid': None}, 'institutions': [{'id': 'https://openalex.org/I1285790362', 'display_name': 'Finnish Meteorological Institute', 'ror': 'https://ror.org/05hppb561', 'country_code': 'FI', 'type': 'government', 'lineage': ['https://openalex.org/I1284112523', 'https://openalex.org/I1285790362']}], 'countries': ['FI'], 'is_corresponding': False, 'raw_author_name': 'P. Tisler', 'raw_affiliation_strings': ['Finnish Meteorological Institute, Erik Palménin aukio 1, 00560 Helsinki, Finland.'], 'affiliations': [{'raw_affiliation_string': 'Finnish Meteorological Institute, Erik Palménin aukio 1, 00560 Helsinki, Finland.', 'institution_ids': ['https://openalex.org/I1285790362']}]}, {'author_position': 'middle', 'author': {'id': 'https://openalex.org/A5039058816', 'display_name': 'Ella‐Maria Duplissy', 'orcid': None}, 'institutions': [{'id': 'https://openalex.org/I133731052', 'display_name': 'University of Helsinki', 'ror': 'https://ror.org/040af2s02', 'country_code': 'FI', 'type': 'education', 'lineage': ['https://openalex.org/I133731052']}], 'countries': ['FI'], 'is_corresponding': False, 'raw_author_name': 'E.-M. Duplissy', 'raw_affiliation_strings': ['INAR–Institute for Atmospheric and Earth System Research, P.O. Box 64, 00014 University of Helsinki, Finland.'], 'affiliations': [{'raw_affiliation_string': 'INAR–Institute for Atmospheric and Earth System Research, P.O. Box 64, 00014 University of Helsinki, Finland.', 'institution_ids': ['https://openalex.org/I133731052']}]}, {'author_position': 'middle', 'author': {'id': 'https://openalex.org/A5076912331', 'display_name': 'Heikki Junninen', 'orcid': 'https://orcid.org/0000-0001-7178-9430'}, 'institutions': [{'id': 'https://openalex.org/I133731052', 'display_name': 'University of Helsinki', 'ror': 'https://ror.org/040af2s02', 'country_code': 'FI', 'type': 'education', 'lineage': ['https://openalex.org/I133731052']}, {'id': 'https://openalex.org/I56085075', 'display_name': 'University of Tartu', 'ror': 'https://ror.org/03z77qz90', 'country_code': 'EE', 'type': 'education', 'lineage': ['https://openalex.org/I56085075']}], 'countries': ['EE', 'FI'], 'is_corresponding': False, 'raw_author_name': 'H. Junninen', 'raw_affiliation_strings': ['INAR–Institute for Atmospheric and Earth System Research, P.O. Box 64, 00014 University of Helsinki, Finland.', 'Laboratory of Environmental Physics, Institute of Physics, University of Tartu, Tartu 50090, Estonia.'], 'affiliations': [{'raw_affiliation_string': 'INAR–Institute for Atmospheric and Earth System Research, P.O. Box 64, 00014 University of Helsinki, Finland.', 'institution_ids': ['https://openalex.org/I133731052']}, {'raw_affiliation_string': 'Laboratory of Environmental Physics, Institute of Physics, University of Tartu, Tartu 50090, Estonia.', 'institution_ids': ['https://openalex.org/I56085075']}]}, {'author_position': 'middle', 'author': {'id': 'https://openalex.org/A5026556889', 'display_name': 'Juha Kangasluoma', 'orcid': 'https://orcid.org/0000-0002-1639-1187'}, 'institutions': [{'id': 'https://openalex.org/I133731052', 'display_name': 'University of Helsinki', 'ror': 'https://ror.org/040af2s02', 'country_code': 'FI', 'type': 'education', 'lineage': ['https://openalex.org/I133731052']}], 'countries': ['FI'], 'is_corresponding': False, 'raw_author_name': 'J. Kangasluoma', 'raw_affiliation_strings': ['INAR–Institute for Atmospheric and Earth System Research, P.O. Box 64, 00014 University of Helsinki, Finland.'], 'affiliations': [{'raw_affiliation_string': 'INAR–Institute for Atmospheric and Earth System Research, P.O. Box 64, 00014 University of Helsinki, Finland.', 'institution_ids': ['https://openalex.org/I133731052']}]}, {'author_position': 'middle', 'author': {'id': 'https://openalex.org/A5022377744', 'display_name': 'Hanna E. Manninen', 'orcid': 'https://orcid.org/0000-0002-0419-4020'}, 'institutions': [{'id': 'https://openalex.org/I133731052', 'display_name': 'University of Helsinki', 'ror': 'https://ror.org/040af2s02', 'country_code': 'FI', 'type': 'education', 'lineage': ['https://openalex.org/I133731052']}, {'id': 'https://openalex.org/I67311998', 'display_name': 'European Organization for Nuclear Research', 'ror': 'https://ror.org/01ggx4157', 'country_code': 'CH', 'type': 'facility', 'lineage': ['https://openalex.org/I67311998']}], 'countries': ['CH', 'FI'], 'is_corresponding': False, 'raw_author_name': 'H. E. Manninen', 'raw_affiliation_strings': ['CERN, CH1211 Geneva, Switzerland.', 'INAR–Institute for Atmospheric and Earth System Research, P.O. Box 64, 00014 University of Helsinki, Finland.'], 'affiliations': [{'raw_affiliation_string': 'INAR–Institute for Atmospheric and Earth System Research, P.O. Box 64, 00014 University of Helsinki, Finland.', 'institution_ids': ['https://openalex.org/I133731052']}, {'raw_affiliation_string': 'CERN, CH1211 Geneva, Switzerland.', 'institution_ids': ['https://openalex.org/I67311998']}]}, {'author_position': 'middle', 'author': {'id': 'https://openalex.org/A5070326299', 'display_name': 'Tuukka Petäjä', 'orcid': 'https://orcid.org/0000-0002-1881-9044'}, 'institutions': [{'id': 'https://openalex.org/I133731052', 'display_name': 'University of Helsinki', 'ror': 'https://ror.org/040af2s02', 'country_code': 'FI', 'type': 'education', 'lineage': ['https://openalex.org/I133731052']}], 'countries': ['FI'], 'is_corresponding': False, 'raw_author_name': 'T. Petäjä', 'raw_affiliation_strings': ['INAR–Institute for Atmospheric and Earth System Research, P.O. Box 64, 00014 University of Helsinki, Finland.'], 'affiliations': [{'raw_affiliation_string': 'INAR–Institute for Atmospheric and Earth System Research, P.O. Box 64, 00014 University of Helsinki, Finland.', 'institution_ids': ['https://openalex.org/I133731052']}]}, {'author_position': 'middle', 'author': {'id': 'https://openalex.org/A5000471665', 'display_name': 'Markku Kulmala', 'orcid': 'https://orcid.org/0000-0003-3464-7825'}, 'institutions': [{'id': 'https://openalex.org/I133731052', 'display_name': 'University of Helsinki', 'ror': 'https://ror.org/040af2s02', 'country_code': 'FI', 'type': 'education', 'lineage': ['https://openalex.org/I133731052']}], 'countries': ['FI'], 'is_corresponding': False, 'raw_author_name': 'M. Kulmala', 'raw_affiliation_strings': ['INAR–Institute for Atmospheric and Earth System Research, P.O. Box 64, 00014 University of Helsinki, Finland.'], 'affiliations': [{'raw_affiliation_string': 'INAR–Institute for Atmospheric and Earth System Research, P.O. Box 64, 00014 University of Helsinki, Finland.', 'institution_ids': ['https://openalex.org/I133731052']}]}, {'author_position': 'middle', 'author': {'id': 'https://openalex.org/A5026978286', 'display_name': 'Douglas R. Worsnop', 'orcid': 'https://orcid.org/0000-0002-8928-8017'}, 'institutions': [{'id': 'https://openalex.org/I133731052', 'display_name': 'University of Helsinki', 'ror': 'https://ror.org/040af2s02', 'country_code': 'FI', 'type': 'education', 'lineage': ['https://openalex.org/I133731052']}, {'id': 'https://openalex.org/I4210111149', 'display_name': 'Aerodyne Research', 'ror': 'https://ror.org/01nph4h53', 'country_code': 'US', 'type': 'company', 'lineage': ['https://openalex.org/I4210111149']}], 'countries': ['FI', 'US'], 'is_corresponding': False, 'raw_author_name': 'D. R. Worsnop', 'raw_affiliation_strings': ['Aerodyne Research Inc., Billerica, MA 01821, USA.', 'INAR–Institute for Atmospheric and Earth System Research, P.O. Box 64, 00014 University of Helsinki, Finland.'], 'affiliations': [{'raw_affiliation_string': 'INAR–Institute for Atmospheric and Earth System Research, P.O. Box 64, 00014 University of Helsinki, Finland.', 'institution_ids': ['https://openalex.org/I133731052']}, {'raw_affiliation_string': 'Aerodyne Research Inc., Billerica, MA 01821, USA.', 'institution_ids': ['https://openalex.org/I4210111149']}]}, {'author_position': 'middle', 'author': {'id': 'https://openalex.org/A5009274507', 'display_name': 'J. Kirkby', 'orcid': 'https://orcid.org/0000-0003-2341-9069'}, 'institutions': [{'id': 'https://openalex.org/I67311998', 'display_name': 'European Organization for Nuclear Research', 'ror': 'https://ror.org/01ggx4157', 'country_code': 'CH', 'type': 'facility', 'lineage': ['https://openalex.org/I67311998']}, {'id': 'https://openalex.org/I114090438', 'display_name': 'Goethe University Frankfurt', 'ror': 'https://ror.org/04cvxnb49', 'country_code': 'DE', 'type': 'education', 'lineage': ['https://openalex.org/I114090438']}], 'countries': ['CH', 'DE'], 'is_corresponding': False, 'raw_author_name': 'J. Kirkby', 'raw_affiliation_strings': ['CERN, CH1211 Geneva, Switzerland.', 'Goethe University Frankfurt, Institute for Atmospheric and Environmental Sciences, 60438 Frankfurt am Main, Germany.'], 'affiliations': [{'raw_affiliation_string': 'CERN, CH1211 Geneva, Switzerland.', 'institution_ids': ['https://openalex.org/I67311998']}, {'raw_affiliation_string': 'Goethe University Frankfurt, Institute for Atmospheric and Environmental Sciences, 60438 Frankfurt am Main, Germany.', 'institution_ids': ['https://openalex.org/I114090438']}]}, {'author_position': 'middle', 'author': {'id': 'https://openalex.org/A5026348448', 'display_name': 'Aki Virkkula', 'orcid': 'https://orcid.org/0000-0003-4874-7552'}, 'institutions': [{'id': 'https://openalex.org/I133731052', 'display_name': 'University of Helsinki', 'ror': 'https://ror.org/040af2s02', 'country_code': 'FI', 'type': 'education', 'lineage': ['https://openalex.org/I133731052']}, {'id': 'https://openalex.org/I1285790362', 'display_name': 'Finnish Meteorological Institute', 'ror': 'https://ror.org/05hppb561', 'country_code': 'FI', 'type': 'government', 'lineage': ['https://openalex.org/I1284112523', 'https://openalex.org/I1285790362']}], 'countries': ['FI'], 'is_corresponding': False, 'raw_author_name': 'A. Virkkula', 'raw_affiliation_strings': ['Finnish Meteorological Institute, Erik Palménin aukio 1, 00560 Helsinki, Finland.', 'INAR–Institute for Atmospheric and Earth System Research, P.O. Box 64, 00014 University of Helsinki, Finland.'], 'affiliations': [{'raw_affiliation_string': 'INAR–Institute for Atmospheric and Earth System Research, P.O. Box 64, 00014 University of Helsinki, Finland.', 'institution_ids': ['https://openalex.org/I133731052']}, {'raw_affiliation_string': 'Finnish Meteorological Institute, Erik Palménin aukio 1, 00560 Helsinki, Finland.', 'institution_ids': ['https://openalex.org/I1285790362']}]}, {'author_position': 'last', 'author': {'id': 'https://openalex.org/A5075262199', 'display_name': 'Veli‐Matti Kerminen', 'orcid': 'https://orcid.org/0000-0002-0706-669X'}, 'institutions': [{'id': 'https://openalex.org/I133731052', 'display_name': 'University of Helsinki', 'ror': 'https://ror.org/040af2s02', 'country_code': 'FI', 'type': 'education', 'lineage': ['https://openalex.org/I133731052']}], 'countries': ['FI'], 'is_corresponding': False, 'raw_author_name': 'V.-M. Kerminen', 'raw_affiliation_strings': ['INAR–Institute for Atmospheric and Earth System Research, P.O. Box 64, 00014 University of Helsinki, Finland.'], 'affiliations': [{'raw_affiliation_string': 'INAR–Institute for Atmospheric and Earth System Research, P.O. Box 64, 00014 University of Helsinki, Finland.', 'institution_ids': ['https://openalex.org/I133731052']}]}], 'countries_distinct_count': 5, 'institutions_distinct_count': 6, 'corresponding_author_ids': ['https://openalex.org/A5043850385'], 'corresponding_institution_ids': ['https://openalex.org/I133731052'], 'apc_list': {'value': 4500, 'currency': 'USD', 'value_usd': 4500, 'provenance': 'doaj'}, 'apc_paid': {'value': 4500, 'currency': 'USD', 'value_usd': 4500, 'provenance': 'doaj'}, 'fwci': 6.059, 'has_fulltext': True, 'fulltext_origin': 'ngrams', 'cited_by_count': 89, 'cited_by_percentile_year': {'min': 98, 'max': 99}, 'biblio': {'volume': '4', 'issue': '11', 'first_page': None, 'last_page': None}, 'is_retracted': False, 'is_paratext': False, 'primary_topic': {'id': 'https://openalex.org/T10075', 'display_name': 'Atmospheric Aerosols and their Impacts', 'score': 0.9999, 'subfield': {'id': 'https://openalex.org/subfields/1902', 'display_name': 'Atmospheric Science'}, 'field': {'id': 'https://openalex.org/fields/19', 'display_name': 'Earth and Planetary Sciences'}, 'domain': {'id': 'https://openalex.org/domains/3', 'display_name': 'Physical Sciences'}}, 'topics': [{'id': 'https://openalex.org/T10075', 'display_name': 'Atmospheric Aerosols and their Impacts', 'score': 0.9999, 'subfield': {'id': 'https://openalex.org/subfields/1902', 'display_name': 'Atmospheric Science'}, 'field': {'id': 'https://openalex.org/fields/19', 'display_name': 'Earth and Planetary Sciences'}, 'domain': {'id': 'https://openalex.org/domains/3', 'display_name': 'Physical Sciences'}}, {'id': 'https://openalex.org/T11320', 'display_name': 'Stratospheric Chemistry and Climate Change Impacts', 'score': 0.9912, 'subfield': {'id': 'https://openalex.org/subfields/1902', 'display_name': 'Atmospheric Science'}, 'field': {'id': 'https://openalex.org/fields/19', 'display_name': 'Earth and Planetary Sciences'}, 'domain': {'id': 'https://openalex.org/domains/3', 'display_name': 'Physical Sciences'}}, {'id': 'https://openalex.org/T10347', 'display_name': \"Aerosols' Impact on Climate and Hydrological Cycle\", 'score': 0.9904, 'subfield': {'id': 'https://openalex.org/subfields/2306', 'display_name': 'Global and Planetary Change'}, 'field': {'id': 'https://openalex.org/fields/23', 'display_name': 'Environmental Science'}, 'domain': {'id': 'https://openalex.org/domains/3', 'display_name': 'Physical Sciences'}}], 'keywords': [{'id': 'https://openalex.org/keywords/aerosol-formation', 'display_name': 'Aerosol Formation', 'score': 0.572982}, {'id': 'https://openalex.org/keywords/atmospheric-composition', 'display_name': 'Atmospheric Composition', 'score': 0.521637}], 'concepts': [{'id': 'https://openalex.org/C2778199549', 'wikidata': 'https://www.wikidata.org/wiki/Q4118', 'display_name': 'Sulfuric acid', 'level': 2, 'score': 0.7982143}, {'id': 'https://openalex.org/C61048295', 'wikidata': 'https://www.wikidata.org/wiki/Q909022', 'display_name': 'Nucleation', 'level': 2, 'score': 0.7874631}, {'id': 'https://openalex.org/C2776382133', 'wikidata': 'https://www.wikidata.org/wiki/Q4087', 'display_name': 'Ammonia', 'level': 2, 'score': 0.6985667}, {'id': 'https://openalex.org/C2778517922', 'wikidata': 'https://www.wikidata.org/wiki/Q7140482', 'display_name': 'Particle (ecology)', 'level': 2, 'score': 0.6781009}, {'id': 'https://openalex.org/C145148216', 'wikidata': 'https://www.wikidata.org/wiki/Q36496', 'display_name': 'Ion', 'level': 2, 'score': 0.58612937}, {'id': 'https://openalex.org/C107872376', 'wikidata': 'https://www.wikidata.org/wiki/Q321355', 'display_name': 'Environmental chemistry', 'level': 1, 'score': 0.4258174}, {'id': 'https://openalex.org/C185592680', 'wikidata': 'https://www.wikidata.org/wiki/Q2329', 'display_name': 'Chemistry', 'level': 0, 'score': 0.41982472}, {'id': 'https://openalex.org/C42360764', 'wikidata': 'https://www.wikidata.org/wiki/Q83588', 'display_name': 'Chemical engineering', 'level': 1, 'score': 0.41077083}, {'id': 'https://openalex.org/C111368507', 'wikidata': 'https://www.wikidata.org/wiki/Q43518', 'display_name': 'Oceanography', 'level': 1, 'score': 0.3861084}, {'id': 'https://openalex.org/C39432304', 'wikidata': 'https://www.wikidata.org/wiki/Q188847', 'display_name': 'Environmental science', 'level': 0, 'score': 0.38313922}, {'id': 'https://openalex.org/C179104552', 'wikidata': 'https://www.wikidata.org/wiki/Q11165', 'display_name': 'Inorganic chemistry', 'level': 1, 'score': 0.3352301}, {'id': 'https://openalex.org/C127313418', 'wikidata': 'https://www.wikidata.org/wiki/Q1069', 'display_name': 'Geology', 'level': 0, 'score': 0.26564935}, {'id': 'https://openalex.org/C55493867', 'wikidata': 'https://www.wikidata.org/wiki/Q7094', 'display_name': 'Biochemistry', 'level': 1, 'score': 0.16221848}, {'id': 'https://openalex.org/C178790620', 'wikidata': 'https://www.wikidata.org/wiki/Q11351', 'display_name': 'Organic chemistry', 'level': 1, 'score': 0.117207915}, {'id': 'https://openalex.org/C127413603', 'wikidata': 'https://www.wikidata.org/wiki/Q11023', 'display_name': 'Engineering', 'level': 0, 'score': 0.0}], 'mesh': [], 'locations_count': 5, 'locations': [{'is_oa': True, 'landing_page_url': 'https://doi.org/10.1126/sciadv.aat9744', 'pdf_url': 'https://advances.sciencemag.org/content/advances/4/11/eaat9744.full.pdf', 'source': {'id': 'https://openalex.org/S2737427234', 'display_name': 'Science advances', 'issn_l': '2375-2548', 'issn': ['2375-2548'], 'is_oa': True, 'is_in_doaj': True, 'is_core': True, 'host_organization': 'https://openalex.org/P4310315823', 'host_organization_name': 'American Association for the Advancement of Science', 'host_organization_lineage': ['https://openalex.org/P4310315823'], 'host_organization_lineage_names': ['American Association for the Advancement of Science'], 'type': 'journal'}, 'license': 'cc-by-nc', 'license_id': 'https://openalex.org/licenses/cc-by-nc', 'version': 'publishedVersion', 'is_accepted': True, 'is_published': True}, {'is_oa': True, 'landing_page_url': 'https://europepmc.org/articles/pmc6261657', 'pdf_url': 'https://europepmc.org/articles/pmc6261657?pdf=render', 'source': {'id': 'https://openalex.org/S4306400806', 'display_name': 'Europe PMC (PubMed Central)', 'issn_l': None, 'issn': None, 'is_oa': True, 'is_in_doaj': False, 'is_core': False, 'host_organization': 'https://openalex.org/I1303153112', 'host_organization_name': 'European Bioinformatics Institute', 'host_organization_lineage': ['https://openalex.org/I1303153112'], 'host_organization_lineage_names': ['European Bioinformatics Institute'], 'type': 'repository'}, 'license': 'cc-by-nc', 'license_id': 'https://openalex.org/licenses/cc-by-nc', 'version': 'publishedVersion', 'is_accepted': True, 'is_published': True}, {'is_oa': True, 'landing_page_url': 'http://publikationen.ub.uni-frankfurt.de/frontdoor/index/index/docId/48577', 'pdf_url': 'http://publikationen.ub.uni-frankfurt.de/files/48577/eaat9744.full.pdf', 'source': {'id': 'https://openalex.org/S4306400432', 'display_name': 'Publication Server of Goethe University Frankfurt am Main (Goethe University Frankfurt)', 'issn_l': None, 'issn': None, 'is_oa': True, 'is_in_doaj': False, 'is_core': False, 'host_organization': 'https://openalex.org/I114090438', 'host_organization_name': 'Goethe University Frankfurt', 'host_organization_lineage': ['https://openalex.org/I114090438'], 'host_organization_lineage_names': ['Goethe University Frankfurt'], 'type': 'repository'}, 'license': 'cc-by-nc', 'license_id': 'https://openalex.org/licenses/cc-by-nc', 'version': 'publishedVersion', 'is_accepted': True, 'is_published': True}, {'is_oa': True, 'landing_page_url': 'https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6261657', 'pdf_url': None, 'source': {'id': 'https://openalex.org/S2764455111', 'display_name': 'PubMed Central', 'issn_l': None, 'issn': None, 'is_oa': True, 'is_in_doaj': False, 'is_core': False, 'host_organization': 'https://openalex.org/I1299303238', 'host_organization_name': 'National Institutes of Health', 'host_organization_lineage': ['https://openalex.org/I1299303238'], 'host_organization_lineage_names': ['National Institutes of Health'], 'type': 'repository'}, 'license': None, 'license_id': None, 'version': 'publishedVersion', 'is_accepted': True, 'is_published': True}, {'is_oa': False, 'landing_page_url': 'https://pubmed.ncbi.nlm.nih.gov/30498779', 'pdf_url': None, 'source': {'id': 'https://openalex.org/S4306525036', 'display_name': 'PubMed', 'issn_l': None, 'issn': None, 'is_oa': False, 'is_in_doaj': False, 'is_core': False, 'host_organization': 'https://openalex.org/I1299303238', 'host_organization_name': 'National Institutes of Health', 'host_organization_lineage': ['https://openalex.org/I1299303238'], 'host_organization_lineage_names': ['National Institutes of Health'], 'type': 'repository'}, 'license': None, 'license_id': None, 'version': None, 'is_accepted': False, 'is_published': False}], 'best_oa_location': {'is_oa': True, 'landing_page_url': 'https://doi.org/10.1126/sciadv.aat9744', 'pdf_url': 'https://advances.sciencemag.org/content/advances/4/11/eaat9744.full.pdf', 'source': {'id': 'https://openalex.org/S2737427234', 'display_name': 'Science advances', 'issn_l': '2375-2548', 'issn': ['2375-2548'], 'is_oa': True, 'is_in_doaj': True, 'is_core': True, 'host_organization': 'https://openalex.org/P4310315823', 'host_organization_name': 'American Association for the Advancement of Science', 'host_organization_lineage': ['https://openalex.org/P4310315823'], 'host_organization_lineage_names': ['American Association for the Advancement of Science'], 'type': 'journal'}, 'license': 'cc-by-nc', 'license_id': 'https://openalex.org/licenses/cc-by-nc', 'version': 'publishedVersion', 'is_accepted': True, 'is_published': True}, 'sustainable_development_goals': [{'display_name': 'Life below water', 'score': 0.86, 'id': 'https://metadata.un.org/sdg/14'}], 'grants': [{'funder': 'https://openalex.org/F4320321048', 'funder_display_name': 'AXA Research Fund', 'award_id': None}, {'funder': 'https://openalex.org/F4320321108', 'funder_display_name': 'Academy of Finland', 'award_id': '306853'}, {'funder': 'https://openalex.org/F4320322885', 'funder_display_name': 'NordForsk', 'award_id': '26060'}, {'funder': 'https://openalex.org/F4320334678', 'funder_display_name': 'European Research Council', 'award_id': '714621'}, {'funder': 'https://openalex.org/F4320335254', 'funder_display_name': 'Horizon 2020', 'award_id': '689443'}, {'funder': 'https://openalex.org/F4320335322', 'funder_display_name': 'European Regional Development Fund', 'award_id': 'MOBTT42'}], 'datasets': [], 'versions': [], 'referenced_works_count': 38, 'referenced_works': ['https://openalex.org/W1043971534', 'https://openalex.org/W1968188655', 'https://openalex.org/W1979917317', 'https://openalex.org/W1982254235', 'https://openalex.org/W1985483586', 'https://openalex.org/W1985857413', 'https://openalex.org/W1995109133', 'https://openalex.org/W2000908471', 'https://openalex.org/W2019667799', 'https://openalex.org/W2020676775', 'https://openalex.org/W2043065331', 'https://openalex.org/W2045617521', 'https://openalex.org/W2055876402', 'https://openalex.org/W2058056833', 'https://openalex.org/W2069214884', 'https://openalex.org/W2071365809', 'https://openalex.org/W2100910191', 'https://openalex.org/W2106999449', 'https://openalex.org/W2108582364', 'https://openalex.org/W2116795237', 'https://openalex.org/W2117706320', 'https://openalex.org/W2126774210', 'https://openalex.org/W2127580386', 'https://openalex.org/W2130579406', 'https://openalex.org/W2132259315', 'https://openalex.org/W2139089373', 'https://openalex.org/W2155082834', 'https://openalex.org/W2156400173', 'https://openalex.org/W2156739270', 'https://openalex.org/W2168053828', 'https://openalex.org/W2171355244', 'https://openalex.org/W2182221714', 'https://openalex.org/W2319013248', 'https://openalex.org/W2467669847', 'https://openalex.org/W2507780804', 'https://openalex.org/W2545978408', 'https://openalex.org/W2782781312', 'https://openalex.org/W522387'], 'related_works': ['https://openalex.org/W4205446412', 'https://openalex.org/W3183948672', 'https://openalex.org/W3173606202', 'https://openalex.org/W3110381201', 'https://openalex.org/W2948807893', 'https://openalex.org/W2778153218', 'https://openalex.org/W2758277628', 'https://openalex.org/W2012537229', 'https://openalex.org/W2011254556', 'https://openalex.org/W1531601525'], 'ngrams_url': 'https://api.openalex.org/works/W2902694464/ngrams', 'cited_by_api_url': 'https://api.openalex.org/works?filter=cites:W2902694464', 'counts_by_year': [{'year': 2024, 'cited_by_count': 9}, {'year': 2023, 'cited_by_count': 18}, {'year': 2022, 'cited_by_count': 22}, {'year': 2021, 'cited_by_count': 19}, {'year': 2020, 'cited_by_count': 12}, {'year': 2019, 'cited_by_count': 7}], 'updated_date': '2024-06-27T01:50:39.930276', 'created_date': '2018-12-11', 'is_authors_truncated': nan, 'abstract': \"Formation of new aerosol particles from trace gases is a major source of cloud condensation nuclei (CCN) in the global atmosphere, with potentially large effects on cloud optical properties and Earth's radiative balance. Controlled laboratory experiments have resolved, in detail, the different nucleation pathways likely responsible for atmospheric new particle formation, yet very little is known from field studies about the molecular steps and compounds involved in different regions of the atmosphere. The scarcity of primary particle sources makes secondary aerosol formation particularly important in the Antarctic atmosphere. Here, we report on the observation of ion-induced nucleation of sulfuric acid and ammonia-a process experimentally investigated by the CERN CLOUD experiment-as a major source of secondary aerosol particles over coastal Antarctica. We further show that measured high sulfuric acid concentrations, exceeding 107 molecules cm-3, are sufficient to explain the observed new particle growth rates. Our findings show that ion-induced nucleation is the dominant particle formation mechanism, implying that galactic cosmic radiation plays a key role in new particle formation in the pristine Antarctic atmosphere.\", 'is_oa': True, 'pdf_url': 'https://advances.sciencemag.org/content/advances/4/11/eaat9744.full.pdf', 'url': 'https://openalex.org/W2902694464', 'content': \"Ion-induced sulfuric acid–ammonia nucleation drives particle formation in coastal Antarctica\\nFormation of new aerosol particles from trace gases is a major source of cloud condensation nuclei (CCN) in the global atmosphere, with potentially large effects on cloud optical properties and Earth's radiative balance. Controlled laboratory experiments have resolved, in detail, the different nucleation pathways likely responsible for atmospheric new particle formation, yet very little is known from field studies about the molecular steps and compounds involved in different regions of the atmosphere. The scarcity of primary particle sources makes secondary aerosol formation particularly important in the Antarctic atmosphere. Here, we report on the observation of ion-induced nucleation of sulfuric acid and ammonia-a process experimentally investigated by the CERN CLOUD experiment-as a major source of secondary aerosol particles over coastal Antarctica. We further show that measured high sulfuric acid concentrations, exceeding 107 molecules cm-3, are sufficient to explain the observed new particle growth rates. Our findings show that ion-induced nucleation is the dominant particle formation mechanism, implying that galactic cosmic radiation plays a key role in new particle formation in the pristine Antarctic atmosphere.\", 'num_tokens': 230})" ] }, "execution_count": 234, "metadata": {}, "output_type": "execute_result" } ], "source": [ "docs[0]" ] }, { "cell_type": "code", "execution_count": 220, "id": "b27c6f48-f4d3-4525-aa1d-8c3c52eb2179", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'id': 'https://openalex.org/W2117777590',\n", " 'doi': 'https://doi.org/10.1111/j.1523-1739.1990.tb00283.x',\n", " 'title': 'The Onslaught of Alien Species, and Other Challenges in the Coming Decades *',\n", " 'display_name': 'The Onslaught of Alien Species, and Other Challenges in the Coming Decades *',\n", " 'relevance_score': 155.60701,\n", " 'publication_year': 1990,\n", " 'publication_date': '1990-09-01',\n", " 'ids': {'openalex': 'https://openalex.org/W2117777590',\n", " 'doi': 'https://doi.org/10.1111/j.1523-1739.1990.tb00283.x',\n", " 'mag': '2117777590'},\n", " 'language': 'en',\n", " 'primary_location': {'is_oa': False,\n", " 'landing_page_url': 'https://doi.org/10.1111/j.1523-1739.1990.tb00283.x',\n", " 'pdf_url': None,\n", " 'source': {'id': 'https://openalex.org/S98137347',\n", " 'display_name': 'Conservation biology',\n", " 'issn_l': '0888-8892',\n", " 'issn': ['0888-8892', '1523-1739'],\n", " 'is_oa': False,\n", " 'is_in_doaj': False,\n", " 'is_core': True,\n", " 'host_organization': 'https://openalex.org/P4310320503',\n", " 'host_organization_name': 'Wiley-Blackwell',\n", " 'host_organization_lineage': ['https://openalex.org/P4310320503',\n", " 'https://openalex.org/P4310320595'],\n", " 'host_organization_lineage_names': ['Wiley-Blackwell', 'Wiley'],\n", " 'type': 'journal'},\n", " 'license': None,\n", " 'license_id': None,\n", " 'version': None,\n", " 'is_accepted': False,\n", " 'is_published': False},\n", " 'type': 'article',\n", " 'type_crossref': 'journal-article',\n", " 'indexed_in': ['crossref'],\n", " 'open_access': {'is_oa': False,\n", " 'oa_status': 'closed',\n", " 'oa_url': None,\n", " 'any_repository_has_fulltext': False},\n", " 'authorships': [{'author_position': 'first',\n", " 'author': {'id': 'https://openalex.org/A5002662609',\n", " 'display_name': 'Michael E. Soulé',\n", " 'orcid': None},\n", " 'institutions': [{'id': 'https://openalex.org/I185103710',\n", " 'display_name': 'University of California, Santa Cruz',\n", " 'ror': 'https://ror.org/03s65by71',\n", " 'country_code': 'US',\n", " 'type': 'education',\n", " 'lineage': ['https://openalex.org/I185103710']}],\n", " 'countries': ['US'],\n", " 'is_corresponding': True,\n", " 'raw_author_name': 'Michael E. Soulé',\n", " 'raw_affiliation_strings': ['Board of Environmental Studies University of California at Santa Cruz Santa Cruz, CA 95064, U.S.A.'],\n", " 'affiliations': [{'raw_affiliation_string': 'Board of Environmental Studies University of California at Santa Cruz Santa Cruz, CA 95064, U.S.A.',\n", " 'institution_ids': ['https://openalex.org/I185103710']}]}],\n", " 'countries_distinct_count': 1,\n", " 'institutions_distinct_count': 1,\n", " 'corresponding_author_ids': ['https://openalex.org/A5002662609'],\n", " 'corresponding_institution_ids': ['https://openalex.org/I185103710'],\n", " 'apc_list': {'value': 3090,\n", " 'currency': 'USD',\n", " 'value_usd': 3090,\n", " 'provenance': 'doaj'},\n", " 'apc_paid': None,\n", " 'fwci': 6.206,\n", " 'has_fulltext': True,\n", " 'fulltext_origin': 'ngrams',\n", " 'cited_by_count': 223,\n", " 'cited_by_percentile_year': {'min': 98, 'max': 99},\n", " 'biblio': {'volume': '4',\n", " 'issue': '3',\n", " 'first_page': '233',\n", " 'last_page': '240'},\n", " 'is_retracted': False,\n", " 'is_paratext': False,\n", " 'primary_topic': {'id': 'https://openalex.org/T12819',\n", " 'display_name': 'Ecological Rewilding and Conservation Ethics',\n", " 'score': 0.9992,\n", " 'subfield': {'id': 'https://openalex.org/subfields/2309',\n", " 'display_name': 'Nature and Landscape Conservation'},\n", " 'field': {'id': 'https://openalex.org/fields/23',\n", " 'display_name': 'Environmental Science'},\n", " 'domain': {'id': 'https://openalex.org/domains/3',\n", " 'display_name': 'Physical Sciences'}},\n", " 'topics': [{'id': 'https://openalex.org/T12819',\n", " 'display_name': 'Ecological Rewilding and Conservation Ethics',\n", " 'score': 0.9992,\n", " 'subfield': {'id': 'https://openalex.org/subfields/2309',\n", " 'display_name': 'Nature and Landscape Conservation'},\n", " 'field': {'id': 'https://openalex.org/fields/23',\n", " 'display_name': 'Environmental Science'},\n", " 'domain': {'id': 'https://openalex.org/domains/3',\n", " 'display_name': 'Physical Sciences'}},\n", " {'id': 'https://openalex.org/T13435',\n", " 'display_name': 'Human Attitudes and Interactions with Animals and Plants',\n", " 'score': 0.9984,\n", " 'subfield': {'id': 'https://openalex.org/subfields/3207',\n", " 'display_name': 'Social Psychology'},\n", " 'field': {'id': 'https://openalex.org/fields/32',\n", " 'display_name': 'Psychology'},\n", " 'domain': {'id': 'https://openalex.org/domains/2',\n", " 'display_name': 'Social Sciences'}},\n", " {'id': 'https://openalex.org/T13059',\n", " 'display_name': 'Influence of Religion on Environmental Concern and Activism',\n", " 'score': 0.9947,\n", " 'subfield': {'id': 'https://openalex.org/subfields/3312',\n", " 'display_name': 'Sociology and Political Science'},\n", " 'field': {'id': 'https://openalex.org/fields/33',\n", " 'display_name': 'Social Sciences'},\n", " 'domain': {'id': 'https://openalex.org/domains/2',\n", " 'display_name': 'Social Sciences'}}],\n", " 'keywords': [{'id': 'https://openalex.org/keywords/rewilding',\n", " 'display_name': 'Rewilding',\n", " 'score': 0.516033}],\n", " 'concepts': [{'id': 'https://openalex.org/C200724805',\n", " 'wikidata': 'https://www.wikidata.org/wiki/Q1990792',\n", " 'display_name': 'Alien',\n", " 'level': 4,\n", " 'score': 0.61557317},\n", " {'id': 'https://openalex.org/C18903297',\n", " 'wikidata': 'https://www.wikidata.org/wiki/Q7150',\n", " 'display_name': 'Ecology',\n", " 'level': 1,\n", " 'score': 0.6125145},\n", " {'id': 'https://openalex.org/C46355384',\n", " 'wikidata': 'https://www.wikidata.org/wiki/Q726686',\n", " 'display_name': 'Compromise',\n", " 'level': 2,\n", " 'score': 0.5456312},\n", " {'id': 'https://openalex.org/C34208539',\n", " 'wikidata': 'https://www.wikidata.org/wiki/Q641498',\n", " 'display_name': 'Conservation biology',\n", " 'level': 2,\n", " 'score': 0.52286553},\n", " {'id': 'https://openalex.org/C205649164',\n", " 'wikidata': 'https://www.wikidata.org/wiki/Q1071',\n", " 'display_name': 'Geography',\n", " 'level': 0,\n", " 'score': 0.50813866},\n", " {'id': 'https://openalex.org/C132651083',\n", " 'wikidata': 'https://www.wikidata.org/wiki/Q7942',\n", " 'display_name': 'Climate change',\n", " 'level': 2,\n", " 'score': 0.5022538},\n", " {'id': 'https://openalex.org/C130217890',\n", " 'wikidata': 'https://www.wikidata.org/wiki/Q47041',\n", " 'display_name': 'Biodiversity',\n", " 'level': 2,\n", " 'score': 0.46235877},\n", " {'id': 'https://openalex.org/C514101110',\n", " 'wikidata': 'https://www.wikidata.org/wiki/Q14373',\n", " 'display_name': 'Fishing',\n", " 'level': 2,\n", " 'score': 0.41136533},\n", " {'id': 'https://openalex.org/C86803240',\n", " 'wikidata': 'https://www.wikidata.org/wiki/Q420',\n", " 'display_name': 'Biology',\n", " 'level': 0,\n", " 'score': 0.2948489},\n", " {'id': 'https://openalex.org/C17744445',\n", " 'wikidata': 'https://www.wikidata.org/wiki/Q36442',\n", " 'display_name': 'Political science',\n", " 'level': 0,\n", " 'score': 0.18009019},\n", " {'id': 'https://openalex.org/C94625758',\n", " 'wikidata': 'https://www.wikidata.org/wiki/Q7163',\n", " 'display_name': 'Politics',\n", " 'level': 2,\n", " 'score': 0.12639415},\n", " {'id': 'https://openalex.org/C2780781376',\n", " 'wikidata': 'https://www.wikidata.org/wiki/Q42138',\n", " 'display_name': 'Citizenship',\n", " 'level': 3,\n", " 'score': 0.0},\n", " {'id': 'https://openalex.org/C199539241',\n", " 'wikidata': 'https://www.wikidata.org/wiki/Q7748',\n", " 'display_name': 'Law',\n", " 'level': 1,\n", " 'score': 0.0}],\n", " 'mesh': [],\n", " 'locations_count': 1,\n", " 'locations': [{'is_oa': False,\n", " 'landing_page_url': 'https://doi.org/10.1111/j.1523-1739.1990.tb00283.x',\n", " 'pdf_url': None,\n", " 'source': {'id': 'https://openalex.org/S98137347',\n", " 'display_name': 'Conservation biology',\n", " 'issn_l': '0888-8892',\n", " 'issn': ['0888-8892', '1523-1739'],\n", " 'is_oa': False,\n", " 'is_in_doaj': False,\n", " 'is_core': True,\n", " 'host_organization': 'https://openalex.org/P4310320503',\n", " 'host_organization_name': 'Wiley-Blackwell',\n", " 'host_organization_lineage': ['https://openalex.org/P4310320503',\n", " 'https://openalex.org/P4310320595'],\n", " 'host_organization_lineage_names': ['Wiley-Blackwell', 'Wiley'],\n", " 'type': 'journal'},\n", " 'license': None,\n", " 'license_id': None,\n", " 'version': None,\n", " 'is_accepted': False,\n", " 'is_published': False}],\n", " 'best_oa_location': None,\n", " 'sustainable_development_goals': [{'id': 'https://metadata.un.org/sdg/15',\n", " 'display_name': 'Life on land',\n", " 'score': 0.47}],\n", " 'grants': [],\n", " 'datasets': [],\n", " 'versions': [],\n", " 'referenced_works_count': 20,\n", " 'referenced_works': ['https://openalex.org/W126005801',\n", " 'https://openalex.org/W143266002',\n", " 'https://openalex.org/W1528801611',\n", " 'https://openalex.org/W1602553872',\n", " 'https://openalex.org/W1978011074',\n", " 'https://openalex.org/W1979429493',\n", " 'https://openalex.org/W1988921989',\n", " 'https://openalex.org/W1989013246',\n", " 'https://openalex.org/W1999088436',\n", " 'https://openalex.org/W2017452564',\n", " 'https://openalex.org/W2023924264',\n", " 'https://openalex.org/W2086909961',\n", " 'https://openalex.org/W2104729275',\n", " 'https://openalex.org/W2133352176',\n", " 'https://openalex.org/W2325107109',\n", " 'https://openalex.org/W2511653215',\n", " 'https://openalex.org/W2796254007',\n", " 'https://openalex.org/W2982931797',\n", " 'https://openalex.org/W576867645',\n", " 'https://openalex.org/W652070765'],\n", " 'related_works': ['https://openalex.org/W4240977217',\n", " 'https://openalex.org/W4214750239',\n", " 'https://openalex.org/W3036524962',\n", " 'https://openalex.org/W2811264706',\n", " 'https://openalex.org/W2801622120',\n", " 'https://openalex.org/W2508088450',\n", " 'https://openalex.org/W2389434635',\n", " 'https://openalex.org/W2279908259',\n", " 'https://openalex.org/W2164141394',\n", " 'https://openalex.org/W1967649051'],\n", " 'ngrams_url': 'https://api.openalex.org/works/W2117777590/ngrams',\n", " 'cited_by_api_url': 'https://api.openalex.org/works?filter=cites:W2117777590',\n", " 'counts_by_year': [{'year': 2024, 'cited_by_count': 1},\n", " {'year': 2023, 'cited_by_count': 2},\n", " {'year': 2022, 'cited_by_count': 3},\n", " {'year': 2021, 'cited_by_count': 2},\n", " {'year': 2020, 'cited_by_count': 5},\n", " {'year': 2019, 'cited_by_count': 6},\n", " {'year': 2018, 'cited_by_count': 5},\n", " {'year': 2017, 'cited_by_count': 4},\n", " {'year': 2016, 'cited_by_count': 3},\n", " {'year': 2015, 'cited_by_count': 4},\n", " {'year': 2014, 'cited_by_count': 8},\n", " {'year': 2013, 'cited_by_count': 5},\n", " {'year': 2012, 'cited_by_count': 5}],\n", " 'updated_date': '2024-07-01T21:42:17.592681',\n", " 'created_date': '2016-06-24',\n", " 'abstract': \"Abstract: Among the many environmental challenges faced by conservation scientists and managers in the coming decades, the inexorable invasion of alien species from distant land masses and between heretofore isolated regions within continents may be the most revolutionary. Although these invasions will homogenize and impoverish the world's biota, they will lead to a deeper understanding of ecological communities. One consequence of the current biotic interchange is that the public's use of the outdoors will continue to decline as new and alien pathogens and parasites, their distributions and survival enhanced by climate warming and other anthropogenic factors, reduce the safety and enjoyment of hunting fishing and hiking. The forthcoming and massive ecological disruptions are bound to produce misunderstanding and conflict among environmentalists. Attempts by conservation biologists to manage wild and feral animals, including vector species, will be blocked by animal's rights groups. Even within the conservation biology movement there are many real and potential conflicts, especially over turf and resources. Such conflicts are a serious threat to biological diversity. Tolerance and compromise are essential if conservation biology is to accomplish its mission.\",\n", " 'is_oa': False,\n", " 'pdf_url': None,\n", " 'url': 'https://openalex.org/W2117777590',\n", " 'content': \"The Onslaught of Alien Species, and Other Challenges in the Coming Decades *\\nAbstract: Among the many environmental challenges faced by conservation scientists and managers in the coming decades, the inexorable invasion of alien species from distant land masses and between heretofore isolated regions within continents may be the most revolutionary. Although these invasions will homogenize and impoverish the world's biota, they will lead to a deeper understanding of ecological communities. One consequence of the current biotic interchange is that the public's use of the outdoors will continue to decline as new and alien pathogens and parasites, their distributions and survival enhanced by climate warming and other anthropogenic factors, reduce the safety and enjoyment of hunting fishing and hiking. The forthcoming and massive ecological disruptions are bound to produce misunderstanding and conflict among environmentalists. Attempts by conservation biologists to manage wild and feral animals, including vector species, will be blocked by animal's rights groups. Even within the conservation biology movement there are many real and potential conflicts, especially over turf and resources. Such conflicts are a serious threat to biological diversity. Tolerance and compromise are essential if conservation biology is to accomplish its mission.\",\n", " 'num_tokens': 231}" ] }, "execution_count": 220, "metadata": {}, "output_type": "execute_result" } ], "source": [ "docs[0].metadata" ] }, { "cell_type": "markdown", "id": "6f50f767-64e9-4f5d-82b4-496530532ad9", "metadata": { "jp-MarkdownHeadingCollapsed": true }, "source": [ "# Query Rewriter" ] }, { "cell_type": "code", "execution_count": 8, "id": "3345a24e-e794-4e84-93ae-98be5ca61af3", "metadata": { "tags": [] }, "outputs": [], "source": [ "from climateqa.engine.chains.query_transformation import make_query_rewriter_chain,make_query_decomposition_chain\n", "from climateqa.engine.chains.translation import make_translation_chain" ] }, { "cell_type": "code", "execution_count": 9, "id": "16bd17cd-f9ea-489c-923f-acd851b09cd8", "metadata": { "tags": [] }, "outputs": [], "source": [ "rewriter_chain = make_query_rewriter_chain(llm)\n", "translation_chain = make_translation_chain(llm)\n", "decomposition_chain = make_query_decomposition_chain(llm)\n", "router_chain = make_intent_router_chain(llm)" ] }, { "cell_type": "code", "execution_count": 10, "id": "3a2147fc-8437-44a3-87ae-52fe5b8f8f87", "metadata": { "tags": [] }, "outputs": [], "source": [ "def transform_query(user_input):\n", " \n", " state = {\"user_input\":user_input}\n", " \n", " # Route\n", " output_router = router_chain.invoke({\"input\":user_input})\n", " if \"language\" not in output_router: output_router[\"language\"] = \"English\"\n", " state.update(output_router)\n", " \n", " # Translation\n", " if output_router[\"language\"].lower() != \"english\":\n", " translation = translation_chain.invoke({\"input\":user_input})\n", " state[\"query\"] = translation[\"translation\"]\n", " else:\n", " state[\"query\"] = user_input\n", " \n", " # Decomposition\n", " decomposition_output = decomposition_chain.invoke({\"input\":state[\"query\"]})\n", " state.update(decomposition_output)\n", " \n", " # Query Analysis\n", " questions = []\n", " for question in state[\"questions\"]:\n", " question_state = {\"question\":question}\n", " analysis_output = rewriter_chain.invoke({\"input\":question})\n", " question_state.update(analysis_output)\n", " questions.append(question_state)\n", " state[\"questions\"] = questions\n", " \n", " return state" ] }, { "cell_type": "code", "execution_count": 11, "id": "4151d2e4-0bfe-4642-a185-2dcb639e6f78", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "{'user_input': 'What does Morrison argue about IK and LK on internal migration ?',\n", " 'intent': 'search',\n", " 'language': 'English',\n", " 'query': 'What does Morrison argue about IK and LK on internal migration ?',\n", " 'questions': [{'question': 'What does Morrison argue about internal migration?',\n", " 'sources': ['OpenAlex']},\n", " {'question': 'What does Morrison argue about interregional migration?',\n", " 'sources': ['OpenAlex']},\n", " {'question': 'What does Morrison argue about intraregional migration?',\n", " 'sources': ['OpenAlex']}]}" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# question = \"Franchement je sais pas trop de quoi on parle là, qui sont les membres du GIEC en fait ? Et quelles sont leurs dernières publications ?\"\n", "question = \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\"\n", "question = \"I need to search the president of the United States, find their age, then find how old they will be in June 2023.\"\n", "question = \"What does Morrison argue about IK and LK on internal migration ?\"\n", "state = transform_query(question)\n", "state" ] }, { "cell_type": "code", "execution_count": 45, "id": "a322f737-191d-407f-b499-2b79476fac8b", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "'Super thanks, Which industries have the highest GHG emissions?'" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "questions = [\n", " \"Super thanks, Which industries have the highest GHG emissions?\",\n", " \"How do you compare the view on biodiversity between the IPCC and IPBES ?\",\n", " \"Est-ce que l'IA a un impact sur l'environnement ?\",\n", " \"Que dit le GIEC sur l'impact de l'IA\",\n", " \"Franchement je sais pas trop de quoi on parle là, qui sont les membres du GIEC en fait ? Et quelles sont leurs dernières publications ?\",\n", " \"Ok that's nice, but I don't really understand. What is the impact of El Nino ?\",\n", " \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\",\n", " \"Which industries have the highest GHG emissions?\",\n", " \"What are invasive alien species and how do they threaten biodiversity and ecosystems?\",\n", " \"Are human activities causing global warming?\",\n", " \"What is the motivation behind mining the deep seabed?\",\n", " \"Tu peux m'écrire un poème sur le changement climatique ?\",\n", " \"Tu peux m'écrire un poème sur les bonbons ?\",\n", " \"What will be the temperature in 2100 in Strasbourg?\",\n", " \"C'est quoi le lien entre biodiversity and changement climatique ?\",\n", " \"Can you tell me more about ESRS2 ?\"\n", "]\n", "\n", "question = questions[0]\n", "question" ] }, { "cell_type": "code", "execution_count": 46, "id": "fcee82a3-342d-4da1-8c27-a6f6079da4a7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'sources': ['IPCC']}" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "question = \"Very nice thank you, What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\"\n", "output = rewriter_chain.invoke({\"input\":question})\n", "output" ] }, { "cell_type": "code", "execution_count": 47, "id": "d13d6a1a-9fa5-4e47-861e-30a79ea97d05", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Super thanks, Which industries have the highest GHG emissions?\n", "{'user_input': 'Super thanks, Which industries have the highest GHG emissions?', 'intent': 'search', 'language': 'English', 'query': 'Super thanks, Which industries have the highest GHG emissions?', 'questions': [{'question': 'Which industries are the largest contributors to greenhouse gas emissions?', 'sources': ['IPCC']}]}\n", "----------------------------------------------------------------------------------------------------\n", "How do you compare the view on biodiversity between the IPCC and IPBES ?\n", "{'user_input': 'How do you compare the view on biodiversity between the IPCC and IPBES ?', 'intent': 'search', 'language': 'English', 'query': 'How do you compare the view on biodiversity between the IPCC and IPBES ?', 'questions': [{'question': 'What is the view on biodiversity according to the IPCC?', 'sources': ['IPCC']}, {'question': 'What is the view on biodiversity according to the IPBES?', 'sources': ['IPBES']}]}\n", "----------------------------------------------------------------------------------------------------\n", "Est-ce que l'IA a un impact sur l'environnement ?\n", "{'user_input': \"Est-ce que l'IA a un impact sur l'environnement ?\", 'intent': 'ai_impact', 'language': 'French', 'query': 'Does AI have an impact on the environment?', 'questions': [{'question': 'What is the impact of AI on the environment?', 'sources': ['IPCC', 'OpenAlex']}]}\n", "----------------------------------------------------------------------------------------------------\n", "Que dit le GIEC sur l'impact de l'IA\n", "{'user_input': \"Que dit le GIEC sur l'impact de l'IA\", 'intent': 'search', 'language': 'French', 'query': 'What does the IPCC say about the impact of AI', 'questions': [{'question': \"What is the IPCC's stance on artificial intelligence and its impact on climate change?\", 'sources': ['IPCC']}]}\n", "----------------------------------------------------------------------------------------------------\n", "Franchement je sais pas trop de quoi on parle là, qui sont les membres du GIEC en fait ? Et quelles sont leurs dernières publications ?\n", "{'user_input': 'Franchement je sais pas trop de quoi on parle là, qui sont les membres du GIEC en fait ? Et quelles sont leurs dernières publications ?', 'language': 'French', 'intent': 'search', 'query': \"Honestly, I'm not sure what we're talking about here, who are the members of the IPCC actually? And what are their latest publications?\", 'questions': [{'question': 'Who are the members of the IPCC?', 'sources': ['IPCC']}, {'question': 'What are the latest publications of the IPCC?', 'sources': ['IPCC']}]}\n", "----------------------------------------------------------------------------------------------------\n", "Ok that's nice, but I don't really understand. What is the impact of El Nino ?\n", "{'user_input': \"Ok that's nice, but I don't really understand. What is the impact of El Nino ?\", 'intent': 'ai_impact', 'language': 'English', 'query': \"Ok that's nice, but I don't really understand. What is the impact of El Nino ?\", 'questions': [{'question': 'What is El Nino?', 'sources': ['IPCC']}, {'question': 'What are the impacts of El Nino?', 'sources': ['IPCC']}]}\n", "----------------------------------------------------------------------------------------------------\n", "I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\n", "{'user_input': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\", 'intent': 'search', 'language': 'English', 'query': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\", 'questions': [{'question': \"What role do cloud formations play in modulating the Earth's radiative balance?\", 'sources': ['IPCC']}, {'question': 'How are cloud formations represented in current climate models?', 'sources': ['IPCC']}]}\n", "----------------------------------------------------------------------------------------------------\n", "Which industries have the highest GHG emissions?\n", "{'user_input': 'Which industries have the highest GHG emissions?', 'intent': 'search', 'language': 'English', 'query': 'Which industries have the highest GHG emissions?', 'questions': [{'question': 'What are the industries with the highest greenhouse gas emissions?', 'sources': ['IPCC']}]}\n", "----------------------------------------------------------------------------------------------------\n", "What are invasive alien species and how do they threaten biodiversity and ecosystems?\n", "{'user_input': 'What are invasive alien species and how do they threaten biodiversity and ecosystems?', 'intent': 'search', 'language': 'English', 'query': 'What are invasive alien species and how do they threaten biodiversity and ecosystems?', 'questions': [{'question': 'Definition of invasive alien species', 'sources': ['IPBES']}, {'question': 'How do invasive alien species threaten biodiversity and ecosystems?', 'sources': ['IPBES']}]}\n", "----------------------------------------------------------------------------------------------------\n", "Are human activities causing global warming?\n", "{'user_input': 'Are human activities causing global warming?', 'intent': 'search', 'language': 'English', 'query': 'Are human activities causing global warming?', 'questions': [{'question': 'What are the main causes of global warming?', 'sources': ['IPCC']}, {'question': 'How do human activities contribute to global warming?', 'sources': ['IPCC']}]}\n", "----------------------------------------------------------------------------------------------------\n", "What is the motivation behind mining the deep seabed?\n", "{'user_input': 'What is the motivation behind mining the deep seabed?', 'intent': 'search', 'language': 'English', 'query': 'What is the motivation behind mining the deep seabed?', 'questions': [{'question': 'What are the reasons for mining the deep seabed?', 'sources': ['IPOS']}, {'question': 'What are the benefits of mining the deep seabed?', 'sources': ['IPOS']}, {'question': 'What are the environmental impacts of mining the deep seabed?', 'sources': ['IPOS']}]}\n", "----------------------------------------------------------------------------------------------------\n", "Tu peux m'écrire un poème sur le changement climatique ?\n", "{'user_input': \"Tu peux m'écrire un poème sur le changement climatique ?\", 'language': 'French', 'intent': 'search', 'query': 'Can you write me a poem about climate change?', 'questions': [{'question': 'What are the key themes and impacts of climate change?', 'sources': ['IPCC']}, {'question': 'How does climate change affect the environment and ecosystems?', 'sources': ['IPCC', 'IPBES']}, {'question': 'What are some common metaphors or symbols used to describe climate change in literature?', 'sources': ['IPCC']}]}\n", "----------------------------------------------------------------------------------------------------\n", "Tu peux m'écrire un poème sur les bonbons ?\n", "{'user_input': \"Tu peux m'écrire un poème sur les bonbons ?\", 'language': 'French', 'intent': 'search', 'query': 'Can you write me a poem about candies?', 'questions': [{'question': 'What are the key elements of a poem about candies?', 'sources': ['OpenAlex']}, {'question': 'What are some common themes in poems about candies?', 'sources': ['OpenAlex']}, {'question': 'How can I structure a poem about candies?', 'sources': ['OpenAlex']}]}\n", "----------------------------------------------------------------------------------------------------\n", "What will be the temperature in 2100 in Strasbourg?\n", "{'user_input': 'What will be the temperature in 2100 in Strasbourg?', 'intent': 'geo_info', 'language': 'English', 'query': 'What will be the temperature in 2100 in Strasbourg?', 'questions': [{'question': 'What are the projected temperature changes for the year 2100 according to IPCC reports?', 'sources': ['IPCC']}, {'question': 'How does climate change affect temperature projections for the future?', 'sources': ['IPCC']}]}\n", "----------------------------------------------------------------------------------------------------\n", "C'est quoi le lien entre biodiversity and changement climatique ?\n", "{'user_input': \"C'est quoi le lien entre biodiversity and changement climatique ?\", 'intent': 'search', 'language': 'French', 'query': 'What is the link between biodiversity and climate change?', 'questions': [{'question': 'What is biodiversity?', 'sources': ['IPBES']}, {'question': 'How does climate change affect biodiversity?', 'sources': ['IPCC', 'IPBES']}, {'question': 'How does biodiversity affect climate change?', 'sources': ['IPCC', 'IPBES']}]}\n", "----------------------------------------------------------------------------------------------------\n", "Can you tell me more about ESRS2 ?\n", "{'user_input': 'Can you tell me more about ESRS2 ?', 'intent': 'esg', 'language': 'English', 'query': 'Can you tell me more about ESRS2 ?', 'questions': [{'question': 'What is ESRS2?', 'sources': ['OpenAlex']}, {'question': 'What are the key features of ESRS2?', 'sources': ['IPCC']}, {'question': 'How is ESRS2 related to climate change, energy, biodiversity, and nature?', 'sources': ['IPCC', 'IPBES']}]}\n", "----------------------------------------------------------------------------------------------------\n" ] } ], "source": [ "for question in questions:\n", " print(question)\n", " output = transform_query(question)\n", " print(output)\n", " print(\"-\"*100)" ] }, { "cell_type": "code", "execution_count": 54, "id": "7a0d82ad-44e7-40a7-a594-48823429d70e", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "{'query': 'Industries with highest GHG emissions',\n", " 'sources': ['IPCC'],\n", " 'topics': ['Climate change', 'Decarbonization'],\n", " 'date': '',\n", " 'location': {'country': '', 'location': ''}}" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rewriter_chain.invoke({\"input\":question})" ] }, { "cell_type": "markdown", "id": "05aeeb92-9408-42b8-9f99-1e907c6a0798", "metadata": {}, "source": [ "# Langgraph\n", "Inspired from https://colab.research.google.com/drive/1WemHvycYcoNTDr33w7p2HL3FF72Nj88i?usp=sharing#scrollTo=YJ77ZCzkiGTL" ] }, { "cell_type": "markdown", "id": "8664f5f1-0db8-4c3d-8229-e1719224cde5", "metadata": {}, "source": [ "## Graph" ] }, { "cell_type": "code", "execution_count": 19, "id": "2376e1d7-5893-4022-a0af-155bb8c1950f", "metadata": {}, "outputs": [], "source": [ "from climateqa.engine.graph import make_graph_agent,display_graph\n", "agent = make_graph_agent(llm,vectorstore,reranker)" ] }, { "cell_type": "code", "execution_count": 20, "id": "a1f78d00-e4a0-40f3-a1e9-61dea83fa6cb", "metadata": {}, "outputs": [ { "data": { "image/jpeg": "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UUHte9e+/kmit9fhv69b5S1CLb/BRQe17177+SfBRQe17177+SaK31+JTr1vlLUItv8ABRQe17177+SfBRQe17177+SaK31+JNet8pahFt/gooPa9699/JVF4ONHWcTKHiDLe73dJH2XMrnZKTsajk1TQFgjDunV3pHZ9aaK31+JNet8pSvKcGx3OIIIchsdvvcUDi+JlwpmTCNxGiWhwOisTGOGOI4VXSVuP4zabLVyRmF89BRxwvcwkEtJaASNtB19QU9+Cig9r3r338k+Cig9r3r338k0Vvr8Sx1y1jjgibsVtb8rjyQ0u71HROtzartH9Kd0jZCzl3y/Ga071vp36W1W3+Cig9r3r338k+Cig9r3r338k0Vvr8SnXbUcJaha/ILDRZRZqu1XKJ81DVM7OaOOV8Rc35OZhDh9hCk/wUUHte9e+/knwUUHte9e+/kmit9fiTXrc8JRmy2W3YvZqW2Wykht1so4hHDTwtDI42D1ALKs9o8+5mMa3mx5jgaioI9Gs11EUX8Zm9c7/i62wbJcWSWm4WWCKRr6qKpuhadhtxqpJo/2ZPIftClrWhjQ1oDWgaAA0AFMZlucaJxnth+fs17uWZ1ObbjB9REVLliIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgKsvCJutks3DZ9TkGKTZnbvH6RhtdO0ucXmZoZJoeph077FZqhfFvz28z3fB/4l5xeNQa8f12XY9oO27/Xyc2vrQTRERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAXO/gYf4L4vf5yb3/tRLohc7+Bh/gvi9/nJvf+1Eg6IREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQFWXhE2qyXnhs+myDK5sMt3j9I83SncWuDxM0sj2PU86b9qs1Vl4RN1slm4bPqcgxSbM7d4/SMNrp2lzi8zNDJND1MOnfYgs1ERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAXO/gYf4L4vf5yb3/tRLohc7+Bh/gvi9/nJvf+1Eg6IREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQFC+Lfnt5nu+D/wAS84vGoNeP67Lse0Hbd/r5ObX1qaKsvCJtVkvPDZ9NkGVz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", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display_graph(agent)" ] }, { "cell_type": "code", "execution_count": 22, "id": "3a07607b-eb02-467f-a255-0c6bcdc6f62c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "... Analyzing user 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": [ "{'intent': 'ai_impact', 'language': 'English', 'query': \"What's the impact of PFAS on babies ?\"}\n", "... Thinking step by step to answer the question\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": [ "{'remaining_questions': [{'question': 'What are PFAS?', 'sources': ['IPCC'], 'index': 'Vector'}, {'question': 'What are the potential impacts of PFAS exposure on babies?', 'sources': ['IPCC'], 'index': 'Vector'}], 'n_questions': 2}\n", "... Searching for \"What are PFAS?\" in IPCC\n", "... Searching for \"What are the potential impacts of PFAS exposure on babies?\" in IPCC\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": [ "The impact of PFAS on babies can have significant consequences on their health and development. PFAS exposure has been linked to adverse effects on cognitive function in children [Doc 6]. Prenatal exposure to PFAS can affect children's cognitive function, highlighting the potential risks associated with these chemicals [Doc 6].\n", "\n", "Furthermore, PFAS exposure can also have implications for food safety. Climate change may affect animal health management practices, potentially leading to increased use of pesticides or veterinary drugs that could result in increased levels of residues in foods, including PFAS [Doc 7]. This indicates a potential pathway for PFAS contamination in food sources, which can pose risks to human health, especially vulnerable populations like babies.\n", "\n", "In summary, PFAS exposure can impact babies by affecting their cognitive function and potentially leading to contamination in food sources, highlighting the importance of monitoring and regulating these chemicals to protect infant health and development." ] } ], "source": [ "verbose = False\n", "# question = \"What does the IPCC and IPBES think about deforestation ?\"\n", "# question = \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\"\n", "# question = \"Are human activities causing global warming?\"\n", "# question = \"What are the evidence of climate change?\"\n", "# question = \"What specific mechanisms link solar activity, particularly sunspots, to changes in global climate?\"\n", "# question = \"In what ways does warming specifically help impoverished communities?\"\n", "question = \"What's the impact of PFAS on babies ?\"\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", "def display_steps(event):\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", " print(event_description)\n", " elif event[\"event\"] == \"on_chain_end\":\n", " if display_output:\n", " print(event[\"data\"][\"output\"])\n", " if event[\"name\"] == \"log_retriever\" and event[\"event\"] == \"on_chain_start\":\n", " question = event[\"data\"][\"input\"][\"question\"]\n", " sources = event[\"data\"][\"input\"][\"sources\"]\n", " print(f\"\"\"... Searching for \"{question}\" in {\", \".join(sources)}\"\"\")\n", "\n", "async for event in agent.astream_events({\"user_input\":question,\"sources_input\":[\"IPCC\"],\"sources_auto\":False,\"audience\":\"experts\"},version = \"v1\"):\n", "# async for event in agent.astream_log({\"user_input\":question,\"sources_input\":[\"auto\"],\"audience\":\"experts\"}):\n", "\n", " if verbose:\n", " print(str(event)[:1000])\n", " print(\"-\"*50)\n", " else:\n", " \n", " if event[\"event\"] == \"on_chat_model_stream\":\n", " print(event[\"data\"][\"chunk\"].content,end = \"\")\n", "\n", " if event[\"name\"] == \"retrieve_documents\" and event[\"event\"] == \"on_chain_end\":\n", " docs = event[\"data\"][\"output\"][\"documents\"]\n", " \n", " display_steps(event)\n", " " ] }, { "cell_type": "code", "execution_count": 93, "id": "a09f58e5-368b-486b-a458-7cfe56445c08", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "[Document(page_content='Climate change adaptation entails the process of adjustment to actual or expected climate change and its effects \\r\\nin order to moderate harm or exploit beneficial opportunities. At a high level, international frameworks, including \\r\\nthe Paris Agreement and the SDGs, have come to provide a direction for coordinating, financing and assessing \\r\\nglobal progress in these terms. The Paris Agreement calls for climate change adaptation actions, referring to these \\r\\nactions as those that reduce risk and vulnerability, strengthen resilience, enhance the capacity to anticipate and \\r\\nrespond successfully, and ensure the availability of necessary financial resources, as these processes and outcomes \\r\\nrelate to climate change. In addition, the Sustainable Development Goals include 17 targets (with a specific goal \\r\\nSDG 13 on climate action) to fulfil its mission to end extreme poverty by 2030, protect the planet and build more \\r\\npeaceful, just and inclusive societies. These goals are difficult to reach without successful adaptation to climate \\r\\nchange. Other notable frameworks that identify climate change adaptation as important global priorities include \\r\\nthe SFDRR, the finance-oriented Addis Ababa Action Agenda and the New Urban Agenda.', 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': 1244.0, 'num_tokens': 223.0, 'num_tokens_approx': 269.0, 'num_words': 202.0, 'page_number': 189, 'release_date': 2022.0, 'report_type': 'Full Report', 'section_header': 'FAQ 1.1 | What are the goals of climate change adaptation?', 'short_name': 'IPCC AR6 WGII FR', 'source': 'IPCC', 'toc_level0': 'Chapters and Cross-Chapter Papers ', 'toc_level1': 'Chapter 1 Point of Departure and Key Concepts', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://report.ipcc.ch/ar6/wg2/IPCC_AR6_WGII_FullReport.pdf', 'similarity_score': 0.728290737, 'content': 'Climate change adaptation entails the process of adjustment to actual or expected climate change and its effects \\r\\nin order to moderate harm or exploit beneficial opportunities. At a high level, international frameworks, including \\r\\nthe Paris Agreement and the SDGs, have come to provide a direction for coordinating, financing and assessing \\r\\nglobal progress in these terms. The Paris Agreement calls for climate change adaptation actions, referring to these \\r\\nactions as those that reduce risk and vulnerability, strengthen resilience, enhance the capacity to anticipate and \\r\\nrespond successfully, and ensure the availability of necessary financial resources, as these processes and outcomes \\r\\nrelate to climate change. In addition, the Sustainable Development Goals include 17 targets (with a specific goal \\r\\nSDG 13 on climate action) to fulfil its mission to end extreme poverty by 2030, protect the planet and build more \\r\\npeaceful, just and inclusive societies. These goals are difficult to reach without successful adaptation to climate \\r\\nchange. Other notable frameworks that identify climate change adaptation as important global priorities include \\r\\nthe SFDRR, the finance-oriented Addis Ababa Action Agenda and the New Urban Agenda.', 'reranking_score': 0.9998205, 'query_used_for_retrieval': 'What is climate change adaptation?', 'sources_used': ['IPCC'], 'question_used': 'What is climate change adaptation?'}),\n", " Document(page_content='Frequently Asked Questions\\nFAQ 1.1 | What are the goals of climate change adaptation?\\nThe goals of climate change adaptation, as a broad concept, are to reduce risk and vulnerability to climate change, strengthen resilience, \\r\\nenhance well-being and the capacity to anticipate, and respond successfully to change. Existing international frameworks provide a high-level \\r\\ndirection for coordinating, financing and assessing progress toward these goals. However, specifying the goals for specific adaptation actions \\r\\nis not straightforward because the impacts of climate change affect people and nature in many different ways requiring different adaptation \\r\\nactions. Thereby, goals that accompany these actions are diverse. Goals can relate to health, water or food security, jobs and employment, \\r\\npoverty eradication and social equity, biodiversity and ecosystem services at international, national and local levels.\\n FAQ 1.1 | What are the goals of climate change adaptation? ', 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': 1013.0, 'num_tokens': 185.0, 'num_tokens_approx': 234.0, 'num_words': 176.0, 'page_number': 189, 'release_date': 2022.0, 'report_type': 'Full Report', 'section_header': '1.6 Structure of the Report', 'short_name': 'IPCC AR6 WGII FR', 'source': 'IPCC', 'toc_level0': 'Chapters and Cross-Chapter Papers ', 'toc_level1': 'Chapter 1 Point of Departure and Key Concepts', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://report.ipcc.ch/ar6/wg2/IPCC_AR6_WGII_FullReport.pdf', 'similarity_score': 0.701966941, 'content': 'Frequently Asked Questions\\nFAQ 1.1 | What are the goals of climate change adaptation?\\nThe goals of climate change adaptation, as a broad concept, are to reduce risk and vulnerability to climate change, strengthen resilience, \\r\\nenhance well-being and the capacity to anticipate, and respond successfully to change. Existing international frameworks provide a high-level \\r\\ndirection for coordinating, financing and assessing progress toward these goals. However, specifying the goals for specific adaptation actions \\r\\nis not straightforward because the impacts of climate change affect people and nature in many different ways requiring different adaptation \\r\\nactions. Thereby, goals that accompany these actions are diverse. Goals can relate to health, water or food security, jobs and employment, \\r\\npoverty eradication and social equity, biodiversity and ecosystem services at international, national and local levels.\\n FAQ 1.1 | What are the goals of climate change adaptation? ', 'reranking_score': 0.9979572, 'query_used_for_retrieval': 'What is climate change adaptation?', 'sources_used': ['IPCC'], 'question_used': 'What is climate change adaptation?'}),\n", " Document(page_content='The success of climate change adaptation is dependent on the extent to which relevant actions reduce risk and vulnerability, as well as achieve \\r\\ntheir respective goals. At a global scale, these goals are set and tracked according to international frameworks and conventions. At smaller \\r\\nscales, such as local and national, goals are dependent on the specific impacts being managed, the actions being taken and the relevant scale. \\r\\nWhile success can take shape as uniquely as goals can, the degree to which an adaptation is feasible, effective and conforms to principles of \\r\\njustice represents important attributes for measuring success across actions. Adaptation responses that lead to increased risk and impacts are \\r\\nconsidered maladaptation.\\n FAQ 1.3 | What constitutes successful adaptation to climate change? ', 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': 852.0, 'num_tokens': 156.0, 'num_tokens_approx': 196.0, 'num_words': 147.0, 'page_number': 190, 'release_date': 2022.0, 'report_type': 'Full Report', 'section_header': 'FAQ 1.3 | What constitutes successful adaptation to climate change?', 'short_name': 'IPCC AR6 WGII FR', 'source': 'IPCC', 'toc_level0': 'Chapters and Cross-Chapter Papers ', 'toc_level1': 'Chapter 1 Point of Departure and Key Concepts', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://report.ipcc.ch/ar6/wg2/IPCC_AR6_WGII_FullReport.pdf', 'similarity_score': 0.691562712, 'content': 'The success of climate change adaptation is dependent on the extent to which relevant actions reduce risk and vulnerability, as well as achieve \\r\\ntheir respective goals. At a global scale, these goals are set and tracked according to international frameworks and conventions. At smaller \\r\\nscales, such as local and national, goals are dependent on the specific impacts being managed, the actions being taken and the relevant scale. \\r\\nWhile success can take shape as uniquely as goals can, the degree to which an adaptation is feasible, effective and conforms to principles of \\r\\njustice represents important attributes for measuring success across actions. Adaptation responses that lead to increased risk and impacts are \\r\\nconsidered maladaptation.\\n FAQ 1.3 | What constitutes successful adaptation to climate change? ', 'reranking_score': 0.9957848, 'query_used_for_retrieval': 'What is climate change adaptation?', 'sources_used': ['IPCC'], 'question_used': 'What is climate change adaptation?'}),\n", " Document(page_content='Adaptation involves actions to lessen the harm associated with \\r\\nclimate change, or take advantage of potential gains (Smit and \\r\\nWandel 2006). It can seek to reduce present and future exposure \\r\\nto specific climate risks (Adger et al. 2003), mainstream climate \\r\\ninformation into existing planning efforts (Gupta et al. 2010; van der \\r\\nVoorn et al. 2012; van der Voorn et al. 2017), and reduce vulnerability \\r\\n(or increase resilience) of people or communities to the effects of \\r\\nclimate change (Kasperson and Kasperson 2001). There is a body \\r\\nof literature highlighting potential synergies and conflicts between \\r\\nadaptation actions - in any of the three areas above - and mitigation \\r\\nactions - and potential strategies for resolving them (Locatelli \\r\\net al. 2011; Casado-Asensio and Steurer 2014; Duguma et al. 2014;', metadata={'chunk_type': 'text', 'document_id': 'document9', 'document_number': 9.0, 'element_id': 'N/A', 'figure_code': 'N/A', 'file_size': 'N/A', 'image_path': 'N/A', 'n_pages': 2258.0, 'name': 'Full Report. In: Climate Change 2022: Mitigation of Climate Change. Contribution of the WGIII to the AR6 of the IPCC', 'num_characters': 823.0, 'num_tokens': 203.0, 'num_tokens_approx': 201.0, 'num_words': 151.0, 'page_number': 1510, 'release_date': 2022.0, 'report_type': 'Full Report', 'section_header': '14.5.1.2 Linkages with Sustainable Development, Adaptation, \\r\\nLoss and Damage, and Human Rights', 'short_name': 'IPCC AR6 WGIII FR', 'source': 'IPCC', 'toc_level0': '14.5 Multi-level, Multi-actor Governance', 'toc_level1': '14.5.1 International Cooperation at Multiple Governance Levels', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://www.ipcc.ch/report/ar6/wg3/downloads/report/IPCC_AR6_WGIII_FullReport.pdf', 'similarity_score': 0.700871229, 'content': 'Adaptation involves actions to lessen the harm associated with \\r\\nclimate change, or take advantage of potential gains (Smit and \\r\\nWandel 2006). It can seek to reduce present and future exposure \\r\\nto specific climate risks (Adger et al. 2003), mainstream climate \\r\\ninformation into existing planning efforts (Gupta et al. 2010; van der \\r\\nVoorn et al. 2012; van der Voorn et al. 2017), and reduce vulnerability \\r\\n(or increase resilience) of people or communities to the effects of \\r\\nclimate change (Kasperson and Kasperson 2001). There is a body \\r\\nof literature highlighting potential synergies and conflicts between \\r\\nadaptation actions - in any of the three areas above - and mitigation \\r\\nactions - and potential strategies for resolving them (Locatelli \\r\\net al. 2011; Casado-Asensio and Steurer 2014; Duguma et al. 2014;', 'reranking_score': 0.99499834, 'query_used_for_retrieval': 'What is climate change adaptation?', 'sources_used': ['IPCC'], 'question_used': 'What is climate change adaptation?'}),\n", " Document(page_content='For decades, communities worldwide have already been adapting to climate change-induced hydrological changes \\r\\nto maintain their livelihood and safety. Adaptation is a multi-faceted process that is implemented differently \\r\\ndepending on the sector affected by changes in the hydrological cycle and the region where these changes happen. \\r\\nFor instance, farmers in the semiarid areas might adapt to changing rain patterns through irrigation (see also \\r\\nFAQ4.4). At the same time, urban dwellers can adopt measures such as rainwater harvesting and other nature-based \\r\\nsolutions. Several principles have been documented as crucial for achieving sustainable adaptation as they support \\r\\ncommunities in becoming more resilient to climate change. However, these principles can be implemented singularly \\r\\nor in tandem, and it is essential to acknowledge that long-term adaptation success is context-specific. Therefore, it \\r\\nis critical to involve local communities in co-designing effective adaptation responses.', 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': 1008.0, 'num_tokens': 182.0, 'num_tokens_approx': 221.0, 'num_words': 166.0, 'page_number': 678, 'release_date': 2022.0, 'report_type': 'Full Report', 'section_header': 'Water related adaptation responses in agriculture sector:\\r\\nbenefits, co-benefits with mitigation, and possible maladaptation', 'short_name': 'IPCC AR6 WGII FR', 'source': 'IPCC', 'toc_level0': 'Chapters and Cross-Chapter Papers ', 'toc_level1': 'Chapter 4 Water', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://report.ipcc.ch/ar6/wg2/IPCC_AR6_WGII_FullReport.pdf', 'similarity_score': 0.720182, 'content': 'For decades, communities worldwide have already been adapting to climate change-induced hydrological changes \\r\\nto maintain their livelihood and safety. Adaptation is a multi-faceted process that is implemented differently \\r\\ndepending on the sector affected by changes in the hydrological cycle and the region where these changes happen. \\r\\nFor instance, farmers in the semiarid areas might adapt to changing rain patterns through irrigation (see also \\r\\nFAQ4.4). At the same time, urban dwellers can adopt measures such as rainwater harvesting and other nature-based \\r\\nsolutions. Several principles have been documented as crucial for achieving sustainable adaptation as they support \\r\\ncommunities in becoming more resilient to climate change. However, these principles can be implemented singularly \\r\\nor in tandem, and it is essential to acknowledge that long-term adaptation success is context-specific. Therefore, it \\r\\nis critical to involve local communities in co-designing effective adaptation responses.', 'reranking_score': 0.99424744, 'query_used_for_retrieval': 'What is climate change adaptation?', 'sources_used': ['IPCC'], 'question_used': 'What is climate change adaptation?'}),\n", " Document(page_content='Adaptation, in response to current climate change, is reducing climate risks and vulnerability mostly via adjustment of existing systems. Many \\r\\nadaptation options exist and are used to help manage projected climate change impacts, but their implementation depends upon the capacity and \\r\\neffectiveness of governance and decision-making processes. These and other enabling conditions can also support climate resilient development \\r\\n(Section D).\\nCurrent Adaptation and its Benefits\\nC.1 Progress in adaptation planning and implementation has been observed across all sectors and regions, generating multiple \\r\\nbenefits (very high confidence). However, adaptation progress is unevenly distributed with observed adaptation gaps40 (high \\r\\nconfidence). Many initiatives prioritize immediate and near-term climate risk reduction which reduces the opportunity for \\r\\ntransformational adaptation (high confidence). {2.6, 5.14, 7.4, 10.4, 12.5, 13.11, 14.7, 16.3, 17.3, CCP5.2, CCP5.4}', 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': 975.0, 'num_tokens': 207.0, 'num_tokens_approx': 242.0, 'num_words': 182.0, 'page_number': 20, 'release_date': 2022.0, 'report_type': 'SPM', 'section_header': 'C: Adaptation Measures and Enabling Conditions', 'short_name': 'IPCC AR6 WGII SPM', 'source': 'IPCC', 'toc_level0': 'C: Adaptation Measures and Enabling Conditions', 'toc_level1': 'Current Adaptation and its Benefits', '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.721858382, 'content': 'Adaptation, in response to current climate change, is reducing climate risks and vulnerability mostly via adjustment of existing systems. Many \\r\\nadaptation options exist and are used to help manage projected climate change impacts, but their implementation depends upon the capacity and \\r\\neffectiveness of governance and decision-making processes. These and other enabling conditions can also support climate resilient development \\r\\n(Section D).\\nCurrent Adaptation and its Benefits\\nC.1 Progress in adaptation planning and implementation has been observed across all sectors and regions, generating multiple \\r\\nbenefits (very high confidence). However, adaptation progress is unevenly distributed with observed adaptation gaps40 (high \\r\\nconfidence). Many initiatives prioritize immediate and near-term climate risk reduction which reduces the opportunity for \\r\\ntransformational adaptation (high confidence). {2.6, 5.14, 7.4, 10.4, 12.5, 13.11, 14.7, 16.3, 17.3, CCP5.2, CCP5.4}', 'reranking_score': 0.9935619, 'query_used_for_retrieval': 'What is climate change adaptation?', 'sources_used': ['IPCC'], 'question_used': 'What is climate change adaptation?'}),\n", " Document(page_content='Adaptation, in response to current climate change, is reducing climate risks and vulnerability mostly via adjustment of existing systems. Many \\r\\nadaptation options exist and are used to help manage projected climate change impacts, but their implementation depends upon the capacity and \\r\\neffectiveness of governance and decision-making processes. These and other enabling conditions can also support climate resilient development \\r\\n(Section D).\\nCurrent Adaptation and its Benefits\\nC.1 Progress in adaptation planning and implementation has been observed across all sectors and regions, generating multiple \\r\\nbenefits (very high confidence). However, adaptation progress is unevenly distributed with observed adaptation gaps40 (high \\r\\nconfidence). Many initiatives prioritize immediate and near-term climate risk reduction which reduces the opportunity for \\r\\ntransformational adaptation (high confidence). {2.6, 5.14, 7.4, 10.4, 12.5, 13.11, 14.7, 16.3, 17.3, CCP5.2, CCP5.4}', 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': 975.0, 'num_tokens': 207.0, 'num_tokens_approx': 242.0, 'num_words': 182.0, 'page_number': 32, 'release_date': 2022.0, 'report_type': 'Full Report', 'section_header': 'C: Adaptation Measures and Enabling Conditions', 'short_name': 'IPCC AR6 WGII FR', 'source': 'IPCC', 'toc_level0': 'Summary for Policymakers ', 'toc_level1': 'N/A', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://report.ipcc.ch/ar6/wg2/IPCC_AR6_WGII_FullReport.pdf', 'similarity_score': 0.721858382, 'content': 'Adaptation, in response to current climate change, is reducing climate risks and vulnerability mostly via adjustment of existing systems. Many \\r\\nadaptation options exist and are used to help manage projected climate change impacts, but their implementation depends upon the capacity and \\r\\neffectiveness of governance and decision-making processes. These and other enabling conditions can also support climate resilient development \\r\\n(Section D).\\nCurrent Adaptation and its Benefits\\nC.1 Progress in adaptation planning and implementation has been observed across all sectors and regions, generating multiple \\r\\nbenefits (very high confidence). However, adaptation progress is unevenly distributed with observed adaptation gaps40 (high \\r\\nconfidence). Many initiatives prioritize immediate and near-term climate risk reduction which reduces the opportunity for \\r\\ntransformational adaptation (high confidence). {2.6, 5.14, 7.4, 10.4, 12.5, 13.11, 14.7, 16.3, 17.3, CCP5.2, CCP5.4}', 'reranking_score': 0.9935619, 'query_used_for_retrieval': 'What is climate change adaptation?', 'sources_used': ['IPCC'], 'question_used': 'What is climate change adaptation?'}),\n", " Document(page_content='Frequently Asked Questions\\nFAQ 16.4 | What adaptation-related responses to climate change have already been observed, and do they help \\r\\nreduce climate risk?\\nAdaptation-related responses are the actions taken with the intention of managing risks by reducing vulnerability or exposure to climate \\r\\nhazards. Responses are increasing and expanding across global regions and sectors, although there is still a lot of opportunity for improvement. \\r\\nExamining the adequacy and effectiveness of the responses is important to guide planning, implementation and expansion.\\nThe most frequently reported adaptation-related responses are behavioural changes made by individuals \\r\\nand households in response to drought, flooding and rainfall variability in Africa and Asia. Governments are \\r\\nincreasingly undertaking planning, and implementing policy and legislation, including, for example, new zoning \\r\\nregulations and building codes, coordination mechanisms, disaster and emergency planning, or extension services \\r\\nto support farmer uptake of drought tolerant crops. Local governments are particularly active in adaptation-related \\r\\nresponses, particularly in protecting infrastructure and services, such as water and sanitation. Across all regions, \\r\\nadaptation-related responses are strongly linked to food security, with poverty alleviation a key strategy in the', 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': 1356.0, 'num_tokens': 231.0, 'num_tokens_approx': 284.0, 'num_words': 213.0, 'page_number': 2518, 'release_date': 2022.0, 'report_type': 'Full Report', 'section_header': '(a) Low-lying coastal systems', '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.723861217, 'content': 'Frequently Asked Questions\\nFAQ 16.4 | What adaptation-related responses to climate change have already been observed, and do they help \\r\\nreduce climate risk?\\nAdaptation-related responses are the actions taken with the intention of managing risks by reducing vulnerability or exposure to climate \\r\\nhazards. Responses are increasing and expanding across global regions and sectors, although there is still a lot of opportunity for improvement. \\r\\nExamining the adequacy and effectiveness of the responses is important to guide planning, implementation and expansion.\\nThe most frequently reported adaptation-related responses are behavioural changes made by individuals \\r\\nand households in response to drought, flooding and rainfall variability in Africa and Asia. Governments are \\r\\nincreasingly undertaking planning, and implementing policy and legislation, including, for example, new zoning \\r\\nregulations and building codes, coordination mechanisms, disaster and emergency planning, or extension services \\r\\nto support farmer uptake of drought tolerant crops. Local governments are particularly active in adaptation-related \\r\\nresponses, particularly in protecting infrastructure and services, such as water and sanitation. Across all regions, \\r\\nadaptation-related responses are strongly linked to food security, with poverty alleviation a key strategy in the', 'reranking_score': 0.991938, 'query_used_for_retrieval': 'What is climate change adaptation?', 'sources_used': ['IPCC'], 'question_used': 'What is climate change adaptation?'}),\n", " Document(page_content='Current observed climate impacts and expected future risks include stronger and longer heat waves, unprecedented \\r\\ndroughts and floods, accelerating sea level rise and storm surges affecting many geographies and communities. \\r\\nPeople around the world are increasingly perceiving changing climates, regarding these changes as significant and \\r\\nconsidering climate action as a matter of high urgency. In particular, marginalised and poor people, as well as island \\r\\nand coastal communities, experience relatively higher risks and vulnerability. The available evidence suggests that \\r\\ncurrent adaptation efforts may be insufficient to help ensure sustainable development and other societal goals in \\r\\nmany communities worldwide even under the most optimistic GHG emissions scenarios.\\nClimate change adaptation is, therefore, urgent to the extent that meeting important societal goals requires \\r\\nimmediate and long-term action by governments, business, civil society and individuals at a scale and speed \\r\\nsignificantly faster than that represented by current trends.\\nFrequently Asked Questions', 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': 1090.0, 'num_tokens': 182.0, 'num_tokens_approx': 218.0, 'num_words': 164.0, 'page_number': 190, 'release_date': 2022.0, 'report_type': 'Full Report', 'section_header': 'FAQ 1.2 | Is climate change adaptation urgent?', 'short_name': 'IPCC AR6 WGII FR', 'source': 'IPCC', 'toc_level0': 'Chapters and Cross-Chapter Papers ', 'toc_level1': 'Chapter 1 Point of Departure and Key Concepts', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://report.ipcc.ch/ar6/wg2/IPCC_AR6_WGII_FullReport.pdf', 'similarity_score': 0.679264843, 'content': 'Current observed climate impacts and expected future risks include stronger and longer heat waves, unprecedented \\r\\ndroughts and floods, accelerating sea level rise and storm surges affecting many geographies and communities. \\r\\nPeople around the world are increasingly perceiving changing climates, regarding these changes as significant and \\r\\nconsidering climate action as a matter of high urgency. In particular, marginalised and poor people, as well as island \\r\\nand coastal communities, experience relatively higher risks and vulnerability. The available evidence suggests that \\r\\ncurrent adaptation efforts may be insufficient to help ensure sustainable development and other societal goals in \\r\\nmany communities worldwide even under the most optimistic GHG emissions scenarios.\\nClimate change adaptation is, therefore, urgent to the extent that meeting important societal goals requires \\r\\nimmediate and long-term action by governments, business, civil society and individuals at a scale and speed \\r\\nsignificantly faster than that represented by current trends.\\nFrequently Asked Questions', 'reranking_score': 0.9919067, 'query_used_for_retrieval': 'What is climate change adaptation?', 'sources_used': ['IPCC'], 'question_used': 'What is climate change adaptation?'}),\n", " Document(page_content='As discussed in Chapter 16, adaptation is a key mechanism for \\r\\nmanaging climate risks, and therefore for pursuing CRD. The lower \\r\\nestimates in Table 18.2 are associated with higher levels of adaptation \\r\\nand more conducive development conditions. Furthermore, additional \\r\\nadaptation demand is associated with greater levels of climate change. \\r\\nAdaptation is a broad term referring to many different levels of response \\r\\nand options for natural and human systems, from individuals, specific \\r\\nlocations and specific technologies, to nations, markets, global dynamics \\r\\nand strategies at the system level. Adaptation also includes endogenous \\r\\nreflexive and exogenous policy responses. Perspectives on limits to \\r\\nadaptation, synergies, trade-offs and feasibility therefore depend on \\r\\nwhere the boundaries are drawn and the objective. Overall, there are \\r\\na broad range of adaptation options relevant to reducing risks posed \\r\\nby climate change to development. However, current understanding \\r\\nof how such options are implemented in practice, their effectiveness \\r\\nacross a range of possible climate futures and their potential limits, is \\r\\nmodest.', 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': 1151.0, 'num_tokens': 218.0, 'num_tokens_approx': 248.0, 'num_words': 186.0, 'page_number': 2692, 'release_date': 2022.0, 'report_type': 'Full Report', 'section_header': '(b) Sustainable development related climate impacts indicators', 'short_name': 'IPCC AR6 WGII FR', 'source': 'IPCC', 'toc_level0': 'Chapters and Cross-Chapter Papers ', 'toc_level1': 'Chapter 18 Climate Resilient Development Pathways', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://report.ipcc.ch/ar6/wg2/IPCC_AR6_WGII_FullReport.pdf', 'similarity_score': 0.734549761, 'content': 'As discussed in Chapter 16, adaptation is a key mechanism for \\r\\nmanaging climate risks, and therefore for pursuing CRD. The lower \\r\\nestimates in Table 18.2 are associated with higher levels of adaptation \\r\\nand more conducive development conditions. Furthermore, additional \\r\\nadaptation demand is associated with greater levels of climate change. \\r\\nAdaptation is a broad term referring to many different levels of response \\r\\nand options for natural and human systems, from individuals, specific \\r\\nlocations and specific technologies, to nations, markets, global dynamics \\r\\nand strategies at the system level. Adaptation also includes endogenous \\r\\nreflexive and exogenous policy responses. Perspectives on limits to \\r\\nadaptation, synergies, trade-offs and feasibility therefore depend on \\r\\nwhere the boundaries are drawn and the objective. Overall, there are \\r\\na broad range of adaptation options relevant to reducing risks posed \\r\\nby climate change to development. However, current understanding \\r\\nof how such options are implemented in practice, their effectiveness \\r\\nacross a range of possible climate futures and their potential limits, is \\r\\nmodest.', 'reranking_score': 0.99029154, 'query_used_for_retrieval': 'What is climate change adaptation?', 'sources_used': ['IPCC'], 'question_used': 'What is climate change adaptation?'}),\n", " Document(page_content='Adaptation plays a key role in reducing risks and vulnerability \\r\\nfrom climate change. Implementing adaptation and mitigation \\r\\nactions together with the SDGs helps to exploit synergies, \\r\\nreduce trade-offs and makes all three more effective. From \\r\\na risk perspective, limiting atmospheric greenhouse gas (GHG) \\r\\nconcentrations reduces climate-related hazards while adaptation and \\r\\nsustainable development reduce exposure and vulnerability to those \\r\\nhazards. Adaptation facilitates development, which is increasingly \\r\\nhindered by impacts and risks from climate change. Development \\r\\nfacilitates adaptation by expanding the resources and capacity to \\r\\nreduce climate risks and vulnerability. {1.1.3; 1.5.1; 1.5.3}', 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': 716.0, 'num_tokens': 147.0, 'num_tokens_approx': 161.0, 'num_words': 121.0, 'page_number': 135, 'release_date': 2022.0, 'report_type': 'Full Report', 'section_header': 'Executive Summary', 'short_name': 'IPCC AR6 WGII FR', 'source': 'IPCC', 'toc_level0': 'Chapters and Cross-Chapter Papers ', 'toc_level1': 'Chapter 1 Point of Departure and Key Concepts', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://report.ipcc.ch/ar6/wg2/IPCC_AR6_WGII_FullReport.pdf', 'similarity_score': 0.676665783, 'content': 'Adaptation plays a key role in reducing risks and vulnerability \\r\\nfrom climate change. Implementing adaptation and mitigation \\r\\nactions together with the SDGs helps to exploit synergies, \\r\\nreduce trade-offs and makes all three more effective. From \\r\\na risk perspective, limiting atmospheric greenhouse gas (GHG) \\r\\nconcentrations reduces climate-related hazards while adaptation and \\r\\nsustainable development reduce exposure and vulnerability to those \\r\\nhazards. Adaptation facilitates development, which is increasingly \\r\\nhindered by impacts and risks from climate change. Development \\r\\nfacilitates adaptation by expanding the resources and capacity to \\r\\nreduce climate risks and vulnerability. {1.1.3; 1.5.1; 1.5.3}', 'reranking_score': 0.9901782, 'query_used_for_retrieval': 'What is climate change adaptation?', 'sources_used': ['IPCC'], 'question_used': 'What is climate change adaptation?'}),\n", " Document(page_content=\"The IPCC defines adaptation as: 'in human systems, the process of \\r\\nadjustment to actual or expected climate and its effects, in order to \\r\\nmoderate harm or exploit beneficial opportunities. In natural systems, \\r\\nthe process of adjustment to actual climate and its effect; human \\nintervention may facilitate adjustment to expected climate and its \\r\\neffects' (Annex I: Glossary).\", metadata={'chunk_type': 'text', 'document_id': 'document9', 'document_number': 9.0, 'element_id': 'N/A', 'figure_code': 'N/A', 'file_size': 'N/A', 'image_path': 'N/A', 'n_pages': 2258.0, 'name': 'Full Report. In: Climate Change 2022: Mitigation of Climate Change. Contribution of the WGIII to the AR6 of the IPCC', 'num_characters': 378.0, 'num_tokens': 77.0, 'num_tokens_approx': 89.0, 'num_words': 67.0, 'page_number': 1510, 'release_date': 2022.0, 'report_type': 'Full Report', 'section_header': '14.5.1.2 Linkages with Sustainable Development, Adaptation, \\r\\nLoss and Damage, and Human Rights', 'short_name': 'IPCC AR6 WGIII FR', 'source': 'IPCC', 'toc_level0': '14.5 Multi-level, Multi-actor Governance', 'toc_level1': '14.5.1 International Cooperation at Multiple Governance Levels', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://www.ipcc.ch/report/ar6/wg3/downloads/report/IPCC_AR6_WGIII_FullReport.pdf', 'similarity_score': 0.760399759, 'content': \"The IPCC defines adaptation as: 'in human systems, the process of \\r\\nadjustment to actual or expected climate and its effects, in order to \\r\\nmoderate harm or exploit beneficial opportunities. In natural systems, \\r\\nthe process of adjustment to actual climate and its effect; human \\nintervention may facilitate adjustment to expected climate and its \\r\\neffects' (Annex I: Glossary).\", 'reranking_score': 0.9898303, 'query_used_for_retrieval': 'What is climate change adaptation?', 'sources_used': ['IPCC'], 'question_used': 'What is climate change adaptation?'}),\n", " Document(page_content='Adaptation In human systems, the process of adjustment to actual \\r\\nor expected climate and its effects, in order to moderate harm or exploit \\r\\nbeneficial opportunities. In natural systems, the process of adjustment \\r\\nto actual climate and its effects; human intervention may facilitate \\r\\nadjustment to expected climate and its effects. See also Adaptation \\r\\noptions, Adaptive capacity, and Maladaptive actions (Maladaptation).\\n Adaptation limits \\n\\n[Note: For a discussion of the term forest and related terms such as \\r\\nafforestation, reforestation and deforestation, see the 2006 IPCC Guidelines \\r\\nfor National Greenhouse Gas Inventories and their 2019 Refinement, and \\r\\ninformation provided by the United Nations Framework Convention on \\r\\nClimate Change (IPCC 2006, 2019; UNFCCC 2021a,b).] \\nSee also Deforestation, Reducing Emissions from Deforestation \\r\\nand Forest Degradation (REDD+), Reforestation, Anthropogenic \\r\\nRemovals, and Carbon dioxide removal (CDR).', metadata={'chunk_type': 'text', 'document_id': 'document9', 'document_number': 9.0, 'element_id': 'N/A', 'figure_code': 'N/A', 'file_size': 'N/A', 'image_path': 'N/A', 'n_pages': 2258.0, 'name': 'Full Report. In: Climate Change 2022: Mitigation of Climate Change. Contribution of the WGIII to the AR6 of the IPCC', 'num_characters': 999.0, 'num_tokens': 223.0, 'num_tokens_approx': 221.0, 'num_words': 166.0, 'page_number': 1807, 'release_date': 2022.0, 'report_type': 'Full Report', 'section_header': '1.5degC pathway See Pathways.', 'short_name': 'IPCC AR6 WGIII FR', 'source': 'IPCC', 'toc_level0': '_Hlk111724995', 'toc_level1': 'N/A', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://www.ipcc.ch/report/ar6/wg3/downloads/report/IPCC_AR6_WGIII_FullReport.pdf', 'similarity_score': 0.742421, 'content': 'Adaptation In human systems, the process of adjustment to actual \\r\\nor expected climate and its effects, in order to moderate harm or exploit \\r\\nbeneficial opportunities. In natural systems, the process of adjustment \\r\\nto actual climate and its effects; human intervention may facilitate \\r\\nadjustment to expected climate and its effects. See also Adaptation \\r\\noptions, Adaptive capacity, and Maladaptive actions (Maladaptation).\\n Adaptation limits \\n\\n[Note: For a discussion of the term forest and related terms such as \\r\\nafforestation, reforestation and deforestation, see the 2006 IPCC Guidelines \\r\\nfor National Greenhouse Gas Inventories and their 2019 Refinement, and \\r\\ninformation provided by the United Nations Framework Convention on \\r\\nClimate Change (IPCC 2006, 2019; UNFCCC 2021a,b).] \\nSee also Deforestation, Reducing Emissions from Deforestation \\r\\nand Forest Degradation (REDD+), Reforestation, Anthropogenic \\r\\nRemovals, and Carbon dioxide removal (CDR).', 'reranking_score': 0.9870296, 'query_used_for_retrieval': 'What is climate change adaptation?', 'sources_used': ['IPCC'], 'question_used': 'What is climate change adaptation?'}),\n", " Document(page_content='Because the impacts of climate change affect people and nature in so many different ways, the specific goals of \\r\\nadaptation depend on the impact being managed and the action being taken. For human systems, adaptation \\r\\nincludes actions aimed at reducing a specific risk, such as by fortifying a building against flooding, or actions aimed \\r\\nat multiple risks, such as requiring climate risk assessments in financial reporting in anticipation of different kinds \\r\\nof risk. At the local level, communities can take actions that include updating building codes and land use plans, \\r\\nimproving soil management, enhancing water use efficiency, supporting migrants and taking measures to reduce \\r\\npoverty. For natural systems, adaptation includes organisms changing behaviours, migrating to new locations and \\r\\ngenetic modifications in response to changing climate conditions. The goals for these adaptation actions can relate \\r\\nto health, water or food security, jobs and employment, poverty eradication and social equity, biodiversity and \\r\\necosystem services, among others. Articulating the goals of adaptation thus requires engaging with the concepts of \\r\\nequity, justice and effectiveness at the international, national and local levels.\\n177177', 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': 1244.0, 'num_tokens': 225.0, 'num_tokens_approx': 269.0, 'num_words': 202.0, 'page_number': 189, 'release_date': 2022.0, 'report_type': 'Full Report', 'section_header': 'FAQ 1.1 | What are the goals of climate change adaptation?', 'short_name': 'IPCC AR6 WGII FR', 'source': 'IPCC', 'toc_level0': 'Chapters and Cross-Chapter Papers ', 'toc_level1': 'Chapter 1 Point of Departure and Key Concepts', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://report.ipcc.ch/ar6/wg2/IPCC_AR6_WGII_FullReport.pdf', 'similarity_score': 0.682544589, 'content': 'Because the impacts of climate change affect people and nature in so many different ways, the specific goals of \\r\\nadaptation depend on the impact being managed and the action being taken. For human systems, adaptation \\r\\nincludes actions aimed at reducing a specific risk, such as by fortifying a building against flooding, or actions aimed \\r\\nat multiple risks, such as requiring climate risk assessments in financial reporting in anticipation of different kinds \\r\\nof risk. At the local level, communities can take actions that include updating building codes and land use plans, \\r\\nimproving soil management, enhancing water use efficiency, supporting migrants and taking measures to reduce \\r\\npoverty. For natural systems, adaptation includes organisms changing behaviours, migrating to new locations and \\r\\ngenetic modifications in response to changing climate conditions. The goals for these adaptation actions can relate \\r\\nto health, water or food security, jobs and employment, poverty eradication and social equity, biodiversity and \\r\\necosystem services, among others. Articulating the goals of adaptation thus requires engaging with the concepts of \\r\\nequity, justice and effectiveness at the international, national and local levels.\\n177177', 'reranking_score': 0.9862577, 'query_used_for_retrieval': 'What is climate change adaptation?', 'sources_used': ['IPCC'], 'question_used': 'What is climate change adaptation?'}),\n", " Document(page_content='Adaptation in this report is defined, in human systems, as the process \\r\\nof adjustment to actual or expected climate and its effects, in order \\r\\nto moderate harm or exploit beneficial opportunities. In natural \\r\\nsystems, adaptation is the process of adjustment to actual climate \\r\\nand its effects; human intervention may facilitate adjustment to \\r\\nexpected climate and its effects (see Annex II: Glossary). Adaptation \\r\\nplanning in human systems generally entails a process of iterative risk \\r\\nmanagement. Different types of adaptation have been distinguished, \\r\\nincluding anticipatory versus reactive, autonomous versus planned \\r\\nand incremental versus transformational adaptation (Chapters 16-\\r\\n18; IPCC WGII glossaries for the TAR, AR4, AR5, and AR6 (Annex II)). \\r\\nAdaptation is often seen as having five general stages: (a) awareness, \\r\\n(b) assessment, (c) planning, (d) implementation and (e) M&E (Moser \\r\\nand Boykoff, 2013; Jones et al., 2014; Mimura et al., 2014; Noble et al.,', 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': 984.0, 'num_tokens': 224.0, 'num_tokens_approx': 249.0, 'num_words': 187.0, 'page_number': 146, 'release_date': 2022.0, 'report_type': 'Full Report', 'section_header': '1.2.1.3 Adaptation', 'short_name': 'IPCC AR6 WGII FR', 'source': 'IPCC', 'toc_level0': 'Chapters and Cross-Chapter Papers ', 'toc_level1': 'Chapter 1 Point of Departure and Key Concepts', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://report.ipcc.ch/ar6/wg2/IPCC_AR6_WGII_FullReport.pdf', 'similarity_score': 0.762178361, 'content': 'Adaptation in this report is defined, in human systems, as the process \\r\\nof adjustment to actual or expected climate and its effects, in order \\r\\nto moderate harm or exploit beneficial opportunities. In natural \\r\\nsystems, adaptation is the process of adjustment to actual climate \\r\\nand its effects; human intervention may facilitate adjustment to \\r\\nexpected climate and its effects (see Annex II: Glossary). Adaptation \\r\\nplanning in human systems generally entails a process of iterative risk \\r\\nmanagement. Different types of adaptation have been distinguished, \\r\\nincluding anticipatory versus reactive, autonomous versus planned \\r\\nand incremental versus transformational adaptation (Chapters 16-\\r\\n18; IPCC WGII glossaries for the TAR, AR4, AR5, and AR6 (Annex II)). \\r\\nAdaptation is often seen as having five general stages: (a) awareness, \\r\\n(b) assessment, (c) planning, (d) implementation and (e) M&E (Moser \\r\\nand Boykoff, 2013; Jones et al., 2014; Mimura et al., 2014; Noble et al.,', 'reranking_score': 0.98532796, 'query_used_for_retrieval': 'What is climate change adaptation?', 'sources_used': ['IPCC'], 'question_used': 'What is climate change adaptation?'})]" ] }, "execution_count": 93, "metadata": {}, "output_type": "execute_result" } ], "source": [ "docs" ] }, { "cell_type": "code", "execution_count": 19, "id": "9b41f377-b3a9-41eb-acef-fb3ea131c374", "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", "INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions \"HTTP/1.1 200 OK\"\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "L'impact environnemental de l'intelligence artificielle (IA) n'est pas couvert spécifiquement par les rapports du GIEC ou de l'IPBES. Cependant, il existe des recherches récentes sur ce sujet. Par exemple, vous pouvez consulter le travail de l'experte en IA et climat, Sasha Luccioni, qui a publié plusieurs articles sur l'empreinte carbone de l'IA, notamment sur le coût énergétique de l'inférence des modèles d'IA et sur l'estimation de l'empreinte carbone de l'entraînement de grands modèles de langage.\n", "\n", "De plus, il existe des outils tels que CodeCarbon et Ecologits qui peuvent vous aider à calculer l'empreinte carbone de vos modèles d'IA. Si vous souhaitez en savoir plus sur l'empreinte carbone de l'IA, je vous recommande de consulter ces ressources et outils. Vous pouvez également visiter cette page pour en apprendre davantage sur l'empreinte carbone de ClimateQ&A : [Lien vers la page sur l'empreinte carbone de ClimateQ&A](https://climateqa.com/docs/carbon-footprint/)\n" ] }, { "data": { "text/plain": [ "{'user_input': \"C'est quoi l'empreinte carbone de l'IA\",\n", " 'language': 'French',\n", " 'intent': 'ai_impact',\n", " 'query': \"C'est quoi l'empreinte carbone de l'IA\",\n", " 'answer': \"L'impact environnemental de l'intelligence artificielle (IA) n'est pas couvert spécifiquement par les rapports du GIEC ou de l'IPBES. Cependant, il existe des recherches récentes sur ce sujet. Par exemple, vous pouvez consulter le travail de l'experte en IA et climat, Sasha Luccioni, qui a publié plusieurs articles sur l'empreinte carbone de l'IA, notamment sur le coût énergétique de l'inférence des modèles d'IA et sur l'estimation de l'empreinte carbone de l'entraînement de grands modèles de langage.\\n\\nDe plus, il existe des outils tels que CodeCarbon et Ecologits qui peuvent vous aider à calculer l'empreinte carbone de vos modèles d'IA. Si vous souhaitez en savoir plus sur l'empreinte carbone de l'IA, je vous recommande de consulter ces ressources et outils. Vous pouvez également visiter cette page pour en apprendre davantage sur l'empreinte carbone de ClimateQ&A : [Lien vers la page sur l'empreinte carbone de ClimateQ&A](https://climateqa.com/docs/carbon-footprint/)\"}" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "output = await agent.ainvoke({\"user_input\":\"C'est quoi l'empreinte carbone de l'IA\"})\n", "output" ] }, { "cell_type": "markdown", "id": "8d89f36b-fc04-4d0c-b9c4-990b489b7fc3", "metadata": {}, "source": [ "## Test simple route chains" ] }, { "cell_type": "code", "execution_count": 36, "id": "1d884bb7-7230-47cb-a778-36cffed1fcde", "metadata": { "tags": [] }, "outputs": [], "source": [ "from climateqa.engine.chains.answer_chitchat import make_chitchat_chain\n", "from climateqa.engine.chains.answer_ai_impact import make_ai_impact_chain\n", "\n", "chitchat_chain = make_chitchat_chain(llm)\n", "ai_impact_chain = make_ai_impact_chain(llm)" ] }, { "cell_type": "code", "execution_count": 37, "id": "586a4ead-6064-42e8-9f3c-8973b8d754c6", "metadata": { "tags": [] }, "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" ] }, { "name": "stdout", "output_type": "stream", "text": [ "L'impact environnemental de l'intelligence artificielle n'est pas couvert par les rapports du GIEC ou de l'IPBES. Cependant, il existe des recherches récentes sur ce sujet. Par exemple, vous pouvez consulter le travail de l'experte en IA et climat, Sasha Luccioni, qui a publié des articles sur l'empreinte carbone de l'IA, notamment sur le coût énergétique de l'inférence des modèles d'IA et sur l'estimation de l'empreinte carbone de l'entraînement de grands modèles de langage.\n", "\n", "Si vous souhaitez en savoir plus sur l'empreinte carbone de l'IA, je vous recommande de consulter les liens suivants :\n", "- \"Power Hungry Processing: Watts Driving the Cost of AI Deployment?\" - https://arxiv.org/abs/2311.16863\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\n", "\n", "De plus, il existe des outils tels que CodeCarbon (https://github.com/mlco2/codecarbon) pour mesurer l'empreinte carbone de votre code, et Ecologits (https://ecologits.ai/) pour mesurer l'empreinte carbone de l'utilisation des API de grands modèles de langage. Ces ressources pourraient vous aider à mieux comprendre l'impact environnemental de l'IA. Si vous souhaitez en savoir plus sur l'empreinte carbone de ClimateQ&A, vous pouvez consulter cette page : https://climateqa.com/docs/carbon-footprint/." ] } ], "source": [ "async for event in ai_impact_chain.astream_events({\"question\":\"Mais c'est quoi l'empreinte carbone de cet outil, ça doit consommer pas mal ...\"},version = \"v1\"):\n", " if event[\"event\"] == \"on_chain_stream\":\n", " print(event[\"data\"][\"chunk\"],end = \"\")" ] }, { "cell_type": "code", "execution_count": 38, "id": "6f3a1c52-f92a-442b-9442-22415087da8b", "metadata": { "tags": [] }, "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" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Je suis désolé, je ne peux répondre qu'aux questions liées à l'environnement et au climat. N'hésitez pas à poser une question sur ces sujets!" ] } ], "source": [ "async for event in chitchat_chain.astream_events({\"question\":\"Vas y blbablablala\"},version = \"v1\"):\n", " if event[\"event\"] == \"on_chain_stream\":\n", " print(event[\"data\"][\"chunk\"],end = \"\")" ] }, { "cell_type": "code", "execution_count": 16, "id": "0e380744-e03d-408d-9282-3fcb6925413b", "metadata": { "tags": [] }, "outputs": [], "source": [ "from langchain.schema import Document\n", "from langgraph.graph import END, StateGraph" ] }, { "cell_type": "markdown", "id": "1788fbb7-90df-41e5-88c4-83c5e59fe23c", "metadata": { "tags": [] }, "source": [ "## Retriever & Reranker" ] }, { "cell_type": "code", "execution_count": 140, "id": "cbe2f9f0-0c0b-46f8-929c-51a94eab5f22", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "96" ] }, "execution_count": 140, "metadata": {}, "output_type": "execute_result" } ], "source": [ "query = \"Is global warming caused by humans?\"\n", "\n", "retriever = ClimateQARetriever(\n", " vectorstore=vectorstore,\n", " sources = [\"IPCC\"],\n", " # reports = ias_reports,\n", " min_size = 200,\n", " k_summary = 5,k_total = 100,\n", " threshold = 0.5,\n", ")\n", "\n", "docs_question = retriever.get_relevant_documents(query)\n", "len(docs_question)" ] }, { "cell_type": "code", "execution_count": 86, "id": "6e6892d2-a5bd-456a-8284-6e844d02af0e", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: total: 1.97 s\n", "Wall time: 681 ms\n" ] } ], "source": [ "%%time\n", "from scipy.special import expit, logit\n", "\n", "def rerank_docs(reranker,docs,query):\n", " \n", " # Get a list of texts from langchain docs\n", " input_docs = [x.page_content for x in docs]\n", " \n", " # Rerank using rerankers library\n", " results = reranker.rank(query=query, docs=input_docs)\n", "\n", " # Prepare langchain list of docs\n", " docs_reranked = []\n", " for result in results.results:\n", " doc_id = result.document.doc_id\n", " doc = docs[doc_id]\n", " doc.metadata[\"rerank_score\"] = result.score\n", " doc.metadata[\"query_used_for_retrieval\"] = query\n", " docs_reranked.append(doc)\n", " return docs_reranked\n", "\n", "docs_reranked = rerank_docs(reranker,docs_question,query)" ] }, { "cell_type": "code", "execution_count": 87, "id": "430209db-5ffb-4017-8ebd-12fee30df327", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "Document(page_content='Observed Warming and its Causes\\nA.1 Human activities, principally through emissions of greenhouse gases, have unequivocally \\r\\ncaused global warming, with global surface temperature reaching 1.1degC above 1850-1900 \\r\\nin 2011-2020. Global greenhouse gas emissions have continued to increase, with unequal \\r\\nhistorical and ongoing contributions arising from unsustainable energy use, land use and \\r\\nland-use change, lifestyles and patterns of consumption and production across regions, \\r\\nbetween and within countries, and among individuals (high confidence). {2.1, Figure 2.1, \\r\\nFigure 2.2}', 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': 587.0, 'num_tokens': 130.0, 'num_tokens_approx': 142.0, 'num_words': 107.0, 'page_number': 10, 'release_date': 2023.0, 'report_type': 'SPM', 'section_header': 'Observed Warming and its Causes', '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.759439, 'content': 'Observed Warming and its Causes\\nA.1 Human activities, principally through emissions of greenhouse gases, have unequivocally \\r\\ncaused global warming, with global surface temperature reaching 1.1degC above 1850-1900 \\r\\nin 2011-2020. Global greenhouse gas emissions have continued to increase, with unequal \\r\\nhistorical and ongoing contributions arising from unsustainable energy use, land use and \\r\\nland-use change, lifestyles and patterns of consumption and production across regions, \\r\\nbetween and within countries, and among individuals (high confidence). {2.1, Figure 2.1, \\r\\nFigure 2.2}', 'rerank_score': 0.9993778467178345, 'query_used_for_retrieval': 'Is global warming caused by humans?'})" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" } ], "source": [ "docs_reranked[0]" ] }, { "cell_type": "code", "execution_count": 88, "id": "5ed0b677-bcc4-48b0-bc99-2f515f2e7293", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "[5, 5, 5]" ] }, "execution_count": 88, "metadata": {}, "output_type": "execute_result" } ], "source": [ "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", "divide_into_parts(15,3)" ] }, { "cell_type": "code", "execution_count": null, "id": "1886fe98-4a29-4419-b436-adcbdbda35ac", "metadata": {}, "outputs": [], "source": [ "questions = " ] }, { "cell_type": "code", "execution_count": 133, "id": "4fca0c26-cc42-4f40-996a-c915b7c03a85", "metadata": { "tags": [] }, "outputs": [], "source": [ "state = {'query': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\",\n", " 'questions': [{'question': \"What role do cloud formations play in modulating the Earth's radiative balance?\",\n", " 'sources': ['IPCC']},\n", " {'question': 'How are cloud formations represented in current climate models?',\n", " 'sources': ['IPCC']}]}" ] }, { "cell_type": "code", "execution_count": 177, "id": "28307adf-42bb-4067-a95d-c5c4867d2657", "metadata": { "tags": [] }, "outputs": [], "source": [ "state = {'query': \"What does Morrison argue about the role of IK and LK ?\",\n", " 'questions': [{'question': \"How is the manga One Piece cited in the IPCC\",\n", " 'sources': ['IPCC']}]}" ] }, { "cell_type": "code", "execution_count": 178, "id": "9daa8285-919b-4eab-b071-70ea866d473e", "metadata": { "tags": [] }, "outputs": [], "source": [ "import sys\n", "import os\n", "from contextlib import contextmanager\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" ] }, { "cell_type": "code", "execution_count": 179, "id": "4fc2efe2-783d-44ba-a246-2472ce6fd19b", "metadata": { "tags": [] }, "outputs": [], "source": [ "def retrieve_documents(state):\n", " \n", " POSSIBLE_SOURCES = [\"IPCC\",\"IPBES\",\"IPOS\",\"OpenAlex\"]\n", " questions = state[\"questions\"]\n", " \n", " # Use sources from the user input or from the LLM detection\n", " sources_input = state[\"sources_input\"] if \"sources_input\" in state else [\"auto\"]\n", " auto_mode = \"auto\" in sources_input\n", " \n", " # Constants\n", " k_final = 15\n", " k_before_reranking = 100\n", " k_summary = 5\n", " rerank_by_question = True\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 = ClimateQARetriever(\n", " vectorstore=vectorstore,\n", " sources = sources,\n", " # reports = ias_reports,\n", " min_size = 200,\n", " k_summary = k_summary,k_total = k_before_reranking,\n", " threshold = 0.5,\n", " )\n", " docs_question = retriever.get_relevant_documents(question)\n", " \n", " # Rerank\n", " with suppress_output():\n", " docs_question = rerank_docs(reranker,docs_question,question)\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[\"rerank_score\"], reverse=True)\n", " docs = docs[:k_final]\n", " \n", " new_state = {\"documents\":docs}\n", " return new_state\n", "\n", "def search(state):\n", " return {}" ] }, { "cell_type": "code", "execution_count": 180, "id": "299cdae3-2e97-4e47-bad3-98643dfaf4ea", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: total: 1.64 s\n", "Wall time: 3.23 s\n" ] } ], "source": [ "%%time\n", "output = retrieve_documents(state)" ] }, { "cell_type": "code", "execution_count": 181, "id": "638be0ea-bd41-45d7-ac7c-57ed789da3c5", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0.20497774 0.20197058 0.20149879 0.16000335 0.1522842 0.14817041\n", " 0.14743239 0.1468197 0.14330755 0.13432105 0.12885363 0.12517229\n", " 0.12262824 0.12241826 0.12210386]\n", "0.15079746933333335\n" ] } ], "source": [ "rerank_scores = np.array([doc.metadata[\"rerank_score\"] for doc in output[\"documents\"]])\n", "print(rerank_scores)\n", "print(np.mean(rerank_scores))" ] }, { "cell_type": "code", "execution_count": 182, "id": "69ba19d3-97fb-4a23-99ee-c5827e0664e6", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "page_content='This Technical Summary should be cited as:\\nIPCC, 2019: Technical Summary [H.-O. Portner, D.C. Roberts, V. Masson-Delmotte, P. Zhai, E. Poloczanska, K. Mintenbeck, \\r\\nM. Tignor, A. Alegria, M. Nicolai, A. Okem, J. Petzold, B. Rama, N.M. Weyer (eds.)]. In: IPCC Special Report on the \\r\\nOcean and Cryosphere in a Changing Climate [H.- O. Portner, D.C. Roberts, V. Masson-Delmotte, P. Zhai, M. Tignor, \\r\\nE. Poloczanska, K. Mintenbeck, A. Alegria, M. Nicolai, A. Okem, J. Petzold, B. Rama, N.M. Weyer (eds.)]. Cambridge \\r\\nUniversity Press, Cambridge, UK and New York, NY, USA, pp. 39-69. https://doi.org/10.1017/9781009157964.002' metadata={'chunk_type': 'text', 'document_id': 'document14', 'document_number': 14.0, 'element_id': 'N/A', 'figure_code': 'N/A', 'file_size': 'N/A', 'image_path': 'N/A', 'n_pages': 34.0, 'name': 'Technical Summary. In: IPCC Special Report on the Ocean and Cryosphere in a Changing Climate', 'num_characters': 623.0, 'num_tokens': 237.0, 'num_tokens_approx': 250.0, 'num_words': 188.0, 'page_number': 4, 'release_date': 2019.0, 'report_type': 'TS', 'section_header': 'This Technical Summary should be cited as:', 'short_name': 'IPCC SR OC TS', 'source': 'IPCC', 'toc_level0': 'N/A', 'toc_level1': 'N/A', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://www.ipcc.ch/site/assets/uploads/sites/3/2022/03/02_SROCC_TS_FINAL.pdf', 'similarity_score': 0.611846924, 'content': 'This Technical Summary should be cited as:\\nIPCC, 2019: Technical Summary [H.-O. Portner, D.C. Roberts, V. Masson-Delmotte, P. Zhai, E. Poloczanska, K. Mintenbeck, \\r\\nM. Tignor, A. Alegria, M. Nicolai, A. Okem, J. Petzold, B. Rama, N.M. Weyer (eds.)]. In: IPCC Special Report on the \\r\\nOcean and Cryosphere in a Changing Climate [H.- O. Portner, D.C. Roberts, V. Masson-Delmotte, P. Zhai, M. Tignor, \\r\\nE. Poloczanska, K. Mintenbeck, A. Alegria, M. Nicolai, A. Okem, J. Petzold, B. Rama, N.M. Weyer (eds.)]. Cambridge \\r\\nUniversity Press, Cambridge, UK and New York, NY, USA, pp. 39-69. https://doi.org/10.1017/9781009157964.002', 'rerank_score': 0.20497774, 'query_used_for_retrieval': 'How is the manga One Piece cited in the IPCC', 'sources_used': ['IPCC']}\n", "\n", "page_content='This chapter should be cited as:\\nCabeza, L. F., Q. Bai, P. Bertoldi, J.M. Kihila, A.F.P. Lucena, E. Mata, S. Mirasgedis, A. Novikova, Y. Saheb, 2022: Buildings. \\r\\nIn IPCC, 2022: Climate Change 2022: Mitigation of Climate Change. Contribution of Working Group III to the Sixth \\r\\nAssessment Report of the Intergovernmental Panel on Climate Change [P.R. Shukla, J. Skea, R. Slade, A. Al Khourdajie, \\r\\nR. van Diemen, D. McCollum, M. Pathak, S. Some, P. Vyas, R. Fradera, M. Belkacemi, A. Hasija, G. Lisboa, S. Luz, J. Malley, \\r\\n(eds.)]. Cambridge University Press, Cambridge, UK and New York, NY, USA. doi: 10.1017/9781009157926.011\\n This chapter should be cited as: \\n\\n953953' metadata={'chunk_type': 'text', 'document_id': 'document9', 'document_number': 9.0, 'element_id': 'N/A', 'figure_code': 'N/A', 'file_size': 'N/A', 'image_path': 'N/A', 'n_pages': 2258.0, 'name': 'Full Report. In: Climate Change 2022: Mitigation of Climate Change. Contribution of the WGIII to the AR6 of the IPCC', 'num_characters': 706.0, 'num_tokens': 248.0, 'num_tokens_approx': 261.0, 'num_words': 196.0, 'page_number': 966, 'release_date': 2022.0, 'report_type': 'Full Report', 'section_header': 'This chapter should be cited as:', 'short_name': 'IPCC AR6 WGIII FR', 'source': 'IPCC', 'toc_level0': 'References', 'toc_level1': 'N/A', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://www.ipcc.ch/report/ar6/wg3/downloads/report/IPCC_AR6_WGIII_FullReport.pdf', 'similarity_score': 0.603373706, 'content': 'This chapter should be cited as:\\nCabeza, L. F., Q. Bai, P. Bertoldi, J.M. Kihila, A.F.P. Lucena, E. Mata, S. Mirasgedis, A. Novikova, Y. Saheb, 2022: Buildings. \\r\\nIn IPCC, 2022: Climate Change 2022: Mitigation of Climate Change. Contribution of Working Group III to the Sixth \\r\\nAssessment Report of the Intergovernmental Panel on Climate Change [P.R. Shukla, J. Skea, R. Slade, A. Al Khourdajie, \\r\\nR. van Diemen, D. McCollum, M. Pathak, S. Some, P. Vyas, R. Fradera, M. Belkacemi, A. Hasija, G. Lisboa, S. Luz, J. Malley, \\r\\n(eds.)]. Cambridge University Press, Cambridge, UK and New York, NY, USA. doi: 10.1017/9781009157926.011\\n This chapter should be cited as: \\n\\n953953', 'rerank_score': 0.20197058, 'query_used_for_retrieval': 'How is the manga One Piece cited in the IPCC', 'sources_used': ['IPCC']}\n", "\n", "page_content='This chapter should be cited as:\\nBashmakov, I.A., L.J. Nilsson, A. Acquaye, C. Bataille, J.M. Cullen, S. de la Rue du Can, M. Fischedick, Y. Geng, K. Tanaka, \\r\\n2022: Industry. In IPCC, 2022: Climate Change 2022: Mitigation of Climate Change. Contribution of Working Group III \\r\\nto the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [P.R. Shukla, J. Skea, R. Slade, \\r\\nA. Al Khourdajie, R. van Diemen, D. McCollum, M. Pathak, S. Some, P. Vyas, R. Fradera, M. Belkacemi, A. Hasija, \\r\\nG. Lisboa, S. Luz, J. Malley, (eds.)]. Cambridge University Press, Cambridge, UK and New York, NY, USA. \\r\\ndoi: 10.1017/9781009157926.013\\n This chapter should be cited as: \\n\\n11611161' metadata={'chunk_type': 'text', 'document_id': 'document9', 'document_number': 9.0, 'element_id': 'N/A', 'figure_code': 'N/A', 'file_size': 'N/A', 'image_path': 'N/A', 'n_pages': 2258.0, 'name': 'Full Report. In: Climate Change 2022: Mitigation of Climate Change. Contribution of the WGIII to the AR6 of the IPCC', 'num_characters': 724.0, 'num_tokens': 251.0, 'num_tokens_approx': 264.0, 'num_words': 198.0, 'page_number': 1174, 'release_date': 2022.0, 'report_type': 'Full Report', 'section_header': 'This chapter should be cited as:', 'short_name': 'IPCC AR6 WGIII FR', 'source': 'IPCC', 'toc_level0': 'Appendix 10.3: Line of Sight for Feasibility\\xa0Assessment', 'toc_level1': 'N/A', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://www.ipcc.ch/report/ar6/wg3/downloads/report/IPCC_AR6_WGIII_FullReport.pdf', 'similarity_score': 0.619030833, 'content': 'This chapter should be cited as:\\nBashmakov, I.A., L.J. Nilsson, A. Acquaye, C. Bataille, J.M. Cullen, S. de la Rue du Can, M. Fischedick, Y. Geng, K. Tanaka, \\r\\n2022: Industry. In IPCC, 2022: Climate Change 2022: Mitigation of Climate Change. Contribution of Working Group III \\r\\nto the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [P.R. Shukla, J. Skea, R. Slade, \\r\\nA. Al Khourdajie, R. van Diemen, D. McCollum, M. Pathak, S. Some, P. Vyas, R. Fradera, M. Belkacemi, A. Hasija, \\r\\nG. Lisboa, S. Luz, J. Malley, (eds.)]. Cambridge University Press, Cambridge, UK and New York, NY, USA. \\r\\ndoi: 10.1017/9781009157926.013\\n This chapter should be cited as: \\n\\n11611161', 'rerank_score': 0.20149879, 'query_used_for_retrieval': 'How is the manga One Piece cited in the IPCC', 'sources_used': ['IPCC']}\n", "\n", "page_content='This Annex should be cited as:\\nIPCC, 2022: Annex II: Glossary [Moller, V., R. van Diemen, J.B.R. Matthews, C. Mendez, S. Semenov, J.S. Fuglestvedt, \\r\\nA. Reisinger (eds.)]. In: Climate Change 2022: Impacts, Adaptation and Vulnerability. Contribution of Working Group II to \\r\\nthe Sixth Assessment Report of the Intergovernmental Panel on Climate Change [H.-O. Portner, D.C. Roberts, M. Tignor, \\r\\nE.S. Poloczanska, K. Mintenbeck, A. Alegria, M. Craig, S. Langsdorf, S. Loschke, V. Moller, A. Okem, B. Rama (eds.)]. \\r\\nCambridge University Press, Cambridge, UK and New York, NY, USA, pp. 2897-2930, doi:10.1017/9781009325844.029.\\n This Annex should be cited as: \\n\\n28972897' 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': 702.0, 'num_tokens': 239.0, 'num_tokens_approx': 250.0, 'num_words': 188.0, 'page_number': 2909, 'release_date': 2022.0, 'report_type': 'Full Report', 'section_header': 'This Annex should be cited as:', 'short_name': 'IPCC AR6 WGII FR', 'source': 'IPCC', 'toc_level0': 'Annexes', 'toc_level1': 'Annex II Glossary', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://report.ipcc.ch/ar6/wg2/IPCC_AR6_WGII_FullReport.pdf', 'similarity_score': 0.612448752, 'content': 'This Annex should be cited as:\\nIPCC, 2022: Annex II: Glossary [Moller, V., R. van Diemen, J.B.R. Matthews, C. Mendez, S. Semenov, J.S. Fuglestvedt, \\r\\nA. Reisinger (eds.)]. In: Climate Change 2022: Impacts, Adaptation and Vulnerability. Contribution of Working Group II to \\r\\nthe Sixth Assessment Report of the Intergovernmental Panel on Climate Change [H.-O. Portner, D.C. Roberts, M. Tignor, \\r\\nE.S. Poloczanska, K. Mintenbeck, A. Alegria, M. Craig, S. Langsdorf, S. Loschke, V. Moller, A. Okem, B. Rama (eds.)]. \\r\\nCambridge University Press, Cambridge, UK and New York, NY, USA, pp. 2897-2930, doi:10.1017/9781009325844.029.\\n This Annex should be cited as: \\n\\n28972897', 'rerank_score': 0.16000335, 'query_used_for_retrieval': 'How is the manga One Piece cited in the IPCC', 'sources_used': ['IPCC']}\n", "\n", "page_content='Annex IX: Contributors \\r\\nto the IPCC WGI Sixth \\r\\nAssessment Report\\nThis annex should be cited as:\\nIPCC, 2021: Annex IX: Contributors to the IPCC Working Group I Sixth Assessment Report. In Climate Change 2021: The \\r\\nPhysical Science Basis. Contribution of Working Group I to the Sixth Assessment Report of the Intergovernmental Panel \\r\\non Climate Change [Masson-Delmotte, V., P. Zhai, A. Pirani, S.L. Connors, C. Pean, S. Berger, N. Caud, Y. Chen, L. Goldfarb, \\r\\nM.I. Gomis, M. Huang, K. Leitzell, E. Lonnoy, J.B.R. Matthews, T.K. Maycock, T. Waterfield, O. Yelekci, R. Yu, and B. Zhou \\r\\n(eds.)]. Cambridge University Press, Cambridge, United Kingdom and New York, NY, USA, pp. 2267-2286.\\n This annex should be cited as: \\n\\n22672267' metadata={'chunk_type': 'text', 'document_id': 'document2', 'document_number': 2.0, 'element_id': 'N/A', 'figure_code': 'N/A', 'file_size': 'N/A', 'image_path': 'N/A', 'n_pages': 2409.0, 'name': 'Full Report. In: Climate Change 2021: The Physical Science Basis. Contribution of the WGI to the AR6 of the IPCC', 'num_characters': 766.0, 'num_tokens': 233.0, 'num_tokens_approx': 260.0, 'num_words': 195.0, 'page_number': 2284, 'release_date': 2021.0, 'report_type': 'Full Report', 'section_header': 'This annex should be cited as:', 'short_name': 'IPCC AR6 WGI FR', 'source': 'IPCC', 'toc_level0': 'Annex IX: Contributors', 'toc_level1': 'N/A', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://report.ipcc.ch/ar6/wg1/IPCC_AR6_WGI_FullReport.pdf', 'similarity_score': 0.652021468, 'content': 'Annex IX: Contributors \\r\\nto the IPCC WGI Sixth \\r\\nAssessment Report\\nThis annex should be cited as:\\nIPCC, 2021: Annex IX: Contributors to the IPCC Working Group I Sixth Assessment Report. In Climate Change 2021: The \\r\\nPhysical Science Basis. Contribution of Working Group I to the Sixth Assessment Report of the Intergovernmental Panel \\r\\non Climate Change [Masson-Delmotte, V., P. Zhai, A. Pirani, S.L. Connors, C. Pean, S. Berger, N. Caud, Y. Chen, L. Goldfarb, \\r\\nM.I. Gomis, M. Huang, K. Leitzell, E. Lonnoy, J.B.R. Matthews, T.K. Maycock, T. Waterfield, O. Yelekci, R. Yu, and B. Zhou \\r\\n(eds.)]. Cambridge University Press, Cambridge, United Kingdom and New York, NY, USA, pp. 2267-2286.\\n This annex should be cited as: \\n\\n22672267', 'rerank_score': 0.1522842, 'query_used_for_retrieval': 'How is the manga One Piece cited in the IPCC', 'sources_used': ['IPCC']}\n", "\n", "page_content='This Summary for Policymakers should be cited as:\\nIPCC, 2019: Summary for Policymakers. In: IPCC Special Report on the Ocean and Cryosphere in a Changing Climate \\r\\n[H.-O. Portner, D.C. Roberts, V. Masson-Delmotte, P. Zhai, M. Tignor, E. Poloczanska, K. Mintenbeck, A. Alegria, \\r\\nM. Nicolai, A. Okem, J. Petzold, B. Rama, N.M. Weyer (eds.)]. Cambridge University Press, Cambridge, UK and \\r\\nNew York, NY, USA, pp. 3-35. https://doi.org/10.1017/9781009157964.001. \\n This Summary for Policymakers should be cited as: ' metadata={'chunk_type': 'text', 'document_id': 'document13', 'document_number': 13.0, 'element_id': 'N/A', 'figure_code': 'N/A', 'file_size': 'N/A', 'image_path': 'N/A', 'n_pages': 36.0, 'name': 'Summary for Policymakers. In: IPCC Special Report on the Ocean and Cryosphere in a Changing Climate', 'num_characters': 548.0, 'num_tokens': 183.0, 'num_tokens_approx': 197.0, 'num_words': 148.0, 'page_number': 3, 'release_date': 2019.0, 'report_type': 'SPM', 'section_header': 'This Summary for Policymakers should be cited as:', 'short_name': 'IPCC SR OC SPM', 'source': 'IPCC', 'toc_level0': 'N/A', 'toc_level1': 'N/A', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://www.ipcc.ch/site/assets/uploads/sites/3/2022/03/01_SROCC_SPM_FINAL.pdf', 'similarity_score': 0.624829769, 'content': 'This Summary for Policymakers should be cited as:\\nIPCC, 2019: Summary for Policymakers. In: IPCC Special Report on the Ocean and Cryosphere in a Changing Climate \\r\\n[H.-O. Portner, D.C. Roberts, V. Masson-Delmotte, P. Zhai, M. Tignor, E. Poloczanska, K. Mintenbeck, A. Alegria, \\r\\nM. Nicolai, A. Okem, J. Petzold, B. Rama, N.M. Weyer (eds.)]. Cambridge University Press, Cambridge, UK and \\r\\nNew York, NY, USA, pp. 3-35. https://doi.org/10.1017/9781009157964.001. \\n This Summary for Policymakers should be cited as: ', 'rerank_score': 0.14817041, 'query_used_for_retrieval': 'How is the manga One Piece cited in the IPCC', 'sources_used': ['IPCC']}\n", "\n", "page_content='Annex VIII: Acronyms\\nThis annex should be cited as:\\nIPCC, 2021: Annex VIII: Acronyms. In Climate Change 2021: The Physical Science Basis. Contribution of Working \\r\\nGroup I to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [Masson-Delmotte, \\r\\nV., P. Zhai, A. Pirani, S.L. Connors, C. Pean, S. Berger, N. Caud, Y. Chen, L. Goldfarb, M.I. Gomis, M. Huang, K. \\r\\nLeitzell, E. Lonnoy, J.B.R. Matthews, T.K. Maycock, T. Waterfield, O. Yelekci, R. Yu, and B. Zhou (eds.)]. Cambridge \\r\\nUniversity Press, Cambridge, United Kingdom and New York, NY, USA, pp. 2257-2266.\\n This annex should be cited as: \\n\\n22572257' metadata={'chunk_type': 'text', 'document_id': 'document2', 'document_number': 2.0, 'element_id': 'N/A', 'figure_code': 'N/A', 'file_size': 'N/A', 'image_path': 'N/A', 'n_pages': 2409.0, 'name': 'Full Report. In: Climate Change 2021: The Physical Science Basis. Contribution of the WGI to the AR6 of the IPCC', 'num_characters': 667.0, 'num_tokens': 218.0, 'num_tokens_approx': 238.0, 'num_words': 179.0, 'page_number': 2274, 'release_date': 2021.0, 'report_type': 'Full Report', 'section_header': 'land-use-land-use-change-and-forestry-lulucf/reporting-and-accounting\\x02of-lulucf-activities-under-the-kyoto-protocol.', 'short_name': 'IPCC AR6 WGI FR', 'source': 'IPCC', 'toc_level0': 'Annex VIII: Acronyms', 'toc_level1': 'N/A', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://report.ipcc.ch/ar6/wg1/IPCC_AR6_WGI_FullReport.pdf', 'similarity_score': 0.595291555, 'content': 'Annex VIII: Acronyms\\nThis annex should be cited as:\\nIPCC, 2021: Annex VIII: Acronyms. In Climate Change 2021: The Physical Science Basis. Contribution of Working \\r\\nGroup I to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [Masson-Delmotte, \\r\\nV., P. Zhai, A. Pirani, S.L. Connors, C. Pean, S. Berger, N. Caud, Y. Chen, L. Goldfarb, M.I. Gomis, M. Huang, K. \\r\\nLeitzell, E. Lonnoy, J.B.R. Matthews, T.K. Maycock, T. Waterfield, O. Yelekci, R. Yu, and B. Zhou (eds.)]. Cambridge \\r\\nUniversity Press, Cambridge, United Kingdom and New York, NY, USA, pp. 2257-2266.\\n This annex should be cited as: \\n\\n22572257', 'rerank_score': 0.14743239, 'query_used_for_retrieval': 'How is the manga One Piece cited in the IPCC', 'sources_used': ['IPCC']}\n", "\n", "page_content='This annex should be cited as:\\nIPCC, 2022: Annex I: Global to Regional Atlas [Portner, H.-O., A. Alegria, V. Moller, E.S. Poloczanska, K. Mintenbeck, \\r\\nS. Gotze (eds.)]. In: Climate Change 2022: Impacts, Adaptation and Vulnerability. Contribution of Working Group II to \\r\\nthe Sixth Assessment Report of the Intergovernmental Panel on Climate Change [H.-O. Portner, D.C. Roberts, M. Tignor, \\r\\nE.S. Poloczanska, K. Mintenbeck, A. Alegria, M. Craig, S. Langsdorf, S. Loschke, V. Moller, A. Okem, B. Rama (eds.)]. \\r\\nCambridge University Press, Cambridge, UK and New York, NY, USA, pp. 2811-2896, doi:10.1017/9781009325844.028.\\n This annex should be cited as: \\n\\n28112811' 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': 700.0, 'num_tokens': 235.0, 'num_tokens_approx': 245.0, 'num_words': 184.0, 'page_number': 2823, 'release_date': 2022.0, 'report_type': 'Full Report', 'section_header': 'This annex should be cited as:', 'short_name': 'IPCC AR6 WGII FR', 'source': 'IPCC', 'toc_level0': 'Annexes', 'toc_level1': 'Annex I Global to Regional Atlas', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://report.ipcc.ch/ar6/wg2/IPCC_AR6_WGII_FullReport.pdf', 'similarity_score': 0.626139402, 'content': 'This annex should be cited as:\\nIPCC, 2022: Annex I: Global to Regional Atlas [Portner, H.-O., A. Alegria, V. Moller, E.S. Poloczanska, K. Mintenbeck, \\r\\nS. Gotze (eds.)]. In: Climate Change 2022: Impacts, Adaptation and Vulnerability. Contribution of Working Group II to \\r\\nthe Sixth Assessment Report of the Intergovernmental Panel on Climate Change [H.-O. Portner, D.C. Roberts, M. Tignor, \\r\\nE.S. Poloczanska, K. Mintenbeck, A. Alegria, M. Craig, S. Langsdorf, S. Loschke, V. Moller, A. Okem, B. Rama (eds.)]. \\r\\nCambridge University Press, Cambridge, UK and New York, NY, USA, pp. 2811-2896, doi:10.1017/9781009325844.028.\\n This annex should be cited as: \\n\\n28112811', 'rerank_score': 0.1468197, 'query_used_for_retrieval': 'How is the manga One Piece cited in the IPCC', 'sources_used': ['IPCC']}\n", "\n", "page_content='This chapter should be cited as:\\nIPCC, 2022: Annex I: Glossary [van Diemen, R., J.B.R. Matthews, V. Moller, J.S. Fuglestvedt, V. Masson-Delmotte, \\r\\nC. Mendez, A. Reisinger, S. Semenov (eds)]. In IPCC, 2022: Climate Change 2022: Mitigation of Climate Change. \\r\\nContribution of Working Group III to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change\\r\\n[P.R. Shukla, J. Skea, R. Slade, A. Al Khourdajie, R. van Diemen, D. McCollum, M. Pathak, S. Some, P. Vyas, R. Fradera, \\r\\nM. Belkacemi, A. Hasija, G. Lisboa, S. Luz, J. Malley, (eds.)]. Cambridge University Press, Cambridge, UK and New York, \\r\\nNY, USA. doi: 10.1017/9781009157926.020' metadata={'chunk_type': 'text', 'document_id': 'document9', 'document_number': 9.0, 'element_id': 'N/A', 'figure_code': 'N/A', 'file_size': 'N/A', 'image_path': 'N/A', 'n_pages': 2258.0, 'name': 'Full Report. In: Climate Change 2022: Mitigation of Climate Change. Contribution of the WGIII to the AR6 of the IPCC', 'num_characters': 659.0, 'num_tokens': 235.0, 'num_tokens_approx': 242.0, 'num_words': 182.0, 'page_number': 1806, 'release_date': 2022.0, 'report_type': 'Full Report', 'section_header': 'This chapter should be cited as:', 'short_name': 'IPCC AR6 WGIII FR', 'source': 'IPCC', 'toc_level0': '_Hlk111724995', 'toc_level1': 'N/A', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://www.ipcc.ch/report/ar6/wg3/downloads/report/IPCC_AR6_WGIII_FullReport.pdf', 'similarity_score': 0.608979702, 'content': 'This chapter should be cited as:\\nIPCC, 2022: Annex I: Glossary [van Diemen, R., J.B.R. Matthews, V. Moller, J.S. Fuglestvedt, V. Masson-Delmotte, \\r\\nC. Mendez, A. Reisinger, S. Semenov (eds)]. In IPCC, 2022: Climate Change 2022: Mitigation of Climate Change. \\r\\nContribution of Working Group III to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change\\r\\n[P.R. Shukla, J. Skea, R. Slade, A. Al Khourdajie, R. van Diemen, D. McCollum, M. Pathak, S. Some, P. Vyas, R. Fradera, \\r\\nM. Belkacemi, A. Hasija, G. Lisboa, S. Luz, J. Malley, (eds.)]. Cambridge University Press, Cambridge, UK and New York, \\r\\nNY, USA. doi: 10.1017/9781009157926.020', 'rerank_score': 0.14330755, 'query_used_for_retrieval': 'How is the manga One Piece cited in the IPCC', 'sources_used': ['IPCC']}\n", "\n", "page_content='This annex should be cited as:\\nIPCC, 2022: Annex III: Acronyms. In: Climate Change 2022: Impacts, Adaptation and Vulnerability. Contribution of \\r\\nWorking Group II to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [H.-O. Portner, \\r\\nD.C. Roberts, M. Tignor, E.S. Poloczanska, K. Mintenbeck, A. Alegria, M. Craig, S. Langsdorf, S. Loschke, V. Moller, \\r\\nA. Okem, B. Rama (eds.)]. Cambridge University Press, Cambridge, UK and New York, NY, USA, pp. 2931-2938, \\r\\ndoi:10.1017/9781009325844.030. \\n This annex should be cited as: \\n\\n29312931' 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': 597.0, 'num_tokens': 194.0, 'num_tokens_approx': 201.0, 'num_words': 151.0, 'page_number': 2943, 'release_date': 2022.0, 'report_type': 'Full Report', 'section_header': 'This annex should be cited as:', 'short_name': 'IPCC AR6 WGII FR', 'source': 'IPCC', 'toc_level0': 'Annexes', 'toc_level1': 'Annex III Acronyms', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://report.ipcc.ch/ar6/wg2/IPCC_AR6_WGII_FullReport.pdf', 'similarity_score': 0.598234832, 'content': 'This annex should be cited as:\\nIPCC, 2022: Annex III: Acronyms. In: Climate Change 2022: Impacts, Adaptation and Vulnerability. Contribution of \\r\\nWorking Group II to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [H.-O. Portner, \\r\\nD.C. Roberts, M. Tignor, E.S. Poloczanska, K. Mintenbeck, A. Alegria, M. Craig, S. Langsdorf, S. Loschke, V. Moller, \\r\\nA. Okem, B. Rama (eds.)]. Cambridge University Press, Cambridge, UK and New York, NY, USA, pp. 2931-2938, \\r\\ndoi:10.1017/9781009325844.030. \\n This annex should be cited as: \\n\\n29312931', 'rerank_score': 0.13432105, 'query_used_for_retrieval': 'How is the manga One Piece cited in the IPCC', 'sources_used': ['IPCC']}\n", "\n", "page_content='This annex should be cited as:\\nIPCC, 2021: Annex V: Monsoons [Cherchi, A., A. Turner (eds.)]. In Climate Change 2021: The Physical Science Basis. \\r\\nContribution of Working Group I to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change\\r\\n[Masson-Delmotte, V., P. Zhai, A. Pirani, S.L. Connors, C. Pean, S. Berger, N. Caud, Y. Chen, L. Goldfarb, M.I. Gomis, M. Huang, \\r\\nK. Leitzell, E. Lonnoy, J.B.R. Matthews, T.K. Maycock, T. Waterfield, O. Yelekci, R. Yu, and B. Zhou (eds.)]. Cambridge University \\r\\nPress, Cambridge, United Kingdom and New York, NY, USA, pp. 2193-2204, doi:10.1017/9781009157896.019.\\n This annex should be cited as: \\n\\n21932193' metadata={'chunk_type': 'text', 'document_id': 'document2', 'document_number': 2.0, 'element_id': 'N/A', 'figure_code': 'N/A', 'file_size': 'N/A', 'image_path': 'N/A', 'n_pages': 2409.0, 'name': 'Full Report. In: Climate Change 2021: The Physical Science Basis. Contribution of the WGI to the AR6 of the IPCC', 'num_characters': 704.0, 'num_tokens': 238.0, 'num_tokens_approx': 260.0, 'num_words': 195.0, 'page_number': 2210, 'release_date': 2021.0, 'report_type': 'Full Report', 'section_header': 'This annex should be cited as:', 'short_name': 'IPCC AR6 WGI FR', 'source': 'IPCC', 'toc_level0': 'Annex V: Monsoons', 'toc_level1': 'N/A', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://report.ipcc.ch/ar6/wg1/IPCC_AR6_WGI_FullReport.pdf', 'similarity_score': 0.621438146, 'content': 'This annex should be cited as:\\nIPCC, 2021: Annex V: Monsoons [Cherchi, A., A. Turner (eds.)]. In Climate Change 2021: The Physical Science Basis. \\r\\nContribution of Working Group I to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change\\r\\n[Masson-Delmotte, V., P. Zhai, A. Pirani, S.L. Connors, C. Pean, S. Berger, N. Caud, Y. Chen, L. Goldfarb, M.I. Gomis, M. Huang, \\r\\nK. Leitzell, E. Lonnoy, J.B.R. Matthews, T.K. Maycock, T. Waterfield, O. Yelekci, R. Yu, and B. Zhou (eds.)]. Cambridge University \\r\\nPress, Cambridge, United Kingdom and New York, NY, USA, pp. 2193-2204, doi:10.1017/9781009157896.019.\\n This annex should be cited as: \\n\\n21932193', 'rerank_score': 0.12885363, 'query_used_for_retrieval': 'How is the manga One Piece cited in the IPCC', 'sources_used': ['IPCC']}\n", "\n", "page_content='This annex should be cited as:\\nIPCC, 2019: Annex I: Glossary [Weyer, N.M. (ed.)]. In: IPCC Special Report on the Ocean and Cryosphere in a Changing \\r\\nClimate [H.-O. Portner, D.C. Roberts, V. Masson-Delmotte, P. Zhai, M. Tignor, E. Poloczanska, K. Mintenbeck, A. Alegria, M. \\r\\nNicolai, A. Okem, J. Petzold, B. Rama, N.M. Weyer (eds.)]. Cambridge University Press, Cambridge, UK and New York, NY, \\r\\nUSA, pp. 677-702. https://doi.org/10.1017/9781009157964.010.\\n This annex should be cited as: \\n\\n677677' metadata={'chunk_type': 'text', 'document_id': 'document22', 'document_number': 22.0, 'element_id': 'N/A', 'figure_code': 'N/A', 'file_size': 'N/A', 'image_path': 'N/A', 'n_pages': 28.0, 'name': 'Annex I: Glossary In: IPCC Special Report on the Ocean and Cryosphere in a Changing Climate', 'num_characters': 533.0, 'num_tokens': 188.0, 'num_tokens_approx': 206.0, 'num_words': 155.0, 'page_number': 3, 'release_date': 2019.0, 'report_type': 'Special Report', 'section_header': 'This annex should be cited as:', 'short_name': 'IPCC SR OC A1 G', 'source': 'IPCC', 'toc_level0': 'N/A', 'toc_level1': 'N/A', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://www.ipcc.ch/site/assets/uploads/sites/3/2022/03/10_SROCC_AnnexI-Glossary_FINAL.pdf', 'similarity_score': 0.644453526, 'content': 'This annex should be cited as:\\nIPCC, 2019: Annex I: Glossary [Weyer, N.M. (ed.)]. In: IPCC Special Report on the Ocean and Cryosphere in a Changing \\r\\nClimate [H.-O. Portner, D.C. Roberts, V. Masson-Delmotte, P. Zhai, M. Tignor, E. Poloczanska, K. Mintenbeck, A. Alegria, M. \\r\\nNicolai, A. Okem, J. Petzold, B. Rama, N.M. Weyer (eds.)]. Cambridge University Press, Cambridge, UK and New York, NY, \\r\\nUSA, pp. 677-702. https://doi.org/10.1017/9781009157964.010.\\n This annex should be cited as: \\n\\n677677', 'rerank_score': 0.12517229, 'query_used_for_retrieval': 'How is the manga One Piece cited in the IPCC', 'sources_used': ['IPCC']}\n", "\n", "page_content='This index should be cited as:\\nIPCC, 2022: Index. In: Climate Change 2022: Impacts, Adaptation and Vulnerability. Contribution of Working Group II to \\r\\nthe Sixth Assessment Report of the Intergovernmental Panel on Climate Change [H.-O. Portner, D.C. Roberts, M. Tignor, \\r\\nE.S. Poloczanska, K. Mintenbeck, A. Alegria, M. Craig, S. Langsdorf, S. Loschke, V. Moller, A. Okem, B. Rama (eds.)]. \\r\\nCambridge University Press, Cambridge, UK and New York, NY, USA, pp. 3005-3056, doi:10.1017/9781009325844.033. \\n This index should be cited as: \\n\\n30053005' 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': 581.0, 'num_tokens': 189.0, 'num_tokens_approx': 197.0, 'num_words': 148.0, 'page_number': 3017, 'release_date': 2022.0, 'report_type': 'Full Report', 'section_header': 'This index should be cited as:', 'short_name': 'IPCC AR6 WGII FR', 'source': 'IPCC', 'toc_level0': 'Index', 'toc_level1': 'N/A', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://report.ipcc.ch/ar6/wg2/IPCC_AR6_WGII_FullReport.pdf', 'similarity_score': 0.616092443, 'content': 'This index should be cited as:\\nIPCC, 2022: Index. In: Climate Change 2022: Impacts, Adaptation and Vulnerability. Contribution of Working Group II to \\r\\nthe Sixth Assessment Report of the Intergovernmental Panel on Climate Change [H.-O. Portner, D.C. Roberts, M. Tignor, \\r\\nE.S. Poloczanska, K. Mintenbeck, A. Alegria, M. Craig, S. Langsdorf, S. Loschke, V. Moller, A. Okem, B. Rama (eds.)]. \\r\\nCambridge University Press, Cambridge, UK and New York, NY, USA, pp. 3005-3056, doi:10.1017/9781009325844.033. \\n This index should be cited as: \\n\\n30053005', 'rerank_score': 0.12262824, 'query_used_for_retrieval': 'How is the manga One Piece cited in the IPCC', 'sources_used': ['IPCC']}\n", "\n", "page_content='This chapter should be cited as:\\nIPCC, 2022: Index. In IPCC, 2022: Climate Change 2022: Mitigation of Climate Change. Contribution of Working \\r\\nGroup III to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [P.R. Shukla, J. Skea, \\r\\nR. Slade, A. Al Khourdajie, R. van Diemen, D. McCollum, M. Pathak, S. Some, P. Vyas, R. Fradera, M. Belkacemi, \\r\\nA. Hasija, G. Lisboa, S. Luz, J. Malley, (eds.)]. Cambridge University Press, Cambridge, UK and New York, NY, USA. \\r\\ndoi: 10.1017/9781009157926.026\\n This chapter should be cited as: \\n\\n19791979' metadata={'chunk_type': 'text', 'document_id': 'document9', 'document_number': 9.0, 'element_id': 'N/A', 'figure_code': 'N/A', 'file_size': 'N/A', 'image_path': 'N/A', 'n_pages': 2258.0, 'name': 'Full Report. In: Climate Change 2022: Mitigation of Climate Change. Contribution of the WGIII to the AR6 of the IPCC', 'num_characters': 602.0, 'num_tokens': 199.0, 'num_tokens_approx': 205.0, 'num_words': 154.0, 'page_number': 1992, 'release_date': 2022.0, 'report_type': 'Full Report', 'section_header': 'This chapter should be cited as:', 'short_name': 'IPCC AR6 WGIII FR', 'source': 'IPCC', 'toc_level0': 'References', 'toc_level1': 'N/A', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://www.ipcc.ch/report/ar6/wg3/downloads/report/IPCC_AR6_WGIII_FullReport.pdf', 'similarity_score': 0.614085197, 'content': 'This chapter should be cited as:\\nIPCC, 2022: Index. In IPCC, 2022: Climate Change 2022: Mitigation of Climate Change. Contribution of Working \\r\\nGroup III to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [P.R. Shukla, J. Skea, \\r\\nR. Slade, A. Al Khourdajie, R. van Diemen, D. McCollum, M. Pathak, S. Some, P. Vyas, R. Fradera, M. Belkacemi, \\r\\nA. Hasija, G. Lisboa, S. Luz, J. Malley, (eds.)]. Cambridge University Press, Cambridge, UK and New York, NY, USA. \\r\\ndoi: 10.1017/9781009157926.026\\n This chapter should be cited as: \\n\\n19791979', 'rerank_score': 0.12241826, 'query_used_for_retrieval': 'How is the manga One Piece cited in the IPCC', 'sources_used': ['IPCC']}\n", "\n", "page_content='This chapter should be cited as:\\nGrubb, M., C. Okereke, J. Arima, V. Bosetti, Y. Chen, J. Edmonds, S. Gupta, A. Koberle, S. Kverndokk, A. Malik, L. Sulistiawati, \\r\\n2022: Introduction and Framing. In IPCC, 2022: Climate Change 2022: Mitigation of Climate Change. Contribution of \\r\\nWorking Group III to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [P.R. Shukla, \\r\\nJ. Skea, R. Slade, A. Al Khourdajie, R. van Diemen, D. McCollum, M. Pathak, S. Some, P. Vyas, R. Fradera, M. Belkacemi, \\r\\nA. Hasija, G. Lisboa, S. Luz, J. Malley, (eds.)]. Cambridge University Press, Cambridge, UK and New York, NY, USA. \\r\\ndoi: 10.1017/9781009157926.003\\n This chapter should be cited as: \\n\\n151151' metadata={'chunk_type': 'text', 'document_id': 'document9', 'document_number': 9.0, 'element_id': 'N/A', 'figure_code': 'N/A', 'file_size': 'N/A', 'image_path': 'N/A', 'n_pages': 2258.0, 'name': 'Full Report. In: Climate Change 2022: Mitigation of Climate Change. Contribution of the WGIII to the AR6 of the IPCC', 'num_characters': 741.0, 'num_tokens': 254.0, 'num_tokens_approx': 264.0, 'num_words': 198.0, 'page_number': 164, 'release_date': 2022.0, 'report_type': 'Full Report', 'section_header': 'This chapter should be cited as:', 'short_name': 'IPCC AR6 WGIII FR', 'source': 'IPCC', 'toc_level0': 'TS.7 Mitigation in the Context of\\xa0Sustainable\\xa0Development', 'toc_level1': 'Box TS.15 | A Harmonised Approach to Assessing Feasibility', 'toc_level2': 'N/A', 'toc_level3': 'N/A', 'url': 'https://www.ipcc.ch/report/ar6/wg3/downloads/report/IPCC_AR6_WGIII_FullReport.pdf', 'similarity_score': 0.603973, 'content': 'This chapter should be cited as:\\nGrubb, M., C. Okereke, J. Arima, V. Bosetti, Y. Chen, J. Edmonds, S. Gupta, A. Koberle, S. Kverndokk, A. Malik, L. Sulistiawati, \\r\\n2022: Introduction and Framing. In IPCC, 2022: Climate Change 2022: Mitigation of Climate Change. Contribution of \\r\\nWorking Group III to the Sixth Assessment Report of the Intergovernmental Panel on Climate Change [P.R. Shukla, \\r\\nJ. Skea, R. Slade, A. Al Khourdajie, R. van Diemen, D. McCollum, M. Pathak, S. Some, P. Vyas, R. Fradera, M. Belkacemi, \\r\\nA. Hasija, G. Lisboa, S. Luz, J. Malley, (eds.)]. Cambridge University Press, Cambridge, UK and New York, NY, USA. \\r\\ndoi: 10.1017/9781009157926.003\\n This chapter should be cited as: \\n\\n151151', 'rerank_score': 0.12210386, 'query_used_for_retrieval': 'How is the manga One Piece cited in the IPCC', 'sources_used': ['IPCC']}\n", "\n" ] } ], "source": [ "for doc in output[\"documents\"]:\n", " print(doc)\n", " print(\"\")" ] }, { "cell_type": "markdown", "id": "5ef9b1be-d913-4dbd-ad67-b87c4e948d11", "metadata": {}, "source": [ "## Create the RAG" ] }, { "cell_type": "code", "execution_count": null, "id": "b4638a7a-08c4-4259-a2de-77d1eb45a47c", "metadata": {}, "outputs": [], "source": [ "\n", "# async def answer_ai_impact(state,config):\n", "# answer = await ai_impact_chain.ainvoke({\"question\":state[\"user_input\"]},config)\n", "# return {\"answer\":answer}\n", " \n", "async def answer_rag(state):\n", " \n", " # Get the docs\n", " docs = state[\"documents\"]\n", " \n", " # Compute the trust average score\n", " rerank_scores = np.array([doc.metadata[\"rerank_score\"] for doc in docs])\n", " trust_score = np.mean(rerank_scores)\n", " \n", " # \n", " answer = \"\\n\".join([x[\"question\"] for x in state[\"questions\"]])\n", " return {\"answer\":answer}" ] }, { "cell_type": "markdown", "id": "827873ee-f74d-4ed6-a4f8-fc8a3ef6aea8", "metadata": { "tags": [] }, "source": [ "## Test the graph" ] }, { "cell_type": "code", "execution_count": 105, "id": "a24b8dd3-54b7-4209-a532-c3d6dfd1530d", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'event': 'on_chain_start', 'run_id': '54411858-94b4-423d-933e-45e86a7d6c4b', 'name': 'LangGraph', 'tags': [], 'metadata': {}, 'data': {'input': {'user_input': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\", 'sources': ['auto']}}}\n", "\n", "{'event': 'on_chain_start', 'name': '__start__', 'run_id': '96e10c35-0088-454b-928c-8eda40e544a9', 'tags': ['graph:step:0', 'langsmith:hidden'], 'metadata': {}, 'data': {'input': {'user_input': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\", 'sources': ['auto']}}}\n", "\n", "{'event': 'on_chain_end', 'name': '__start__', 'run_id': '96e10c35-0088-454b-928c-8eda40e544a9', 'tags': ['graph:step:0', 'langsmith:hidden'], 'metadata': {}, 'data': {'input': {'user_input': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\", 'sources': ['auto']}, 'output': {'user_input': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\", 'sources': ['auto']}}}\n", "\n", "{'event': 'on_chain_start', 'name': 'route_input_message', 'run_id': 'c5328959-b052-4920-a538-fb9a9f482ccb', 'tags': ['graph:step:1'], 'metadata': {}, 'data': {}}\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": [ "CATEGORIZE {'intent': 'search', 'language': 'English'}\n", "{'event': 'on_chain_start', 'name': 'ChannelWrite', 'run_id': '09cda419-7333-4bf6-aeb7-385ee456f1d9', 'tags': ['seq:step:2', 'langsmith:hidden'], 'metadata': {}, 'data': {'input': {'intent': 'search', 'language': 'English'}}}\n", "\n", "{'event': 'on_chain_end', 'name': 'ChannelWrite', 'run_id': '09cda419-7333-4bf6-aeb7-385ee456f1d9', 'tags': ['seq:step:2', 'langsmith:hidden'], 'metadata': {}, 'data': {'input': {'intent': 'search', 'language': 'English'}, 'output': {'intent': 'search', 'language': 'English'}}}\n", "\n", "{'event': 'on_chain_start', 'name': 'route_entry_point', 'run_id': '478ecc36-08b2-4732-8e70-6efc0fcfc22f', 'tags': ['seq:step:3'], 'metadata': {}, 'data': {'input': {'user_input': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\", 'language': 'English', 'intent': 'search'}}}\n", "\n", "{'event': 'on_chain_end', 'name': 'route_entry_point', 'run_id': '478ecc36-08b2-4732-8e70-6efc0fcfc22f', 'tags': ['seq:step:3'], 'metadata': {}, 'data': {'input': {'user_input': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\", 'language': 'English', 'intent': 'search'}, 'output': 'transform_query'}}\n", "\n", "{'event': 'on_chain_start', 'name': 'ChannelWrite', 'run_id': '32752ceb-d15d-4ae3-aaf6-639f5564f559', 'tags': ['seq:step:3', 'langsmith:hidden'], 'metadata': {}, 'data': {'input': {'intent': 'search', 'language': 'English'}}}\n", "\n", "{'event': 'on_chain_end', 'name': 'ChannelWrite', 'run_id': '32752ceb-d15d-4ae3-aaf6-639f5564f559', 'tags': ['seq:step:3', 'langsmith:hidden'], 'metadata': {}, 'data': {'input': {'intent': 'search', 'language': 'English'}, 'output': {'intent': 'search', 'language': 'English'}}}\n", "\n", "{'event': 'on_chain_stream', 'name': 'route_input_message', 'run_id': 'c5328959-b052-4920-a538-fb9a9f482ccb', 'tags': ['graph:step:1'], 'metadata': {}, 'data': {'chunk': {'intent': 'search', 'language': 'English'}}}\n", "\n", "{'event': 'on_chain_end', 'name': 'route_input_message', 'run_id': 'c5328959-b052-4920-a538-fb9a9f482ccb', 'tags': ['graph:step:1'], 'metadata': {}, 'data': {'input': {'user_input': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\", 'language': None, 'intent': None, 'query': None, 'questions': None, 'answer': None, 'audience': None, 'sources_input': None}, 'output': {'intent': 'search', 'language': 'English'}}}\n", "\n", "{'event': 'on_chain_stream', 'run_id': '54411858-94b4-423d-933e-45e86a7d6c4b', 'tags': [], 'metadata': {}, 'name': 'LangGraph', 'data': {'chunk': {'route_input_message': {'language': 'English', 'intent': 'search'}}}}\n", "\n", "{'event': 'on_chain_start', 'name': 'transform_query', 'run_id': 'debea710-be86-44af-a6ef-094ea95d5a3d', 'tags': ['graph:step:2'], 'metadata': {}, 'data': {}}\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", "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": [ "{'event': 'on_chain_start', 'name': 'ChannelWrite', 'run_id': 'f0d11fc9-cdc0-4c51-8576-4fa59b668d17', 'tags': ['seq:step:2', 'langsmith:hidden'], 'metadata': {}, 'data': {'input': {'query': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\", 'questions': [{'question': 'What are the main factors contributing to climate change?', 'sources': ['IPCC']}, {'question': 'How does human activity impact biodiversity?', 'sources': ['IPBES']}, {'question': 'What are the key findings of the latest IPCC report?', 'sources': ['IPCC']}]}}}\n", "\n", "{'event': 'on_chain_end', 'name': 'ChannelWrite', 'run_id': 'f0d11fc9-cdc0-4c51-8576-4fa59b668d17', 'tags': ['seq:step:2', 'langsmith:hidden'], 'metadata': {}, 'data': {'input': {'query': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\", 'questions': [{'question': 'What are the main factors contributing to climate change?', 'sources': ['IPCC']}, {'question': 'How does human activity impact biodiversity?', 'sources': ['IPBES']}, {'question': 'What are the key findings of the latest IPCC report?', 'sources': ['IPCC']}]}, 'output': {'query': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\", 'questions': [{'question': 'What are the main factors contributing to climate change?', 'sources': ['IPCC']}, {'question': 'How does human activity impact biodiversity?', 'sources': ['IPBES']}, {'question': 'What are the key findings of the latest IPCC report?', 'sources': ['IPCC']}]}}}\n", "\n", "{'event': 'on_chain_stream', 'name': 'transform_query', 'run_id': 'debea710-be86-44af-a6ef-094ea95d5a3d', 'tags': ['graph:step:2'], 'metadata': {}, 'data': {'chunk': {'query': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\", 'questions': [{'question': 'What are the main factors contributing to climate change?', 'sources': ['IPCC']}, {'question': 'How does human activity impact biodiversity?', 'sources': ['IPBES']}, {'question': 'What are the key findings of the latest IPCC report?', 'sources': ['IPCC']}]}}}\n", "\n", "{'event': 'on_chain_end', 'name': 'transform_query', 'run_id': 'debea710-be86-44af-a6ef-094ea95d5a3d', 'tags': ['graph:step:2'], 'metadata': {}, 'data': {'input': {'user_input': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\", 'language': 'English', 'intent': 'search', 'query': None, 'questions': None, 'answer': None, 'audience': None, 'sources_input': None}, 'output': {'query': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\", 'questions': [{'question': 'What are the main factors contributing to climate change?', 'sources': ['IPCC']}, {'question': 'How does human activity impact biodiversity?', 'sources': ['IPBES']}, {'question': 'What are the key findings of the latest IPCC report?', 'sources': ['IPCC']}]}}}\n", "\n", "{'event': 'on_chain_stream', 'run_id': '54411858-94b4-423d-933e-45e86a7d6c4b', 'tags': [], 'metadata': {}, 'name': 'LangGraph', 'data': {'chunk': {'transform_query': {'query': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\", 'questions': [{'question': 'What are the main factors contributing to climate change?', 'sources': ['IPCC']}, {'question': 'How does human activity impact biodiversity?', 'sources': ['IPBES']}, {'question': 'What are the key findings of the latest IPCC report?', 'sources': ['IPCC']}]}}}}\n", "\n", "{'event': 'on_chain_start', 'name': 'retrieve_documents', 'run_id': '6aee01df-8b06-47d5-b338-b774c7b76641', 'tags': ['graph:step:3'], 'metadata': {}, 'data': {}}\n", "\n", "{'event': 'on_chain_end', 'name': 'retrieve_documents', 'run_id': '6aee01df-8b06-47d5-b338-b774c7b76641', 'tags': ['graph:step:3'], 'metadata': {}, 'data': {'input': {'user_input': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\", 'language': 'English', 'intent': 'search', 'query': \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\", 'questions': [{'question': 'What are the main factors contributing to climate change?', 'sources': ['IPCC']}, {'question': 'How does human activity impact biodiversity?', 'sources': ['IPBES']}, {'question': 'What are the key findings of the latest IPCC report?', 'sources': ['IPCC']}], 'answer': None, 'audience': None, 'sources_input': None}, 'output': None}}\n", "\n" ] }, { "ename": "TypeError", "evalue": "argument of type 'NoneType' is not iterable", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[1;32mIn[105], line 6\u001b[0m\n\u001b[0;32m 3\u001b[0m question \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mC\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mest quoi l\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mimpact de ChatGPT ?\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 4\u001b[0m question \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mI am not really sure what you mean. What role do cloud formations play in modulating the Earth\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124ms radiative balance, and how are they represented in current climate models?\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m----> 6\u001b[0m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mfor\u001b[39;00m event \u001b[38;5;129;01min\u001b[39;00m app\u001b[38;5;241m.\u001b[39mastream_events({\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124muser_input\u001b[39m\u001b[38;5;124m\"\u001b[39m: question,\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msources\u001b[39m\u001b[38;5;124m\"\u001b[39m:[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mauto\u001b[39m\u001b[38;5;124m\"\u001b[39m]}, version\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mv1\u001b[39m\u001b[38;5;124m\"\u001b[39m):\n\u001b[0;32m 7\u001b[0m \u001b[38;5;28;01mif\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:\n\u001b[0;32m 8\u001b[0m token \u001b[38;5;241m=\u001b[39m event[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdata\u001b[39m\u001b[38;5;124m\"\u001b[39m][\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mchunk\u001b[39m\u001b[38;5;124m\"\u001b[39m]\u001b[38;5;241m.\u001b[39mcontent\n", "File \u001b[1;32m~\\Anaconda3\\envs\\py310\\lib\\site-packages\\langchain_core\\runnables\\base.py:1131\u001b[0m, in \u001b[0;36mRunnable.astream_events\u001b[1;34m(self, input, config, version, include_names, include_types, include_tags, exclude_names, exclude_types, exclude_tags, **kwargs)\u001b[0m\n\u001b[0;32m 1126\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 1127\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mNotImplementedError\u001b[39;00m(\n\u001b[0;32m 1128\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mOnly versions \u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mv1\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m and \u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mv2\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m of the schema is currently supported.\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[0;32m 1129\u001b[0m )\n\u001b[1;32m-> 1131\u001b[0m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mfor\u001b[39;00m event \u001b[38;5;129;01min\u001b[39;00m event_stream:\n\u001b[0;32m 1132\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m event\n", "File \u001b[1;32m~\\Anaconda3\\envs\\py310\\lib\\site-packages\\langchain_core\\tracers\\event_stream.py:570\u001b[0m, in \u001b[0;36m_astream_events_implementation_v1\u001b[1;34m(runnable, input, config, include_names, include_types, include_tags, exclude_names, exclude_types, exclude_tags, **kwargs)\u001b[0m\n\u001b[0;32m 566\u001b[0m root_name \u001b[38;5;241m=\u001b[39m config\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrun_name\u001b[39m\u001b[38;5;124m\"\u001b[39m, runnable\u001b[38;5;241m.\u001b[39mget_name())\n\u001b[0;32m 568\u001b[0m \u001b[38;5;66;03m# Ignoring mypy complaint about too many different union combinations\u001b[39;00m\n\u001b[0;32m 569\u001b[0m \u001b[38;5;66;03m# This arises because many of the argument types are unions\u001b[39;00m\n\u001b[1;32m--> 570\u001b[0m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mfor\u001b[39;00m log \u001b[38;5;129;01min\u001b[39;00m _astream_log_implementation( \u001b[38;5;66;03m# type: ignore[misc]\u001b[39;00m\n\u001b[0;32m 571\u001b[0m runnable,\n\u001b[0;32m 572\u001b[0m \u001b[38;5;28minput\u001b[39m,\n\u001b[0;32m 573\u001b[0m config\u001b[38;5;241m=\u001b[39mconfig,\n\u001b[0;32m 574\u001b[0m stream\u001b[38;5;241m=\u001b[39mstream,\n\u001b[0;32m 575\u001b[0m diff\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m,\n\u001b[0;32m 576\u001b[0m with_streamed_output_list\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m,\n\u001b[0;32m 577\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[0;32m 578\u001b[0m ):\n\u001b[0;32m 579\u001b[0m run_log \u001b[38;5;241m=\u001b[39m run_log \u001b[38;5;241m+\u001b[39m log\n\u001b[0;32m 581\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m encountered_start_event:\n\u001b[0;32m 582\u001b[0m \u001b[38;5;66;03m# Yield the start event for the root runnable.\u001b[39;00m\n", "File \u001b[1;32m~\\Anaconda3\\envs\\py310\\lib\\site-packages\\langchain_core\\tracers\\log_stream.py:617\u001b[0m, in \u001b[0;36m_astream_log_implementation\u001b[1;34m(runnable, input, config, stream, diff, with_streamed_output_list, **kwargs)\u001b[0m\n\u001b[0;32m 614\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[0;32m 615\u001b[0m \u001b[38;5;66;03m# Wait for the runnable to finish, if not cancelled (eg. by break)\u001b[39;00m\n\u001b[0;32m 616\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 617\u001b[0m \u001b[38;5;28;01mawait\u001b[39;00m task\n\u001b[0;32m 618\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m asyncio\u001b[38;5;241m.\u001b[39mCancelledError:\n\u001b[0;32m 619\u001b[0m \u001b[38;5;28;01mpass\u001b[39;00m\n", "File \u001b[1;32m~\\Anaconda3\\envs\\py310\\lib\\site-packages\\langchain_core\\tracers\\log_stream.py:571\u001b[0m, in \u001b[0;36m_astream_log_implementation..consume_astream\u001b[1;34m()\u001b[0m\n\u001b[0;32m 568\u001b[0m prev_final_output: Optional[Output] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 569\u001b[0m final_output: Optional[Output] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m--> 571\u001b[0m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mfor\u001b[39;00m chunk \u001b[38;5;129;01min\u001b[39;00m runnable\u001b[38;5;241m.\u001b[39mastream(\u001b[38;5;28minput\u001b[39m, config, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[0;32m 572\u001b[0m prev_final_output \u001b[38;5;241m=\u001b[39m final_output\n\u001b[0;32m 573\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m final_output \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n", "File \u001b[1;32m~\\Anaconda3\\envs\\py310\\lib\\site-packages\\langgraph\\pregel\\__init__.py:1208\u001b[0m, in \u001b[0;36mPregel.astream\u001b[1;34m(self, input, config, stream_mode, output_keys, input_keys, interrupt_before, interrupt_after, debug)\u001b[0m\n\u001b[0;32m 1206\u001b[0m \u001b[38;5;28;01mpass\u001b[39;00m\n\u001b[0;32m 1207\u001b[0m \u001b[38;5;66;03m# wait for all background tasks to finish\u001b[39;00m\n\u001b[1;32m-> 1208\u001b[0m \u001b[38;5;28;01mawait\u001b[39;00m asyncio\u001b[38;5;241m.\u001b[39mgather(\u001b[38;5;241m*\u001b[39mbg)\n", "File \u001b[1;32m~\\Anaconda3\\envs\\py310\\lib\\site-packages\\langgraph\\pregel\\__init__.py:1107\u001b[0m, in \u001b[0;36mPregel.astream\u001b[1;34m(self, input, config, stream_mode, output_keys, input_keys, interrupt_before, interrupt_after, debug)\u001b[0m\n\u001b[0;32m 1100\u001b[0m done, inflight \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mawait\u001b[39;00m asyncio\u001b[38;5;241m.\u001b[39mwait(\n\u001b[0;32m 1101\u001b[0m futures,\n\u001b[0;32m 1102\u001b[0m return_when\u001b[38;5;241m=\u001b[39masyncio\u001b[38;5;241m.\u001b[39mFIRST_EXCEPTION,\n\u001b[0;32m 1103\u001b[0m timeout\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstep_timeout,\n\u001b[0;32m 1104\u001b[0m )\n\u001b[0;32m 1106\u001b[0m \u001b[38;5;66;03m# panic on failure or timeout\u001b[39;00m\n\u001b[1;32m-> 1107\u001b[0m \u001b[43m_panic_or_proceed\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdone\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43minflight\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstep\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1109\u001b[0m \u001b[38;5;66;03m# combine pending writes from all tasks\u001b[39;00m\n\u001b[0;32m 1110\u001b[0m pending_writes \u001b[38;5;241m=\u001b[39m deque[\u001b[38;5;28mtuple\u001b[39m[\u001b[38;5;28mstr\u001b[39m, Any]]()\n", "File \u001b[1;32m~\\Anaconda3\\envs\\py310\\lib\\site-packages\\langgraph\\pregel\\__init__.py:1334\u001b[0m, in \u001b[0;36m_panic_or_proceed\u001b[1;34m(done, inflight, step)\u001b[0m\n\u001b[0;32m 1332\u001b[0m inflight\u001b[38;5;241m.\u001b[39mpop()\u001b[38;5;241m.\u001b[39mcancel()\n\u001b[0;32m 1333\u001b[0m \u001b[38;5;66;03m# raise the exception\u001b[39;00m\n\u001b[1;32m-> 1334\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exc\n\u001b[0;32m 1336\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m inflight:\n\u001b[0;32m 1337\u001b[0m \u001b[38;5;66;03m# if we got here means we timed out\u001b[39;00m\n\u001b[0;32m 1338\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m inflight:\n\u001b[0;32m 1339\u001b[0m \u001b[38;5;66;03m# cancel all pending tasks\u001b[39;00m\n", "File \u001b[1;32m~\\Anaconda3\\envs\\py310\\lib\\site-packages\\langgraph\\pregel\\retry.py:111\u001b[0m, in \u001b[0;36marun_with_retry\u001b[1;34m(task, retry_policy, stream)\u001b[0m\n\u001b[0;32m 109\u001b[0m \u001b[38;5;66;03m# run the task\u001b[39;00m\n\u001b[0;32m 110\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m stream:\n\u001b[1;32m--> 111\u001b[0m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mfor\u001b[39;00m _ \u001b[38;5;129;01min\u001b[39;00m task\u001b[38;5;241m.\u001b[39mproc\u001b[38;5;241m.\u001b[39mastream(task\u001b[38;5;241m.\u001b[39minput, task\u001b[38;5;241m.\u001b[39mconfig):\n\u001b[0;32m 112\u001b[0m \u001b[38;5;28;01mpass\u001b[39;00m\n\u001b[0;32m 113\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n", "File \u001b[1;32m~\\Anaconda3\\envs\\py310\\lib\\site-packages\\langchain_core\\runnables\\base.py:2769\u001b[0m, in \u001b[0;36mRunnableSequence.astream\u001b[1;34m(self, input, config, **kwargs)\u001b[0m\n\u001b[0;32m 2766\u001b[0m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minput_aiter\u001b[39m() \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m AsyncIterator[Input]:\n\u001b[0;32m 2767\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m \u001b[38;5;28minput\u001b[39m\n\u001b[1;32m-> 2769\u001b[0m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mfor\u001b[39;00m chunk \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39matransform(input_aiter(), config, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[0;32m 2770\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m chunk\n", "File \u001b[1;32m~\\Anaconda3\\envs\\py310\\lib\\site-packages\\langchain_core\\runnables\\base.py:2752\u001b[0m, in \u001b[0;36mRunnableSequence.atransform\u001b[1;34m(self, input, config, **kwargs)\u001b[0m\n\u001b[0;32m 2746\u001b[0m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21matransform\u001b[39m(\n\u001b[0;32m 2747\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[0;32m 2748\u001b[0m \u001b[38;5;28minput\u001b[39m: AsyncIterator[Input],\n\u001b[0;32m 2749\u001b[0m config: Optional[RunnableConfig] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[0;32m 2750\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Optional[Any],\n\u001b[0;32m 2751\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m AsyncIterator[Output]:\n\u001b[1;32m-> 2752\u001b[0m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mfor\u001b[39;00m chunk \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_atransform_stream_with_config(\n\u001b[0;32m 2753\u001b[0m \u001b[38;5;28minput\u001b[39m,\n\u001b[0;32m 2754\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_atransform,\n\u001b[0;32m 2755\u001b[0m patch_config(config, run_name\u001b[38;5;241m=\u001b[39m(config \u001b[38;5;129;01mor\u001b[39;00m {})\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrun_name\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mname),\n\u001b[0;32m 2756\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs,\n\u001b[0;32m 2757\u001b[0m ):\n\u001b[0;32m 2758\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m chunk\n", "File \u001b[1;32m~\\Anaconda3\\envs\\py310\\lib\\site-packages\\langchain_core\\runnables\\base.py:1854\u001b[0m, in \u001b[0;36mRunnable._atransform_stream_with_config\u001b[1;34m(self, input, transformer, config, run_type, **kwargs)\u001b[0m\n\u001b[0;32m 1849\u001b[0m chunk: Output \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mawait\u001b[39;00m asyncio\u001b[38;5;241m.\u001b[39mcreate_task( \u001b[38;5;66;03m# type: ignore[call-arg]\u001b[39;00m\n\u001b[0;32m 1850\u001b[0m py_anext(iterator), \u001b[38;5;66;03m# type: ignore[arg-type]\u001b[39;00m\n\u001b[0;32m 1851\u001b[0m context\u001b[38;5;241m=\u001b[39mcontext,\n\u001b[0;32m 1852\u001b[0m )\n\u001b[0;32m 1853\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m-> 1854\u001b[0m chunk \u001b[38;5;241m=\u001b[39m cast(Output, \u001b[38;5;28;01mawait\u001b[39;00m py_anext(iterator))\n\u001b[0;32m 1855\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m chunk\n\u001b[0;32m 1856\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m final_output_supported:\n", "File \u001b[1;32m~\\Anaconda3\\envs\\py310\\lib\\site-packages\\langchain_core\\tracers\\log_stream.py:238\u001b[0m, in \u001b[0;36mLogStreamCallbackHandler.tap_output_aiter\u001b[1;34m(self, run_id, output)\u001b[0m\n\u001b[0;32m 234\u001b[0m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mtap_output_aiter\u001b[39m(\n\u001b[0;32m 235\u001b[0m \u001b[38;5;28mself\u001b[39m, run_id: UUID, output: AsyncIterator[T]\n\u001b[0;32m 236\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m AsyncIterator[T]:\n\u001b[0;32m 237\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Tap an output async iterator to stream its values to the log.\"\"\"\u001b[39;00m\n\u001b[1;32m--> 238\u001b[0m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mfor\u001b[39;00m chunk \u001b[38;5;129;01min\u001b[39;00m output:\n\u001b[0;32m 239\u001b[0m \u001b[38;5;66;03m# root run is handled in .astream_log()\u001b[39;00m\n\u001b[0;32m 240\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m run_id \u001b[38;5;241m!=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mroot_id:\n\u001b[0;32m 241\u001b[0m \u001b[38;5;66;03m# if we can't find the run silently ignore\u001b[39;00m\n\u001b[0;32m 242\u001b[0m \u001b[38;5;66;03m# eg. because this run wasn't included in the log\u001b[39;00m\n\u001b[0;32m 243\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m key \u001b[38;5;241m:=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_key_map_by_run_id\u001b[38;5;241m.\u001b[39mget(run_id):\n", "File \u001b[1;32m~\\Anaconda3\\envs\\py310\\lib\\site-packages\\langchain_core\\runnables\\base.py:2722\u001b[0m, in \u001b[0;36mRunnableSequence._atransform\u001b[1;34m(self, input, run_manager, config)\u001b[0m\n\u001b[0;32m 2714\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m step \u001b[38;5;129;01min\u001b[39;00m steps:\n\u001b[0;32m 2715\u001b[0m final_pipeline \u001b[38;5;241m=\u001b[39m step\u001b[38;5;241m.\u001b[39matransform(\n\u001b[0;32m 2716\u001b[0m final_pipeline,\n\u001b[0;32m 2717\u001b[0m patch_config(\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 2720\u001b[0m ),\n\u001b[0;32m 2721\u001b[0m )\n\u001b[1;32m-> 2722\u001b[0m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mfor\u001b[39;00m output \u001b[38;5;129;01min\u001b[39;00m final_pipeline:\n\u001b[0;32m 2723\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m output\n", "File \u001b[1;32m~\\Anaconda3\\envs\\py310\\lib\\site-packages\\langchain_core\\runnables\\base.py:1182\u001b[0m, in \u001b[0;36mRunnable.atransform\u001b[1;34m(self, input, config, **kwargs)\u001b[0m\n\u001b[0;32m 1179\u001b[0m final: Input\n\u001b[0;32m 1180\u001b[0m got_first_val \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[1;32m-> 1182\u001b[0m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mfor\u001b[39;00m ichunk \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28minput\u001b[39m:\n\u001b[0;32m 1183\u001b[0m \u001b[38;5;66;03m# The default implementation of transform is to buffer input and\u001b[39;00m\n\u001b[0;32m 1184\u001b[0m \u001b[38;5;66;03m# then call stream.\u001b[39;00m\n\u001b[0;32m 1185\u001b[0m \u001b[38;5;66;03m# It'll attempt to gather all input into a single chunk using\u001b[39;00m\n\u001b[0;32m 1186\u001b[0m \u001b[38;5;66;03m# the `+` operator.\u001b[39;00m\n\u001b[0;32m 1187\u001b[0m \u001b[38;5;66;03m# If the input is not addable, then we'll assume that we can\u001b[39;00m\n\u001b[0;32m 1188\u001b[0m \u001b[38;5;66;03m# only operate on the last chunk,\u001b[39;00m\n\u001b[0;32m 1189\u001b[0m \u001b[38;5;66;03m# and we'll iterate until we get to the last chunk.\u001b[39;00m\n\u001b[0;32m 1190\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m got_first_val:\n\u001b[0;32m 1191\u001b[0m final \u001b[38;5;241m=\u001b[39m ichunk\n", "File \u001b[1;32m~\\Anaconda3\\envs\\py310\\lib\\site-packages\\langchain_core\\runnables\\base.py:1200\u001b[0m, in \u001b[0;36mRunnable.atransform\u001b[1;34m(self, input, config, **kwargs)\u001b[0m\n\u001b[0;32m 1197\u001b[0m final \u001b[38;5;241m=\u001b[39m ichunk\n\u001b[0;32m 1199\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m got_first_val:\n\u001b[1;32m-> 1200\u001b[0m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mfor\u001b[39;00m output \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mastream(final, config, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[0;32m 1201\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m output\n", "File \u001b[1;32m~\\Anaconda3\\envs\\py310\\lib\\site-packages\\langchain_core\\runnables\\base.py:820\u001b[0m, in \u001b[0;36mRunnable.astream\u001b[1;34m(self, input, config, **kwargs)\u001b[0m\n\u001b[0;32m 810\u001b[0m \u001b[38;5;28;01masync\u001b[39;00m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mastream\u001b[39m(\n\u001b[0;32m 811\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[0;32m 812\u001b[0m \u001b[38;5;28minput\u001b[39m: Input,\n\u001b[0;32m 813\u001b[0m config: Optional[RunnableConfig] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[0;32m 814\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs: Optional[Any],\n\u001b[0;32m 815\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m AsyncIterator[Output]:\n\u001b[0;32m 816\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 817\u001b[0m \u001b[38;5;124;03m Default implementation of astream, which calls ainvoke.\u001b[39;00m\n\u001b[0;32m 818\u001b[0m \u001b[38;5;124;03m Subclasses should override this method if they support streaming output.\u001b[39;00m\n\u001b[0;32m 819\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m--> 820\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m \u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mainvoke(\u001b[38;5;28minput\u001b[39m, config, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", "File \u001b[1;32m~\\Anaconda3\\envs\\py310\\lib\\site-packages\\langgraph\\utils.py:115\u001b[0m, in \u001b[0;36mRunnableCallable.ainvoke\u001b[1;34m(self, input, config)\u001b[0m\n\u001b[0;32m 111\u001b[0m ret \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mawait\u001b[39;00m asyncio\u001b[38;5;241m.\u001b[39mcreate_task(\n\u001b[0;32m 112\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mafunc(\u001b[38;5;28minput\u001b[39m, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs), context\u001b[38;5;241m=\u001b[39mcontext\n\u001b[0;32m 113\u001b[0m )\n\u001b[0;32m 114\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m--> 115\u001b[0m ret \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mafunc(\u001b[38;5;28minput\u001b[39m, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m 116\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(ret, Runnable) \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mrecurse:\n\u001b[0;32m 117\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mawait\u001b[39;00m ret\u001b[38;5;241m.\u001b[39mainvoke(\u001b[38;5;28minput\u001b[39m, config)\n", "File \u001b[1;32m~\\Anaconda3\\envs\\py310\\lib\\site-packages\\langchain_core\\runnables\\config.py:514\u001b[0m, in \u001b[0;36mrun_in_executor\u001b[1;34m(executor_or_config, func, *args, **kwargs)\u001b[0m\n\u001b[0;32m 501\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Run a function in an executor.\u001b[39;00m\n\u001b[0;32m 502\u001b[0m \n\u001b[0;32m 503\u001b[0m \u001b[38;5;124;03mArgs:\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 510\u001b[0m \u001b[38;5;124;03m Output: The output of the function.\u001b[39;00m\n\u001b[0;32m 511\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m 512\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m executor_or_config \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(executor_or_config, \u001b[38;5;28mdict\u001b[39m):\n\u001b[0;32m 513\u001b[0m \u001b[38;5;66;03m# Use default executor with context copied from current context\u001b[39;00m\n\u001b[1;32m--> 514\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mawait\u001b[39;00m asyncio\u001b[38;5;241m.\u001b[39mget_running_loop()\u001b[38;5;241m.\u001b[39mrun_in_executor(\n\u001b[0;32m 515\u001b[0m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[0;32m 516\u001b[0m cast(Callable[\u001b[38;5;241m.\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;241m.\u001b[39m, T], partial(copy_context()\u001b[38;5;241m.\u001b[39mrun, func, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)),\n\u001b[0;32m 517\u001b[0m )\n\u001b[0;32m 519\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mawait\u001b[39;00m asyncio\u001b[38;5;241m.\u001b[39mget_running_loop()\u001b[38;5;241m.\u001b[39mrun_in_executor(\n\u001b[0;32m 520\u001b[0m executor_or_config, partial(func, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs), \u001b[38;5;241m*\u001b[39margs\n\u001b[0;32m 521\u001b[0m )\n", "File \u001b[1;32m~\\Anaconda3\\envs\\py310\\lib\\concurrent\\futures\\thread.py:58\u001b[0m, in \u001b[0;36m_WorkItem.run\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 55\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[0;32m 57\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m---> 58\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfn(\u001b[38;5;241m*\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mkwargs)\n\u001b[0;32m 59\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mBaseException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[0;32m 60\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfuture\u001b[38;5;241m.\u001b[39mset_exception(exc)\n", "Cell \u001b[1;32mIn[89], line 7\u001b[0m, in \u001b[0;36mretrieve_documents\u001b[1;34m(state)\u001b[0m\n\u001b[0;32m 5\u001b[0m questions \u001b[38;5;241m=\u001b[39m state[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mquestions\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[0;32m 6\u001b[0m sources_input \u001b[38;5;241m=\u001b[39m state[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msources_input\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[1;32m----> 7\u001b[0m auto_mode \u001b[38;5;241m=\u001b[39m \u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mauto\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43msources_input\u001b[49m\n\u001b[0;32m 9\u001b[0m k_final \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m15\u001b[39m\n\u001b[0;32m 10\u001b[0m k_before_reranking \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m100\u001b[39m\n", "\u001b[1;31mTypeError\u001b[0m: argument of type 'NoneType' is not iterable" ] } ], "source": [ "# question = \"Tu penses quoi de Shakespeare ?\"\n", "question = \"C'est quoi la recette de la tarte aux pommes ?\"\n", "question = \"C'est quoi l'impact de ChatGPT ?\"\n", "question = \"I am not really sure what you mean. What role do cloud formations play in modulating the Earth's radiative balance, and how are they represented in current climate models?\"\n", "\n", "async for event in app.astream_events({\"user_input\": question,\"sources\":[\"auto\"]}, version=\"v1\"):\n", " if event[\"event\"] == \"on_chat_model_stream\":\n", " token = event[\"data\"][\"chunk\"].content\n", " print(token,end = \"\")\n", " \n", " print(event)\n", " print(\"\")" ] } ], "metadata": { "kernelspec": { "display_name": "climateqa", "language": "python", "name": "climateqa" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.14" } }, "nbformat": 4, "nbformat_minor": 5 }