{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# ๐ŸŽฏ Claim-QA Uncertainty Quantification (Long-Text)\n", "\n", "
\n", "

\n", " Claim-QA scorers, adapted as a generalization of long-form semantic entropy, are another method for detecting claim-level or sentence-level hallucinations in long-form LLM outputs. These scorers implement the following steps: decompose responses into granular units (sentences or claims), convert each claim or sentence to a question, sample LLM responses to those questions, and measure consistency among those answers to score the claim. The available scorers and papers from which they are adapted are below:\n", "

\n", " \n", "* Long-form Semantic Entropy ([Farquhar et al., 2024](https://www.nature.com/articles/s41586-024-07421-0))\n", "* Black-Box Generalizations of Long-form Semantic Entropy\n", "\n", "
\n", "\n", "## ๐Ÿ“Š What You'll Do in This Demo\n", "\n", "
\n", "
1
\n", "
\n", "

Set up LLM and prompts.

\n", "

Set up LLM instance and load example data prompts.

\n", "
\n", "
\n", "\n", "
\n", "
2
\n", "
\n", "

Generate LLM Responses and Confidence Scores

\n", "

Generate responses and compute claim-level confidence scores using the LongTextQA() class.

\n", "
\n", "
\n", "\n", "
\n", "
3
\n", "
\n", "

Evaluate Hallucination Detection Performance

\n", "

Grade claims with `FactScoreGrader` class and evaluate claim-level hallucination detection.

\n", "
\n", "
\n", "\n", "## โš–๏ธ Advantages & Limitations\n", "\n", "
\n", "
\n", "

Pros

\n", " \n", "
\n", " \n", "
\n", "

Cons

\n", " \n", "
\n", "
" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "tags": [] }, "outputs": [], "source": [ "import numpy as np\n", "\n", "from uqlm import LongTextQA\n", "from uqlm.utils import load_example_dataset, display_response_refinement, claims_dicts_to_lists, plot_model_accuracies\n", "from uqlm.longform import FactScoreGrader" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Set up LLM and Prompts" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this demo, we will illustrate this approach using the [FactScore](https://github.com/shmsw25/FActScore/tree/main/factscore) longform QA dataset. To implement with your use case, simply **replace the example prompts with your data**. " ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Loading dataset - factscore...\n", "Processing dataset...\n", "Dataset ready!\n" ] }, { "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", "
promptwikipedia_text
0Tell me a bio of Suthida within 100 words.\\nSuthida Bajrasudhabimalalakshana (Thai: เธชเธกเน€เธ”เน‡เธˆ...
1Tell me a bio of Miguel รngel Fรฉlix Gallardo w...Miguel รngel Fรฉlix Gallardo (born January 8, 1...
2Tell me a bio of Iggy Azalea within 100 words.\\nAmethyst Amelia Kelly (born 7 June 1990), know...
3Tell me a bio of Fernando da Costa Novaes with...Fernando da Costa Novaes (April 6, 1927 โ€“ Marc...
4Tell me a bio of Jan Zamoyski within 100 words.\\nJan Sariusz Zamoyski (Latin: Ioannes Zamoyski ...
\n", "
" ], "text/plain": [ " prompt \\\n", "0 Tell me a bio of Suthida within 100 words.\\n \n", "1 Tell me a bio of Miguel รngel Fรฉlix Gallardo w... \n", "2 Tell me a bio of Iggy Azalea within 100 words.\\n \n", "3 Tell me a bio of Fernando da Costa Novaes with... \n", "4 Tell me a bio of Jan Zamoyski within 100 words.\\n \n", "\n", " wikipedia_text \n", "0 Suthida Bajrasudhabimalalakshana (Thai: เธชเธกเน€เธ”เน‡เธˆ... \n", "1 Miguel รngel Fรฉlix Gallardo (born January 8, 1... \n", "2 Amethyst Amelia Kelly (born 7 June 1990), know... \n", "3 Fernando da Costa Novaes (April 6, 1927 โ€“ Marc... \n", "4 Jan Sariusz Zamoyski (Latin: Ioannes Zamoyski ... " ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Load example dataset (FactScore)\n", "factscore = load_example_dataset(\"factscore\", n=15)[[\"hundredw_prompt\", \"wikipedia_text\"]].rename(columns={\"hundredw_prompt\": \"prompt\"})\n", "factscore.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this example, we use `ChatVertexAI` to instantiate our LLM, but any [LangChain Chat Model](https://js.langchain.com/docs/integrations/chat/) may be used. Be sure to **replace with your LLM of choice.**" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "tags": [] }, "outputs": [], "source": [ "from langchain_google_vertexai import ChatVertexAI\n", "\n", "gemini_flash = ChatVertexAI(model=\"gemini-2.5-flash\")\n", "gemini_flash_lite = ChatVertexAI(model=\"gemini-2.5-flash-lite\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Generate LLM Responses and Claim/Sentence-Level Confidence Scores" ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "### `LongTextQA()` - Generate long-text LLM responses, decompose into claims or sentences, create questions for which those claims are the answers, and measure consistency in LLM responses to those questions.\n", "\n", "![Sample Image](https://raw.githubusercontent.com/cvs-health/uqlm/develop/assets/images/claim_qa_graphic.png)\n", "\n", "#### ๐Ÿ“‹ Class Attributes\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ParameterType & DefaultDescription
llmBaseChatModel
default=None
A langchain llm `BaseChatModel`. User is responsible for specifying temperature and other relevant parameters to the constructor of the provided `llm` object.
granularitystr
default=\"claim\"
Specifies whether to decompose and score at claim or sentence level granularity. Must be either \"claim\" or \"sentence\".
scorersList[str]
default=None
Specifies which black box (consistency) scorers to include. Must be subset of ['semantic_negentropy', 'noncontradiction', 'exact_match', 'bert_score', 'cosine_sim', 'entailment', 'semantic_sets_confidence']. If None, defaults to [\"entailment\"].
aggregationstr
default=\"mean\"
Specifies how to aggregate claim/sentence-level scores to response-level scores. Must be one of 'min' or 'mean'.
response_refinementbool
default=False
Specifies whether to refine responses with uncertainty-aware decoding. This approach removes claims with confidence scores below the response_refinement_threshold and uses the claim_decomposition_llm to reconstruct the response from the retained claims. For more details, refer to Jiang et al., 2024: https://arxiv.org/abs/2410.20783
claim_filtering_scorerOptional[str]
default=None
Specifies which scorer to use to filter claims if response_refinement is True. If not provided, defaults to the first element of self.scorers.
claim_decomposition_llmBaseChatModel
default=None
A langchain llm `BaseChatModel` to be used for decomposing responses into individual claims. Also used for claim refinement. If granularity=\"claim\" and claim_decomposition_llm is None, the provided `llm` will be used for claim decomposition.
question_generator_llmBaseChatModel
default=None
A langchain llm `BaseChatModel` to be used for decomposing responses into individual claims. Used for generating questions from claims or sentences in claim-QA approach. If None, defaults to claim_decomposition_llm.
devicestr or torch.device
default=None
Specifies the device that NLI model use for prediction. If None, detects and returns the best available PyTorch device. Prioritizes CUDA (NVIDIA GPU), then MPS (macOS), then CPU.
system_promptstr or None
default=\"You are a helpful assistant.\"
Optional argument for user to provide custom system prompt for the LLM.
max_calls_per_minint
default=None
Specifies how many API calls to make per minute to avoid rate limit errors. By default, no limit is specified.
use_n_parambool
default=False
Specifies whether to use n parameter for BaseChatModel. Not compatible with all BaseChatModel classes. If used, it speeds up the generation process substantially when num_responses is large.
sampling_temperaturefloat
default=1
The 'temperature' parameter for LLM to use when generating sampled LLM responses. Must be greater than 0.
nli_model_namestr
default=\"microsoft/deberta-large-mnli\"
Specifies which NLI model to use. Must be acceptable input to AutoTokenizer.from_pretrained() and AutoModelForSequenceClassification.from_pretrained().
max_lengthint
default=2000
Specifies the maximum allowed string length for LLM responses for NLI computation. Responses longer than this value will be truncated in NLI computations to avoid OutOfMemoryError.
\n", "\n", "#### ๐Ÿ” Parameter Groups\n", "\n", "
\n", "
\n", "

๐Ÿง  LLM-Specific

\n", " \n", "
\n", "
\n", "

๐Ÿ“Š Confidence Scores

\n", " \n", "
\n", "
\n", "

๐Ÿ–ฅ๏ธ Hardware

\n", " \n", "
\n", "
\n", "

โšก Performance

\n", " \n", "
\n", "
\n", "\n", "```" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "claim_filtering_scorer is not specified for response_refinement. Defaulting to noncontradiction.\n" ] } ], "source": [ "claimqa = LongTextQA(\n", " llm=gemini_flash,\n", " question_generator_llm=gemini_flash,\n", " aggregation=\"mean\", # switch to 'min' for more conservative scoring\n", " response_refinement=True, # whether to filter out low-confidence claims\n", " scorers=[\"noncontradiction\"],\n", " # max_calls_per_min=1000,\n", ")" ] }, { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "### ๐Ÿ”„ Class Methods\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MethodDescription & Parameters
BlackBoxUQ.generate_and_score\n", "

Generate LLM responses, sampled LLM (candidate) responses, and compute confidence scores for the provided prompts.

\n", "

Parameters:

\n", "
    \n", "
  • prompts - (List[str] or List[List[BaseMessage]]) A list of input prompts for the model.
  • \n", "
  • num_questions - (int, default=2) Specifies how many questions to generate per claim/sentence.
  • \n", "
  • num_claim_qa_responses - (int, default=5) Specifies how many sampled responses to generate per claim/sentence question.
  • \n", "
  • response_refinement_threshold - (float, default=1/3) Threshold for uncertainty-aware filtering. Claims with confidence scores below this threshold are dropped from the refined response. Only used if response_refinement is True.
  • \n", "
  • show_progress_bars - (bool, default=True) If True, displays a progress bar while generating and scoring responses.
  • \n", "
\n", "

Returns: UQResult containing data (prompts, responses, sampled responses, and confidence scores) and metadata

\n", "
\n", " ๐Ÿ’ก Best For: Complete end-to-end uncertainty quantification when starting with prompts.\n", "
\n", "
BlackBoxUQ.score\n", "

Compute confidence scores on provided LLM responses. Should only be used if responses and sampled responses are already generated.

\n", "

Parameters:

\n", "
    \n", "
  • prompts - (List[str]) A list of input prompts for the model.
  • \n", "
  • responses - (List[str]) A list of LLM responses for the prompts.
  • \n", "
  • num_questions - (int, default=2) Specifies how many questions to generate per claim/sentence.
  • \n", "
  • num_claim_qa_responses - (int, default=5) Specifies how many sampled responses to generate per claim/sentence question.
  • \n", "
  • response_refinement_threshold - (float, default=1/3) Threshold for uncertainty-aware filtering. Claims with confidence scores below this threshold are dropped from the refined response. Only used if response_refinement is True.
  • \n", "
  • show_progress_bars - (bool, default=True) If True, displays a progress bar while scoring responses.
  • \n", "
\n", "

Returns: UQResult containing data (responses, sampled responses, and confidence scores) and metadata

\n", "
\n", " ๐Ÿ’ก Best For: Computing uncertainty scores when responses are already generated elsewhere.\n", "
\n", "
" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "tags": [] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e3093a401fcc4953bc1ad58d260af874", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Output()" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "
\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "results = await claimqa.generate_and_score(prompts=factscore.prompt.to_list(), response_refinement_threshold=0.85)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "tags": []
   },
   "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", "
promptresponsenoncontradictionclaims_datarefined_responserefined_noncontradiction
0Tell me a bio of Suthida within 100 words.\\nQueen Suthida Bajrasudhabimalalakshana is the ...0.872727[{'claim': 'Queen Suthida Bajrasudhabimalalaks...Queen Suthida Bajrasudhabimalalakshana, the cu...0.985608
1Tell me a bio of Miguel รngel Fรฉlix Gallardo w...Miguel รngel Fรฉlix Gallardo, known as \"El Padr...0.922575[{'claim': 'Miguel รngel Fรฉlix Gallardo was kn...Miguel รngel Fรฉlix Gallardo, famously known as...0.973158
2Tell me a bio of Iggy Azalea within 100 words.\\nAmethyst Amelia Kelly, known professionally as...0.895390[{'claim': 'Amethyst Amelia Kelly is known pro...Amethyst Amelia Kelly, known professionally as...0.986233
3Tell me a bio of Fernando da Costa Novaes with...Fernando da Costa Novaes (1942-2004) was a hig...0.797684[{'claim': 'Fernando da Costa Novaes was born ...Fernando da Costa Novaes was a highly influent...0.966738
4Tell me a bio of Jan Zamoyski within 100 words.\\nJan Zamoyski (1542โ€“1605) was a preeminent Poli...0.947813[{'claim': 'Jan Zamoyski was born in 1542.', '...Jan Zamoyski, born in 1542 and dying in 1605, ...0.978016
\n", "
" ], "text/plain": [ " prompt \\\n", "0 Tell me a bio of Suthida within 100 words.\\n \n", "1 Tell me a bio of Miguel รngel Fรฉlix Gallardo w... \n", "2 Tell me a bio of Iggy Azalea within 100 words.\\n \n", "3 Tell me a bio of Fernando da Costa Novaes with... \n", "4 Tell me a bio of Jan Zamoyski within 100 words.\\n \n", "\n", " response noncontradiction \\\n", "0 Queen Suthida Bajrasudhabimalalakshana is the ... 0.872727 \n", "1 Miguel รngel Fรฉlix Gallardo, known as \"El Padr... 0.922575 \n", "2 Amethyst Amelia Kelly, known professionally as... 0.895390 \n", "3 Fernando da Costa Novaes (1942-2004) was a hig... 0.797684 \n", "4 Jan Zamoyski (1542โ€“1605) was a preeminent Poli... 0.947813 \n", "\n", " claims_data \\\n", "0 [{'claim': 'Queen Suthida Bajrasudhabimalalaks... \n", "1 [{'claim': 'Miguel รngel Fรฉlix Gallardo was kn... \n", "2 [{'claim': 'Amethyst Amelia Kelly is known pro... \n", "3 [{'claim': 'Fernando da Costa Novaes was born ... \n", "4 [{'claim': 'Jan Zamoyski was born in 1542.', '... \n", "\n", " refined_response refined_noncontradiction \n", "0 Queen Suthida Bajrasudhabimalalakshana, the cu... 0.985608 \n", "1 Miguel รngel Fรฉlix Gallardo, famously known as... 0.973158 \n", "2 Amethyst Amelia Kelly, known professionally as... 0.986233 \n", "3 Fernando da Costa Novaes was a highly influent... 0.966738 \n", "4 Jan Zamoyski, born in 1542 and dying in 1605, ... 0.978016 " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "result_df = results.to_df()\n", "result_df.head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Response refinement" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Response refinement works by dropping claims with confidence scores (specified with `claim_filtering_scorer`) below a specified threshold (specified with `response_refinement_threshold`) and reconstructing the response from the retained claims.\n", "\n", "![Sample Image](https://raw.githubusercontent.com/cvs-health/uqlm/develop/assets/images/uad_graphic.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To illustrate how the response refinement operates, let's view an example. We first view the fine-grained claim-level data, including the claims in the original response, the claim-level confidence scores, and whether each claim was removed during the response refinement process. " ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "tags": [] }, "outputs": [ { "data": { "text/plain": [ "[{'claim': 'Queen Suthida Bajrasudhabimalalakshana is the current Queen of Thailand.',\n", " 'removed': False,\n", " 'claim_questions': ['Who is the current Queen of Thailand?'],\n", " 'claim_qa_responses': ['Suthida.'],\n", " 'claim_qa_sampled_responses': [['Suthida.',\n", " 'Suthida.',\n", " 'Suthida.',\n", " 'Suthida.',\n", " 'Suthida']],\n", " 'noncontradiction': 0.997577428817749},\n", " {'claim': 'Queen Suthida Bajrasudhabimalalakshana was born Suthida Tidjai.',\n", " 'removed': True,\n", " 'claim_questions': [\"What was Queen Suthida Bajrasudhabimalalakshana's birth name?\"],\n", " 'claim_qa_responses': ['Suthida Tidjai'],\n", " 'claim_qa_sampled_responses': [['Nui-Ngam',\n", " 'Suthida Tidjai',\n", " 'Suthida Tidjai',\n", " 'Suthida Tidjai',\n", " 'Suthida Tidjai']],\n", " 'noncontradiction': 0.8045254647731781},\n", " {'claim': 'Queen Suthida Bajrasudhabimalalakshana began her career as a flight attendant.',\n", " 'removed': False,\n", " 'claim_questions': [\"What was Queen Suthida Bajrasudhabimalalakshana's first career?\"],\n", " 'claim_qa_responses': ['Flight attendant.'],\n", " 'claim_qa_sampled_responses': [['Flight attendant.',\n", " 'Flight attendant.',\n", " 'Flight attendant.',\n", " 'Flight attendant.',\n", " 'Flight attendant.']],\n", " 'noncontradiction': 1.0},\n", " {'claim': 'Queen Suthida Bajrasudhabimalalakshana was a flight attendant for Thai Airways International.',\n", " 'removed': False,\n", " 'claim_questions': [\"Identify the exact statement detailing Queen Suthida Bajrasudhabimalalakshana's previous occupation and employer.\"],\n", " 'claim_qa_responses': ['She was a flight attendant for Thai Airways.'],\n", " 'claim_qa_sampled_responses': [['She was previously a flight attendant for Thai Airways International.',\n", " 'She previously worked as a flight attendant for Thai Airways.',\n", " 'She was a flight attendant for Thai Airways.',\n", " 'She was a flight attendant for Thai Airways.',\n", " 'Flight attendant for Thai Airways.']],\n", " 'noncontradiction': 0.9993116140365601},\n", " {'claim': 'Queen Suthida Bajrasudhabimalalakshana joined the Royal Thai Army.',\n", " 'removed': True,\n", " 'claim_questions': [\"What was Queen Suthida Bajrasudhabimalalakshana's initial involvement with the Royal Thai Army?\"],\n", " 'claim_qa_responses': ['She was commissioned as a second lieutenant in 2010.'],\n", " 'claim_qa_sampled_responses': [['Flight attendant.',\n", " 'Royal Guard.',\n", " 'Flight attendant for Thai Airways.',\n", " 'Joined as an officer.',\n", " 'She joined in 2010 as a second lieutenant.']],\n", " 'noncontradiction': 0.72225404},\n", " {'claim': 'Queen Suthida Bajrasudhabimalalakshana rose through the ranks of the Royal Thai Army.',\n", " 'removed': True,\n", " 'claim_questions': [\"What particular career trajectory characterized Queen Suthida Bajrasudhabimalalakshana's involvement in the Royal Thai Army?\"],\n", " 'claim_qa_responses': [\"From flight attendant to rapid military promotion, ultimately becoming a general leading the King's security.\"],\n", " 'claim_qa_sampled_responses': [['Rapid promotions as a royal bodyguard.',\n", " \"From Royal Thai Army officer to General and Deputy Commander of the King's Guard.\",\n", " 'Joined Royal Thai Army, rapidly rose through ranks to become a general in the Royal Guard.',\n", " \"Officer to general, commanding the King's Guard Special Operations Unit.\",\n", " \"Rapid ascent: bodyguard to General and commander in the King's Guard.\"]],\n", " 'noncontradiction': 0.65020025},\n", " {'claim': 'Queen Suthida Bajrasudhabimalalakshana served in the Royal Security Command.',\n", " 'removed': True,\n", " 'claim_questions': [\"What is the claim asserting Queen Suthida Bajrasudhabimalalakshana's service within the Royal Security Command?\"],\n", " 'claim_qa_responses': ['Commander of the Royal Security Command.'],\n", " 'claim_qa_sampled_responses': [['Commander of the Royal Security Command.',\n", " 'Commander of the Royal Security Command.',\n", " 'Royal Guard.',\n", " 'Deputy Commander of the Royal Security Command.',\n", " 'Commander.']],\n", " 'noncontradiction': 0.7191060900688171},\n", " {'claim': 'Queen Suthida Bajrasudhabimalalakshana was made a full General in 2017.',\n", " 'removed': False,\n", " 'claim_questions': [\"What is the exact claim describing Queen Suthida Bajrasudhabimalalakshana's military promotion to a full General in 2017?\"],\n", " 'claim_qa_responses': ['Promoted to General.'],\n", " 'claim_qa_sampled_responses': [['Appointed General.',\n", " 'She was appointed Commander of the Royal Security Command as a General in October 2017.',\n", " 'No such claim exists for 2017; she was promoted to General in December 2016.',\n", " 'Appointed a full General.',\n", " 'Promoted to a full General in December 2017.']],\n", " 'noncontradiction': 0.96347487},\n", " {'claim': 'Queen Suthida Bajrasudhabimalalakshana became a consort to King Vajiralongkorn.',\n", " 'removed': True,\n", " 'claim_questions': [\"What exact declaration details Queen Suthida Bajrasudhabimalalakshana's assumption of a regal spousal role alongside King Vajiralongkorn?\"],\n", " 'claim_qa_responses': ['Royal Decree of May 1, 2019.'],\n", " 'claim_qa_sampled_responses': [['Royal proclamation on May 1, 2019, declaring her Queen Consort.',\n", " 'Royal Gazette, May 1, 2019, announcing her marriage to King Vajiralongkorn and elevation to Queen.',\n", " 'Royal Command of May 1, 2019.',\n", " 'Royal Gazette declaration, May 1, 2019.',\n", " 'Royal decree announcing her marriage and elevation to Queen, May 1, 2019, published in the *Royal Gazette*.']],\n", " 'noncontradiction': 0.81256753},\n", " {'claim': 'King Vajiralongkorn is also known as Rama X.',\n", " 'removed': True,\n", " 'claim_questions': ['Provide the full statement that identifies King Vajiralongkorn by his most commonly used regnal name.'],\n", " 'claim_qa_responses': ['Maha Vajiralongkorn Phra Vajiraklaochaoyuhua.'],\n", " 'claim_qa_sampled_responses': [['Maha Vajiralongkorn Phra Vajiraklaochaoyuhua',\n", " 'King Rama X.',\n", " 'King Rama X',\n", " 'Maha Vajiralongkorn Phra Vajiraklaochaoyuhua.',\n", " 'Maha Vajiralongkorn Phra Vajiraklaochaoyuhua.']],\n", " 'noncontradiction': 0.7375492095947266},\n", " {'claim': 'Queen Suthida Bajrasudhabimalalakshana married King Vajiralongkorn on May 1, 2019.',\n", " 'removed': False,\n", " 'claim_questions': ['State the full and accurate declaration regarding the marriage of Queen Suthida Bajrasudhabimalalakshana to King Vajiralongkorn on May 1, 2019.'],\n", " 'claim_qa_responses': ['Queen Suthida Bajrasudhabimalalakshana married King Vajiralongkorn on May 1, 2019.'],\n", " 'claim_qa_sampled_responses': [['Queen Suthida Bajrasudhabimalalakshana married King Vajiralongkorn on May 1, 2019.',\n", " 'Queen Suthida Bajrasudhabimalalakshana married King Vajiralongkorn on May 1, 2019.',\n", " 'They officially married on May 1, 2019, making her Queen Suthida Bajrasudhabimalalakshana.',\n", " 'Suthida was declared Queen Consort and married to King Vajiralongkorn on May 1, 2019.',\n", " 'Queen Suthida Bajrasudhabimalalakshana married King Vajiralongkorn on May 1, 2019.']],\n", " 'noncontradiction': 0.9993778228759765},\n", " {'claim': \"Queen Suthida Bajrasudhabimalalakshana became Queen just days before King Vajiralongkorn's official coronation.\",\n", " 'removed': False,\n", " 'claim_questions': [\"How did the timing of Queen Suthida Bajrasudhabimalalakshana becoming Queen relate to King Vajiralongkorn's official coronation?\"],\n", " 'claim_qa_responses': ['Shortly before.'],\n", " 'claim_qa_sampled_responses': [['Days before.',\n", " 'Days before.',\n", " 'Days before.',\n", " 'She was appointed Queen days *before* his official coronation.',\n", " 'She was proclaimed Queen days before his coronation.']],\n", " 'noncontradiction': 0.983033},\n", " {'claim': 'Queen Suthida Bajrasudhabimalalakshana is an influential figure in the Thai monarchy.',\n", " 'removed': False,\n", " 'claim_questions': [\"Which statement about Queen Suthida Bajrasudhabimalalakshana's role in the Thai monarchy declares her to be an influential figure?\"],\n", " 'claim_qa_responses': ['\"She holds the rank of General in the Royal Thai Army.\"'],\n", " 'claim_qa_sampled_responses': [['Key figure.',\n", " \"Commander of the King's Royal Guard.\",\n", " 'She plays a pivotal role in the monarchy.',\n", " 'She is an influential figure in the Thai monarchy.',\n", " '\"Influential figure\" implies active participation or significant impact.']],\n", " 'noncontradiction': 0.9564784}]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# View fine-grained claim data for a response\n", "result_df.claims_data[0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can examine a particular claim in the response that was removed because its confidence score was too low. Let's see how this is reflected in the original vs. the refined response. " ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\n",
       "
\n" ], "text/plain": [ "\u001b[1;30mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
                                            Response Refinement Example                                            \n",
       "
\n" ], "text/plain": [ " \u001b[1;30mResponse Refinement Example\u001b[0m \n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\n",
       "
\n" ], "text/plain": [ "\u001b[1;30mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n",
       "
\n" ], "text/plain": [ "\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Original Response โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n",
       "โ”‚ Queen Suthida Bajrasudhabimalalakshana is the current Queen of Thailand. Born Suthida Tidjai, she began her     โ”‚\n",
       "โ”‚ career as a flight attendant for Thai Airways International. She later joined the Royal Thai Army, rising       โ”‚\n",
       "โ”‚ through its ranks, and served in the Royal Security Command. In 2017, she was made a full General. She became a โ”‚\n",
       "โ”‚ consort to King Vajiralongkorn (Rama X) and married him on May 1, 2019, becoming Queen just days before his     โ”‚\n",
       "โ”‚ official coronation. She is an influential figure in the Thai monarchy.                                         โ”‚\n",
       "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n",
       "
\n" ], "text/plain": [ "\u001b[33mโ•ญโ”€\u001b[0m\u001b[33mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[33m \u001b[0m\u001b[1;33mOriginal Response\u001b[0m\u001b[33m \u001b[0m\u001b[33mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[33mโ”€โ•ฎ\u001b[0m\n", "\u001b[33mโ”‚\u001b[0m Queen Suthida Bajrasudhabimalalakshana is the current Queen of Thailand. Born Suthida Tidjai, she began her \u001b[33mโ”‚\u001b[0m\n", "\u001b[33mโ”‚\u001b[0m career as a flight attendant for Thai Airways International. She later joined the Royal Thai Army, rising \u001b[33mโ”‚\u001b[0m\n", "\u001b[33mโ”‚\u001b[0m through its ranks, and served in the Royal Security Command. In 2017, she was made a full General. She became a \u001b[33mโ”‚\u001b[0m\n", "\u001b[33mโ”‚\u001b[0m consort to King Vajiralongkorn (Rama X) and married him on May 1, 2019, becoming Queen just days before his \u001b[33mโ”‚\u001b[0m\n", "\u001b[33mโ”‚\u001b[0m official coronation. She is an influential figure in the Thai monarchy. \u001b[33mโ”‚\u001b[0m\n", "\u001b[33mโ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Low-Confidence Claims to be Removed โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n",
       "โ”‚ โ€ข Queen Suthida Bajrasudhabimalalakshana was born Suthida Tidjai.                                               โ”‚\n",
       "โ”‚ โ€ข Queen Suthida Bajrasudhabimalalakshana joined the Royal Thai Army.                                            โ”‚\n",
       "โ”‚ โ€ข Queen Suthida Bajrasudhabimalalakshana rose through the ranks of the Royal Thai Army.                         โ”‚\n",
       "โ”‚ โ€ข Queen Suthida Bajrasudhabimalalakshana served in the Royal Security Command.                                  โ”‚\n",
       "โ”‚ โ€ข Queen Suthida Bajrasudhabimalalakshana became a consort to King Vajiralongkorn.                               โ”‚\n",
       "โ”‚ โ€ข King Vajiralongkorn is also known as Rama X.                                                                  โ”‚\n",
       "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n",
       "
\n" ], "text/plain": [ "\u001b[31mโ•ญโ”€\u001b[0m\u001b[31mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[31m \u001b[0m\u001b[1;31mLow-Confidence Claims to be Removed\u001b[0m\u001b[31m \u001b[0m\u001b[31mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[31mโ”€โ•ฎ\u001b[0m\n", "\u001b[31mโ”‚\u001b[0m โ€ข Queen Suthida Bajrasudhabimalalakshana was born Suthida Tidjai. \u001b[31mโ”‚\u001b[0m\n", "\u001b[31mโ”‚\u001b[0m โ€ข Queen Suthida Bajrasudhabimalalakshana joined the Royal Thai Army. \u001b[31mโ”‚\u001b[0m\n", "\u001b[31mโ”‚\u001b[0m โ€ข Queen Suthida Bajrasudhabimalalakshana rose through the ranks of the Royal Thai Army. \u001b[31mโ”‚\u001b[0m\n", "\u001b[31mโ”‚\u001b[0m โ€ข Queen Suthida Bajrasudhabimalalakshana served in the Royal Security Command. \u001b[31mโ”‚\u001b[0m\n", "\u001b[31mโ”‚\u001b[0m โ€ข Queen Suthida Bajrasudhabimalalakshana became a consort to King Vajiralongkorn. \u001b[31mโ”‚\u001b[0m\n", "\u001b[31mโ”‚\u001b[0m โ€ข King Vajiralongkorn is also known as Rama X. \u001b[31mโ”‚\u001b[0m\n", "\u001b[31mโ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Refined Response โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n",
       "โ”‚ Queen Suthida Bajrasudhabimalalakshana, the current and influential Queen of Thailand, began her career as a    โ”‚\n",
       "โ”‚ flight attendant for Thai Airways International. Her diverse background also includes a military role, as she   โ”‚\n",
       "โ”‚ was made a full General in 2017. She officially married King Vajiralongkorn on May 1, 2019, becoming Queen just โ”‚\n",
       "โ”‚ days before his official coronation.                                                                            โ”‚\n",
       "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n",
       "
\n" ], "text/plain": [ "\u001b[32mโ•ญโ”€\u001b[0m\u001b[32mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[32m \u001b[0m\u001b[1;32mRefined Response\u001b[0m\u001b[32m \u001b[0m\u001b[32mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[32mโ”€โ•ฎ\u001b[0m\n", "\u001b[32mโ”‚\u001b[0m Queen Suthida Bajrasudhabimalalakshana, the current and influential Queen of Thailand, began her career as a \u001b[32mโ”‚\u001b[0m\n", "\u001b[32mโ”‚\u001b[0m flight attendant for Thai Airways International. Her diverse background also includes a military role, as she \u001b[32mโ”‚\u001b[0m\n", "\u001b[32mโ”‚\u001b[0m was made a full General in 2017. She officially married King Vajiralongkorn on May 1, 2019, becoming Queen just \u001b[32mโ”‚\u001b[0m\n", "\u001b[32mโ”‚\u001b[0m days before his official coronation. \u001b[32mโ”‚\u001b[0m\n", "\u001b[32mโ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display_response_refinement(original_text=result_df.response[0], claims_data=result_df.claims_data[0], refined_text=result_df.refined_response[0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. Evaluate Hallucination Detection Performance" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To evaluate hallucination detection performance, we 'grade' the atomic claims in the responses against an answer key. Here, we use UQLM's out-of-the-box `FactScoreGrader`, which can be used with [LangChain Chat Model](https://js.langchain.com/docs/integrations/chat/). **If you are using your own prompts/questions, be sure to update the grading method accordingly**." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "tags": [] }, "outputs": [], "source": [ "# set up the LLM grader\n", "grader = FactScoreGrader(llm=gemini_flash)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Before grading, we need to have claims formatted in list of lists where each interior list corresponds to a generated response. " ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "tags": [] }, "outputs": [], "source": [ "# Convert claims to list of lists\n", "claims_data_lists = claims_dicts_to_lists(result_df.claims_data.tolist())" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "tags": [] }, "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", "
promptresponsenoncontradictionclaims_datarefined_responserefined_noncontradictionclaim_gradesanswer
0Tell me a bio of Suthida within 100 words.\\nQueen Suthida Bajrasudhabimalalakshana is the ...0.872727[{'claim': 'Queen Suthida Bajrasudhabimalalaks...Queen Suthida Bajrasudhabimalalakshana, the cu...0.985608[True, True, True, True, False, False, True, F...Suthida Bajrasudhabimalalakshana (Thai: เธชเธกเน€เธ”เน‡เธˆ...
1Tell me a bio of Miguel รngel Fรฉlix Gallardo w...Miguel รngel Fรฉlix Gallardo, known as \"El Padr...0.922575[{'claim': 'Miguel รngel Fรฉlix Gallardo was kn...Miguel รngel Fรฉlix Gallardo, famously known as...0.973158[True, True, True, True, True, True, True, Tru...Miguel รngel Fรฉlix Gallardo (born January 8, 1...
2Tell me a bio of Iggy Azalea within 100 words.\\nAmethyst Amelia Kelly, known professionally as...0.895390[{'claim': 'Amethyst Amelia Kelly is known pro...Amethyst Amelia Kelly, known professionally as...0.986233[True, True, True, False, True, True, True, Tr...Amethyst Amelia Kelly (born 7 June 1990), know...
3Tell me a bio of Fernando da Costa Novaes with...Fernando da Costa Novaes (1942-2004) was a hig...0.797684[{'claim': 'Fernando da Costa Novaes was born ...Fernando da Costa Novaes was a highly influent...0.966738[False, True, False, False, False, False, Fals...Fernando da Costa Novaes (April 6, 1927 โ€“ Marc...
4Tell me a bio of Jan Zamoyski within 100 words.\\nJan Zamoyski (1542โ€“1605) was a preeminent Poli...0.947813[{'claim': 'Jan Zamoyski was born in 1542.', '...Jan Zamoyski, born in 1542 and dying in 1605, ...0.978016[True, True, True, True, True, True, True, Tru...Jan Sariusz Zamoyski (Latin: Ioannes Zamoyski ...
\n", "
" ], "text/plain": [ " prompt \\\n", "0 Tell me a bio of Suthida within 100 words.\\n \n", "1 Tell me a bio of Miguel รngel Fรฉlix Gallardo w... \n", "2 Tell me a bio of Iggy Azalea within 100 words.\\n \n", "3 Tell me a bio of Fernando da Costa Novaes with... \n", "4 Tell me a bio of Jan Zamoyski within 100 words.\\n \n", "\n", " response noncontradiction \\\n", "0 Queen Suthida Bajrasudhabimalalakshana is the ... 0.872727 \n", "1 Miguel รngel Fรฉlix Gallardo, known as \"El Padr... 0.922575 \n", "2 Amethyst Amelia Kelly, known professionally as... 0.895390 \n", "3 Fernando da Costa Novaes (1942-2004) was a hig... 0.797684 \n", "4 Jan Zamoyski (1542โ€“1605) was a preeminent Poli... 0.947813 \n", "\n", " claims_data \\\n", "0 [{'claim': 'Queen Suthida Bajrasudhabimalalaks... \n", "1 [{'claim': 'Miguel รngel Fรฉlix Gallardo was kn... \n", "2 [{'claim': 'Amethyst Amelia Kelly is known pro... \n", "3 [{'claim': 'Fernando da Costa Novaes was born ... \n", "4 [{'claim': 'Jan Zamoyski was born in 1542.', '... \n", "\n", " refined_response \\\n", "0 Queen Suthida Bajrasudhabimalalakshana, the cu... \n", "1 Miguel รngel Fรฉlix Gallardo, famously known as... \n", "2 Amethyst Amelia Kelly, known professionally as... \n", "3 Fernando da Costa Novaes was a highly influent... \n", "4 Jan Zamoyski, born in 1542 and dying in 1605, ... \n", "\n", " refined_noncontradiction \\\n", "0 0.985608 \n", "1 0.973158 \n", "2 0.986233 \n", "3 0.966738 \n", "4 0.978016 \n", "\n", " claim_grades \\\n", "0 [True, True, True, True, False, False, True, F... \n", "1 [True, True, True, True, True, True, True, Tru... \n", "2 [True, True, True, False, True, True, True, Tr... \n", "3 [False, True, False, False, False, False, Fals... \n", "4 [True, True, True, True, True, True, True, Tru... \n", "\n", " answer \n", "0 Suthida Bajrasudhabimalalakshana (Thai: เธชเธกเน€เธ”เน‡เธˆ... \n", "1 Miguel รngel Fรฉlix Gallardo (born January 8, 1... \n", "2 Amethyst Amelia Kelly (born 7 June 1990), know... \n", "3 Fernando da Costa Novaes (April 6, 1927 โ€“ Marc... \n", "4 Jan Sariusz Zamoyski (Latin: Ioannes Zamoyski ... " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# grade original responses against the answer key using the grader\n", "result_df[\"claim_grades\"] = await grader.grade_claims(claim_sets=claims_data_lists[\"claim\"], answers=factscore[\"wikipedia_text\"].to_list())\n", "result_df[\"answer\"] = factscore[\"wikipedia_text\"]\n", "result_df.head(5)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Baseline LLM accuracy: 0.6322751322751323\n" ] } ], "source": [ "all_claim_scores, all_claim_grades = [], []\n", "for i in range(len(result_df)):\n", " all_claim_scores.extend(claims_data_lists[\"noncontradiction\"][i])\n", " all_claim_grades.extend(result_df[\"claim_grades\"][i])\n", "\n", "print(f\"\"\"Baseline LLM accuracy: {np.mean(all_claim_grades)}\"\"\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 3.1 Claim-Level Hallucination Detection AUROC" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To evaluate fine-grained hallucination detection performance, we compute AUROC of claim-level hallucination detection. Below, we plot the ROC curve and report these results." ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "tags": [] }, "outputs": [], "source": [ "from sklearn.metrics import roc_curve, roc_auc_score\n", "\n", "fpr, tpr, thresholds = roc_curve(y_true=all_claim_grades, y_score=all_claim_scores)\n", "roc_auc = roc_auc_score(y_true=all_claim_grades, y_score=all_claim_scores)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "tags": [] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "plt.figure()\n", "plt.plot(fpr, tpr, color=\"darkorange\", lw=2, label=f\"ROC curve (AUC = {roc_auc:.2f})\")\n", "plt.plot([0, 1], [0, 1], color=\"navy\", lw=2, linestyle=\"--\")\n", "plt.xlim([0.0, 1.0])\n", "plt.ylim([0.0, 1.05])\n", "plt.xlabel(\"False Positive Rate\")\n", "plt.ylabel(\"True Positive Rate\")\n", "plt.title(\"Receiver Operating Characteristic (ROC) Curve\")\n", "plt.legend(loc=\"lower right\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 3.2 Gains from Uncertainty-Aware Decoding" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lastly, we evaluate the gains from uncertainty-aware decoding (UAD) by measuring the factual precision over claims at various filtering thresholds. " ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "tags": [] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/MAAAMrCAYAAAAFkcLhAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAyJhJREFUeJzs3Xt8zvX/x/Hnde1o7GBsbIw5UzmELCUJ5VTfHL7lmENSiYp1kF8h6Rup5NvRt5pTESl9+UZSk/oWOQyVYg5hOYwxtpl2vD6/P67vLi7b2Ga7rn3mcb/ddrPrc7pen9emPK/P+/P+WAzDMAQAAAAAAEzD6u4CAAAAAABA8RDmAQAAAAAwGcI8AAAAAAAmQ5gHAAAAAMBkCPMAAAAAAJgMYR4AAAAAAJMhzAMAAAAAYDKEeQAAAAAATIYwDwAAAACAyRDmAQBwM4vFon//+99uee9OnTpp3LhxRd5+/fr1slgsOnPmTJnV5ArvvfeeIiIiZLVaNXv2bD3//PNq1arVJfcZPny4evfu7ZL6ylJRzrUslEb/5s+fr6CgoEtu467zAwBXI8wDwFXocv+ojoyM1OzZswtcd/DgQVksFnl4eOjIkSNO644dOyZPT09ZLBYdPHjwsnV8/PHH8vDw0JgxY4pRPYoqKytLM2fOVMuWLeXn56fq1avr5ptv1rx585SdnV2iY9500006duyYAgMDS7nasqm3IKmpqRo7dqwmTJigI0eO6MEHH9STTz6p2NjYUnsPd8j7oOVSX+vXr3d3mQCAUkKYBwCUSK1atbRw4UKnZQsWLFCtWrWKfIyYmBg9/fTT+vjjj5WRkVHaJRZLVlaWW9+/tGVlZalbt26aMWOGHnzwQW3YsEGbN2/WmDFj9Oabb+q3334r0XG9vb1Vs2ZNWSwWU9RbkISEBGVnZ6tXr14KCwuTn5+fqlSpomrVqpXae7hD3gcteV/33nuvunfv7rTspptuKtGxK9rfDwCoCAjzAIASGTZsmObNm+e0bN68eRo2bFiR9j9w4IA2bNigZ555Ro0bN9by5cvzbTN37lxde+218vHxUVhYmMaOHetYd+bMGT300EOqUaOGfH19dd111+mLL76QVPAw29mzZysyMtLxOm90wj/+8Q+Fh4erSZMmkqQPP/xQbdu2lb+/v2rWrKlBgwbpxIkTTsf67bffdOeddyogIED+/v665ZZbtH//fn3//ffy8vJSYmKi0/bjxo3TLbfccsl+HDt2TD169FClSpVUv359ffrpp451nTt3djp3SUpKSpK3t3ehV5Nnz56t77//XrGxsRozZoxatWql+vXra9CgQdq0aZMaNWpU4H6XO/+Lh9nnDXv+4osv1KRJE/n5+envf/+7zp07pwULFigyMlJVq1bVY489ptzc3ELPv6j1ZmZm6rHHHlNoaKh8fX3VoUMHbdmyJV99sbGxatu2rfz8/HTTTTcpPj7eUW/z5s0lSfXr13eMIrn4dyY3N1fR0dEKCgpStWrV9PTTT8swDKeabTabpk+frnr16qlSpUpq2bKl08/tcrXk+c9//qMbbrhBvr6+ql69uvr06eNYl5mZqSeffFK1atVS5cqVFRUVVejV9bwPWvK+KlWqJB8fH6dl3t7eTj/ryMhIBQYGasCAAUpLS3Os69Spk8aOHatx48apevXq6tatmyRp586d6tGjh6pUqaIaNWrovvvu08mTJx37ffrpp2revLkqVaqkatWqqWvXrkpPT3eq89VXX1VYWJiqVaumMWPGOI26OH36tIYOHaqqVavKz89PPXr00N69ews83zwzZsxQjRo15O/vr5EjR7r9g0EAcBXCPACgRP72t7/p9OnT+uGHHyRJP/zwg06fPq277rqrSPvPmzdPvXr1UmBgoIYMGaKYmBin9e+++67GjBmjBx98UL/++qtWrlyphg0bSrKHqB49eujHH3/URx99pN9//10zZsyQh4dHsc4hNjZW8fHx+vrrrx0fBGRnZ2vatGn6+eef9e9//1sHDx7U8OHDHfscOXJEHTt2lI+Pj9atW6e4uDjdf//9ysnJUceOHVW/fn19+OGHju2zs7O1aNEi3X///ZesZdKkSerXr59+/vlnDR48WAMGDNCuXbskSQ888IAWL16szMxMx/YfffSRatWqpc6dOxd4vEWLFqlr1666/vrr863z8vJS5cqVC9zvcudfkHPnzumNN97QkiVLtGbNGq1fv159+vTR6tWrtXr1an344Yf617/+5RR0S1rv008/rc8++0wLFizQtm3b1LBhQ3Xr1k3JyclO+zz77LN67bXXtHXrVnl6ejr6379/f33zzTeSpM2bN+vYsWOKiIjI956vvfaa5s+fr7lz5+qHH35QcnKyPv/8c6dtpk+froULF2rOnDn6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Y5GOERMTowEDBqhy5coFrj9+/LhWrVqlBQsW5Fs3Y8YMTZs2TXXq1NGgQYM0fvx4eXoW3JLMzExlZmY6XqempkqSbDabbDZbkWotazabTYZhlJt6rgb03D3ou+vRc9ej565Hz12PnrsHfXc9eu56Zu55UWt2a5g/efKkcnNzVaNGDaflNWrU0O7duy+7/+bNm7Vz507FxMQUus2CBQvk7++vvn37Oi1/7LHH1Lp1awUHB2vDhg2aOHGijh07plmzZhV4nOnTp2vq1Kn5liclJSkjI+OytbqCzWZTSkqKDMOQ1VoupkOo8Oi5e9B316PnrkfPXY+eux49dw/67nr03PXM3PO0tLQibef2YfZXIiYmRs2bN1e7du0K3Wbu3LkaPHiwfH19nZZHR0c7vm/RooW8vb310EMPafr06fLx8cl3nIkTJzrtk5qaqoiICIWEhCggIKAUzubK2Ww2WSwWhYSEmO4X1qzouXvQd9ej565Hz12PnrsePXcP+u569Nz1zNzzi7NrYdwa5qtXry4PDw8dP37cafnx48cvey97enq6lixZohdeeKHQbf773/8qPj5eS5cuvWwtUVFRysnJ0cGDB9WkSZN86318fAoM+VartVz9clgslnJXU0VHz92DvrsePXc9eu569Nz16Ll70HfXo+euZ9aeF7Vet56Vt7e32rRpo9jYWMcym82m2NhYtW/f/pL7Llu2TJmZmRoyZEih28TExKhNmzZq2bLlZWvZsWOHrFZrgTPoAwAAAABQnrh9mH10dLSGDRumtm3bql27dpo9e7bS09Mds9sPHTpUtWrV0vTp0532i4mJUe/evVWtWrUCj5uamqply5bptddey7du48aN2rRpk2677Tb5+/tr48aNGj9+vIYMGaKqVauW/kkCAAAAAFCK3B7m+/fvr6SkJE2ePFmJiYlq1aqV1qxZ45gULyEhId8wg/j4eP3www9au3ZtocddsmSJDMPQwIED863z8fHRkiVL9PzzzyszM1P16tXT+PHjne6JBwAAAACgvLIYhmG4uwgzSk1NVWBgoFJSUsrVBHgnTpxQaGio6e4LMSt67h703fXouevRc9ej565Hz92DvrsePXc9M/e8qFnTXGcFAAAAAAAI8wAAAAAAmA1hHgAAAAAAkyHMAwAAAABgMoR5AAAAAABMhjAPAAAAAIDJEOYBAAAAADAZwjwAAAAAACZDmAcAAAAAwGQI8wAAAAAAmAxhHgAAAAAAkyHMAwAAAABgMoR5AAAAAABMhjAPAAAAAIDJEOYBAAAAADAZwjwAAAAAACZDmAcAAAAAwGQI8wAAAAAAmAxhHgAAAAAAkyHMAwAAAABgMoR5AAAAAABMhjAPAAAAAIDJEOYBAAAAADAZwjwAAAAAACZDmAcAAAAAwGQI8wAAAAAAmAxhHgAAAAAAkyHMAwAAAABgMoR5AAAAAABMhjAPAAAAAIDJEOYBAAAAADAZwjwAAAAAACZDmAcAAAAAwGQI8wAAAAAAmAxhHgAAAAAAkyHMAwAAAABgMoR5AAAAAABMhjAPAAAAAIDJEOYBAAAAADAZwjwAAAAAACZDmAcAAAAAwGQI8wAAAAAAmAxhHgAAAAAAkyHMAwAAAABgMuUizL/99tuKjIyUr6+voqKitHnz5kK37dSpkywWS76vXr16ObYZPnx4vvXdu3d3Ok5ycrIGDx6sgIAABQUFaeTIkTp79myZnSMAAAAAAKXF7WF+6dKlio6O1pQpU7Rt2za1bNlS3bp104kTJwrcfvny5Tp27Jjja+fOnfLw8NA999zjtF337t2dtvv444+d1g8ePFi//fabvv76a33xxRf6/vvv9eCDD5bZeQIAAAAAUFrcHuZnzZqlUaNGacSIEbrmmms0Z84c+fn5ae7cuQVuHxwcrJo1azq+vv76a/n5+eUL8z4+Pk7bVa1a1bFu165dWrNmjT744ANFRUWpQ4cOevPNN7VkyRIdPXq0TM8XAAAAAIAr5enON8/KylJcXJwmTpzoWGa1WtW1a1dt3LixSMeIiYnRgAEDVLlyZafl69evV2hoqKpWrarOnTvrxRdfVLVq1SRJGzduVFBQkNq2bevYvmvXrrJardq0aZP69OmT730yMzOVmZnpeJ2amipJstlsstlsRT/pMmSz2WQYRrmp52pAz92DvrsePXc9eu569Nz16Ll70HfXo+euZ+aeF7Vmt4b5kydPKjc3VzVq1HBaXqNGDe3evfuy+2/evFk7d+5UTEyM0/Lu3burb9++qlevnvbv36//+7//U48ePbRx40Z5eHgoMTFRoaGhTvt4enoqODhYiYmJBb7X9OnTNXXq1HzLk5KSlJGRcdlaXcFmsyklJUWGYchqdfugi6sCPXcP+u569Nz16Lnr0XPXo+fuQd9dj567npl7npaWVqTt3Brmr1RMTIyaN2+udu3aOS0fMGCA4/vmzZurRYsWatCggdavX68uXbqU6L0mTpyo6Ohox+vU1FRFREQoJCREAQEBJTuBUmaz2WSxWBQSEmK6X1izoufuQd9dj567Hj13PXruevTcPei769Fz1zNzz319fYu0nVvDfPXq1eXh4aHjx487LT9+/Lhq1qx5yX3T09O1ZMkSvfDCC5d9n/r166t69erat2+funTpopo1a+abYC8nJ0fJycmFvq+Pj498fHzyLbdareXql8NisZS7mio6eu4e9N316Lnr0XPXo+euR8/dg767Hj13PbP2vKj1uvWsvL291aZNG8XGxjqW2Ww2xcbGqn379pfcd9myZcrMzNSQIUMu+z6HDx/WqVOnFBYWJklq3769zpw5o7i4OMc269atk81mU1RUVAnPBgAAAAAA13D7RxTR0dF6//33tWDBAu3atUujR49Wenq6RowYIUkaOnSo0wR5eWJiYtS7d2/HpHZ5zp49q6eeeko//fSTDh48qNjYWN19991q2LChunXrJklq1qyZunfvrlGjRmnz5s368ccfNXbsWA0YMEDh4eFlf9IAAAAAAFwBt98z379/fyUlJWny5MlKTExUq1attGbNGsekeAkJCfmGGcTHx+uHH37Q2rVr8x3Pw8NDv/zyixYsWKAzZ84oPDxcd9xxh6ZNm+Y0TH7RokUaO3asunTpIqvVqn79+umNN94o25MFAAAAAKAUuD3MS9LYsWM1duzYAtetX78+37ImTZrIMIwCt69UqZK++uqry75ncHCwFi9eXKw6AQAAAAAoD65omP2Fz10HAAAAAACuUaww/+WXX2rYsGGqX7++vLy85Ofnp4CAAN166636xz/+oaNHj5ZVnQAAAAAA4H+KNMz+888/14QJE5SWlqaePXtqwoQJCg8PV6VKlZScnKydO3fqm2++0bRp0zR8+HBNmzZNISEhZV07AAAAAAAOe/dKaWmSYUgZGdKRI5LFIvn7S40aubu60lWkMD9z5ky9/vrr6tGjR4HPvLv33nslSUeOHNGbb76pjz76SOPHjy/dSgEAAAAAKMTevVLjxvbvrVapTRspLk6y2ezL9uypWIG+SGF+48aNRTpYrVq1NGPGjCsqCAAAAACA4kpLc3598ZzpF683O7c/Zx4AAAAAgNJks1kU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wvypU6cUExNDmEe5lZMj/fFH/sC+e7eUmlr4fmFhUrNm9q+mTe1XnkePtq+zWg01aJCiM2d8HJOxjRvHcO+y0KiRfT6CCyce9PW9eiceBAAAwNXN7VNBvf3223rllVeUmJioli1b6s0331S7du0K3f7MmTN69tlntXz5ciUnJ6tu3bqaPXu2evbsKUmKjIzUoUOH8u33yCOP6O2335YkderUSd99953T+oceekhz5swpxTODu6SnS/Hx+YfH791b+D3oVqvUoIFzaM/7MzDQedtt28r+HFCwvMBus0knTthnprda3VsTAAAA4A5uDfNLly5VdHS05syZo6ioKM2ePVvdunVTfHy8QkND822flZWl22+/XaGhofr0009Vq1YtHTp0SEFBQY5ttmzZotzcXMfrnTt36vbbb9c999zjdKxRo0bphRdecLz28/Mr/RNEmUpKyh/Yd+2SEhIK36dSJeegnhfeGza0D2kvCoZ7AwAAAHA3t4b5WbNmadSoURoxYoQkac6cOVq1apXmzp2rZ555Jt/2c+fOVXJysjZs2CCv/z0EOjIy0mmbkJAQp9czZsxQgwYNdOuttzot9/PzU82aNUvxbFAWbDbp0KH8oX33bunUqcL3q149/1X2Zs3s97Jf6ZVchnsDAAAAcLcih/m+fftecv2ZM2eK9cZZWVmKi4vTxIkTHcusVqu6du2qjRs3FrjPypUr1b59e40ZM0YrVqxQSEiIBg0apAkTJsijgJnBsrKy9NFHHyk6OlqWi6bXXrRokT766CPVrFlTd911lyZNmnTJq/OZmZnKzMx0vE79303WNptNtrwHjLuZzWaTYRjlpp7iyMy0D4M/H9otio+3D5f/66+Cp0a3WAzVrWsP6/YvwxHeq1cv/L1Koz0NGuQdy6akJEMhITbHhwQmbL/pmPl33azouevRc9ej565Hz92DvrsePXc9M/e8qDUXOcwHXnzjcAHrhw4dWtTD6eTJk8rNzVWNGjWclteoUUO7d+8ucJ8//vhD69at0+DBg7V69Wrt27dPjzzyiLKzszVlypR82//73//WmTNnNHz4cKflgwYNUt26dRUeHq5ffvlFEyZMUHx8vJYvX15ovdOnT9fUqVPzLU9KSlJGRkYRzrjs2Ww2paSkyDAMWcvpjcQpKRbt2+epvXs9tXevh+P7Q4c8HBPIXczb21D9+jlq1ChHDRvmqlEj+/f16+eooM9f8u6ndgUz9Lwiou+uR89dj567Hj13PXruHvTd9ei565m552lpaUXarshhft68eSUuprTYbDaFhobqvffek4eHh9q0aaMjR47olVdeKTDMx8TEqEePHgoPD3da/uCDDzq+b968ucLCwtSlSxft379fDfIuuV5k4sSJio6OdrxOTU1VRESEQkJCFBAQUOA+rmaz2WSxWBQSEuLWX9i8R73lXWXfvdviGCKfmFj4A8gDA+1X1ps0kZo1MxxX3OvVkzw9PSSVv+eylZeeX23ou+vRc9ej565Hz12PnrsHfXc9eu56Zu65r69vkbZz2z3z1atXl4eHh44fP+60/Pjx44Xeyx4WFiYvLy+nIfXNmjVTYmKisrKy5O3t7Vh+6NAhffPNN5e82p4nKipKkrRv375Cw7yPj498CpghzWq1lqtfDovF4rKacnKk/fsLvp/9Uh8m1arlfB973tD4mjUtOn83ROGhv7xxZc9xHn13PXruevTc9ei569Fz96DvrkfPXc+sPS9qvW4L897e3mrTpo1iY2PVu3dvSfZPT2JjYzV27NgC97n55pu1ePFi2Ww2xwnu2bNHYWFhTkFeso8kCA0NVa9evS5by44dOyTZPyxAfunpeVfYnWeN37ev8Ee9eXjYZ4i/MLTnXWkvJwMZAAAAAMC03DqbfXR0tIYNG6a2bduqXbt2mj17ttLT0x2z2w8dOlS1atXS9OnTJUmjR4/WW2+9pccff1yPPvqo9u7dq5deekmPPfaY03FtNpvmzZunYcOGydPT+RT379+vxYsXq2fPnqpWrZp++eUXjR8/Xh07dlSLFi1cc+KlbO9e55nVjxwp/szqhmF/1NvFgX337ks/6s3PL39gz3vU20WfrwAAAAAASolbw3z//v2VlJSkyZMnKzExUa1atdKaNWsck+IlJCQ4DTGIiIjQV199pfHjx6tFixaqVauWHn/8cU2YMMHpuN98840SEhJ0//3353tPb29vffPNN44PDiIiItSvXz8999xzZXuyZWTvXqlxY/v3VqvUpo0UF3d+RvU9e5wD/YWPerswsO/aJSUnF/4+oaEFh/bata/8UW8AAAAAgOJxa5iXpLFjxxY6rH79+vX5lrVv314//fTTJY95xx13yDCMAtdFRETou+++K3ad5dXlJjr87DP7Y9/yAnt8vP3qfUEsFikyMn9gb9pUqlat1EsHAAAAAJSQ28M8So/NZtGePUFOj3ibODH/dj4+9qv5F4f2xo2lSpVcWDAAAAAAoEQI8xVMSorzYwxatJDatnUeIh8ZaZ+gDgAAAABgToT5CsRiMVSnTqoSEvxlGPYb2efNk1q3dnNhAAAAAIBSxdRlFYjFIoWG/nXBs9oBAAAAABURYd7k/P2vbD0AAAAAwHwYZm9yjRrZHz934XPmfX2L/5x5AAAAAIB5EOYrgLzAbrNJJ07YnwnPs98BAAAAoOIi8gEAAAAAYDKEeQAAAAAATIYwDwAAAACAyRDmAQAAAAAwGcI8AAAAAAAmQ5gHAAAAAMBkCPMAAAAAAJgMYR4AAAAAAJMhzAMAAAAAYDKEeQAAAAAATIYwDwAAAACAyRDmAQAAAAAwGcI8AAAAAAAmQ5gHAAAAAMBkCPMAAAAAAJgMYR4AAAAAAJMhzAMAAAAAYDKEeQAAAAAATIYwDwAAAACAyRDmAQAAAAAwGcI8AAAAAAAmQ5gHAAAAAMBkCPMAAAAAAJgMYR4AAAAAAJMhzAMAAAAAYDKEeQAAAAAATIYwDwAAAACAyRDmAQAAAAAwGcI8AAAAAAAmQ5gHAAAAAMBkCPMAAAAAAJgMYR4AAAAAAJMhzAMAAAAAYDKEeQAAAAAATIYwDwAAAACAyRDmAQAAAAAwGcI8AAAAAAAmQ5gHAAAAAMBk3B7m3377bUVGRsrX11dRUVHavHnzJbc/c+aMxowZo7CwMPn4+Khx48ZavXq1Y/3zzz8vi8Xi9NW0aVOnY2RkZGjMmDGqVq2aqlSpon79+un48eNlcn4AAAAAAJQ2t4b5pUuXKjo6WlOmTNG2bdvUsmVLdevWTSdOnChw+6ysLN1+++06ePCgPv30U8XHx+v9999XrVq1nLa79tprdezYMcfXDz/84LR+/Pjx+s9//qNly5bpu+++09GjR9W3b98yO08AAAAAAEqTpzvffNasWRo1apRGjBghSZozZ45WrVqluXPn6plnnsm3/dy5c5WcnKwNGzbIy8tLkhQZGZlvO09PT9WsWbPA90xJSVFMTIwWL16szp07S5LmzZunZs2a6aefftKNN95YSmcHAAAAAEDZcFuYz8rKUlxcnCZOnOhYZrVa1bVrV23cuLHAfVauXKn27dtrzJgxWrFihUJCQjRo0CBNmDBBHh4eju327t2r8PBw+fr6qn379po+fbrq1KkjSYqLi1N2dra6du3q2L5p06aqU6eONm7cWGiYz8zMVGZmpuN1amqqJMlms8lms5W8EaXIZrPJMIxyU8/VgJ67B313PXruevTc9ei569Fz96DvrkfPXc/MPS9qzW4L8ydPnlRubq5q1KjhtLxGjRravXt3gfv88ccfWrdunQYPHqzVq1dr3759euSRR5Sdna0pU6ZIkqKiojR//nw1adJEx44d09SpU3XLLbdo586d8vf3V2Jiory9vRUUFJTvfRMTEwutd/r06Zo6dWq+5UlJScrIyCjm2ZcNm82mlJQUGYYhq9Xt0yFcFei5e9B316PnrkfPXY+eux49dw/67nr03PXM3PO0tLQibefWYfbFZbPZFBoaqvfee08eHh5q06aNjhw5oldeecUR5nv06OHYvkWLFoqKilLdunX1ySefaOTIkSV+74kTJyo6OtrxOjU1VREREQoJCVFAQEDJT6oU2Ww2WSwWhYSEmO4X1qzouXvQd9ej565Hz12PnrsePXcP+u569Nz1zNxzX1/fIm3ntjBfvXp1eXh45JtF/vjx44Xe7x4WFiYvLy+nIfXNmjVTYmKisrKy5O3tnW+foKAgNW7cWPv27ZMk1axZU1lZWTpz5ozT1flLva8k+fj4yMfHJ99yq9Varn45LBZLuaupoqPn7kHfXY+eux49dz167nr03D3ou+vRc9cza8+LWq/bzsrb21tt2rRRbGysY5nNZlNsbKzat29f4D4333yz9u3b53QPwZ49exQWFlZgkJeks2fPav/+/QoLC5MktWnTRl5eXk7vGx8fr4SEhELfFwAAAACA8sStH1FER0fr/fff14IFC7Rr1y6NHj1a6enpjtnthw4d6jRB3ujRo5WcnKzHH39ce/bs0apVq/TSSy9pzJgxjm2efPJJfffddzp48KA2bNigPn36yMPDQwMHDpQkBQYGauTIkYqOjta3336ruLg4jRgxQu3bt2cmewAAAACAKbj1nvn+/fsrKSlJkydPVmJiolq1aqU1a9Y4JsVLSEhwGmIQERGhr776SuPHj1eLFi1Uq1YtPf7445owYYJjm8OHD2vgwIE6deqUQkJC1KFDB/30008KCQlxbPP666/LarWqX79+yszMVLdu3fTOO++47sQBAAAAALgCFsMwDHcXYUapqakKDAxU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GTJEktSvXz/9+eef2rdv3yXXeXl56dy5c5Kkc+fOydvbW7/88ot2796te++917UnBgAAAAAoFYR5k/jzzz8VFhYmT0/7nREWi0V16tRRQkLCJdfdfvvt8vf3V8uWLRUYGKjOnTsrOjpa//znP915OqawZs0atW3bVi1atNCNN96on3/+WZK0ZcsW3XzzzWrZsqVatWqldevWOfaZNm2arr32Wt144406dOiQY/nw4cP1448/uvwcAAAAAFRM3DNfwVmtVr3//vuO17Nnz1bv3r2Vk5OjQYMGKTMzU2PGjFHnzp3dWGX5c/r0aQ0ePFjff/+9rr32Wv33v//V4MGD9euvv6pPnz6aP3++unbtqj179qhr166Kj49Xdna2PvroI/3+++9atGiR3nzzTb366qv6+uuv5efnp5tvvtndpwUAAABJubm5ys7OdncZuEp5eXnJw8Pjio9DmDeJiIgIHTt2TDk5OfL09JRhGEpISFCdOnUUEBBQ6LoLHTp0SKtXr9aaNWs0bNgwPfjgg2rTpo1uvPFG/fbbb246s/Jp//79qlatmmOCwVtuuUUJCQnasmWLkpKS1LVrV0lS48aNFRQUpC+//FLdunVz/I8hPT1d3t7eOnfunKZNm6YvvvjCnadjGmvWrNFzzz2nrKws+fn56V//+pdatmypzZs367HHHlNmZqYyMjI0YsQIPf3005LsoyGWLFkif39/LV261DHXxPDhwzVq1Cg+RAEAAA6GYSgxMVFnzpxxdym4ygUFBalmzZqXneTuUkwX5r///nu98soriouL07Fjx/T555+rd+/ejvWGYWjKlCl6//33debMGd18881699131ahRI8c2ycnJevTRR/Wf//xHVqtV/fr10z//+U9VqVLFDWdUNKGhoWrdurU++ugjDR8+XJ999plq166thg0bStIl1+V5/PHH9frrr8tqtSo9PV0Wi8XxPZw1atRIp06d0oYNG3TTTTdp5cqVSktL0+HDhxUWFqZPPvlE9957r7Zs2aL4+HgdPHhQlStXVnR0tG688UbVrFlTCxYs0OTJk/XEE0/w+MIiKGw0xM6dO/Xggw/qhRde0N/+9jclJyeradOmuvPOO1W7dm1GQwAAgCLLC/KhoaHy8/O7oiAFlIRhGDp37pxOnDghSQoLCyvxsUwX5tPT09WyZUvdf//96tu3b771M2fO1BtvvKEFCxaoXr16mjRpkrp166bff/9dvr6+kqTBgwfr2LFj+vrrr5Wdna0RI0bowQcf1OLFi119OgV66KGHtGrVKiUmJqpbt27y9/fXvn379K9//UvDhw/XSy+9pICAAM2bN8+xz6XWSdLixYvVsmVLx5XmZ555RqNGjVJWVpYmTZrk0vMzg8DAQH366aeaOHGizp49q/bt2+uaa66Rp6enVqxYoQkTJmj69Om69tpr1aFDB8d8BY888ogeeeQRSVJcXJwOHz6s7t27a8yYMTpx4oRuueUWPfbYY+48tXKrsNEQ27Ztk8VicXyCnjfqITg4WB4eHoyGAAAARZKbm+sI8tWqVXN3ObiKVapUSZJ9kvPQ0NASD7m3GIZhlGZhrmSxWJyuzBuGofDwcD3xxBN68sknJUkpKSmqUaOG5s+frwEDBmjXrl265pprtGXLFrVt21aSfWhvz549dfjwYYWHhxf4XpmZmcrMzHS8Tk1NVUREhE6fPl3sq66nT0tnz5bghN2sShXpan2SXWZmpsLDw7Vp06Z8Ix6uvfZavfHGG+rSpYtjWU5Ojrp166ZFixZp1apVOnz4sKZMmaIuXbro/fffV/369V19CuVeSkqKGjZsqBUrVjhGQ/Tp00fLli1T/fr11adPHxmGoaSkJL377rsaOnSoJOndd9/V+++/7/h7/uqrr6pDhw66++673XxGAACgPMnIyNDBgwcVGRnpCFOAu/z111+O38e8i855UlNTVbVqVaWkpFwya5ruyvylHDhwQImJiY77mSX7FdaoqCht3LhRAwYM0MaNGxUUFOQI8pLUtWtXWa1Wbdq0SX369Cnw2NOnT9fUqVPzLU9KSlJGRkaRa0xLkxZ+ZFNmlvk+Q/HxtmjoEKv8/d1diWscP35cNWrUkCTNmDFDN910kwICAvTrr786ln/00Ufy9vbWdddd5xgqI0lvvfWWevXqJavVquPHjzuG0mRnZ+vPP/8s17d0uNN7772np556Sunp6Wrbtq0aN26s9PR0vfDCC5owYYL69u2rQ4cOqW/fvqpXr56aNGmifv36qV+/fpKkn3/+Wfv379djjz2mkSNH6uTJk4qKitIDDzzg5jMDAADulp2dLZvNptzcXOXk5Li7HFzlcnNzZbPZdOrUKXl5eTmtS0tLK9IxKlSYT0xMlCRH0MpTo0YNx7rExESFhoY6rff09FRwcLBjm4JMnDhR0dHRjtd5V+ZDQkKKdWU+M1M6dDhHXfpmqFqorcj7udupE1bFLveVt7enLmpfhfXcc8/phx9+UE5Ojm688UZ9+OGHCgoK0pw5c7R48WIZhqGmTZtq5cqVTr9z+/fv19atW7Vq1SpZLBY9/PDD6tevn7p27aqbbrpJt956qxvPqnzr06eP4wO1vNEQzZo104MPPqjly5dLss8f0b59e+3evVu33HKLY9+cnBzNmDHDMRqiTp06iomJUZcuXTRgwABGQxRizZo1mjx5smPSwXfffVctW7aUYRh64YUX9PHHH8vHx0fVq1dXbGysJOnhhx/Wxo0bFRISos8++0yBgYEyDEO9evXSm2++qQYNGrj5rAAAyC8jI0NpaWny9PR03CIJuIunp6esVquqVauW78r8xa8LPUZZFFYR+fj4yMfHJ99yq9Uqq9Va5ONYLJJhWFW9hhRW2zwTbuTVbbFYVYzTNbUPPvigwOXPP/+8nn/++UL3a9SokdasWeN4Xb16dX333XelXV6FdOzYMcckIP/4xz/UuXNntWnTRpUrV9b69evVuXNnnTx5Ups3b9YTTzzh9Hfv9ddf16BBgxQeHq6//vrL8XfTYrE4XsPZ6dOndd999zlNOnjfffdp586d+uc//6lff/1VO3fulLe3txITE2W1WrVz507t27dPv/76q1544QUtWrRIY8eO1fvvv6/OnTs7TTYKAEB5kvfvgryvCyUnu/Y22CpVpOBg171fWbv49uey8Pzzz+vf//63duzYUWbvIUn33XefmjVrpv/7v/8r8TEGDBigG264QU888USh2+T9HhaUJ4v679YKFeZr1qwpyT48+sJZAY8fP65WrVo5trlwOLRkv6KXnJzs2B8Vj6v/A12aKtp/7C9l8uTJ+u9//6ucnBy1b99eMTEx8vDw0CeffKKnnnpKOTk5ys7O1rhx49S+fXvHfvv379f69eu1evVqSdKQIUMc99vffPPNat68ubtOqVy71KSDr7zyitatWydvb29J5//76uXlpczMTNlsNqWnp6tmzZo6duyYPv74Y61du9Zt5wIAQEklJ0sTn7PpXIbrRs36+Vo1/UVrkf+Nl5SUpMmTJ2vVqlU6fvy4qlatqpYtW2ry5MkV5uk9n3/+uV5++WXt2rVLNptNderU0e23367Zs2dLkp588kk9+uijZVrDzz//rNWrV+vdd991LHv11Vc1c+ZMSdKECROcAvqmTZv0yCOPaNOmTU6jPZ577jl17NhRDzzwgAIDA8us3goV5uvVq6eaNWsqNjbWEd5TU1O1adMmjR49WpLUvn17nTlzRnFxcWrTpo0kad26dbLZbIqKinJX6ShD7vgPdGkq7n/sy4uSfIAyadL7Tq9TU+1fjRt31eefxzmtS0g4/72XVwP9619f6s8/85YE68MPvytw26K4Wj5AKewRjDt37tTx48e1YsUKffrpp5Kk6Oho9e/fX02aNNFtt92m1q1bq1GjRpoyZYruv/9+vfLKKwxZBACY0tmz0rkMm7r+PUPVXXAb7MkTVn3zqa/Oni36v+/69eunrKwsLViwQPXr19fx48cVGxurU6dOlW2xLhIbG6v+/fvrH//4h/72t7/JYrHo999/19dff+3YpkqVKmU+79Sbb76pe+65x/E+v/zyiyZPnqwvvvhChmHozjvv1B133KHmzZsrJydHDz/8sN577718/wa67rrr1KBBA3300UcaM2ZMmdVrun95nT17Vvv27XO8PnDggHbs2KHg4GDVqVNH48aN04svvqhGjRo5Hk0XHh7uGPLRrFkzde/eXaNGjdKcOXOUnZ2tsWPHasCAAYXOZA9zc/V/oEtTSf5jXx7wAYo5FPYIRsk+Yumvv/7Spk2bdPDgQd10001q2rSpWrZsqRdffFEvvviiJGnFihWKiIhQZGSkRowYodTUVN17773q37+/O08NAIBiqx5qU1htV0xSXbx/H505c0b//e9/tX79esfcS3Xr1lW7du2ctps1a5bmzZunP/74Q8HBwbrrrrs0c+ZMRzCdP3++xo0bp48++khPPPGE/vzzT/Xs2VMLFy7UsmXLNGXKFKWkpOi+++7T66+/7nhcWmRkpEaOHKnff/9dK1euVND/t3ff0VHU+xvHn00H0qgJmEAgdGnSIdKDIKgo/FQUEFFQL+EqoGBQBImhSrtSRBFpKsQCqBekiCIIKL0jveiVJCglkJDGzu8PDnvNJWAC2Vlmeb/OyTnM7MzOZx7XwGdn5vsNDtZrr712wyb1119/1csvv6yVK1fKw8NDzZo107/+9S9FRETkuv3XX3+tqKgoDRo0yLGucuXKOW7b/9/b7P/3UYmruRw/flyStGfPHg0aNEjr1q1TkSJFdN9992nSpEkqUaJErjVcvnxZn3/+uT7++GPHul9++UW1atVS69atJUm1atXSL7/8opo1a+rtt99W8+bN1aBBg1zf78EHH9TChQtp5v9qy5YtatWqlWP56qB0PXv21Jw5czR48GClpqbqueee07lz53Tvvfdq+fLlOQYRuPqMZ5s2beTh4aEuXbronXfeMf1cYC7zfkEXJGs2w3yBYh2tWrVy/E7NyMhQaGiomjZtKn9/f3Xv3l3Slb/Eo6KitHnzZtWuXduxb0pKisaPH68VK1Zo9OjRatGihbp3767atWvroYceYtqf61i+fLmGDh3qGHTwvffey5Hrd999p7Zt22rChAnq37+/JOmtt97SwoULFRAQoISEBJUrV06S9PTTT6tPnz5uc4slAOBaV69IL1myRI0bN851HC/pynPW77zzjsqXL6+jR4+qb9++Gjx4sKZPn+7YJi0tTe+8844WLlyoCxcuqHPnznrkkUcUHBysZcuW6ejRo+rSpYuioqJyfDH/9ttv67XXXtOIESO0YsUKvfTSS6pcubLatm17TR1ZWVlq166dmjRponXr1snLy0vx8fFq3769du3a5XiE769CQ0P1ySefaM+ePapRo0aecjl16pTjz6mpqWrfvr3jMcxz586pdevW6t27tyZNmqRLly7p1Vdf1WOPPabvvvsu1/fbtWuXzp8/n2PWs5o1a+rgwYM6efKkDMPQwYMHVaNGDR05ckSzZ8/W1q1bc30vSWrYsKFGjhypjIyM6/43u1WWa+Zbtmwpw7h+Q2az2RQXF6e4uLjrblOsWDF98sknzigPwF/wBcrt76+DDr711ltq3bq1KlasqCeeeELLly9X3759debMGW3atCnHt+WSFBsbq2HDhqlw4cJKTU11DOSSlZWlzMxMmvlcnD17Vt26dcsx6GC3bt20Z88eSdL58+cVGxurDh06OPZJSUnRRx99pH379unjjz/WlClTNH78eK1atUqFCxemkQcAN+fl5aU5c+Y47iyuW7euWrRooa5du6pWrVqO7a5+ASxd+SI+Pj5eL7zwQo5mPisrS++++65j5pn/+7//0/z585WUlCR/f39Vr15drVq10vfff5+jmY+KilJsbKykK1fM169fr0mTJuXazCckJMhut+uDDz5wXD2fPXu2goODtWbNGt13333X7PPPf/5T69atU82aNVWuXDk1btxY9913n7p163bdRvjqeD6GYahLly4KCgrSe++9J+nKNNH33HOPRo0a5dj+ww8/VHh4uA4ePKjKlStf834nTpyQp6dnjpnPqlWrplGjRjnOc/To0apWrZqio6M1btw4rVixQm+++aa8vb31r3/9S82bN3fsW6ZMGWVmZioxMdHxJXxBY3hnALiDDRs2TFWrVlXFihV14sQJzZo1S9KVv6yWL1+uGjVqqHnz5nr11Vdz3M63fv16Xbp0yfGXW0xMjKZNm6aaNWuqR48eTh3sxcpuNOigJPXr109Dhw5V8eLFHft4enrq8uXLysrKUmpqqnx8fJSWlqa33npLY8aMccl5WNHy5ctVv3591apVS40bN9bOnTslSb169VKtWrVUp04dNWjQwDEFoyQ9//zzqlmzplq3bq3z589LuvKPxvvvv19HjhxxyXkAuDN16dJFv//+u7766iu1b99ea9asUd26dTVnzhzHNt9++63atGmju+66SwEBAerRo4f+/PNPpaWlObYpXLhwjilkQ0JCFBERkeNZ9JCQkGsGDP/rwMNXl/fv359rrTt37tThw4cVEBDguKugWLFiSk9Pv+7vziJFimjp0qU6fPiwhg4dKn9/f7388stq2LBhjvpz89prr2njxo368ssvHRcSdu7cqe+//95xfH9/f1WtWlWSrlvDpUuX5Ovre83t+y+88IIOHDigAwcO6IUXXtDcuXMVEBCgJk2aqHfv3lq8eLEmTpyorl27KiMjw7Hf1Vr+rv5bYbkr8wCA3BXkoINScU2d+lWO1/46kGB4eJRGjIhyrPP2jtTnn2/Kddu8uNMHHTx+/LiOHj0qDw8PPfTQQ1q0aJFjnyJFimjgwIFq3LixQkNDNXfuXA0bNkwvv/yyAgMDXXg21nGjOyImTZqk4OBgSdL27dvVpk0b/fHHH9q3b58OHTrkmIZx/vz56tevnz744AO1atUqxz+GAcAMfn5+atu2rdq2bas33nhDvXv31vDhw/X000/r+PHjeuCBB/SPf/xDI0eOVLFixfTjjz/q2WefdTzWJV2ZleavbDZbruvs9pu/U/HixYuqV69ejmfPrypZsuQN942MjFRkZKR69+6t119/XZUrV1ZCQoJ69eqV6/YfffSRJk2apDVr1uiuu+7KUcODDz6osWPHXrPPX2c9+6sSJUooLS1NmZmZuT4KIEl//PGHRowYobVr1+rnn39W5cqVValSJVWqVElZWVk6ePCgYxalM2fO5OmcbwXNPAC4AQYdtIbrDTp48eJFTZw4UWvWrMl1v759+6pv376SpK1bt+q3335T+/btFRMTo+TkZDVr1kwvvviiiWdiLTe6I6Ju3bqO7a5efZeYhhHA7a969epasmSJpCt/N9jtdk2YMMExR/mnn35aYMf66aefrlmuVq1artvWrVtXCQkJKlWq1C196RwREeF4lC83GzduVO/evfXee++pcePG19TwxRdfKCIiIs+z7VydDW3fvn2OP/+vAQMGaMCAAQoLC9PmzZuVlZXleC07O1uXL192LO/Zs0dhYWHXHXCvINDMA4AbYNBB68ht0MGzZ8/q1KlTjn88/PHHH/rqq690+vRpjRw50rFvdna2XnnlFS1YsEAfffSRSpYsqWnTpqlVq1Z64IEHVKFCBVec0m3vRndE1K1bV7Gxsfrss8909uxZffHFF/Lw8GAaRgC3jT///FOPPvqonnnmGdWqVUsBAQHasmWLxo0bp06dOkmSKlasqKysLE2ZMkUPPvig1q9frxkzZhRYDevXr9e4ceP08MMPa9WqVfrss8+0dOnSXLft1q2b3n77bXXq1ElxcXEKCwvTiRMntGjRIg0ePFhhYWHX7PPmm28qLS1NHTp0ULly5XTu3Dm98847ysrKyvW5/MTERD3yyCPq2rWr2rVrp8TERElXHk0rWbKkYmJiNHPmTD3xxBMaPHiwihUrpsOHD2vhwoX64IMPHCP1/1XJkiVVt25d/fjjj7k286tWrdLBgwc1d+5cSVKDBg30yy+/6JtvvtGvv/4qT09PValSxbH9unXrch0foCDxtxEAuBEGHbz95Tbo4EsvvaSXXnrJsc3TTz+tOnXq5BjMSJImTJigJ598UqGhoY5BB6Urt0Re78oFrn9HxNWmfMyYMRozZoy+/fZbDR48WOvXr5ePjw/TMAJ3mD+SPWTG30lXjpN3/v7+atSokSZNmqQjR44oKytL4eHh6tOnj1577TVJUu3atTVx4kSNHTtWQ4YMUfPmzTV69Gg99dRTBVLzyy+/rC1btmjEiBEKDAzUxIkT1a5du1y3LVy4sNauXatXX31VnTt31oULF3TXXXepTZs2171S36JFC02bNk1PPfWUkpKSVLRoUd1zzz1auXJljgb5ql9++UVJSUma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hhT4saKionTgwIEc6w4ePKhy5cpJujIYXmhoqFavXu14PSUlRT///LOaNGlS4PUAAAAAAFDQTLnN/n9HJuzevbsiIyP1yCOPFPixBgwYoKZNm2rUqFF67LHHtGnTJr3//vt6//33JV35YqF///6Kj49XpUqVVL58eb3xxhsqU6aMHn744QKvBwAAAACAgmZKM5/b0PpNmjTRzp079csvvxTosRo0aKDFixdryJAhiouLU/ny5TV58mR169bNsc3gwYOVmpqq5557TufOndO9996r5cuX53mgAQAAAAAAXMm0eeZzExIScs2o8gXhgQce0AMPPHDd1202m+Li4hQXF1fgxwYAAAAAwNmc1szXrVtXq1evVtGiRXXPPffkeG7+f23bts1ZZQAAAAAA4Hac1sx36tTJMZUbz6IDAAAAAFBwnNbMDx8+PNc/AwAAAACAW2P6M/Pp6elKSEhQamqq2rZtq0qVKpldAgAAAAAAlubUZn7gwIHKysrSlClTJEmZmZlq3Lix9u3bp8KFC2vw4MFauXKlmjZt6swyAAAAAABwKx7OfPOVK1eqbdu2juWPP/5YJ0+e1KFDh3T27Fk9+uijGjlypDNLAAAAAADA7Ti1mT958qSqV6/uWF65cqX+7//+T+XKlZPNZtNLL72k7du3O7MEAAAAAADcjlObeQ8PDxmG4Vj+6aef1LhxY8dycHCwzp4968wSAAAAAABwO05t5qtVq6avv/5akrR3716dPHlSrVq1crx+4sQJhYSEOLMEAAAAAADcjlMHwBs8eLC6du2qpUuXau/everQoYPKly/veH3ZsmVq2LChM0sAAAAAAMDtOPXK/COPPKJly5apVq1aGjBggBISEnK8XrhwYfXt29eZJQAAAAAA4HacPs98mzZt1KZNm1xfGz58uLMPDwAAAACA23HqlXkAAAAAAFDwaOYBAAAAALAYmnkAAAAAACyGZh4AAAAAAIsxrZnPzs7Wt99+q/fee08XLlyQJP3++++6ePGiWSUAAAAAAOAWnD6avSSdOHFC7du318mTJ5WRkaG2bdsqICBAY8eOVUZGhmbMmGFGGQAAAAAAuAVTrsy/9NJLql+/vs6ePatChQo51j/yyCNavXq1GSUAAAAAAOA2TLkyv27dOm3YsEE+Pj451kdEROg///mPGSUAAAAAAOA2TLkyb7fbdfny5WvW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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_model_accuracies(scores=all_claim_scores, correct_indicators=all_claim_grades, title=\"LLM Accuracy by Claim Confidence Threshold\", display_percentage=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since, we have selected a threshold of 0.85, we can measure LLM accuracy with and without UAD." ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Baseline LLM factual precision: 0.6713091922005571\n", "UAD-Improved LLM factual precision: 0.7306273062730627\n" ] } ], "source": [ "thresh = 0.85\n", "filtered_grades, filtered_scores = [], []\n", "for grade, score in zip(all_claim_grades, all_claim_scores):\n", " if score > thresh:\n", " filtered_grades.append(grade)\n", " filtered_scores.append(score)\n", "\n", "print(f\"Baseline LLM factual precision: {np.mean(all_claim_grades)}\")\n", "print(f\"UAD-Improved LLM factual precision: {np.mean(filtered_grades)}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4. Scorer Definitions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Long-form uncertainty quantification implements a three-stage pipeline after response generation:\n", "\n", "1. Response Decomposition: The response $y$ is decomposed into units (claims or sentences), where a unit as denoted as $s$.\n", "\n", "2. Unit-Level Confidence Scoring: Confidence scores are computed using function $c_g(s;\\cdot) \\in [0, 1]$. Higher scores indicate greater likelihood of factual correctness. Units with scores below threshold $\\tau$ are flagged as potential hallucinations.\n", "\n", "3. Response-Level Aggregation: Unit scores are combined to provide an overall response confidence.\n", "\n", "The Claim-QA approach demonstrated here is adapted from [Farquhar et al., 2024](https://www.nature.com/articles/s41586-024-07421-0). It uses an LLM to convert each unit (sentence or claim) into a question for which that unit would be the answer. The method measures consistency across multiple responses to these questions, effectively applying standard black-box uncertainty quantification to those sampled responses to the unit questions. Formally, a claim-QA scorer $c_g(s;\\cdot)$ is defined as follows:\n", "\n", "$$c_g(s; y_0^{(s)}, \\mathbf{y}^{(s)}_{\\text{cand}}) = \\frac{1}{m} \\sum_{j=1}^m \\eta(y_0^{(s)}, y_j^{(s)})$$\n", "\n", "where $y_0^{(s)}$ is the original unit response, $\\mathbf{y}^{(s)}_{\\text{cand}} = {y_1^{(s)}, ..., y_m^{(s)}}$ are $m$ candidate responses to the unit's question, and $\\eta$ is a consistency function such as contradiction probability, cosine similarity, or BERTScore F1. Semantic entropy, which follows a slightly different functional form, can also be used to measure consistency." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "ยฉ 2025 CVS Health and/or one of its affiliates. All rights reserved." ] } ], "metadata": { "environment": { "kernel": "uqlm_my_test", "name": "workbench-notebooks.m126", "type": "gcloud", "uri": "us-docker.pkg.dev/deeplearning-platform-release/gcr.io/workbench-notebooks:m126" }, "kernelspec": { "display_name": "uqlm_my_test", "language": "python", "name": "uqlm_my_test" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.12" } }, "nbformat": 4, "nbformat_minor": 4 }