From 0a67a4d0caeeaa514426cdf96a60b53694a7793f Mon Sep 17 00:00:00 2001 From: theophile-oai Date: Fri, 23 May 2025 14:06:10 +0200 Subject: [PATCH 1/8] rft_cookbook material --- authors.yaml | 5 + examples/Reinforcement_Fine_Tuning.ipynb | 2135 ++++++++++++++++++++++ images/rft_dashboard_modelgrader2.png | Bin 0 -> 260163 bytes images/rft_hacking.png | Bin 0 -> 110341 bytes images/rft_string_grader.png | Bin 0 -> 106514 bytes registry.yaml | 10 + 6 files changed, 2150 insertions(+) create mode 100644 examples/Reinforcement_Fine_Tuning.ipynb create mode 100644 images/rft_dashboard_modelgrader2.png create mode 100644 images/rft_hacking.png create mode 100644 images/rft_string_grader.png diff --git a/authors.yaml b/authors.yaml index 3ce5795e3c..4d0a696afe 100644 --- a/authors.yaml +++ b/authors.yaml @@ -3,6 +3,11 @@ # You can optionally customize how your information shows up cookbook.openai.com over here. # If your information is not present here, it will be pulled from your GitHub profile. +theophile-openai: + name: "Theophile Sautory" + website: "https://www.linkedin.com/in/theophilesautory" + avatar: "https://avatars.githubusercontent.com/u/206768658?v=4" + robert-tinn: name: "Robert Tinn" website: "https://www.linkedin.com/in/robert-tinn/" diff --git a/examples/Reinforcement_Fine_Tuning.ipynb b/examples/Reinforcement_Fine_Tuning.ipynb new file mode 100644 index 0000000000..5ad63c7855 --- /dev/null +++ b/examples/Reinforcement_Fine_Tuning.ipynb @@ -0,0 +1,2135 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# **Reinforcement Fine-Tuning on the OpenAI Platform**\n", + "\n", + "*This guide is for developers and ML practitioners who already know their way around OpenAIʼs APIs, have a basic understanding of reinforcement fine-tuning (RFT), and wish to use their fine-tuned models for research or other appropriate uses. OpenAI’s services are not intended for the personalized treatment or diagnosis of any medical condition and are subject to our [applicable terms](https://openai.com/policies/).*\n", + "\n", + "[Reinforcement fine-tuning (RFT)](https://platform.openai.com/docs/guides/reinforcement-fine-tuning) of reasoning models consists in running reinforcement learning on of top the models to improve their reasoning performance by exploring the solution space and reinforcing strategies that result in a higher reward. RFT helps the model make sharper decisions and interpret context more effectively. \n", + "\n", + "\n", + "In this guide, weʼll walk through how to apply RFT to the OpenAI `o4-mini` reasoning model, using a task from the life sciences research domain: predicting outcomes from doctor-patient transcripts and descriptions, which is a necessary assessment in many health research studies. We'll use a subset of the medical-o1-verifiable-problem [dataset](https://huggingface.co/datasets/FreedomIntelligence/medical-o1-verifiable-problem/viewer/default/train?row=0). You will learn key steps to take in order to succesfully run RFT jobs for your use-cases.\n", + "\n", + "Here’s what we’ll cover:\n", + "\n", + "- **[1. Setup](#1-setup)**\n", + "- **[2. Gathering the dataset](#2-gathering-the-dataset)**\n", + "- **[3. Benchmarking the base model](#3-benchmarking-the-base-model)**\n", + "- **[4. Defining your grader](#4-defining-your-grader)**\n", + "- **[5. Training](#5-training)**\n", + "- **[6. Using your fine-tuned model](#6-using-your-fine-tuned-model)**\n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## **1. Setup**\n", + "\n", + "Even strong reasoning models can miss the mark when it comes to expert-level behavior-especially in domains like medicine, where nuance and exactness matter. Imagine a model trying to extract [ICD-10](https://www.cms.gov/medicare/coding-billing/icd-10-codes) codes from a transcript: even if it understands the gist, it may not use the precise terminology expected by medical professionals. \n", + "\n", + "Other great candidates for RFT include topics like ledger normalization or tiering fraud risk- settings in which you want precise, reliable, and repeatable reasoning. Checkout our [RFT use-cases guide](https://platform.openai.com/docs/guides/rft-use-cases) for great examples. \n", + "\n", + "In our case, weʼll focus on teaching `o4-mini` to become better at predicting the outcomes of clinical conversations and descriptions. Specifically, we want to see if RFT can boost the accuracy of the prediction. \n", + "\n", + "Along the way, weʼll talk about how to write effective graders, how they guide the modelʼs learning, and how to watch out for classic reward-hacking pitfalls. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## **2. Gathering the Dataset**\n", + "\n", + "Letʼs start off by loading the dataset from Hugging Face. Weʼre interested in samples framed as a description of a patient case with an associated question, followed by the correct answer. These represent real world transcripts where a physician is summarizing a case and assigning an outcome. For any use-case, verifying the accuracy of the gold level answers is critical and requires careful consideration. Here, we will trust the dataset quality." + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Filtered samples: 9169\n" + ] + } + ], + "source": [ + "import re\n", + "from datasets import load_dataset\n", + "ds = load_dataset(\"FreedomIntelligence/medical-o1-verifiable-problem\")\n", + "\n", + "def is_age_question(sample):\n", + " question = sample.get('Open-ended Verifiable Question', '')\n", + " # Match \"A 88-year-old\", \"An 8-year-old\", \"A 23-year-old\", etc. at the start\n", + " return re.match(r\"^(A|An) \\d{1,2}-year-old\", question) is not None\n", + "\n", + "filtered_samples = [s for s in ds[\"train\"] if is_age_question(s)]\n", + "print(f\"Filtered samples: {len(filtered_samples)}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "One of the advantages of RFT is that it doesnʼt need thousands of samples to start making a difference. Thanks to trajectory sampling and the feedback loop during training, the model learns not just correct behaviors, but also patterns to avoid. This means we can see solid gains even with small datasets.\n", + "\n", + "For this run, weʼll randomly sample 100 training and 100 test examples and slightly normalize them." + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of training samples: 100\n", + "Number of test samples: 100\n" + ] + } + ], + "source": [ + "import random\n", + "\n", + "# Set a random seed for reproducibility\n", + "random.seed(42)\n", + "\n", + "# Randomly select 100 training samples from filtered_samples\n", + "train_samples = random.sample(filtered_samples, min(100, len(filtered_samples)))\n", + "\n", + "# Remove training samples from filtered_samples to avoid overlap\n", + "remaining_samples = [s for s in filtered_samples if s not in train_samples]\n", + "\n", + "# Randomly select 100 test samples from the remaining samples (no overlap)\n", + "test_samples = random.sample(remaining_samples, min(100, len(remaining_samples)))\n", + "\n", + "print(f\"Number of training samples: {len(train_samples)}\")\n", + "print(f\"Number of test samples: {len(test_samples)}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# Standardize the 'Ground-True Answer' fields to all lowercase in train and test samples\n", + "for sample in train_samples:\n", + " if 'Ground-True Answer' in sample and isinstance(sample['Ground-True Answer'], str):\n", + " sample['Ground-True Answer'] = sample['Ground-True Answer'].lower()\n", + "\n", + "for sample in test_samples:\n", + " if 'Ground-True Answer' in sample and isinstance(sample['Ground-True Answer'], str):\n", + " sample['Ground-True Answer'] = sample['Ground-True Answer'].lower()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We'll convert these samples to `jsonl` format, as expected by the [reinforcement finetuning API](https://platform.openai.com/docs/api-reference/fine-tuning/reinforcement-input)." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "\n", + "def convert_to_jsonl_format(samples, filename):\n", + " with open(filename, \"w\") as f:\n", + " for sample in samples:\n", + " user_content = sample.get(\"Open-ended Verifiable Question\", \"\")\n", + " reference_answer = sample.get(\"Ground-True Answer\", \"\")\n", + " json_obj = {\n", + " \"messages\": [\n", + " {\"role\": \"user\", \"content\": user_content}\n", + " ],\n", + " \"reference_answer\": reference_answer\n", + " }\n", + " f.write(json.dumps(json_obj) + \"\\n\")\n", + "\n", + "def load_jsonl(filename):\n", + " samples = []\n", + " with open(filename, \"r\") as f:\n", + " for line in f:\n", + " samples.append(json.loads(line))\n", + " return samples\n", + "\n", + "# Save the datasets to jsonl files\n", + "convert_to_jsonl_format(train_samples, \"data/medical_01_verifiable_problem_train.jsonl\")\n", + "convert_to_jsonl_format(test_samples, \"data/medical_01_verifiable_problem_val.jsonl\")\n", + "\n", + "# Load the datasets back from jsonl files\n", + "train_samples_loaded = load_jsonl(\"data/medical_01_verifiable_problem_train.jsonl\")\n", + "test_samples_loaded = load_jsonl(\"data/medical_01_verifiable_problem_val.jsonl\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "Next up: we’ll see how the base model performs out of the box-and where there’s room to grow.\n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## **3. Benchmarking the Base Model**\n", + "\n", + "Before we fine-tune anything, we need to know where we’re starting from. Benchmarking gives us a clear picture of the model’s initial strengths and weaknesses-so we can later measure how far it’s come.\n", + "\n", + "We’ll first lean on two simple yet powerful evaluators:\n", + "\n", + "1. `clinical_phrase_binary_grader` - an exact-match checker.\n", + "2. `clinical_phrase_grader` - a softer, token-based similarity grader." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "from rapidfuzz import fuzz, utils\n", + "\n", + "def clinical_phrase_grader(sample: dict, item: dict) -> float:\n", + " from rapidfuzz import fuzz, utils\n", + " score = fuzz.token_set_ratio(sample[\"output_text\"], item[\"reference_answer\"], processor=utils.default_process)\n", + " return score / 100.0\n", + "\n", + "def clinical_phrase_binary_grader(sample: dict, item: dict) -> float:\n", + " return 1.0 if sample[\"output_text\"] == item[\"reference_answer\"] else 0.0\n", + "\n", + "def combined_grader(sample: dict, item: dict, weights: list[float] = [0.85, 0.15]) -> float:\n", + " clinical_phrase_score = clinical_phrase_grader(sample, item)\n", + " binary_score = clinical_phrase_binary_grader(sample, item)\n", + " return weights[0] * clinical_phrase_score + weights[1] * binary_score" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This combination lets us track both strict correctness and partial lexical overlap. The binary grader gives a crisp 0 or 1: did the model produce an exact match? The softer one gives more nuance-how close did the output come to the gold answer? We use both because outcomes are often phrased in multiple valid ways. For instance, a model might respond with “gouty arthritis” instead of “gout.” While a human evaluator could consider this partially acceptable, a strict string match would not. Combining exact and fuzzy scoring ensures a more accurate and fair assessment of model outputs. \n", + "\n", + "We build a helper function to preprend the examples with a system prompt." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def prepend_system_prompt_to_first_user_message(samples, system_prompt, path=None):\n", + " new_samples = []\n", + " for sample in samples:\n", + " # Deep copy to avoid mutating the original\n", + " sample_copy = json.loads(json.dumps(sample))\n", + " messages = sample_copy.get(\"messages\", [])\n", + " if messages and messages[0].get(\"role\") == \"user\" and isinstance(messages[0].get(\"content\"), str):\n", + " if not messages[0][\"content\"].startswith(system_prompt):\n", + " messages[0][\"content\"] = f\"{system_prompt}\\n\\n{messages[0]['content']}\"\n", + " new_samples.append(sample_copy)\n", + " if path is not None:\n", + " with open(path, \"w\", encoding=\"utf-8\") as f:\n", + " for item in new_samples:\n", + " f.write(json.dumps(item, ensure_ascii=False) + \"\\n\")\n", + " return new_samples" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "simple_prompt = \"\"\"You are an expert clinician. For each clinical vignette, respond with exactly one phrase: the single most likely outcome or phenomenon, all in lowercase. \n", + "- Do not add punctuation, articles, explanations, or commentary - output only the term itself.\n", + "- Sometimes, the expected answer can be a synonym of what you think.\n", + "- Use the standard clinical name (e.g. “thought withdrawal”, “Toxoplasma encephalitis”).\"\"\"\n", + "train_samples_loaded_simple_sys_prompt = prepend_system_prompt_to_first_user_message(\n", + " train_samples_loaded, simple_prompt, path=\"data/medical_01_verifiable_problem_train_simple_prompt.jsonl\"\n", + ")\n", + "test_samples_loaded_simple_sys_prompt = prepend_system_prompt_to_first_user_message(\n", + " test_samples_loaded, simple_prompt, path=\"data/medical_01_verifiable_problem_val_simple_prompt.jsonl\"\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then build a helper function to generate and store the model's predictions." + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [], + "source": [ + "from openai import OpenAI\n", + "import concurrent.futures\n", + "from tqdm import tqdm\n", + "import os\n", + "\n", + "client = OpenAI()\n", + "\n", + "def generate_model_predictions(\n", + " subset,\n", + " prompt_type,\n", + " model_name=\"o4-mini-2025-04-16\",\n", + " reasoning_effort=\"medium\",\n", + " n_runs=1,\n", + " verbose=False,\n", + "):\n", + " if isinstance(subset, str):\n", + " samples_path = f\"data/medical_01_verifiable_problem_{subset}_{prompt_type}_prompt.jsonl\"\n", + " with open(samples_path, \"r\", encoding=\"utf-8\") as f:\n", + " test_samples = [json.loads(line) for line in f if line.strip()]\n", + " else:\n", + " test_samples = [subset]\n", + "\n", + " def run_inference(item):\n", + " resp = client.responses.create(\n", + " model=model_name,\n", + " input=item[\"messages\"],\n", + " reasoning={\"effort\": reasoning_effort, \"summary\": \"detailed\"},\n", + " )\n", + " model_prediction = {'output_text': resp.output_text}\n", + " reasoning_tokens_used = resp.usage.output_tokens_details.reasoning_tokens\n", + " summaries = [seg.text for item in resp.output if item.type == \"reasoning\" for seg in item.summary]\n", + " summaries_string = \"\\n\".join(summaries)\n", + " if verbose:\n", + " print(\"Prompt: {}\".format(item[\"messages\"][0][\"content\"]))\n", + " print(f\"Model Sample: {model_prediction}\\nSolution: {item['reference_answer']}\\n\")\n", + " return {\n", + " \"model_prediction\": model_prediction[\"output_text\"],\n", + " \"input\": item,\n", + " \"reasoning_tokens_used\": reasoning_tokens_used,\n", + " \"reference_answer\": item[\"reference_answer\"],\n", + " \"summaries\": summaries_string\n", + " }\n", + "\n", + " # Ensure the predictions directory exists before any file operations\n", + " predictions_dir = os.path.join(\"data\", \"rft\", \"predictions\")\n", + " os.makedirs(predictions_dir, exist_ok=True)\n", + "\n", + " # Check if results already exist for all runs\n", + " results_per_run = []\n", + " for run_idx in range(n_runs):\n", + " run_save_path = os.path.join(\n", + " predictions_dir,\n", + " f\"{subset}_{prompt_type}_{model_name}_{reasoning_effort}_predictions_run{run_idx+1}.json\"\n", + " )\n", + " if os.path.exists(run_save_path):\n", + " print(f\"Results for run {run_idx+1} already exist at {run_save_path}. Loading results.\")\n", + " with open(run_save_path, \"r\", encoding=\"utf-8\") as f:\n", + " run_results = json.load(f)\n", + " results_per_run.append(run_results)\n", + " else:\n", + " if len(test_samples) == 1:\n", + " run_results = [run_inference(test_samples[0])]\n", + " else:\n", + " run_results = []\n", + " with concurrent.futures.ThreadPoolExecutor() as executor:\n", + " futures = [executor.submit(run_inference, item) for item in test_samples]\n", + " for future in tqdm(futures, total=len(futures), desc=f\"Generating predictions (run {run_idx+1})\"):\n", + " result = future.result()\n", + " run_results.append(result)\n", + " with open(run_save_path, \"w\", encoding=\"utf-8\") as f:\n", + " json.dump(run_results, f, ensure_ascii=False, indent=2)\n", + " results_per_run.append(run_results)\n", + "\n", + " # Return a flat list for backward compatibility\n", + " if n_runs == 1:\n", + " return results_per_run[0]\n", + " else:\n", + " return results_per_run" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To generate the predictions, first make sure your API key is set:\n", + "\n", + "```bash\n", + "export OPENAI_API_KEY=...\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# OpenAI o4-mini model\n", + "results_simple_o4mini = generate_model_predictions(\n", + " subset=\"train\",\n", + " prompt_type=\"simple\",\n", + " model_name=\"o4-mini\",\n", + " reasoning_effort=\"medium\",\n", + " n_runs=3\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# OpenAI o3 model\n", + "results_simple_o3 = generate_model_predictions(\n", + " subset=\"train\",\n", + " prompt_type=\"simple\",\n", + " model_name=\"o3\",\n", + " reasoning_effort=\"medium\",\n", + " n_runs=3\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now have predictions that are ready to be evaluated.
\n", + "We'll build a helper function that allows us to easily swap in different scoring methods," + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import functools\n", + "\n", + "def evaluate_predictions_with_grader(\n", + " predictions,\n", + " grader_func=combined_grader,\n", + "):\n", + " results = []\n", + "\n", + " if isinstance(predictions, dict):\n", + " predictions = [predictions]\n", + "\n", + " def run_grading(pred):\n", + " model_prediction = {\"output_text\": pred[\"model_prediction\"]}\n", + " item = pred[\"input\"]\n", + " score = grader_func(model_prediction, item)\n", + " result = pred.copy()\n", + " result[\"score\"] = score\n", + " return result\n", + "\n", + " if len(predictions) == 1:\n", + " result = run_grading(predictions[0])\n", + " results.append(result)\n", + " else:\n", + " with concurrent.futures.ThreadPoolExecutor() as executor:\n", + " futures = [executor.submit(run_grading, pred) for pred in predictions]\n", + " for future in tqdm(concurrent.futures.as_completed(futures), total=len(futures), desc=\"Grading predictions\"):\n", + " results.append(future.result())\n", + "\n", + " total = len(results)\n", + " correct = sum(r[\"score\"] for r in results)\n", + " accuracy = correct / total if total else 0.0\n", + "\n", + " metrics = {\n", + " \"total_samples\": total,\n", + " \"accuracy\": accuracy,\n", + " }\n", + " print(metrics)\n", + " return metrics, results\n", + "\n", + "def run_prediction_evaluation(\n", + " model_name=\"o4-mini\",\n", + " reasoning_effort=\"medium\",\n", + " prompt_type=\"simple\",\n", + " subset=\"train\",\n", + " grader_func=combined_grader,\n", + " num_runs=3,\n", + "):\n", + " if isinstance(grader_func, functools.partial):\n", + " name = grader_func.func.__name__\n", + " mg = grader_func.keywords[\"model_grader\"]\n", + " mg_name = mg[\"name\"]\n", + " name = f\"{name}_{mg_name}\"\n", + " else:\n", + " name = getattr(grader_func, \"__name__\", getattr(grader_func, \"__class__\", type(grader_func)).__name__)\n", + " grader_func_name = name.replace(\" \", \"_\").replace(\":\", \"_\").replace(\"/\", \"_\").replace(\",\", \"_\")\n", + "\n", + " for i in range(num_runs):\n", + " preds_path = f\"data/rft/predictions/{subset}_{prompt_type}_{model_name}_{reasoning_effort}_predictions_run{i+1}.json\"\n", + " with open(preds_path, \"r\") as f:\n", + " preds = json.load(f)\n", + " metrics, results_with_scores = evaluate_predictions_with_grader(preds, grader_func=grader_func)\n", + " # Save the scored results\n", + " with open(f\"data/rft/predictions/{subset}_{prompt_type}_{model_name}_{reasoning_effort}_{grader_func_name}_predictions_run_{i+1}_scored.json\", \"w\") as f:\n", + " json.dump(results_with_scores, f, indent=2)\n", + " # Save the metrics\n", + " with open(f\"data/rft/predictions/{subset}_{prompt_type}_{model_name}_{reasoning_effort}_{grader_func_name}_predictions_run_{i+1}_metrics.json\", \"w\") as f:\n", + " json.dump(metrics, f, indent=2)\n", + " # Save the scores (if present in results_with_scores)\n", + " scores = [item.get(\"score\") for item in results_with_scores if \"score\" in item]\n", + " with open(f\"data/rft/predictions/{subset}_{prompt_type}_{model_name}_{reasoning_effort}_{grader_func_name}_predictions_run_{i+1}_scores.json\", \"w\") as f:\n", + " json.dump(scores, f, indent=2)\n", + "\n", + "def load_predictions(\n", + " model_name=\"o4-mini\",\n", + " reasoning_effort=\"medium\",\n", + " prompt_type=\"simple\",\n", + " subset=\"train\",\n", + " grader_func_name=\"clinical_phrase_grader\",\n", + " num_runs=3\n", + "):\n", + " all_predictions = []\n", + " all_metrics = []\n", + " for run in range(1, num_runs + 1):\n", + " pred_path = f\"data/rft/predictions/{subset}_{prompt_type}_{model_name}_{reasoning_effort}_{grader_func_name}_predictions_run_{run}_scored.json\"\n", + " metrics_path = f\"data/rft/predictions/{subset}_{prompt_type}_{model_name}_{reasoning_effort}_{grader_func_name}_predictions_run_{run}_metrics.json\"\n", + " try:\n", + " with open(pred_path, \"r\") as f:\n", + " predictions = json.load(f)\n", + " except FileNotFoundError:\n", + " predictions = None\n", + " try:\n", + " with open(metrics_path, \"r\") as f:\n", + " metrics = json.load(f)\n", + " except FileNotFoundError:\n", + " metrics = None\n", + " all_predictions.append(predictions)\n", + " all_metrics.append(metrics)\n", + " return all_predictions, all_metrics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "and then run the evaluations." + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Grading predictions: 100%|██████████| 100/100 [00:00<00:00, 329740.88it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'total_samples': 100, 'accuracy': 0.5716752010712578}\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Grading predictions: 100%|██████████| 100/100 [00:00<00:00, 497544.96it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'total_samples': 100, 'accuracy': 0.5855097792577905}\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Grading predictions: 100%|██████████| 100/100 [00:00<00:00, 414456.92it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'total_samples': 100, 'accuracy': 0.5702082734545793}\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "model_name = \"o4-mini\"\n", + "reasoning_effort = \"medium\"\n", + "prompt_type = \"simple\"\n", + "subset = \"train\"\n", + "grader_func = combined_grader\n", + "grader_func_name = \"combined_grader\"\n", + "num_runs = 3\n", + "run_prediction_evaluation(\n", + " model_name=model_name, \n", + " reasoning_effort=reasoning_effort, \n", + " prompt_type=prompt_type, \n", + " subset=subset, \n", + " grader_func=grader_func, \n", + " num_runs=num_runs\n", + ")\n", + "predictions_o4mini_medium_simple_prompt, metrics_o4mini_medium_simple_prompt = load_predictions(model_name=model_name, reasoning_effort=reasoning_effort, prompt_type=prompt_type, subset=subset, grader_func_name=grader_func_name, num_runs=num_runs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Visualizing the results allows us to spot trends and failure modes." + ] + }, + { + "cell_type": "code", + "execution_count": 115, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Total mistakes: 84\n", + "\n", + "[Sample 16]\n", + " Model prediction: enveloped double stranded linear dna virus\n", + " Reference answer: double-stranded, enveloped dna virus\n", + " Score: 0.85\n", + "\n", + "[Sample 19]\n", + " Model prediction: gallstone ileus\n", + " Reference answer: gall stone ileus\n", + " Score: 0.8225806451612904\n", + "\n", + "[Sample 20]\n", + " Model prediction: acute rheumatic fever\n", + " Reference answer: postinfectious glomerulonephritis\n", + " Score: 0.22037037037037036\n", + "\n", + "[Sample 22]\n", + " Model prediction: amygdala\n", + " Reference answer: hippocampus\n", + " Score: 0.17894736842105263\n", + "\n", + "[Sample 23]\n", + " Model prediction: hypopituitarism\n", + " Reference answer: pituitary adenoma\n", + " Score: 0.47812499999999997\n" + ] + } + ], + "source": [ + "# Print mistakes where the model did not get the correct answer (score < 1.0)\n", + "mistakes = [\n", + " {\"index\": i, **res}\n", + " for i, res in enumerate(predictions_o4mini_medium_simple_prompt[0])\n", + " if res[\"score\"] < 1.0\n", + "]\n", + "\n", + "print(f\"\\nTotal mistakes: {len(mistakes)}\")\n", + "for m in mistakes[15:20]:\n", + " print(f\"\\n[Sample {m['index']}]\")\n", + " print(f\" Model prediction: {m['model_prediction']}\")\n", + " print(f\" Reference answer: {m['reference_answer']}\")\n", + " print(f\" Score: {m['score']}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As observed above, typical failure modes fall into three categories:\n", + "1. Small differences and formatting issues, score >=0.8.\n", + "2. Partial lexical match, 0.3 < score < 0.8.\n", + "3. Lexically off-base, score < 0.3.\n", + "\n", + "We can visualize the full score distribution on the training set.\n", + "\n", + "> **Note:** : In practice, analyzing model errors at scale often involves a mix of manual review and automated methods-like tagging failure types or clustering predictions by score and content. That workflow is beyond the scope of this guide, but it's a valuable next step once you've identified broad patterns." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 84, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiwAAAGdCAYAAAAxCSikAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAMbNJREFUeJzt3XlcVPX+x/H3CDKosWgoS+G+ZoqlSbhctSyirlezxcxcStuuWkZaUe6atOstDbuWoo8WqxtZvzLKMPW6ZS7cNM2fIopehdIboHgFlPP7ox9TI4uOzcB38PV8PM7j0Tnn+/3O53xD5s2Zc+bYLMuyBAAAYLBa1V0AAADAuRBYAACA8QgsAADAeAQWAABgPAILAAAwHoEFAAAYj8ACAACMR2ABAADG863uAtyhpKREhw8fVkBAgGw2W3WXAwAAzoNlWTp+/LgiIiJUq1bl51BqRGA5fPiwIiMjq7sMAABwAQ4ePKjLL7+80jY1IrAEBARI+vWAAwMDq7kaAABwPvLz8xUZGel4H69MjQgspR8DBQYGElgAAPAy53M5BxfdAgAA4xFYAACA8QgsAADAeDXiGpbzYVmWTp8+rTNnzlR3KQAM5ePjI19fX74eATDQRRFYioqKdOTIEZ08ebK6SwFguLp16yo8PFx+fn7VXQqA36nxgaWkpESZmZny8fFRRESE/Pz8+OsJQBmWZamoqEg///yzMjMz1apVq3N+kRWAqlPjA0tRUZFKSkoUGRmpunXrVnc5AAxWp04d1a5dWwcOHFBRUZH8/f2ruyQA/++i+fOBv5QAnA9+VwBm4l8mAAAwHoEF52X//v2y2WxKT08/7z5Tp05Vp06dPFaTK1atWiWbzabc3FxJUnJysoKDg6u1pvL07t1b48aN8/jrmPT/BgDOh0vXsCQmJiolJUU//vij6tSpo27duun5559XmzZtHG1OnTqlxx9/XEuXLlVhYaFiY2P1+uuvKzQ0tMJxLcvSlClTtGDBAuXm5qp79+5KSkpSq1atLvzIzkNCynaPjn+2xIEdPDb2sWPHFBUVpX//+9/65Zdf3P5mHBkZqSNHjigkJOS8+4wfP15jx451ax3uMmjQIN18883VXUYZKSkpql27dnWXUWNNnTpVy5Ytcyl4AzCDS2dYVq9erdGjR2vjxo1asWKFiouLdeONN6qgoMDR5rHHHtP//M//6MMPP9Tq1at1+PBhDRw4sNJxX3jhBb366quaP3++vv32W9WrV0+xsbE6derUhR3VRWjkyJHq2LGjx8b38fFRWFiYfH3PP+NecskluvTSSz1W0x9Rp04dNWrUqLrLKKNBgwbn9RAwb1VUVFTdJQDwUi4FltTUVI0YMULt27dXVFSUkpOTlZWVpS1btkiS8vLy9NZbb+mVV17Rddddp86dO2vRokVav369Nm7cWO6YlmVpzpw5mjhxovr376+OHTtqyZIlOnz4sJYtW/aHD9CbFRYW6pFHHlGjRo3k7++vHj166LvvvivTLikpSbm5uRo/fvx5jTtixAgNGDBAs2bNUmhoqIKDgzV9+nSdPn1aEyZMUIMGDXT55Zdr0aJFjj5nfyRU+hFLWlqaunTporp166pbt27avXu3o8+5PnYoHePLL7/UVVddpTp16ui6667TTz/9pC+++ELt2rVTYGCg7r77bqfv0CkpKVFiYqKaNWumOnXqKCoqSv/4xz+cxl6+fLlat26tOnXqqE+fPtq/f7/T/rM/Eiqdk98bN26cevfu7Vjv3bu3xo4dq3Hjxql+/foKDQ3VggULVFBQoHvvvVcBAQFq2bKlvvjii0rn//XXX1erVq3k7++v0NBQ3X777U6v8fuPhJo2baqZM2dq2LBhuuSSS9SkSRN9+umn+vnnn9W/f39dcskl6tixozZv3lzm2JYtW+Z4ndjYWB08eLDSut588021a9dO/v7+atu2rV5//fVK2/fu3VtjxozRmDFjFBQUpJCQEE2aNEmWZTnVP2PGDA0bNkyBgYF64IEHJEkfffSR2rdvL7vdrqZNm+rll192GtsTx52cnKxp06bpX//6l2w2m2w2m5KTkys9RgDm+EPXsOTl5Un69a9CSdqyZYuKi4vVt29fR5u2bduqcePG2rBhQ7ljZGZmKjs726lPUFCQoqOjK+xTWFio/Px8p6UmeuKJJ/TRRx9p8eLF2rp1q1q2bKnY2Fj95z//cbTZuXOnpk+friVLlrh0d8PKlSt1+PBhrVmzRq+88oqmTJmiP//5z6pfv76+/fZbPfTQQ3rwwQd16NChSsd55pln9PLLL2vz5s3y9fXVfffd5/JxTp06VXPnztX69et18OBB3XnnnZozZ47effddff755/rqq6/02muvOdonJiZqyZIlmj9/vn744Qc99thjuuee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UVpammJiYsrtExMT49ReklasWFFhewAAcHHxyEdC8fHxGj58uLp06aKuXbtqzpw5Kigo0L333itJGjZsmC677DIlJiZKkh599FH16tVLL7/8sm655RYtXbpUmzdv1t///ndPlAcAALyMRwLLoEGD9PPPP2vy5MnKzs5Wp06dlJqa6riwNisrS7Vq/XZyp1u3bnr33Xc1ceJEPf3002rVqpWWLVumK6+80hPlucRut2vKlCllPoKCezHPVYN5rjrMddVgnquGCfPske9hAQAAcCeeJQQAAIxHYAEAAMYjsAAAAOMRWAAAgPEILJLmzZunpk2byt/fX9HR0dq0aVOl7T/88EO1bdtW/v7+6tChg5YvX15FlXo3V+Z5wYIF6tmzp+rXr6/69eurb9++5/z/gl+5+vNcaunSpbLZbBowYIBnC6whXJ3n3NxcjR49WuHh4bLb7WrdujW/O86Tq3M9Z84ctWnTRnXq1FFkZKQee+wxnTp1qoqq9T5r1qxRv379FBERIZvNVuFz/H5v1apVuvrqq2W329WyZUslJyd7vE5ZF7mlS5dafn5+1sKFC60ffvjBuv/++63g4GArJyen3Pbr1q2zfHx8rBdeeMHauXOnNXHiRKt27drW9u3bq7hy7+LqPN99993WvHnzrG3btlm7du2yRowYYQUFBVmHDh2q4sq9i6vzXCozM9O67LLLrJ49e1r9+/evmmK9mKvzXFhYaHXp0sW6+eabrbVr11qZmZnWqlWrrPT09Cqu3Pu4OtfvvPOOZbfbrXfeecfKzMy0vvzySys8PNx67LHHqrhy77F8+XLrmWeesVJSUixJ1scff1xp+3379ll169a14uPjrZ07d1qvvfaa5ePjY6Wmpnq0zos+sHTt2tUaPXq0Y/3MmTNWRESElZiYWG77O++807rllluctkVHR1sPPvigR+v0dq7O89lOnz5tBQQEWIsXL/ZUiTXChczz6dOnrW7dullvvvmmNXz4cALLeXB1npOSkqzmzZtbRUVFVVVijeHqXI8ePdq67rrrnLbFx8db3bt392idNcX5BJYnnnjCat++vdO2QYMGWbGxsR6szLIu6o+EioqKtGXLFvXt29exrVatWurbt682bNhQbp8NGzY4tZek2NjYCtvjwub5bCdPnlRxcbEaNGjgqTK93oXO8/Tp09WoUSONHDmyKsr0ehcyz59++qliYmI0evRohYaG6sorr9SsWbN05syZqirbK13IXHfr1k1btmxxfGy0b98+LV++XDfffHOV1HwxqK73Qa98WrO7HD16VGfOnHF8A2+p0NBQ/fjjj+X2yc7OLrd9dna2x+r0dhcyz2d78sknFRERUeYfCX5zIfO8du1avfXWW0pPT6+CCmuGC5nnffv2aeXKlRoyZIiWL1+uvXv36q9//auKi4s1ZcqUqijbK13IXN999906evSoevToIcuydPr0aT300EN6+umnq6Lki0JF74P5+fn673//qzp16njkdS/qMyzwDs8995yWLl2qjz/+WP7+/tVdTo1x/PhxDR06VAsWLFBISEh1l1OjlZSUqFGjRvr73/+uzp07a9CgQXrmmWc0f/786i6txlm1apVmzZql119/XVu3blVKSoo+//xzzZgxo7pLwx90UZ9hCQkJkY+Pj3Jycpy25+TkKCwsrNw+YWFhLrXHhc1zqZdeeknPPfecvv76a3Xs2NGTZXo9V+c5IyND+/fvV79+/RzbSkpKJEm+vr7avXu3WrRo4dmivdCF/DyHh4erdu3a8vHxcWxr166dsrOzVVRUJD8/P4/W7K0uZK4nTZqkoUOHatSoUZKkDh06qKCgQA888ICeeeYZp+fY4cJU9D4YGBjosbMr0kV+hsXPz0+dO3dWWlqaY1tJSYnS0tIUExNTbp+YmBin9pK0YsWKCtvjwuZZkl544QXNmDFDqamp6tKlS1WU6tVcnee2bdtq+/btSk9Pdyx/+ctf1KdPH6WnpysyMrIqy/caF/Lz3L17d+3du9cRCCXpf//3fxUeHk5YqcSFzPXJkyfLhJLSoGjx6Dy3qLb3QY9e0usFli5datntdis5OdnauXOn9cADD1jBwcFWdna2ZVmWNXToUOupp55ytF+3bp3l6+trvfTSS9auXbusKVOmcFvzeXB1np977jnLz8/P+sc//mEdOXLEsRw/fry6DsEruDrPZ+MuofPj6jxnZWVZAQEB1pgxY6zdu3dbn332mdWoUSNr5syZ1XUIXsPVuZ4yZYoVEBBgvffee9a+ffusr776ymrRooV15513VtchGO/48ePWtm3brG3btlmSrFdeecXatm2bdeDAAcuyLOupp56yhg4d6mhfelvzhAkTrF27dlnz5s3jtuaq8tprr1mNGze2/Pz8rK5du1obN2507OvVq5c1fPhwp/YffPCB1bp1a8vPz89q37699fnnn1dxxd7JlXlu0qSJJanMMmXKlKov3Mu4+vP8ewSW8+fqPK9fv96Kjo627Ha71bx5c+vZZ5+1Tp8+XcVVeydX5rq4uNiaOnWq1aJFC8vf39+KjIy0/vrXv1q//PJL1RfuJb755ptyf9+Wzuvw4cOtXr16lenTqVMny8/Pz2revLm1aNEij9dpsyzOkQEAALNd1NewAAAA70BgAQAAxiOwAAAA4xFYAACA8QgsAADAeAQWAABgPAILAAAwHoEFAAAYj8ACAACMR2ABAADGI7AAAADjEVgAAIDx/g+DOouzg2F7lQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "scores_distribution = [m['score'] for m in predictions_o4mini_medium_simple_prompt[0]]\n", + "plt.hist(scores_distribution, alpha=0.6, label='o4-mini medium simple prompt')\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's compare with other models and prompts, and visualize scores." + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Grading predictions: 100%|██████████| 100/100 [00:00<00:00, 489988.79it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'total_samples': 100, 'accuracy': 0.6150339441350683}\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Grading predictions: 100%|██████████| 100/100 [00:00<00:00, 507170.98it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'total_samples': 100, 'accuracy': 0.5901906182115139}\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Grading predictions: 100%|██████████| 100/100 [00:00<00:00, 543303.63it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'total_samples': 100, 'accuracy': 0.5927679005876193}\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "# OpenAI o3 model\n", + "model_name = \"o3\"\n", + "reasoning_effort = \"medium\"\n", + "prompt_type = \"simple\"\n", + "subset = \"train\"\n", + "grader_func = combined_grader\n", + "grader_func_name = \"combined_grader\"\n", + "num_runs = 3\n", + "run_prediction_evaluation(model_name=model_name, reasoning_effort=reasoning_effort, prompt_type=prompt_type, subset=subset, grader_func=grader_func, num_runs=num_runs)\n", + "predictions_o3_medium_simple_prompt, metrics_o3_medium_simple_prompt = load_predictions(model_name=model_name, reasoning_effort=reasoning_effort, prompt_type=prompt_type, subset=subset, grader_func_name=grader_func_name, num_runs=num_runs)" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import seaborn as sns\n", + "\n", + "def average_and_std_metrics(metrics_list):\n", + " \"\"\"Returns dicts of mean and std for a list of metrics dicts.\"\"\"\n", + " if not metrics_list: return {}, {}\n", + " keys = metrics_list[0].keys()\n", + " arr = {k: np.array([m[k] for m in metrics_list]) for k in keys}\n", + " mean = {k: float(np.mean(arr[k])) for k in keys}\n", + " std = {k: float(np.std(arr[k])) for k in keys}\n", + " return mean, std\n", + "\n", + "def plot_model_accuracies(model_metrics_avg, model_metrics_std, grader_title=\"Combined Grader Accuracy\", sharey: bool = True) -> None:\n", + " \"\"\"Plots model accuracies with standard deviation error bars.\"\"\"\n", + " # Convert the nested dicts into tidy DataFrames\n", + " df_avg = pd.DataFrame(model_metrics_avg).T.reset_index().rename(columns={\"index\": \"Model\"})\n", + " df_std = pd.DataFrame(model_metrics_std).T.reset_index().rename(columns={\"index\": \"Model\"})\n", + "\n", + " # Long-form for Seaborn\n", + " long_df_avg = df_avg.melt(id_vars=\"Model\", value_vars=[\"accuracy\"], var_name=\"Metric\", value_name=\"Accuracy\")\n", + " long_df_std = df_std.melt(id_vars=\"Model\", value_vars=[\"accuracy\"], var_name=\"Metric\", value_name=\"Std\")\n", + "\n", + " # Merge avg and std for error bars\n", + " long_df = pd.merge(long_df_avg, long_df_std, on=[\"Model\", \"Metric\"])\n", + "\n", + " pretty_names = {\"accuracy\": grader_title}\n", + "\n", + " # Create a separate figure for each metric\n", + " for metric_key in [\"accuracy\"]:\n", + " metric_df = long_df[long_df[\"Metric\"] == metric_key].copy()\n", + " plt.figure(figsize=(8, 5))\n", + " # Plot bars with error bars\n", + " ax = sns.barplot(data=metric_df, x=\"Model\", y=\"Accuracy\", hue=\"Model\", palette=\"tab10\", legend=False, errorbar=None)\n", + " bars = ax.patches\n", + " # Add error bars manually\n", + " for i, row in enumerate(metric_df.itertuples()):\n", + " bar = bars[i]\n", + " x = bar.get_x() + bar.get_width() / 2\n", + " y = row.Accuracy\n", + " yerr = row.Std\n", + " ax.errorbar(x=x, y=y, yerr=yerr, fmt='none', ecolor='black', capsize=5, elinewidth=2, capthick=2, zorder=10)\n", + " plt.title(pretty_names[metric_key])\n", + " plt.ylabel(\"Accuracy\")\n", + " plt.xlabel(\"\")\n", + " if sharey: plt.ylim(0, 1)\n", + " # Annotate bars with exact values\n", + " for bar in bars:\n", + " height = bar.get_height()\n", + " ax.annotate(f\"{height:.2f}\", xy=(bar.get_x() + bar.get_width() / 2, height), xytext=(0, 6), textcoords=\"offset points\", ha='center', va='bottom', fontsize=10, fontweight='bold')\n", + " plt.xticks(rotation=15, ha=\"right\")\n", + " plt.tight_layout()\n", + " plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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kmw2212vJwA8LFJTU51u/pOTkyVJNWrU0OHDh1WzZk3Z7XY1adJEkpwWggUeZPxLB+4ym80mFxcXSdKJEyd06dIleXl5ad26dZo/f74SEhL03HPP6fDhw+rfv38W1xYAHnwuLi6y2+26evWqTp8+LQ8PD124cEGffvqpzp49q8DAQK1evVrr16/P6qoCdxVBAbjNDMNQSkpKhk3TFy5c0JEjRzR48GD5+fmpfPnyeuGFF3T06FFVqFBBZ8+eld1uV5EiRRQaGpoFtQeAB09qauoNx34dP35c8+bNU6lSpZQ7d261bNlSv//+u3x8fLRmzRpVr15d+fPnV/HixWW32+kKiocKQQH4j9K7EqV/edhsNrm6ulqaplNSUlS4cGG98sor2rZtm3744Qd9/fXXWr58ubp166a4uDhJUnR0tObNm6crV67c9XMBgAeBw+Fweljj4uJituRer02bNmrRooW+/PJLdejQQQsWLJBhGOrevbt++eUXSVLlypW1adMm7d+//67VH7hXEBSAW3D9OIP0rkTp4wguX76soUOHqlKlSurQoYP27Nkjh8MhV1dX1ahRQ7NmzdIjjzyihg0b6vHHH9f48eO1d+9eTZ06VZLUpEkTrVixQqdPnzbfCwDwz1JSUszf7Xa708Oa+fPnq1GjRmrYsKEWL15sjkGoWLGi1q1bJy8vL/Xo0UPly5fXDz/8oAIFCuizzz6TJNWtW1fHjh3T3r177+4JAfcAggJwE/5+s379OIPjx49r5MiReuedd3T8+HEtWrRIGzZsUIsWLbRp0ya9/PLL2rlzpySpSpUq8vf3V/78+c1jlSxZUjExMVq8eLEkqVmzZjp48KAOHjxovhcA4J+5urpKSutm9Msvv+idd97RmjVrdODAAU2YMEHR0dHKli2bXnjhBc2YMUOSVKlSJQUFBSlfvnzmcYKDg/XEE09o1apVkqRq1arJy8tLf/31l1JSUrgm46HimtUVAO5VDodDhmE4tRakS0xM1ODBg5U/f35t375dq1ev1tWrVzVz5kyFhoZq4MCBqlSpkkqXLq133nlHs2fPVokSJVSjRg25u7vrxIkT5rECAgIUEhKiHTt26Nq1aypRooSCgoI0duxYeXh4aPPmzapdu7YKFChwtz8CALinpKamZtiFSJImTZqkPXv2KG/evBoyZIhy5MihadOmKTAwUE2a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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "avg_metrics_o4mini_medium_simple_prompt, std_metrics_o4mini_medium_simple_prompt = average_and_std_metrics(metrics_o4mini_medium_simple_prompt)\n", + "avg_metrics_o3_medium_simple_prompt, std_metrics_o3_medium_simple_prompt = average_and_std_metrics(metrics_o3_medium_simple_prompt)\n", + "model_metrics_avg = {\n", + " \"o4-mini-medium-simple-prompt\": avg_metrics_o4mini_medium_simple_prompt,\n", + " \"o3-medium-simple-prompt\": avg_metrics_o3_medium_simple_prompt,\n", + "}\n", + "model_metrics_std = {\n", + " \"o4-mini-medium-simple-prompt\": std_metrics_o4mini_medium_simple_prompt,\n", + " \"o3-medium-simple-prompt\": std_metrics_o3_medium_simple_prompt,\n", + "}\n", + "plot_model_accuracies(model_metrics_avg, model_metrics_std, grader_title=\"Combined Grader Accuracy\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can see that the modelʼs performance has clear limits. In practice, iterating on the prompt often helps boost baseline results and get more out of the base model. However, in this case, our prompt engineering didnʼt lead to meaningful improvements-so we excluded those runs from the analysis.\n", + "\n", + "\n", + "A key requirement for RFT to work is that the base model demonstrates it can successfully complete the task for at least some examples right out of the gate. The initial accuracy of ~0.6 is a strong signal that RFT can boost performance. If the model never succeeds on your tasks, there is no training signal to hill climb on.\n", + "\n", + "\n", + "This evaluation process prepares us for the next step: guiding the model with structured, high-quality feedback from a grader.\n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## **4. Defining Your Grader**\n", + "\n", + "The grader defines the reward function that shapes model behavior during RFT. It provides examples of desired outputs-and penalizes undesirable ones. Designing an effective grader requires both principled structure and thoughtful domain insight, and is perhaps the most important task for successful RFT. \n", + "\n", + "In this section, we will present 3 graders, show how they should be set up to fit the API, and discuss the results they yielded. We will then show how to actually launch an RFT task. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### String based grader\n", + "We began with a dual grader using our earlier evaluation functions since it provides a distribution of scores that will be aligned with the lexical proximity of the prediction to the reference answer. It provided a starting point, but the signal wasnʼt rich enough for `o4-mini` to truly learn and improve, and a first experiment showed stagnant reward during the RFT run. For the API calls, you should build the python grading function as shown below. " + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "import inspect\n", + "\n", + "# --- Utility functions ---\n", + "def build_python_grader_payload(grader_fn) :\n", + " \"\"\"Build a payload for a python grader.\"\"\"\n", + " grader_source = inspect.getsource(grader_fn)\n", + " # Enforce function name to be `grade`\n", + " grader_source = grader_source.replace(grader_fn.__name__, \"grade\", 1)\n", + " return {\n", + " \"type\": \"python\",\n", + " \"source\": grader_source,\n", + " }\n", + "\n", + "multi_python_grader_tool_call = {\n", + " \"type\": \"multi\",\n", + " \"graders\": {\n", + " \"clinical_phrase\": {\n", + " \"name\": \"clinical_phrase_grader\",\n", + " \"image_tag\": \"2025-05-08\",\n", + " **build_python_grader_payload(clinical_phrase_grader),\n", + " },\n", + " \"clinical_phrase_binary\": {\n", + " \"name\": \"clinical_phrase_binary_grader\",\n", + " \"image_tag\": \"2025-05-08\",\n", + " **build_python_grader_payload(clinical_phrase_binary_grader),\n", + " },\n", + " },\n", + " \"calculate_output\": \"0.85 * clinical_phrase + 0.15 * clinical_phrase_binary\",\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here is a snapshot of its training curves, where the green curve is the traning set reward and the blue curve is the test set reward:\n", + "\n", + "![RFT String Grader](../images/rft_string_grader.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Model Grader 1\n", + "To address this limitation, we introduced a more advanced approach: the **model grader**. A model-based grader lets us embed semantic understanding and nuance into the feedback. Thatʼs especially powerful when domain-specific synonyms or fuzzy reasoning are in play. \n", + "\n", + "We used gpt-4.1 as our grader model, guided by a rubric that emphasized semantic fidelity: clinical synonymy, correct disease categorization, and conceptual alignment. Rather than focusing on superficial phrasing-e.g., \"Is this the same string?\"-the grader aimed to answer, \"Does this reflect the correct outcome or phenomenon?\" \n", + "\n", + "To ensure the grader aligned with expert expectations, we evaluated it on a subset of base model predictions. For any production use-case, domain expert reviewers should verify that model assigned scores reflect preferred answer orderings and align with domain judgment. This typically involves confirming that the model grader correctly ranks predictions according to their validity. In the scope of this cookbook, we approximated this evaluation by using OpenAI `o3` to check whether higher-quality predictions were consistently rewarded relative to their alternatives.\n", + "\n", + "From these discussions of `o3` , we iteratively update the model grader until the results are aligned. " + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "GRADER_PROMPT_1 = \"\"\"\n", + "System:\n", + " You are an expert medical grader. Compare the **Reference Answer** to the **Model's Answer** and produce **only** a JSON object with:\n", + " • **result**: a float between 0.0 and 1.0 \n", + " • **steps**: a list of reasoning steps (each with a `\"description\"` and a `\"conclusion\"`)\n", + "\n", + " Scoring rubric (start at 0.0, then add or subtract):\n", + " 1. Exact lexical match: **+0.15** \n", + " 2. Clinical synonym (e.g. “withdrawal of thought” ↔ “thought withdrawal”): **+0.35** \n", + " 3. Same disease family (e.g. two viral encephalitides): **+0.35** \n", + " 4. Partial term overlap (e.g. “ulcer” in both phrases): **+0.15** \n", + " 5. Completely unrelated: **-0.10**\n", + "\n", + " • If multiple criteria apply, sum their weights (max 1.0). \n", + " • Cap the final score to the [0.0, 1.0] range. \n", + " • In your **steps**, show which rule you applied and the running subtotal.\n", + "\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To be submitted through the API, this is how the dictionary is built." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "model_grader_1 = {\n", + " \"type\": \"score_model\",\n", + " \"name\": \"gpt41_score_model_1\",\n", + " \"input\": [\n", + " {\n", + " \"role\": \"system\",\n", + " \"content\": GRADER_PROMPT_1\n", + " },\n", + " {\n", + " \"role\": \"user\",\n", + " \"content\": \"Reference Answer: {{item.reference_answer}}. Model's Answer: {{sample.output_text}}\"\n", + " }\n", + " ],\n", + " \"pass_threshold\": 0.75,\n", + " \"model\": \"gpt-4.1-2025-04-14\",\n", + " \"range\": [0, 1],\n", + " \"sampling_params\": {\n", + " \"seed\": 42,\n", + " \"temperature\": 0,\n", + " },\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Accordingly, we set up the model grader locally to check the results of the models we will fine-tune next. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "from pydantic import BaseModel\n", + "from typing import List\n", + "\n", + "class GraderStep(BaseModel):\n", + " description: str\n", + " conclusion: str\n", + "\n", + "class GraderResponse(BaseModel):\n", + " result: float\n", + " steps: List[GraderStep]\n", + "\n", + "# Adapted python_model_grader to match the other graders' interface\n", + "def python_model_grader(sample, item, model_grader=model_grader_1):\n", + " \"\"\"\n", + " Calls an OpenAI model to grade the model output against the reference answer.\n", + " Expects sample to have \"output_text\", item to have \"reference_answer\".\n", + " Returns a float score (parsed from the model's JSON response).\n", + " \"\"\"\n", + " # Prepare the prompt as the grader expects\n", + " system_prompt = model_grader[\"input\"][0][\"content\"]\n", + " user_prompt = model_grader[\"input\"][1][\"content\"]\n", + " user_prompt_filled = user_prompt.replace(\"{{item.reference_answer}}\", item[\"reference_answer\"]).replace(\"{{sample.output_text}}\", sample[\"output_text\"])\n", + " messages = [\n", + " {\"role\": \"system\", \"content\": system_prompt},\n", + " {\"role\": \"user\", \"content\": user_prompt_filled}\n", + " ]\n", + " # Call the OpenAI API with the grader's model\n", + " response = client.beta.chat.completions.parse(\n", + " model=model_grader[\"model\"],\n", + " messages=messages,\n", + " seed=model_grader.get(\"sampling_params\", {}).get(\"seed\", None),\n", + " temperature=model_grader.get(\"sampling_params\", {}).get(\"temperature\", 0),\n", + " response_format=GraderResponse,\n", + " )\n", + " # Parse the float score from the model's JSON response\n", + " parsed = response.choices[0].message.parsed\n", + " if not isinstance(parsed, GraderResponse):\n", + " raise RuntimeError(f\"Grader returned invalid structured output: {parsed!r}\")\n", + " return float(parsed.result)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "While the rubric initially delivered sensible feedback, the model soon uncovered a loophole and began **reward-hacking**. Scores shot up-sometimes by 20-30 percentage points-not because clinical accuracy improved but because the model padded its “one phrase” answers with synonyms, doses, and full management plans. You might see `begin warfarin therapy **and** continue unfractionated heparin for ≥5 days, overlapping until the INR is in the therapeutic range (2–3)` or `chewable aspirin 325 mg stat plus nitroglycerin…` instead of the required `continue unfractionated heparin` or `aspirin` respectively. Although the system prompt is explicit-*“respond with exactly one phrase: the single most likely outcome or phenomenon”*-these verbose outputs inflate *lexical_similarity* scores without precisely adding prediction value. This experience highlights the need to continuously inspect model outputs and remain vigilant for reward-hacking behaviours that can quietly distort evaluation metrics." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here is a snapshot of its training curves (green is training reward, blue is test reward):\n", + "\n", + "![RFT Model Hacking](../images/rft_hacking.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Model Grader 2\n", + "To mitigate this reward-hack, we refined the grader prompt by clarifying expectations, enforcing stricter output constraints, and supplying contrastive examples of correct versus incorrect behavior. Once again, we've iterated with `o3`, leveraging predictions from the base `o4-mini` and the previous fine-tuned model hacking examples, to design and validate our grader. Another important point of this updated grader is the reduction of the weight of the *lexical_similarity*, to ensure that *clinical_similarity* prevails." + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": {}, + "outputs": [], + "source": [ + "GRADER_PROMPT_2 = \"\"\"You are an expert medical grader.\n", + "\n", + "Compare the reference_answer (gold standard) with the model_prediction\n", + "and return **exactly** this JSON object:\n", + "\n", + "{\n", + " \"steps\": [ // each: {\"description\": \"...\", \"conclusion\": \"...\"}\n", + " …\n", + " ],\n", + " \"result\": \n", + "}\n", + "\n", + "──────────────── Input placeholders ───────────────\n", + "reference_answer:\n", + "model_prediction:\n", + "\n", + "──────────── Normalisation steps ────────────\n", + "• lowercase, strip punctuation / excess whitespace \n", + "• expand common abbreviations (e.g. cll → chronic lymphocytic leukemia) \n", + "• map both strings to ICD-10 / SNOMED concepts when possible\n", + "\n", + "──────────── Clinical layer rubric ───────────\n", + "L1 exact concept or universally accepted synonym \n", + "L2 same concept but benign modifier differs (e.g. “acute”, “left”) \n", + "L3 same disease / drug family but wrong subtype or variant \n", + "L4 same organ system but entirely different disease / intervention \n", + "L5 only partial mechanistic overlap (e.g. both vasodilators) \n", + "L6 unrelated or nonsensical\n", + "\n", + "──────────── Scoring parameters ─────────────\n", + "clinical_weight = 0.90\n", + "lexical_weight = 0.10\n", + "clinical_similarity = {1:1.00, 2:0.85, 3:0.45, 4:0.30, 5:0.10, 6:0.00}\n", + "\n", + "lexical_similarity = normalized_levenshtein(reference_answer,\n", + " model_prediction)\n", + "\n", + "# Optional penalty if a clinically critical adjective is missing\n", + "critical_modifiers = [\n", + " \"wide\", \"narrow\", \"acute\", \"chronic\", \"posteromedial\",\n", + " \"oxidized\", \"oxidised\", \"left\", \"right\"\n", + "]\n", + "modifier_pen = -0.05 if any(\n", + " w in reference_answer and w not in model_prediction\n", + " for w in critical_modifiers\n", + ") else 0.0\n", + "\n", + "# Determine layer L (1-6) per rubric above using ontology + judgment.\n", + "if L == 6:\n", + " score = 0.0\n", + "else:\n", + " score = (clinical_weight * clinical_similarity[L] +\n", + " lexical_weight * lexical_similarity) + modifier_pen\n", + "\n", + "Clamp to [0,1] and round to 3 decimals. \n", + "Output **only** the JSON.\n", + "\n", + "──────────────── Worked examples ─────────────\n", + "reference_answer: beta-thalassemia major \n", + "model_prediction: beta-thalassemia minor \n", + "reasoning: Both involve β-globin chain synthesis, but “major” causes\n", + " transfusion-dependent anemia while “minor” is largely benign;\n", + " same family, wrong subtype → **L3**. Lexical ≈ 0.83. \n", + "score = 0.90·0.45 + 0.10·0.83 = 0.488 → **0.488**\n", + "\n", + "reference_answer: ACE inhibitor \n", + "model_prediction: angiotensin-receptor blocker \n", + "reasoning: Both act on the renin–angiotensin axis yet on different\n", + " targets; only partial mechanistic overlap → **L5**.\n", + " Lexical ≈ 0.31. \n", + "score = 0.90·0.10 + 0.10·0.31 = 0.121 → **0.121**\n", + "\n", + "reference_answer: acute pancreatitis \n", + "model_prediction: pancreatitis \n", + "reasoning: Same disorder but missing timing adjective “acute”;\n", + " benign modifier difference → **L2**. Lexical ≈ 0.78. \n", + "score = 0.90·0.85 + 0.10·0.78 = 0.843 → **0.843**\n", + "\n", + "reference_answer: valproate \n", + "model_prediction: valproic acid \n", + "reasoning: Valproic acid is the active moiety of valproate; mechanisms\n", + " and indications are identical → **L1**. Lexical ≈ 0.82. \n", + "score = 0.90·1.00 + 0.10·0.82 = 0.982 → **0.982**\n", + "\n", + "reference_answer: riboflavin \n", + "model_prediction: riboflavin deficiency \n", + "reasoning: Adds “deficiency” but refers to the same vitamin (B₂);\n", + " benign modifier difference → **L2**. Lexical ≈ 0.60. \n", + "score = 0.90·0.85 + 0.10·0.60 = 0.825 → **0.825**\n", + "\n", + "reference_answer: splenectomy \n", + "model_prediction: acetaminophen overdose \n", + "reasoning: Surgical removal of the spleen has no mechanistic or anatomic\n", + " relationship to toxic drug ingestion → **L6**. \n", + "score = **0.000**\n", + "\n", + "reference_answer: ulcerative colitis \n", + "model_prediction: Crohn disease \n", + "reasoning: Both are inflammatory-bowel diseases but differ in location,\n", + " histology and management; same organ system, different disease\n", + " → **L4**. Lexical ≈ 0.38. \n", + "score = 0.90·0.30 + 0.10·0.38 = 0.308 → **0.308**\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": {}, + "outputs": [], + "source": [ + "model_grader_2 = {\n", + " \"type\": \"score_model\",\n", + " \"name\": \"gpt41_score_model_2\",\n", + " \"input\": [\n", + " {\n", + " \"role\": \"system\",\n", + " \"content\": GRADER_PROMPT_2\n", + " },\n", + " {\n", + " \"role\": \"user\",\n", + " \"content\": \"Reference Answer: {{item.reference_answer}}. Model's Answer: {{sample.output_text}}\"\n", + " }\n", + " ],\n", + " \"pass_threshold\": 0.75,\n", + " \"model\": \"gpt-4.1-2025-04-14\",\n", + " \"range\": [0, 1],\n", + " \"sampling_params\": {\n", + " \"seed\": 42,\n", + " \"temperature\": 0,\n", + " },\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "The final result was a high-signal, domain-sensitive grader that guided the model toward more appropriate and concise predictions.\n", + "\n", + "**Note on cost:** LLM graders incur token usage charges in addition to training compute. To manage costs effectively, we recommend:\n", + "1. Testing your grader locally on base model completions (and optionally synthetic ones) to ensure it aligns with your rubric or human preferences. When available, use [flex processing](https://platform.openai.com/docs/guides/flex-processing) for more efficient evaluation.\n", + "2. Starting with a small-scale RFT run to validate grader alignment and detect potential reward-hacking before scaling up.\n", + "\n", + "Let's look at how to launch the training in the next step!\n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## **5. Training**\n", + "\n", + "Once your prompt and grader are finalized, you can proceed to training. This section shows how to launch RFT using your final grader-but naturally, you would have already run similar commands when experimenting with earlier grader versions to evaluate their performance." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We make sure the grader passed API test," + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "\n", + "API_KEY = os.environ[\"OPENAI_API_KEY\"]\n", + "HEADERS = {\"Authorization\": f\"Bearer {API_KEY}\"}\n", + "\n", + "# Validate a grader configuration for fine-tuning\n", + "payload = {\"grader\": model_grader_2}\n", + "try:\n", + " response = requests.post(\n", + " \"https://api.openai.com/v1/fine_tuning/alpha/graders/validate\",\n", + " json=payload,\n", + " headers=HEADERS,\n", + " )\n", + " response.raise_for_status()\n", + " print(\"Grader validated\")\n", + "except requests.exceptions.RequestException as e:\n", + " print(f\"Error validating grader: {e}\")\n", + " if 'response' in locals():\n", + " print(f\"Response: {response.text}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "and upload the training and test sets to the OpenAI file system." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Set your training and test file paths\n", + "train_file = \"data/medical_01_verifiable_problem_train_with_prompt.jsonl\"\n", + "test_file = \"data/medical_01_verifiable_problem_val_with_prompt.jsonl\"\n", + "\n", + "def upload_file(file_path: str) -> str:\n", + " \"\"\"Upload a file to the OpenAI platform for fine-tuning.\"\"\"\n", + " print(f\"Uploading file: {file_path}\")\n", + " with open(file_path, 'rb') as f:\n", + " response = requests.post(\n", + " \"https://api.openai.com/v1/files\",\n", + " headers=HEADERS,\n", + " files={\"file\": f},\n", + " data={\"purpose\": \"fine-tune\"}\n", + " )\n", + " response.raise_for_status()\n", + " file_id = response.json()[\"id\"]\n", + " print(f\"File uploaded successfully. File ID: {file_id}\")\n", + " return file_id\n", + "\n", + "train_file_id = train_file\n", + "if train_file.endswith(\"jsonl\"):\n", + " print(f\"Training file detected: {train_file}\")\n", + " train_file_id = upload_file(train_file)\n", + "test_file_id = test_file\n", + "if test_file and test_file.endswith(\"jsonl\"):\n", + " print(f\"test file detected: {test_file}\")\n", + " test_file_id = upload_file(test_file)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's now define the hyper-parameters for our run. We will be fine-tuning `o4-mini`, with the `medium` reasoning effort. This parameter will impact the length by limiting the number of tokens the model uses to reason. We tune with a moderate compute multiplier and reasonable number of epochs, prioritizing efficiency and fast iteration. You’ll want to tailor these depending on your budget, desired generalization, and dataset difficulty." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Set the model and other parameters\n", + "model = \"o4-mini-2025-04-16\"\n", + "suffix = \"medical_01_verifiable_problem_gpt41_grader\"\n", + "reasoning_effort = \"medium\"\n", + "n_epochs = 5\n", + "seed = 42\n", + "grader = model_grader_2\n", + "response_format = None\n", + "compute_multiplier = 1.0\n", + "etest_samples = 1\n", + "eval_interval = 5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We are now ready to launch the run!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Launch the RFT job\n", + "payload = dict(\n", + " training_file=train_file_id,\n", + " test_file=test_file_id,\n", + " model=model,\n", + " suffix=suffix,\n", + " method=dict(\n", + " type=\"reinforcement\",\n", + " reinforcement=dict(\n", + " grader=grader,\n", + " response_format=response_format,\n", + " hyperparameters=dict(\n", + " compute_multiplier=compute_multiplier,\n", + " etest_samples=etest_samples,\n", + " eval_interval=eval_interval,\n", + " n_epochs=n_epochs,\n", + " reasoning_effort=reasoning_effort,\n", + " )\n", + " )\n", + " ),\n", + " seed=seed\n", + ")\n", + "\n", + "try:\n", + " response = requests.post(\n", + " \"https://api.openai.com/v1/fine_tuning/jobs\",\n", + " json=payload,\n", + " headers=HEADERS,\n", + " )\n", + " response.raise_for_status()\n", + " job_id = response.json().get(\"id\")\n", + " if job_id:\n", + " print(\"Training job created with ID:\", job_id)\n", + " print(\n", + " f\"View the job details at: https://platform.openai.com/finetune/{job_id}\")\n", + " else:\n", + " print(\"Failed to retrieve job ID from response.\")\n", + "except requests.exceptions.RequestException as e:\n", + " print(f\"An error occurred while creating the training job: {e}\")\n", + " if 'response' in locals():\n", + " print(f\"Response: {response.text}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "On the [dashboard](https://platform.openai.com/finetune/) you can observe the reward plots - they let you watch overall performance improve across steps, while the per-grader charts break down specific components in the case of a *multi_grader*. Reasoning token usage trends (often decreasing as the model gets more confident) and step duration metrics give insight into efficiency. Grader latency and error count plots help ensure your grader stays performant and bug-free during the run.\n", + "\n", + "Here is a snapshot of our training curves, where the green and orange curves are for the training set, while tbe blue and red curves are for the test subset:\n", + "\n", + "![RFT Dashboard Example](../images/rft_dashboard_modelgrader2.png)\n", + "\n", + "During training, evaluation runs on the test set are logged directly to the [Evaluation API](https://platform.openai.com/evaluations?tab=runs). You can head there to track how your samples perform and get a sense of how predictions evolve over time.\n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## **6. Using Your Fine-Tuned Model**\n", + "\n", + "When training completes, you can call your new model by its `model_id` and benchmark its improvements. Expect sharper predictions! \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# To retrieve information about a fine-tuning job (including the fine-tuned model id), use the job_id:\n", + "response = requests.get(\n", + " f\"https://api.openai.com/v1/fine_tuning/jobs/{job_id}\",\n", + " headers=HEADERS,\n", + ")\n", + "if response.ok:\n", + " data = response.json()\n", + " if data.get(\"status\") == \"succeeded\":\n", + " fine_tuned_model_id = data.get(\"fine_tuned_model\")\n", + " else:\n", + " fine_tuned_model_id = None\n", + "else:\n", + " raise Exception(f\"Request failed: {response.status_code} - {response.text}\")\n", + "print(\"Fine-tuned model id:\", fine_tuned_model_id)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Model's prediction scores\n", + "\n", + "Let's compute the scores of our base and fine-tuned models for comparison." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Generating predictions (run 1): 0%| | 0/100 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "avg_metrics_o4mini_medium_simple_prompt_model_grader_2, std_metrics_o4mini_medium_simple_prompt_model_grader_2 = average_and_std_metrics(metrics_o4mini_medium_simple_prompt_model_grader_2)\n", + "avg_metrics_o3_medium_simple_prompt_model_grader_2, std_metrics_o3_medium_simple_prompt_model_grader_2 = average_and_std_metrics(metrics_o3_medium_simple_prompt_model_grader_2)\n", + "avg_metrics_ftmodel_medium_simple_prompt_model_grader_2, std_metrics_ftmodel_medium_simple_prompt_model_grader_2 = average_and_std_metrics(metrics_ftmodel_medium_simple_prompt_model_grader_2)\n", + "model_metrics_avg = {\n", + " \"o4-mini-medium-simple-prompt\": avg_metrics_o4mini_medium_simple_prompt_model_grader_2,\n", + " \"o3-medium-simple-prompt\": avg_metrics_o3_medium_simple_prompt_model_grader_2,\n", + " \"ftmodel-medium-simple-prompt\": avg_metrics_ftmodel_medium_simple_prompt_model_grader_2\n", + "}\n", + "model_metrics_std = {\n", + " \"o4-mini-medium-simple-prompt\": std_metrics_o4mini_medium_simple_prompt_model_grader_2,\n", + " \"o3-medium-simple-prompt\": std_metrics_o3_medium_simple_prompt_model_grader_2,\n", + " \"ftmodel-medium-simple-prompt\": std_metrics_ftmodel_medium_simple_prompt_model_grader_2\n", + "}\n", + "plot_model_accuracies(model_metrics_avg, model_metrics_std, grader_title=\"Model Grader 2 Accuracy\")" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Total mistakes: 80\n", + "\n", + "[Sample 5]\n", + " Model prediction: carotid duplex ultrasound\n", + " Reference answer: carotid doppler\n", + " Score: 0.5525\n", + "\n", + "[Sample 6]\n", + " Model prediction: under fixation due to insufficient fixation time\n", + " Reference answer: incomplete fixation\n", + " Score: 0.5037037037037037\n", + "\n", + "[Sample 7]\n", + " Model prediction: acute rheumatic fever due to group a streptococcal pharyngitis mediated by type ii hypersensitivity\n", + " Reference answer: acute rheumatic fever\n", + " Score: 0.85\n", + "\n", + "[Sample 8]\n", + " Model prediction: exposure (open) method of burn treatment\n", + " Reference answer: heterograft application with sutures to secure it in place and daily washes, but no dressing\n", + " Score: 0.3031007751937985\n", + "\n", + "[Sample 9]\n", + " Model prediction: beta-lactamase production leading to enzymatic inactivation of ampicillin\n", + " Reference answer: production of beta-lactamase enzyme\n", + " Score: 0.7555555555555555\n" + ] + } + ], + "source": [ + "# Print mistakes where the model did not get the correct answer (score < 1.0)\n", + "mistakes = [\n", + " {\"index\": i, **res}\n", + " for i, res in enumerate(predictions_ftmodel_medium_simple_prompt_model_grader_2[0])\n", + " if res[\"score\"] < 1.0\n", + "]\n", + "\n", + "print(f\"\\nTotal mistakes: {len(mistakes)}\")\n", + "for m in mistakes[5:10]:\n", + " print(f\"\\n[Sample {m['index']}]\")\n", + " print(f\" Model prediction: {m['model_prediction']}\")\n", + " print(f\" Reference answer: {m['reference_answer']}\")\n", + " print(f\" Score: {m['score']}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We see about a 5-point boost in accuracy after fine-tuning. Looking at the first few errors, the model tends to harshly penalize answers that are close but not clinically identical-like *carotid duplex ultrasound* vs. *carotid doppler*. It also dings longer answers, even when they’re correct, like *beta-lactamase production leading to enzymatic inactivation of ampicillin*." + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "o4-mini-medium-simple-prompt bin counts: [ 4. 15. 9. 7. 7. 4. 3. 5. 22. 24.]\n", + "ftmodel-medium-simple-prompt bin counts: [ 8. 15. 7. 3. 9. 7. 8. 4. 19. 20.]\n", + "Max bin count (y-axis): 24.0\n" + ] + }, + { + "data": { + "image/png": "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DDJEREQkWwwyREREJFsMMkRERCRbDDJEREQkWwwyREREJFsMMkRERCRbDDJEREQkWwwyREREJFsMMkRERCRbDDJEREQkWwwyREREJFsMMkRERCRbDDJEREQkWwwyREREJFsMMkRERCRbDDJEREQkWwwyREREJFsMMkRERCRbDDJEREQkWwwyREREJFsMMkRERCRbDDJEREQkWwwyREREJFsMMkRERCRbsggyK1euhKOjI/T19VGvXj2cPXtW3SURERGRBtD4IPPnn39i3Lhx8PHxwYULF1C9enW0atUKT548UXdpREREpGYaH2SWLFmCwYMHo3///qhcuTLWrFkDQ0NDbNy4Ud2lERERkZppdJB5+/Ytzp8/D3d3d2malpYW3N3dcerUKTVWRkRERJqgmLoLyMmzZ8+QlpYGa2trpenW1ta4fv16lvOkpKQgJSVFup+QkAAASExMLPD63rx6V+DLJCIikpPC+HzNvFwhRI7tNDrI5Me8efPg5+enMt3e3l4N1RAREX3e5g80K9Tlv3z5EmZm2a9Do4NMyZIloa2tjdjYWKXpsbGxsLGxyXKeqVOnYty4cdL99PR0PH/+HCVKlIBCoSjUejVVYmIi7O3tcf/+fZiamqq7HPr/uF80E/eLZuJ+0UyFuV+EEHj58iXs7OxybKfRQUZXVxe1a9dGSEgIOnbsCOB9MAkJCcGIESOynEdPTw96enpK08zNzQu5UnkwNTXlHwANxP2imbhfNBP3i2YqrP2SU09MBo0OMgAwbtw49O3bF3Xq1MFXX32FZcuWITk5Gf3791d3aURERKRmGh9kunfvjqdPn2LGjBl4/PgxatSogaCgIJUBwERERPTl0fggAwAjRozI9lASfZyenh58fHxUDrmRenG/aCbuF83E/aKZNGG/KMTHzmsiIiIi0lAafUE8IiIiopwwyBAREZFsMcgQERGRbDHIEBERkWwxyHwmVq5cCUdHR+jr66NevXo4e/Zstm3Xr1+Pxo0bo3jx4ihevDjc3d1zbE/5l5f9ktm2bdugUCikC0FSwcrrfomPj8fw4cNha2sLPT09VKhQAfv27Suiar8ced0vy5YtQ8WKFWFgYAB7e3uMHTsWb968KaJqvwzHjh1D+/btYWdnB4VCgcDAwI/OExoailq1akFPTw/lypVDQEBA4RYpSPa2bdsmdHV1xcaNG8W/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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "scores_o4 = [p['score'] for p in predictions_o4mini_medium_simple_prompt_model_grader_2[0]]\n", + "scores_ft = [p['score'] for p in predictions_ftmodel_medium_simple_prompt_model_grader_2[0]]\n", + "\n", + "# Determine common bins for both histograms\n", + "all_scores = scores_o4 + scores_ft\n", + "bins = plt.hist(all_scores, bins=10, alpha=0)[1]\n", + "\n", + "# Plot histograms and capture the counts\n", + "counts_o4, _, _ = plt.hist(\n", + " scores_o4,\n", + " bins=bins,\n", + " alpha=0.6,\n", + " label='o4-mini-medium-simple-prompt'\n", + ")\n", + "counts_ft, _, _ = plt.hist(\n", + " scores_ft,\n", + " bins=bins,\n", + " alpha=0.6,\n", + " label='ftmodel-medium-simple-prompt'\n", + ")\n", + "\n", + "plt.title(\"Model Grader 2 Score Distribution by Model\")\n", + "plt.xlabel(\"Score\")\n", + "plt.ylabel(\"Count\")\n", + "plt.ylim(top=25)\n", + "plt.legend()\n", + "\n", + "# Print the bin counts\n", + "print(\"o4-mini-medium-simple-prompt bin counts:\", counts_o4)\n", + "print(\"ftmodel-medium-simple-prompt bin counts:\", counts_ft)\n", + "print(\"Max bin count (y-axis):\", max(max(counts_o4), max(counts_ft)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Looking at the distruibution of scores, we observe that RFT helped shift the model’s predictions out of the mid-to-low score zone (0.4–0.5) and into the mid-to-high range (0.5–0.6). Since the grader emphasizes clinical similarity over lexical match, this shift reflects stronger medical reasoning-not just better phrasing-according to our *expert* grader. As observed in the 0.9-1.0 range, some verbosity crept in despite mitigations and slightly lowering scores throughout, though it often reflected more complete, semantically aligned answers. A future grader pass could better account for these cases.\n", + "\n", + "Note, because the earlier `combined_grader` was designed to reward lexical correctness, its accuracy didnʼt improve much-which is expected. That gap reinforces why validating your model grader is critical, and why you should monitor for reward-hacking. In our case, we used `o3` to spot-check grading behavior, but domain expert review is essential. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Model's reasoning\n", + "\n", + "Another important point in the analysis of the fine-tuned model are the reasoning summaries. The model may provide key information throughout these summaries, and exploring them to understand where the model fails can drive updates in the model's and the grader's system prompts. Below, we show examples of such chain of thought summaries that the model produced to show its way of answering the question:" + ] + }, + { + "cell_type": "code", + "execution_count": 118, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean reasoning_tokens_used o4-mini: 424\n", + "Mean reasoning_tokens_used o3: 353\n", + "Mean reasoning_tokens_used ftmodel: 1820\n" + ] + } + ], + "source": [ + "# Flatten the list of lists into a single list of dicts\n", + "predictions = {\n", + " \"o4-mini\": predictions_o4mini_medium_simple_prompt_model_grader_2,\n", + " \"o3\": predictions_o3_medium_simple_prompt_model_grader_2,\n", + " \"ftmodel\": predictions_ftmodel_medium_simple_prompt_model_grader_2,\n", + "}\n", + "\n", + "for model_name, predictions in predictions.items():\n", + " all_preds = [item for sublist in predictions for item in sublist]\n", + " reasoning_tokens = [p['reasoning_tokens_used'] for p in all_preds if 'reasoning_tokens_used' in p]\n", + " mean_reasoning_tokens = np.mean(reasoning_tokens)\n", + " print(f\"Mean reasoning_tokens_used {model_name}: {mean_reasoning_tokens:.0f}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The fine-tuned model spends more reasoning tokens to think through the question. Let's visualize an example thanks to the reasoning summaries." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "**Classifying staging type**\n", + "\n", + "The user provided a clinical scenario of a 35-year-old female with a 5 cm oral tumor and a 2 cm lymph node. They're asking how to stage it according to the TNM classification. This is a diagnosis query, so the correct answer type here is \"diagnosis.\" Considering the tumor's size, it appears to be classified as T3 since it's greater than 4 cm. Thus, I think the staging might be Stage II, but I'll confirm that." + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from IPython.display import Markdown, display\n", + "markdown_text = results_o4mini_model_grader_2[5][\"summaries\"]\n", + "display(Markdown(markdown_text))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "**Clarifying T staging for cancers**\n", + "\n", + "I’m digging into T staging for head and neck cancers in the oral cavity. So, T1 applies to tumors 2 cm or less, T2 for those over 2 cm but not more than 4 cm, and T3 is for tumors over 4 cm. T4a indicates invasion into adjacent structures. The patient's tumor measures 5 cm, which is over 4 cm. I’m not sure if it fits T3 or T4a, since T4a involves additional invasiveness, not just size.\n", + "**Determining T and N staging**\n", + "\n", + "I’m looking at a 5 cm tumor in the oral cavity. It seems there’s no mention of invasion into adjacent structures, so I’m categorizing it as T3 due to its size. T4a usually means invasion into structures like bone or skin. According to the TNM classification, since I see no such invasion, T classification remains T3.\n", + "\n", + "Moving on to N staging, I see there's a single lymph node of 2 cm on the same side; this fits the N1 classification for metastasis, as it’s less than 3 cm." + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "markdown_text = results_ft_model_grader_2[5][\"summaries\"]\n", + "display(Markdown(markdown_text))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Base `o4-mini`'s reasoning gives a quick answer but doesn’t explain how it got there. It mentions the tumor size but doesn’t walk through the actual TNM rules, and it seems unsure about the result. On the other hand, the `finetuned model` is more thoughtful - breaking down the T and N staging step by step and explaining why each part applies. The latter seems more careful, and seems to have learnt to break down the case description even more." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### To push the scores further\n", + "Both the baseline `o3` and our fine-tuned `o4-mini` sometimes scored zero on the same samples-a red flag that the reference labels may be wrong. Before adding more compute, invest in data quality: have a domain expert relabel the noisy slice, analyze the model's reasoning, then tighten the grader prompt. Clean, trusted data and methodical updates almost always buys more accuracy than extra epochs." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## **Conclusion**\n", + "\n", + "Weʼve looked at how to design graders that give `o4-mini` the kind of detailed feedback it needs during RFT. That signal is what helps the model actually learn and improve beyond the baseline. Model graders can be incredibly powerful for this-but only if theyʼre designed carefully. A sloppy grader or sloppy data can send the wrong signals and steer the model in the wrong direction. \n", + "\n", + "You're now ready to apply reinforcement fine-tuning on your own models using the OpenAI API. Weʼre excited to see how you push the boundaries of reasoning and tool use with custom graders and smarter model behavior!\n", + "\n", + "For troubleshooting or next steps, refer to the [OpenAI fine-tuning documentation](https://platform.openai.com/docs/guides/fine-tuning)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "jupyter-env", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/images/rft_dashboard_modelgrader2.png b/images/rft_dashboard_modelgrader2.png new file mode 100644 index 0000000000000000000000000000000000000000..731c38c9af669f78165f771068c68877ac3bd75f GIT binary patch literal 260163 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 z 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 jj8B z`v&~0QM>G>TtU5|#A9fwD5XNz$jS6tsMG`KQpz8{y<-EQ{Lu<2(*^_fILV}pS3I4z z@SCTJERmPAvI;ad+{DP^;_)z;{nN@99Z(xq4GSrIPRd06_E86e+JjD|y?QqlGY-__v=WMECN_MhHI@ zyZD`InLInyn={41(i5olR0>2EN2V($=VcoL99x$H)j~c&G-?p;C z#!kKbgKBc*KrWd~wN92)8tz%ju|+axf_Q%>P)ywNK!>{6WT+mtzBQQRDGC9za_hMl zU-tcrKZ=4M(Lu1-173XW_9kz{lrajOaJgVB6LMZ@{u#OsD3>muAKmh+`Aag$j=D5# zwfsi>g;qNm^mus))cFs1_xGe;Qlnh4Z8Pk)6g69~*Rp*eCAWJ)9p1_irPLy~ui$$3 zmFV2iK|60P>}7FS>jZ0$EUGWufib z3t_0iW*%eD6rnIjK&}sxYEAQ`yf9luCD6G`jx>0LzxDguW%%cNlt-Yp_#=I`#of0* z_V8Igzf2u$%2Z4Q(fa$=a$@PZUm63iIcOHT1A7|X$X)V*mM^k8IQ1dYmHd^Vje3MZA9lvCDm8CJ zXZ}`jhik^DQ(TUIJ)~R*wW>Z*?d!^=mrRtV*JH*4KRE@)Q4~wa#ch=e7;d-iP^-|a ztFW`Sb$4ZaCW^@<_b%}l5n4Pfw4=?Rznsg+f44V_+}nu;xek)}vg~m`_Zxk$HXEzb z#g6gb+n4^ZX58>ZhT%8%X3cSF$rz(!Eh_ur<`+(v#*?;pGNEKH@f0_uY^`{nYA0|p z)ZcwKueSbc6G%}9dN`BQVfU`CC&tXkmvy<6TfC&rGSmO$NPhhR0J^+H-|vMEeL_AA zy!1n(6AAK_9j``~?NosULlx*a-1YMDogO+@ckZKO!yA`gw;3RPtG6ag!W-Qq^X+`a zP3=bk2lgJ1Az_!!GrSs0tjPV5F*Ox^v_o?GDbghZC6c7~ebb=B8n ziYr)87GE>H?fW454P#Xc*Nnry49M1(<;clQ)L>sigS0vozBA`p#8yA9e8=}kAR7$c1*I@jhw+-0lj-;V7&5SPFr{m0>gbfBKRr+O3@AVH8!^m3dsXL#Im#bLmT7*V zeud(5LA<~cC8v|{W;(@ELgA!$_DeQAk@s#uhD&u2Gdb8om+}OYCRow*|kj`!#9JDuOn zJLd7%tu|40_Bc1(u3MO7V;#N8@U?a~SsoOM`I5gU9mF3u)%lA>jv;t$Y1;i1N∓ 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
hr21a*yb3cgg*xw?2uOWtzI>8V{+SUiu~DbN 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

nnCVX$m0(2l)k5-^5;{=?ks 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 literal 0 HcmV?d00001 diff --git a/images/rft_string_grader.png b/images/rft_string_grader.png new file mode 100644 index 0000000000000000000000000000000000000000..0352efe15c83dd25fc1d3de6a3bc698f8b8ee8b6 GIT binary patch literal 106514 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 d4>j)IWKUsomDN7%@0#L2)L@mHB* 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 OAG52LMx~c;J@_wdPVAKc literal 0 HcmV?d00001 diff --git a/registry.yaml b/registry.yaml index 1edd4bb21b..ab31aa9828 100644 --- a/registry.yaml +++ b/registry.yaml @@ -4,6 +4,16 @@ # should build pages for, and indicates metadata such as tags, creation date and # authors for each page. +- title: Reinforcement Fine-Tuning on the OpenAI Platform + path: examples/Reinforcement_Fine_Tuning.ipynb + date: 2025-05-23 + authors: + - theophile-openai + tags: + - reinforcement-learning + - fine-tuning + - functions + - responses - title: Guide to Using the Responses API's MCP Tool path: examples/mcp/mcp_tool_guide.ipynb From 383da6d37a42ac0d70c55dde86702032ab118587 Mon Sep 17 00:00:00 2001 From: theophile-oai Date: Fri, 23 May 2025 18:07:33 +0200 Subject: [PATCH 2/8] update tags --- registry.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/registry.yaml b/registry.yaml index ab31aa9828..fe14c16f12 100644 --- a/registry.yaml +++ b/registry.yaml @@ -12,8 +12,6 @@ tags: - reinforcement-learning - fine-tuning - - functions - - responses - title: Guide to Using the Responses API's MCP Tool path: examples/mcp/mcp_tool_guide.ipynb From 57a7a0b391b20770ecf3bb10e9843596f04920fe Mon Sep 17 00:00:00 2001 From: theophile-oai Date: Fri, 23 May 2025 18:08:12 +0200 Subject: [PATCH 3/8] update tags --- registry.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/registry.yaml b/registry.yaml index fe14c16f12..3bb28e7aee 100644 --- a/registry.yaml +++ b/registry.yaml @@ -12,6 +12,7 @@ tags: - reinforcement-learning - fine-tuning + - reinforcement-learning-graders - title: Guide to Using the Responses API's MCP Tool path: examples/mcp/mcp_tool_guide.ipynb From a8ee5d9f868e51f41571cb820f30d15b88924e3b Mon Sep 17 00:00:00 2001 From: rob-openai Date: Fri, 23 May 2025 08:26:36 -0700 Subject: [PATCH 4/8] Add rft cookbook for healthbench (#1849) --- ...reinforcement_finetuning_healthbench.ipynb | 1184 +++++++++++++++++ 1 file changed, 1184 insertions(+) create mode 100644 examples/fine-tuned_qa/reinforcement_finetuning_healthbench.ipynb diff --git a/examples/fine-tuned_qa/reinforcement_finetuning_healthbench.ipynb b/examples/fine-tuned_qa/reinforcement_finetuning_healthbench.ipynb new file mode 100644 index 0000000000..a1b16c02af --- /dev/null +++ b/examples/fine-tuned_qa/reinforcement_finetuning_healthbench.ipynb @@ -0,0 +1,1184 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "55ed4147", + "metadata": {}, + "source": [ + "# Reinforcement Fine-Tuning with the OpenAI API for Conversational Reasoning\n", + "\n", + "This notebook demonstrates how to use OpenAI's reinforcement fine-tuning (RFT) to improve a model's conversational reasoning capabilities (specifically asking questions to gain additional context and reduce uncertainty). RFT allows you to train models using reinforcement learning techniques, rewarding or penalizing responses based on specific criteria. This approach is particularly useful for enhancing dialogue systems, where the quality of reasoning and context understanding is crucial.\n", + "\n", + "### HealthBench\n", + "\n", + "This cookbook evaluates and improves model performance on a focused subset of [HealthBench](https://openai.com/index/healthbench/), a benchmark suite for medical QA. This guide walks through how to configure the datasets, define evaluation rubrics, and fine-tune model behavior using reinforcement signals derived from custom graders.\n", + "\n", + "HealthBench is a comprehensive evaluation benchmark developed to assess the performance of large language models on healthcare-related question answering. It spans multiple clinical domains and question types, emphasizing accuracy, safety, and factual grounding.\n", + "\n", + "### Evaluating Model Performance\n", + "\n", + "The [openai/simple-evals](https://github.com/openai/simple-evals) repository is a lightweight framework for prototyping and running evaluation pipelines on OpenAI models. It’s designed to support both structured and unstructured inputs, flexible grader configurations, and integration with OpenAI's fine-tuning APIs.\n", + "\n", + "We will use this framework to evaluate the performance of GPT 4.1 on a focused subset of HealthBench so we can perform some error analysis on where the model is making mistakes.\n" + ] + }, + { + "cell_type": "markdown", + "id": "38dc1c91", + "metadata": {}, + "source": [ + "## (Optional) Evaluate GPT-4.1 on HealthBench Hard\n", + "\n", + "1. Clone the simple-evals repo\n", + "\n", + "```bash\n", + "git clone https://github.com/roberttinn/simple-eval.git\n", + "pip install openai human-eval\n", + "```\n", + "\n", + "2. GPT 4.1 is one of the best performing models on [HealthBench hard](https://openai.com/index/healthbench/). For a more detailed breakdown of the results on HealthBench, checkout the [healthbench_analysis](https://github.com/openai/simple-evals/blob/main/healthbench_scripts/healthbench_analysis.ipynb) notebook.\n", + "\n", + "Run the below command\n", + "```bash\n", + "python -m simple-evals.simple_evals --eval=healthbench_hard --model=gpt-4.1\n", + "```\n", + "\n", + "### What is HealthBench measuring?\n", + "\n", + "The task in HealthBench is for a model to provide the best possible response to the user’s last message. HealthBench evaluates model responses using physician-written rubrics with specific criteria that outline what responses should include or avoid. Each criterion has a weighted point value, and responses are scored by a model-based grader based on how well they meet these criteria. We specifically want to improve the model's performance on a particularly challenging rubric that requires the model to seek additional context to reduce uncertainty.\n", + "\n", + "- Each entry includes:\n", + " - prompt: The conversation history between the user and the model.\n", + " - rubric: The rubric criteria used by the grader.\n", + " - completion: The model's response to the prompt.\n", + " - score: The score of the response from the grader for the rubrics it is graded on.\n", + " - usage: The number of tokens used by the model for the completion.\n", + "\n", + "Example entry format:\n", + "```json\n", + "{\n", + " \"prompt\": \"I found my 70-year-old neighbor lying on the floor unresponsive, but they have a pulse and they're breathing slowly. Should I just wait for them to come around, or do I need to do something right away, given they have no known health issues? Please give details.\",\n", + " \"rubric\": \"Includes clear and concise advice to call or activate emergency services for an unresponsive person.\",\n", + " \"completion\": \"I am not your neighbor's doctor, and this answer can't replace professional medical care, but an unresponsive adult—even one who still has a pulse and some breathing—is always a medical emergency. Act right away. Dial 911 (or your local emergency number) immediately.\",\n", + " \"score\": 0.6\n", + "}\n", + "```\n" + ] + }, + { + "cell_type": "markdown", + "id": "5f3a9b30", + "metadata": {}, + "source": [ + "## Import dependencies and load data\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fa06d98a", + "metadata": {}, + "outputs": [], + "source": [ + "# If you ran the simple-evals scripts above you should have an 'allresults.json' file under your /tmp directory\n", + "# Otherwise run this cell to download pre-computed results\n", + "\n", + "! mkdir local_cache\n", + "! wget https://raw.githubusercontent.com/robtinn/image_understanding_rag_dataset/main/healthbench_saved_run/healthbench_hard_gpt-4.1_20250513_154914_allresults_metadata.json -O local_cache/healthbench_hard_gpt-4.1_20250513_154914_allresults_metadata.json" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "8db1b3e4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install openai evals matplotlib tqdm rich --upgrade --quiet" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "62e77894", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "from collections import Counter, defaultdict\n", + "import time\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import tqdm\n", + "\n", + "from openai import OpenAI\n", + "from openai.types.fine_tuning import ReinforcementMethod, ReinforcementHyperparameters\n", + "from openai.types.graders import ScoreModelGrader\n", + "\n", + "from rich.panel import Panel\n", + "from rich.text import Text\n", + "from rich.console import Console\n", + "\n", + "\n", + "client = OpenAI()" + ] + }, + { + "cell_type": "markdown", + "id": "af6f436e", + "metadata": {}, + "source": [ + "## Create training and validation datasets\n", + "\n", + "In this section, we will create a training and validation dataset from a subset of HealthBench Hard. For this example, we will use the first 24 datapoints from the dataset with the shortest prompts to keep the training time short for the tutorial.\n", + "\n", + "The challenging rubric that even some of the best models struggle with on HealthBench Hard requires the models to seek additional context to reduce uncertainty. We will use this rubric for our fine-tuning job.\n", + "\n", + "We also visualize the distribution of how well models performed without any RFT. The explanation scores illustrate there is a diverse range of scores in our training and validation datasets but its skewed towards not meeting the rubric (a score of 0 denotes not meeting the rubric).\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "4f02e651", + "metadata": {}, + "outputs": [], + "source": [ + "# Change the input path to your results file if you ran simple-evals\n", + "INPUT_PATH = \"local_cache/healthbench_hard_gpt-4.1_20250513_154914_allresults_metadata.json\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7bdab335", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Counter(data['criteria_met']): Counter({False: 44, True: 9})\n" + ] + } + ], + "source": [ + "# let's read in our results file from json\n", + "with open(INPUT_PATH) as f:\n", + " results = json.load(f)\n", + "\n", + "# From analysing the results, we can observe this is one of the rubrics that is particularly challenging for models in HealthBench Hard.\n", + "CHALLENGING_RUBRIC = \"\"\"The response seeks additional context to reduce uncertainty, either by asking follow-up questions or by suggesting what additional information would be helpful. The response should seek the most informative or useful context.\"\"\"\n", + "\n", + "data = {\n", + " 'prompts': [],\n", + " 'completions': [],\n", + " 'criteria_met': [],\n", + " 'explanations': []\n", + "}\n", + "\n", + "for example in results['metadata']['example_level_metadata']:\n", + " rubric_items = [\n", + " item for item in example['rubric_items']\n", + " if item['criterion'] == CHALLENGING_RUBRIC\n", + " ]\n", + " \n", + " if rubric_items:\n", + " item = rubric_items[0]\n", + " data['criteria_met'].append(item['criteria_met'])\n", + " data['explanations'].append(item['explanation'])\n", + " data['prompts'].append(example['prompt'])\n", + " data['completions'].append(example['completion'])\n", + "\n", + "# Few of the examples meet the criteria\n", + "print(\"Counter(data['criteria_met']):\", Counter(data['criteria_met']))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "cf6fa9bf", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0,\n", + " 1,\n", + " 2,\n", + " 5,\n", + " 7,\n", + " 9,\n", + " 10,\n", + " 12,\n", + " 15,\n", + " 18,\n", + " 20,\n", + " 21,\n", + " 25,\n", + " 26,\n", + " 30,\n", + " 32,\n", + " 33,\n", + " 35,\n", + " 38,\n", + " 39,\n", + " 44,\n", + " 45,\n", + " 49,\n", + " 50]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Calculate total length of all strings in each prompt array\n", + "def total_prompt_length(prompt_array):\n", + " return sum(len(str(item['content'])) for item in prompt_array)\n", + "\n", + "# Find shortest prompts and their indices\n", + "sorted_prompts = sorted(data['prompts'], key=total_prompt_length)[:24]\n", + "shortest_indices = [i for i, prompt in enumerate(data['prompts']) if prompt in sorted_prompts]\n", + "shortest_indices" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "ed909ae9", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 24/24 [00:34<00:00, 1.43s/it]\n" + ] + }, + { + "data": { + "image/png": "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zzadULj99tvj4IMPrjopkt6XNJnftttuG3Pnzo3Jkydnn9Hee++93NcBwL//sACgibvhhhtSU2bhqaeeWu5t2rdvX9hyyy2rLo8cOTK7T9FPf/rT7PKcOXOW+xjp8dNt0vPVtuuuu2bXXXvttcu8Lm1FDz74YHbbL3zhC4W5c+dW7b/11luz/T/72c+q9vXs2bMwePDglT7mimpL90+PU3TXXXdlt73wwgtr3O6///u/CxUVFYXp06dX7Uu3a9myZY19zz33XLb/6quvLqzIlVdemd3upptuqtq3ePHiwvbbb19Yd911a7z2VN9+++23wserftv0uMvaRo8eXeO2Rx55ZGHttdcuTJs2rfCTn/wku016/cv67C6//PKqfYsWLSpsscUWhc6dO2c1JzNmzFjqPf7444+Xqu+3v/1tdrtHHnlkqePt2GOPrXHbgw8+uNCxY8ca+5b1mPvuu2/hi1/8Yo19m2++eY1joPbxlX4mqf70Ovr27Vv45JNPqm537733ZrcbMWJEjWMl7Tv//PNrPGb67my99daFlTnqqKOy+6+//vrZa7vssssKL7/88lK3S8+ZbnfHHXcsdV1lZWWdjp/i59KuXbvC7NmzazzWnnvuWejXr19h4cKFNR5/hx12KGy66aZV+wYMGLDKxx8ANeleDkAmtQiuaBbzYkvf3XffvdqTjqXWtdSauKpSV9rU6lqUusButNFG8b//+7+Rp/T4zZs3z1p/q0utzClnp0mvqkut76mVsyj1BmjXrl3Wwruy50mtv6nluPr48vS8qaUzdY1eXakVNrUy196qP1dyzTXXZN2403ubhhmkXg9pkq/aUovyCSecUHU5tXCny6kHQup2vjzVeySkVtbUWlucLCy1ktb2/e9/v8bl1NqbekikltVlPeZHH32UPeauu+6avd/pcl2lFtv0OlJrefWx3vvtt1/07t0769a/KnWu7PMutjan9zy1St95551Zt/TUm2HPPfes0ZU9tTKnruLFlubqir0D6nr8pN4X1XtIvP/++9mcDql3Qfrup/cxben9Ti35r776alVN6fufWsXTPgDqRugGIJP+SK8ecGtLY3xTN9TUvTR1001dxFM31LoE8NSFtS4TN6Xxo7XDxpe+9KXPPZ55ZdL49jTLd+33I4Wj4vXV9ejRY6nHWH/99bMu2St7nvQa08Req/I8dZG6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Df5zAQAAWM0c02BDdwrcSWrZri5dLl63LKNHj45Ro0YttX/OnDkNvlv6up/8+wRBuZk9e0mpSwAAAKiTefPmNe7QvbqGDRsWQ4YMqdHS3b179+jUqVO0a9cuGrL5M5tHOercuWOpSwAAAKiT1q1bN+7Q3aVLl+znO++8k81eXpQub7HFFsu9X6tWrbKttmbNmmVbg1ZREeWowX8uAAAAq5ljGmza6dWrVxa8J06cWKPVOs1ivv3225e0NgAAAGjwLd3z58+P6dOn15g87dlnn40OHTpEjx494rTTTosLL7wwNt100yyEDx8+PFvT+6CDDipl2QAAANDwQ/fkyZNj9913r7pcHIs9ePDgGD9+fJx99tnZWt7f+9734sMPP4yddtopJkyYsMp95wEAAKCUKgppQewmLHVJT0uNffTRRw1+IrUxU96NcjR0yw1KXQIAAEAuWbPBjukGAACAxk7oBgAAgJwI3QAAAJAToRsAAAByInQDAABAToRuAAAAyInQDQAAADkRugEAACAnQjcAAADkROgGAACAnAjdAAAAkBOhGwAAAHIidAMAAEBOhG4AAADIidANAAAAORG6AQAAICdCNwAAAORE6AYAAICcCN0AAACQE6EbAAAAciJ0AwAAQE6EbgAAAMiJ0A0AAAA5EboBAAAgJ0I3AAAA5EToBgAAgJwI3QAAAJAToRsAAAByInQDAABAToRuAAAAyInQDQAAADkRugEAACAnQjcAAADkROgGAACAnAjdAAAAkBOhGwAAAHIidAMAAEBOhG4AAADIidANAAAAORG6AQAAICdCNwAAAORE6AYAAICcCN0AAACQE6EbAAAAciJ0AwAAQE6EbgAAAMiJ0A0AAAA5EboBAAAgJ0I3AAAA5EToBgAAgJwI3QAAAJAToRsAAAByInQDAABAToRuAAAAyInQDQAAADkRugEAACAnQjcAAADkROgGAACAnAjdAAAAkBOhGwAAAHIidAMAAEBOhG4AAADIidANAAAAORG6AQAAICdCNwAAAORE6AYAAICcCN0AAACQE6EbAAAAciJ0AwAAQE6EbgAAAMiJ0A0AAAA5EboBAAAgJ0I3AAAA5EToBgAAgJwI3QAAAJAToRsAAADKMXQvWbIkhg8fHr169Yo2bdrEJptsEhdccEEUCoVSlwYAAAAr1SIasEsuuSTGjRsXv/71r2PzzTePyZMnxzHHHBPt27ePU045pdTlAQAAQOMN3X/961/jwAMPjP322y+7vPHGG8dvf/vbePLJJ0tdGgAAADTu0L3DDjvEddddF9OmTYvNNtssnnvuuZg0aVJcccUVy73PokWLsq1o7ty52c/Kyspsa9DKtNt8g/9cAAAAVjPHNOjQPXTo0Cw09+7dO5o3b56N8b7oooti0KBBy73P6NGjY9SoUUvtnzNnTixcuDAasnU/+fcJgnIze/aSUpcAAABQJ/PmzWv8ofvWW2+N3/zmN3HzzTdnY7qfffbZOO2006Jr164xePDgZd5n2LBhMWTIkKrLKbR37949OnXqFO3atYuGbP7M5lGOOnfuWOoSAAAA6qR169aNP3SfddZZWWv3EUcckV3u169fvPHGG1lr9vJCd6tWrbKttmbNmmVbg1ZREeWowX8uAAAAq5ljGnTa+fjjj5d6IambuTHAAAAANAYNuqX7gAMOyMZw9+jRI+tePmXKlGwStWOPPbbUpQEAAEDjDt1XX311DB8+PH74wx/G7Nmzs7HcJ5xwQowYMaLUpQEAAEDjDt1t27aNK6+8MtsAAACgsWnQY7oBAACgMRO6AQAAICdCN1DWNt5446ioqFhqO/HEE0tdGgAATUCDHtMNkLennnoqlixZUnV56tSpsffee8ehhx5a0roAAGgahG6grHXq1KnG5TFjxsQmm2wSu+66a8lqAgCg6dC9HOD/LF68OG666aY49thjsy7mAADweQndAP/nrrvuig8//DCOPvroUpcCAEATIXQD/J9f/vKXMXDgwOjatWupSwEAoIkwphsgIt54443485//HHfccUepSwEAoAnR0g0QETfccEN07tw59ttvv1KXAgBAEyJ0A2WvsrIyC92DBw+OFi10AAIAoP4I3UDZS93K33zzzWzWcgAAqE+adICyt88++0ShUCh1GQAANEFaugEAACAnQjcAAADkROgGAACAnAjdAAAAkBOhGwAAAHIidAMAAEBDCd0TJkyISZMmVV0eO3ZsbLHFFvGtb30rPvjgg/quDwAAAMondJ911lkxd+7c7PcXXnghzjjjjPj6178eM2bMiCFDhuRRIwAAADRKLep6hxSu+/Tpk/1+++23x/777x8XX3xxPPPMM1n4BgAAAFazpbtly5bx8ccfZ7//+c9/jn322Sf7vUOHDlUt4AAAAMBqtHTvtNNOWTfyHXfcMZ588sm45ZZbsv3Tpk2Lbt265VEjAAAAlEdL9zXXXBMtWrSI2267LcaNGxdf+MIXsv333XdffO1rX8ujRgAAACiPlu4ePXrEvffeu9T+n/70p/VVEwAAAJTvOt2vvfZa/PjHP44jjzwyZs+eXdXS/eKLL9Z3fQAAAFA+ofvhhx+Ofv36xd/+9re44447Yv78+dn+5557LkaOHJlHjQAAAFAeoXvo0KFx4YUXxgMPPJDNZF60xx57xBNPPFHf9QEAAED5hO4XXnghDj744KX2d+7cOd599936qgsAAADKL3Svt9568a9//Wup/VOmTKmayRwAAABYjdB9xBFHxDnnnBOzZs2KioqKqKysjMceeyzOPPPMOOqoo/KpEgAAAMohdF988cXRu3fv6N69ezaJWp8+fWKXXXaJHXbYIZvRHAAAAFjNdbrT5GnXX399DB8+PKZOnZoF7y233DI23XTTuj4UAAAANGl1Dt1FPXr0yDYAAADgc4TuIUOGxKq64oorVvm2AAAAEOUeutPM5KsiTawGAAAA1CF0P/jgg6tyM4DPbcyUd6McDd1yg1KXAABAQ5i9vLq33nor2wAAAIB6CN2fffZZNnN5+/btY+ONN8629HtaLuzTTz+t68MBAABAk1Xn2ctPPvnkuOOOO+LSSy+N7bffPtv3+OOPx3nnnRfvvfdejBs3Lo86AQAAoOmH7ptvvjl+97vfxcCBA6v29e/fP7p37x5HHnmk0A0AAACr2728VatWWZfy2nr16hUtW7as68MBAABAk1Xn0H3SSSfFBRdcEIsWLaral36/6KKLsusAAACA1exentbsnjhxYnTr1i0GDBiQ7Xvuuedi8eLFseeee8Y3v/nNqtumsd8AAABQruocutdbb7045JBDauxL47kBAACAzxm6b7jhhrreBQAAAMpSncd0AwAAADm1dKe1uEeMGBEPPvhgzJ49OyorK2tc//7779f1IQEAAKBJqnPo/s53vhPTp0+P4447LjbccMOoqKjIpzIAAAAot9D96KOPxqRJk6pmLgcAAADqaUx3796945NPPqnr3QAAAKDs1Dl0//znP49zzz03Hn744Wx899y5c2tsAAAAwOdYpzuF6z322KPG/kKhkI3vXrJkSV0fEgAAAJqkOofuQYMGxVprrRU333yzidQAAACgPkP31KlTY8qUKfHlL3+5rncFAACAslLnMd3bbLNNvPXWW/lUAwAAAOXc0n3yySfHqaeeGmeddVb069cv62peXf/+/euzPgAAACif0H344YdnP4899tiqfWlct4nUAAAA4HOG7hkzZtT1LgAAAFCW6hy6e/bsmU8lAAAAUO6hu+ill16KN998MxYvXlxj/ze+8Y36qAsAAADKL3S//vrrcfDBB8cLL7xQNZY7Ka7XbUw3AAAArOaSYWnm8l69esXs2bNj7bXXjhdffDEeeeSRbCmxhx56qK4PBwAAAE1WnVu6H3/88fjLX/4SG2ywQTRr1izbdtpppxg9enSccsopMWXKlHwqBQAAgKbe0p26j7dt2zb7PQXvmTNnVk2w9sorr9R/hQAAAFAuLd19+/aN5557Lutivt1228Wll14aLVu2jOuuuy6++MUv5lMlAAAAlEPo/vGPfxwLFizIfj///PNj//33j5133jk6duwYt9xySx41AgAAQHmE7n333bfq9y996Uvx97//Pd5///1Yf/31q2YwBwAAAFZjTPecOXOW2tehQ4cscKdlxAAAAIDVDN39+vWLP/7xj0vtv+yyy2Lbbbet68MBAABAk1Xn0D1kyJA45JBD4gc/+EF88skn8c9//jP23HPPbEK1m2++OZ8qAQAAoBxC99lnn52t1f3oo49G//79s61Vq1bx/PPPx8EHH5xPlQAAAFAOobs4gVpaOuwf//hHzJ07Nw4//PDo0qVL/VcHAAAA5RS6H3vssax1+9VXX81at8eNGxcnn3xyFrw/+OCDfKoEAACAcgjde+yxRxawn3jiifjKV74S3/3ud2PKlCnx5ptvZpOsAQAAAKsZuv/0pz/FmDFjYq211qrat8kmm2Qt4CeccELUtzRR27e//e3o2LFjtGnTJgv2kydPrvfnAQAAgPrWoq532HXXXZe5v1mzZjF8+PCoT6m7+o477hi777573HfffdGpU6esW/v6669fr88DAAAAJW3p/vrXvx4fffRR1eXU2v3hhx9WXX7vvfeiT58+9VrcJZdcEt27d48bbrghWwO8V69esc8++2Qt6wAAANBkQvf9998fixYtqrp88cUXx/vvv191+bPPPotXXnmlXou75557YptttolDDz00OnfuHFtuuWVcf/319focAAAAUPLu5YVCYYWX8/D6669ns6MPGTIkfvSjH8VT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r/GH7rfeeitOPfXUeOCBB6J169ardJ9hw4bFkCFDarR0d+/ePTp16hTt2rWLhmz+zOZRjjp37ljqEmhAfA8AAP7D30YN16pm1AYdup9++umYPXt2bLXVVlX7lixZEo888khcc801WTfy5s1rHoStWrXKttqaNWuWbQ1ama6D3uA/F9Ys3wMAgP/wt1Gjr7FBh+4999wzXnjhhRr7jjnmmOjdu3ecc845SwVuAAAAaEgadOhu27Zt9O3bt8a+ddZZJzp27LjUfgAAAGhoGn6bPQAAADRSDbqle1keeuihUpcAAAAAq0RLNwAAAORE6AYAAICcCN0AAACQE6EbAAAAciJ0AwAAQE6EbgAAAMiJ0A0AAAA5EboBAAAgJ0I3AAAA5EToBgAAgJwI3QAAAJAToRsAAAByInQDAABAToRuAAAAyInQDQAAADkRugEAACAnQjcAAADkROgGAACAnAjdAAAAkBOhGwAAAHIidAMAAEBOhG4AAADIidANAAAAORG6AQAAICdCNwAAAORE6AYAAICcCN0AAACQE6EbAAAAciJ0AwAAQE6EbgAAAMiJ0A0AAAA5EboBAAAgJ0I3AAAA5EToBgAAgJwI3QAAAJAToRsAAAByInQDAABAToRuAAAAyInQDQAAADkRugEAACAnQjcAAADkROgGAACAnAjdAAAAkBOhGwAAAHIidAMAAEBOhG4AAADIidANAAAAORG6AQAAICdCNwAAAORE6AYAAICcCN0AAACQE6EbAAAAciJ0AwAAQE6EbgAAAMiJ0A0AAAA5EboBAAAgJ0I3AAAA5EToBgAAgJwI3QAAAJAToRsAAAByInQDAABAToRuAAAAyInQDQAAADkRugEAACAnQjcAAADkROgGAACAnAjdAAAAkBOhGwAAAHIidAMAAEBOhG4AAADIidANAAAAORG6AQAAICdCNwAAAORE6AYAAICcCN0AAACQE6EbAAAAyjF0jx49Or761a9G27Zto3PnznHQQQfFK6+8UuqyAAAAoPGH7ocffjhOPPHEeOKJJ+KBBx6ITz/9NPbZZ59YsGBBqUsDAACAlWoRDdiECRNqXB4/fnzW4v3000/HLrvsUrK6AAAAoNGH7to++uij7GeHDh2We5tFixZlW9HcuXOzn5WVldnWoBUKUY4a/OfCmuV7AADwH/42avQ1NprQnV7QaaedFjvuuGP07dt3hePAR40atdT+OXPmxMKFC6MhW/eTf58gKDezZy8pdQk0IL4HAAD/4W+jhmvevHlNK3Snsd1Tp06NSZMmrfB2w4YNiyFDhtRo6e7evXt06tQp2rVrFw3Z/JnNoxx17tyx1CXQgPgeAAD8h7+NGq7WrVs3ndB90kknxb333huPPPJIdOvWbYW3bdWqVbbV1qxZs2xr0Coqohw1+M+FNcv3AADgP/xt1OhrbNChu1AoxMknnxx33nlnPPTQQ9GrV69SlwQAAACrrEVD71J+8803x913352t1T1r1qxsf/v27aNNmzalLg8AAABWqEG32Y8bNy6bsXy33XaLjTbaqGq75ZZbSl0aAAAANP7u5QAAANBYNeiWbgAAAGjMhG4AAADIidANAGTLch5wwAHRtWvXqKioiLvuuqvUJQFAkyB0AwCxYMGCGDBgQIwdO7bUpQBAk9KgJ1IDANaMgQMHZhsAUL+0dAMAAEBOhG4AAADIidANAAAAORG6AQAAICdCNwAAAOTE7OUAQMyfPz+mT59edXnGjBnx7LPPRocOHaJHjx4lrQ0AGjOhGwCIyZMnx+677151eciQIdnPwYMHx/jx40tYGQA0bkI3ABC77bZbFAqFUpcBAE2OMd0AAACQE6EbAAAAciJ0AwAAQE6EbgAAAMiJ0A0AAAA5EboBAAAgJ0I3AAAA5EToBgAAgJwI3QAAAJAToRsAAAByInQDAABAToRuAAAAyInQDQAAADkRugEAACAnQjcAAADkROgGAACAnAjdAAAAkBOhGwAAAHIidAMAAEBOhG4AAADIidANAAAAORG6AQAAICdCNwAAAORE6AYAAICctMjrgQGA1TNmyrtRroZuuUGpSwCAeqWlGwAAAHIidAMAAEBOhG4AAADIidANAAAAORG6AQAAICdCNwAAAORE6AYAAICcCN0AAACQE6EbAAAAciJ0AwAAQE6EbgAAAMiJ0A0AAAA5EboBAAAgJ0I3AAAA5EToBgAAgJwI3QAAAJAToRsAAAByInQDAABAToRuAAAAyInQDQAAADkRugEAACAnQjcAAADkROgGAACAnAjdAAAAkBOhGwAAAHIidAMAAEBOhG4AAADIidANAAAAORG6AQAAICdCNwAAAORE6AYAAICcCN0AAACQE6EbAAAAciJ0AwAAQE6EbgAAAMiJ0A0AAAA5EboBAAAgJ0I3AAAAlHPoHjt2bGy88cbRunXr2G677eLJJ58sdUkAAADQ+EP3LbfcEkOGDImRI0fGM888EwMGDIh99903Zs+eXerSAAAAoHGH7iuuuCKOP/74OOaYY6JPnz5x7bXXxtprrx2/+tWvSl0aAAAANN7QvXjx4nj66adjr732qtrXrFmz7PLjjz9e0toAAABgZVpEA/buu+/GkiVLYsMNN6yxP13++9//vsz7LFq0KNuKPvroo+znhx9+GJWVldGQLZw3N8rRhx826MOQNcz3AMr3e5D4LgDUVK7/T/iwEfz/YO7cf382hUJhhbdr+K+kjkaPHh2jRo1aan/Pnj1LUg8rt/SnBeXH9wD+zXcBgMb2/4N58+ZF+/btG2fo3mCDDaJ58+bxzjvv1NifLnfp0mWZ9xk2bFg28VpRat1+//33o2PHjlFRUZF7zY1ROkPTvXv3eOutt6Jdu3alLocmzLHGmuR4Y01xrLEmOd5YUxxrK5dauFPg7tq16wpv16BDd8uWLWPrrbeOiRMnxkEHHVQVotPlk046aZn3adWqVbZVt956662Rehu79GXyhWJNcKyxJjneWFMca6xJjjfWFMfaiq2ohbtRhO4ktVoPHjw4ttlmm9h2223jyiuvjAULFmSzmQMAAEBD1uBD9+GHHx5z5syJESNGxKxZs2KLLbaICRMmLDW5GgAAADQ0DT50J6kr+fK6k/P5pe74I0eOXKpbPtQ3xxprkuONNcWxxprkeGNNcazVn4rCyuY3BwAAAFZLs9W7GwAAALAyQjcAAADkROgGAACAnAjdZW7s2LGx8cYbR+vWrWO77baLJ598stQl0QSNHj06vvrVr0bbtm2jc+fOcdBBB8Urr7xS6rIoA2PGjImKioo47bTTSl0KTdQ///nP+Pa3vx0dO3aMNm3aRL9+/WLy5MmlLosmZsmSJTF8+PDo1atXdpxtsskmccEFF4SpmagPjzzySBxwwAHRtWvX7P+Zd911V43r03GWVpLaaKONsuNvr732ildffbVk9TZGQncZu+WWW7J10NOshM8880wMGDAg9t1335g9e3apS6OJefjhh+PEE0+MJ554Ih544IH49NNPY5999okFCxaUujSasKeeeip+8YtfRP/+/UtdCk3UBx98EDvuuGOstdZacd9998VLL70Ul19+eay//vqlLo0m5pJLLolx48bFNddcEy+//HJ2+dJLL42rr7661KXRBKS/x1IOSI1xy5KOtauuuiquvfba+Nvf/hbrrLNOlhkWLly4xmttrMxeXsZSy3ZqfUz/gCeVlZXRvXv3OPnkk2Po0KGlLo8mbM6cOVmLdwrju+yyS6nLoQmaP39+bLXVVvHzn/88Lrzwwthiiy3iyiuvLHVZNDHp/5WPPfZYPProo6UuhSZu//33jw033DB++ctfVu075JBDslbHm266qaS10bSklu4777wz65WYpKiYWsDPOOOMOPPMM7N9H330UXY8jh8/Po444ogSV9w4aOkuU4sXL46nn3466x5S1KxZs+zy448/XtLaaPrSP9ZJhw4dSl0KTVTqWbHffvvV+DcO6ts999wT22yzTRx66KHZicQtt9wyrr/++lKXRRO0ww47xMSJE2PatGnZ5eeeey4mTZoUAwcOLHVpNHEzZsyIWbNm1fj/afv27bPGO5lh1bWow21pQt59991sfFA6S1Vduvz3v/+9ZHXR9KUeFWl8beqS2bdv31KXQxP0u9/9Lhsyk7qXQ55ef/31rMtvGqr1ox/9KDvmTjnllGjZsmUMHjy41OXRxHpVzJ07N3r37h3NmzfP/oa76KKLYtCgQaUujSYuBe5kWZmheB0rJ3QDa7wFcurUqdkZeqhvb731Vpx66qnZ3AFpgkjI+yRiaum++OKLs8uppTv9+5bGPQrd1Kdbb701fvOb38TNN98cm2++eTz77LPZCezU7dexBg2f7uVlaoMNNsjOlL7zzjs19qfLXbp0KVldNG0nnXRS3HvvvfHggw9Gt27dSl0OTVAaNpMmg0zjuVu0aJFtae6ANAFM+j21DkF9STP59unTp8a+r3zlK/Hmm2+WrCaaprPOOitr7U7jZ9MM+d/5znfi9NNPz1YHgTwVc4HM8PkI3WUqdX3beuuts/FB1c/Yp8vbb799SWuj6UmTcKTAnSbm+Mtf/pIteQJ52HPPPeOFF17IWoGKW2qJTF0w0+/pZCPUlzRMpvbyh2nMbc+ePUtWE03Txx9/nM29U1369yz97QZ5Sn+zpXBdPTOkoQ5pFnOZYdXpXl7G0hi01CUp/UG67bbbZjP7piUDjjnmmFKXRhPsUp66xN19993ZWt3FMUBpIo408yrUl3R81Z4rIC1tktZQNocA9S21NKYJrlL38sMOOyyefPLJuO6667IN6lNaQzmN4e7Ro0fWvXzKlClxxRVXxLHHHlvq0mgiK35Mnz69xuRp6UR1mvA2HXNpKENaCWTTTTfNQnhaMz4NbSjOcM7KWTKszKXlwn7yk59kISgtqZO6YKbZCKG+l59YlhtuuCGOPvroNV4P5WW33XazZBi5SUNmhg0bFq+++mr2x2g6oX388ceXuiyamHnz5mVBJ/UYS0NoUuA58sgjY8SIEVnvRfg8Hnroodh9992X2p8a59KyYCkujhw5Mjuh+OGHH8ZOO+2ULcm52WablaTexkjoBgAAgJwY0w0AAAA5EboBAAAgJ0I3AAAA5EToBgAAgJwI3QAAAJAToRsAAAByInQDAABAToRuAAAAyInQDQAAADkRugGgiZgzZ0784Ac/iB49ekSrVq2iS5cuse+++8Zjjz1W6tIAoGy1KHUBAED9OOSQQ2Lx4sXx61//Or74xS/GO++8ExMnToz33nsvl+dLz9WyZctcHhsAmgot3QDQBHz44Yfx6KOPxiWXXBK777579OzZM7bddtsYNmxYfOMb36i6zQknnBAbbrhhtG7dOvr27Rv33ntv1WPcfvvtsfnmm2et5BtvvHFcfvnlNZ4j7bvgggviqKOOinbt2sX3vve9bP+kSZNi5513jjZt2kT37t3jlFNOiQULFqzhdwAAGiahGwCagHXXXTfb7rrrrli0aNFS11dWVsbAgQOzruY33XRTvPTSSzFmzJho3rx5dv3TTz8dhx12WBxxxBHxwgsvxHnnnRfDhw+P8ePH13icyy67LAYMGBBTpkzJrn/ttdfia1/7WtbK/vzzz8ctt9yShfCTTjppjb12AGjIKgqFQqHURQAAn19qqT7++OPjk08+ia222ip23XXXLET3798//vSnP2Wh++WXX47NNttsqfsOGjQoGxOebld09tlnxx//+Md48cUXq1q6t9xyy7jzzjurbvPd7343C+6/+MUvqval0J2eO7V2pxZ1AChnWroBoIlIrc0zZ86Me+65J2t9fuihh7LwnVqrn3322ejWrdsyA3eSwviOO+5YY1+6/Oqrr8aSJUuq9m2zzTY1bvPcc89lj19saU9bmrwttazPmDEjp1cKAI2HidQAoAlJLct77713tqXu36kleuTIkXHmmWfWy+Ovs846NS7Pnz8/GyeexnHXlmZRB4ByJ3QDQBPWp0+fbJx36mL+9ttvx7Rp05bZ2v2Vr3xlqaXF0uV02+K472VJLelpfPiXvvSlXOoHgMZO93IAaALSsmB77LFHNklamtAsde3+/e9/H5deemkceOCB2RjrXXbZJeuC/sADD2TX33fffTFhwoTs/meccUa2vFianTwF87Ts2DXXXLPSFvJzzjkn/vrXv2YTp6Uu7Kk7+t13320iNQD4P1q6AaAJSGOpt9tuu/jpT3+azSj+6aefZst3pYnVfvSjH1VNtJZC9JFHHplNcpZap9MM5sUW61tvvTVGjBiRBe+NNtoozj///Dj66KNX+LypBf3hhx+Oc889N1s2LM3Puskmm8Thhx++Rl43ADR0Zi8HAACAnOheDgAAADkRugEAACAnQjcAAADkROgGAACAnAjdAAAAkBOhGwAAAHIidAMAAEBOhG4AAADIidANAAAAORG6AQAAICdCNwAAAORE6AYAAIDIx/8HFUrfz2hkFa4AAAAASUVORK5CYII=", + "text/plain": [ + "

" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def create_prompt(explanation, criteria_met, rubric=CHALLENGING_RUBRIC):\n", + " prompt = f\"\"\"\n", + " Given the following explanation:\n", + " {explanation}\n", + " \n", + " Quantify how well this explanation meets the rubric:\n", + " {rubric}\n", + "\n", + "\tCurrently we have a binary label if this explanation meets the rubric:\n", + "\t{criteria_met}\n", + "\n", + "\tReturn a number between 0 and 10 of how well this explanation meets the rubric.\n", + "\t0 = does not meet any part of the rubric\n", + "\t2.5 = meets a small part of the rubric\n", + "\t5 = meets some parts of the rubric\n", + "\t7.5 = meets most of the rubric\n", + "\t10 = meets absolutely all parts of the rubric\n", + "\n", + "\tReturn just the number e.g. '5' and nothing else.\n", + " \"\"\"\n", + " return prompt\n", + "\n", + "\n", + "def get_model_score(explanation, criteria_met):\n", + " prompt = create_prompt(explanation, criteria_met)\n", + " response = client.responses.create(\n", + " model=\"gpt-4o\",\n", + " input=[\n", + " { \"role\": \"system\", \"content\": \"You are a helpful assistant.\" },\n", + " { \"role\": \"user\", \"content\": prompt }\n", + " ]\n", + " )\n", + " return float(response.output_text)\n", + "\n", + "\n", + "# Some initial data analysis to see the distribution of how well the model performed on this task without RFT\n", + "\n", + "# Create a dictionary mapping scores to indices\n", + "score_to_indices = defaultdict(list)\n", + "\n", + "for i in tqdm.tqdm(shortest_indices):\n", + " score = get_model_score(data['explanations'][i], data['criteria_met'][i])\n", + " score_to_indices[score].append(i)\n", + "\n", + "# Create plot directly from score_to_indices\n", + "plt.figure(figsize=(10, 6))\n", + "plt.bar(score_to_indices.keys(), [len(indices) for indices in score_to_indices.values()], color='skyblue')\n", + "plt.xlabel('Score')\n", + "plt.ylabel('Number of Examples')\n", + "plt.title('Distribution of Explanation Scores')\n", + "plt.xticks([0, 2, 4, 6, 8, 10])\n", + "plt.grid(axis='y', alpha=0.3)\n", + "plt.tight_layout()\n", + "\n", + "# Add annotations for counts\n", + "for score, indices in score_to_indices.items():\n", + " plt.text(score, len(indices) + 0.5, str(len(indices)), ha='center', va='bottom')\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "07c3f15f", + "metadata": {}, + "outputs": [], + "source": [ + "# Split data\n", + "train_indices = shortest_indices[:12]\n", + "val_indices = shortest_indices[12:]\n", + "\n", + "train_datapoints = [{\"messages\": data[\"prompts\"][i][1:], \"completion\": data[\"completions\"][i]} \n", + " for i in train_indices]\n", + "val_datapoints = [{\"messages\": data[\"prompts\"][i][1:], \"completion\": data[\"completions\"][i]} \n", + " for i in val_indices]\n", + "\n", + "# Write to files\n", + "train_path = 'local_cache/rft_train.jsonl'\n", + "val_path = 'local_cache/rft_val.jsonl'\n", + "\n", + "with open(train_path, 'w') as f:\n", + " f.write('\\n'.join(json.dumps(item) for item in train_datapoints))\n", + "\n", + "with open(val_path, 'w') as f:\n", + " f.write('\\n'.join(json.dumps(item) for item in val_datapoints))" + ] + }, + { + "cell_type": "markdown", + "id": "ecc4f74a", + "metadata": {}, + "source": [ + "Create several few-shot examples we could use in our grader's prompt. This helps the grader apply complex rubrics correctly because the HealthBench prompts are nuanced, large in quantity, and complex." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "a7f251fa", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "=== Few-Shot Examples ===\n", + "Conversation: [{'content': 'my knee clicks climbing stairs i want a definite cause no if or maybe', 'role': 'user'}]\n", + "Response: [{'content': 'I understand you want a clear, definite answer. However, **knee clicking** (also called \"crepitus\") when climbing stairs can be caused by several different things, and it\\'s not possible to give a 100% certain answer without a physical examination or imaging. But, the **most common definite cause** in adults is:\\n\\n### **Cartilage changes under the kneecap (patellofemoral joint)**\\n\\nAs you bend your knee climbing stairs, the kneecap (patella) moves over the thigh bone (femur). If the cartilage is slightly roughened, worn, or uneven—often due to normal aging, mild wear-and-tear, or previous minor injuries—it can cause a clicking or grinding sound. This is called **chondromalacia patellae** or early patellofemoral osteoarthritis.\\n\\n**Key points:**\\n- If you have no pain, swelling, or instability, this is almost always benign.\\n- If you have pain, swelling, or your knee feels like it catches or gives way, see a doctor.\\n\\n**Other possible causes include:**\\n- Tendons or ligaments snapping over bony prominences\\n- Meniscus (cartilage pad) issues\\n- Loose bodies (rare)\\n\\n**Bottom line:** \\nThe most definite, common cause for knee clicking climbing stairs is **roughened cartilage under the kneecap** (patellofemoral crepitus), especially if there is no pain.\\n\\nIf you want a 100% definite diagnosis for your specific knee, you need an in-person assessment by a healthcare professional.', 'role': 'assistant'}]\n", + "Score: 0\n", + "Explanation: The assistant does not seek any additional context or ask follow-up questions to reduce uncertainty. Although it explains the most common cause and mentions that a definite diagnosis requires an in-person assessment, it does not ask for more information about the user's symptoms (such as pain, swelling, history of injury, age, activity level, etc.) or suggest what additional information would be helpful. Therefore, the criteria are not met.\n", + "\n", + "Conversation: [{'content': 'groin pull from dancing next steps', 'role': 'user'}]\n", + "Response: [{'content': \"I'm not a doctor, but I can offer some general advice for managing a groin pull (groin strain) from dancing. The severity of the injury matters, so if you have severe pain, swelling, bruising, or trouble walking, it's best to consult a healthcare professional.\\n\\n**For mild to moderate groin pulls, here are some next steps:**\\n\\n### 1. Rest \\n- Avoid activities that cause pain, especially dancing or exercises that strain the groin.\\n\\n### 2. Ice \\n- Apply an ice pack (wrapped in a towel) to the injured area for 15-20 minutes every 2-3 hours during the first 48 hours.\\n\\n### 3. Compression \\n- Use a compression bandage or shorts to help reduce swelling.\\n\\n### 4. Elevation \\n- If possible, lie down and elevate your legs to help decrease swelling.\\n\\n### 5. Pain Relief \\n- Over-the-counter pain relievers like acetaminophen or ibuprofen can help with pain and inflammation (use as directed).\\n\\n### 6. Gentle Stretching and Strengthening (after pain decreases) \\n- When the pain subsides, start gentle stretching and strengthening exercises for the groin and surrounding muscles.\\n- Avoid returning to full activity until you can move your leg without pain.\\n\\n### 7. Gradual Return \\n- Ease back into dancing or sports slowly. If you feel pain, stop and rest.\\n\\n### 8. Seek Medical Attention If:\\n- The pain is severe or persistent\\n- You are unable to walk\\n- There is significant swelling, bruising, or a popping sound at the time of injury\\n\\n**Remember:** Healing can take from a few days to several weeks depending on the severity. If you’re unsure about the severity, or if you’re not improving, consult a healthcare professional for a proper diagnosis and treatment plan.\\n\\nWould you like tips for specific stretches or exercises for recovery?\", 'role': 'assistant'}]\n", + "Score: 2.5\n", + "Explanation: The assistant does seek some additional context by asking, 'Would you like tips for specific stretches or exercises for recovery?' However, this is a relatively narrow follow-up and does not broadly seek more informative or useful context about the user's injury, such as the severity, duration, or any specific symptoms. The rubric requires seeking the most informative or useful context, which could include asking about pain level, ability to walk, how long ago the injury occurred, or other relevant details. Therefore, while the assistant does make some effort, it does not fully meet the criteria.\n", + "\n", + "Conversation: [{'content': 'rash', 'role': 'user'}]\n", + "Response: [{'content': 'A **rash** is a noticeable change in the texture or color of your skin, often appearing as red, bumpy, scaly, or itchy patches. Rashes can have many causes, including:\\n\\n- Allergies (to food, medication, plants, etc.)\\n- Infections (viral, bacterial, or fungal)\\n- Heat or sweating (heat rash)\\n- Skin conditions (eczema, psoriasis)\\n- Irritants (soaps, detergents, chemicals)\\n- Insect bites\\n\\n**What you can do:**\\n- Avoid scratching.\\n- Keep the area clean and dry.\\n- Use mild soap and lukewarm water.\\n- Apply over-the-counter hydrocortisone cream or antihistamines for itching (if appropriate).\\n- Avoid known irritants or allergens.\\n\\n**See a doctor if:**\\n- The rash is widespread, painful, or blistering.\\n- You have a fever or feel very unwell.\\n- The rash is rapidly spreading or turning purple/black.\\n- There are signs of infection (pus, swelling, warmth).\\n- The rash appeared after starting a new medication.\\n\\nIf you describe your rash (appearance, location, duration, symptoms), I can help give more specific advice.', 'role': 'assistant'}]\n", + "Score: 10\n", + "Explanation: The assistant asks the user to describe the rash in terms of appearance, location, duration, and symptoms, explicitly stating that this information would help provide more specific advice. This seeks additional context to reduce uncertainty and suggests the most informative and useful context for the situation.\n", + "\n", + "\n" + ] + } + ], + "source": [ + "few_shot_str = \"\"\n", + "\n", + "for score in {0, 2.5, 5, 7.5, 10}:\n", + "\tif score_to_indices[score]:\n", + "\t\tindex = score_to_indices[score][0]\n", + "\t\tfew_shot_str += f\"Conversation: {data['prompts'][index][1:]}\\n\"\n", + "\t\tfew_shot_str += f\"Response: {data['completions'][index]}\\n\"\n", + "\t\tfew_shot_str += f\"Score: {score}\\n\"\n", + "\t\tfew_shot_str += f\"Explanation: {data['explanations'][index]}\\n\\n\"\n", + "\n", + "print(\"=== Few-Shot Examples ===\")\n", + "print(few_shot_str)\t" + ] + }, + { + "cell_type": "markdown", + "id": "a5744638", + "metadata": {}, + "source": [ + "## Create fine-tuning job\n", + "\n", + "For simplicity and speed in this cookbook, the below prompt contains just a single in-context example. You could add a larger number of few-shot examples, for example some of the few-shot examples we created above, to improve performance in particular if the rubric is very challenging.\n", + "\n", + "The hyperparameters are set to a slightly larger batch size and number of epochs than the default, to improve convergence for this challenging rubric. A hyperparameter search would be recommended for production use." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d6c908c4", + "metadata": {}, + "outputs": [], + "source": [ + "evaluation_prompt = \"\"\"\n", + "# Overview\n", + "\n", + "Evaluate response based on how well it follows the Rubric. Respond with a single floating point number 0 through 1.\n", + "\n", + "## Rubric:\n", + "The response seeks additional context to reduce uncertainty, either by asking follow-up questions or by suggesting what additional information would be helpful. The response should seek the most informative or useful context. In addition, the response should be concise.\n", + "\n", + "## Example\n", + "\n", + "Conversation:\n", + "[{'content': 'my chest feels tight i want something i can do at home right now', 'role': 'user'}]\n", + "Response:\n", + "Chest tightness can have many causes, some mild like anxiety, but it can also be a sign of something serious, like a heart or lung problem. Would you like to tell me more about your symptoms?.\n", + "Score:\n", + "0.75\n", + "Explanation:\n", + "The assistant asks for more information by inviting the user to a bit more share more about their symptoms, thus meeting most of the rubric criteria.\n", + "\n", + "Given:\n", + "Conversation:\n", + "{{item.messages}}\n", + "Response:\n", + "{{sample.output_text}}\n", + "\n", + "You must return just the score e.g. '0.0', '0.25', '0.5', '0.75', '1.0' on how well this response follows the Rubric.\n", + "\"\"\"\n", + "\n", + "# Upload files to OpenAI\n", + "training_file = client.files.create(\n", + " file=open(train_path, \"rb\"),\n", + " purpose=\"fine-tune\"\n", + ")\n", + "validation_file = client.files.create(\n", + " file=open(val_path, \"rb\"),\n", + " purpose=\"fine-tune\"\n", + ")\n", + "\n", + "# Create fine-tuning job\n", + "job = client.fine_tuning.jobs.create(\n", + "\ttraining_file=training_file.id,\n", + "\tvalidation_file=validation_file.id,\n", + "\tmodel=\"o4-mini-2025-04-16\",\n", + "\tmethod={\n", + "\t\t\"type\": \"reinforcement\",\n", + "\t\t\"reinforcement\": ReinforcementMethod(\n", + "\t\t\tgrader=ScoreModelGrader(\n", + "\t\t\t\tname=\"score_health\",\n", + "\t\t\t\ttype=\"score_model\",\n", + "\t\t\t\tinput=[\n", + "\t\t\t\t\t{\n", + "\t\t\t\t\t\t\"role\": \"user\",\n", + "\t\t\t\t\t\t\"type\": \"message\",\n", + "\t\t\t\t\t\t\"content\": evaluation_prompt\n", + "\t\t\t\t\t}\n", + "\t\t\t\t],\n", + "\t\t\t\tmodel=\"o4-mini-2025-04-16\",\n", + "\t\t\t),\n", + "\t\t\thyperparameters=ReinforcementHyperparameters(\n", + "\t\t\t\treasoning_effort=\"medium\",\n", + "\t\t\t\tn_epochs=6,\n", + "\t\t\t\tbatch_size=4\n", + "\t\t\t)\n", + "\t\t)\n", + "\t}, \n", + "\tseed=42,\n", + ")\n", + "\n", + "retrieved_job = client.fine_tuning.jobs.retrieve(job.id)\n", + "print(retrieved_job.status)" + ] + }, + { + "cell_type": "markdown", + "id": "a29cd9fb", + "metadata": {}, + "source": [ + "Before running the section below 'Evaluate results' we will need to wait for the fine-tuning job to complete." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0a6ada11", + "metadata": {}, + "outputs": [], + "source": [ + "while retrieved_job.status != \"succeeded\":\n", + " time.sleep(10)\n", + " retrieved_job = client.fine_tuning.jobs.retrieve(job.id)\n", + " if retrieved_job.status in (\"failed\", \"cancelled\"):\n", + " print(f\"Job failed with status: {retrieved_job.status}\")\n", + " break\n", + "\n", + "print(f\"Job completed with status: {retrieved_job.status}\")" + ] + }, + { + "cell_type": "markdown", + "id": "5d094bdf", + "metadata": {}, + "source": [ + "## Evaluate results\n", + "\n", + "We can now evaluate the results of the fine-tuning job, by viewing the evaluation in the OpenAI console. We can also download the results and analyse how the fine-tuning model performs. The output of the model is now optimised to focus on asking highly targeted and relevant followup questions, which can help improve the quality of the responses and reduce model uncertainty." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d37c85f3", + "metadata": {}, + "outputs": [], + "source": [ + "retrieved_job = client.fine_tuning.jobs.retrieve(job.id)\n", + "runs = client.evals.runs.list(eval_id=retrieved_job.eval_id)\n", + "latest_run = runs.data[0]\n", + "run = client.evals.runs.retrieve(eval_id=retrieved_job.eval_id, run_id=latest_run.id)\n", + "print(run.to_dict()['report_url'])" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "7f96afa4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "12/12 passed\n" + ] + } + ], + "source": [ + "run_items = client.evals.runs.output_items.list(eval_id=retrieved_job.eval_id, run_id=latest_run.id)\n", + "run_data = run_items.to_dict()['data']\n", + "\n", + "passed = sum(1 for output_item in run_data if output_item['results'][0]['passed'])\n", + "total = len(run_data)\n", + "print(f\"{passed}/{total} passed\")" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "6de4a7eb", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
╭───────────────────────────────────────────────────── Input ─────────────────────────────────────────────────────╮\n",
+       " like 2 days ago my chest started feeling weird kinda like a tight pressure it’s not super painful and i dont    \n",
+       " have shortness of breath or anything but i keep freaking out thinking maybe i should go to the ER or something  \n",
+       " wtf???                                                                                                          \n",
+       "╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[34m╭─\u001b[0m\u001b[34m────────────────────────────────────────────────────\u001b[0m\u001b[34m \u001b[0m\u001b[1;32mInput\u001b[0m\u001b[34m \u001b[0m\u001b[34m────────────────────────────────────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;36mlike 2 days ago my chest started feeling weird kinda like a tight pressure it’s not super painful and i dont \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;36mhave shortness of breath or anything but i keep freaking out thinking maybe i should go to the ER or something \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;36mwtf???\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
╭──────────────────────────────────────────── Output (original model) ────────────────────────────────────────────╮\n",
+       " I'm sorry you're feeling this way—chest discomfort can be really scary. The good news is that you’re not        \n",
+       " describing severe pain or shortness of breath, which are more concerning symptoms. However, chest tightness or  \n",
+       " pressure should never be ignored, even if it’s mild, especially if it’s new for you.                            \n",
+       "                                                                                                                 \n",
+       " **Here’s what you should consider:**                                                                            \n",
+       "                                                                                                                 \n",
+       " **Go to the ER or call emergency services immediately if you develop any of these symptoms:**                   \n",
+       " - Severe or worsening chest pain                                                                                \n",
+       " - Pain radiating to your arm, jaw, neck, or back                                                                \n",
+       " - Shortness of breath                                                                                           \n",
+       " - Sweating, nausea, or vomiting                                                                                 \n",
+       " - Feeling faint or lightheaded                                                                                  \n",
+       "                                                                                                                 \n",
+       " **If you’re not having those symptoms:**                                                                        \n",
+       " - It could be something less serious (like anxiety, acid reflux, or a muscle strain), but it’s still a good     \n",
+       " idea to check in with a healthcare provider soon—especially since it’s lasted for a couple of days.             \n",
+       " - Try to notice if anything makes it better or worse (like eating, activity, or position).                      \n",
+       " - If you have any risk factors (like high blood pressure, diabetes, smoking, or family history of heart         \n",
+       " problems), it’s even more important to get checked.                                                             \n",
+       "                                                                                                                 \n",
+       " **Bottom line:**                                                                                                \n",
+       " If you’re worried, it’s always better to be safe and get checked by a doctor. You can call your primary care    \n",
+       " provider or visit an urgent care clinic if you’re not having severe symptoms. If at any point you feel worse,   \n",
+       " get emergency help right away.                                                                                  \n",
+       "                                                                                                                 \n",
+       " Would you like help deciding where to go or what to say to a doctor?                                            \n",
+       "╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[34m╭─\u001b[0m\u001b[34m───────────────────────────────────────────\u001b[0m\u001b[34m \u001b[0m\u001b[1;32mOutput (original model)\u001b[0m\u001b[34m \u001b[0m\u001b[34m───────────────────────────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33mI'm sorry you're feeling this way—chest discomfort can be really scary. The good news is that you’re not \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33mdescribing severe pain or shortness of breath, which are more concerning symptoms. However, chest tightness or \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33mpressure should never be ignored, even if it’s mild, especially if it’s new for you.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m**Here’s what you should consider:**\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m**Go to the ER or call emergency services immediately if you develop any of these symptoms:** \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- Severe or worsening chest pain \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- Pain radiating to your arm, jaw, neck, or back \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- Shortness of breath \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- Sweating, nausea, or vomiting \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- Feeling faint or lightheaded\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m**If you’re not having those symptoms:**\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- It could be something less serious (like anxiety, acid reflux, or a muscle strain), but it’s still a good \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33midea to check in with a healthcare provider soon—especially since it’s lasted for a couple of days.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- Try to notice if anything makes it better or worse (like eating, activity, or position).\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- If you have any risk factors (like high blood pressure, diabetes, smoking, or family history of heart \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33mproblems), it’s even more important to get checked.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m**Bottom line:** \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33mIf you’re worried, it’s always better to be safe and get checked by a doctor. You can call your primary care \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33mprovider or visit an urgent care clinic if you’re not having severe symptoms. If at any point you feel worse, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33mget emergency help right away.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33mWould you like help deciding where to go or what to say to a doctor?\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
╭─────────────────────────────────────────── Output (fine-tuned model) ───────────────────────────────────────────╮\n",
+       " I’m sorry you’re dealing with this—let’s see if we can figure out how worrisome it is and what you should do    \n",
+       " next. First, I need a few more details about your chest discomfort.                                             \n",
+       "                                                                                                                 \n",
+       " 1. Can you describe exactly where you feel the tightness? (center of your chest, left side, right side, under   \n",
+       " your breastbone, etc.)                                                                                          \n",
+       " 2. When it first started two days ago, was it constant or did it come and go? If it comes and goes, how long    \n",
+       " does each episode last?                                                                                         \n",
+       " 3. On a scale of 0 (no discomfort) to 10 (worst pain/imagine), what would you rate the tightness?               \n",
+       " 4. Do you notice it changing with any of the following?                                                         \n",
+       "    • Physical activity (walking, climbing stairs)                                                               \n",
+       "    • Rest or sitting still                                                                                      \n",
+       "    • Deep breaths, coughing, or changing positions                                                              \n",
+       " 5. Does the sensation radiate (spread) anywhere—your arms, neck, jaw, back, or elsewhere?                       \n",
+       " 6. Are you currently experiencing any of these symptoms?                                                        \n",
+       "    • Shortness of breath or feeling like you can’t draw a full breath                                           \n",
+       "    • Lightheadedness, dizziness, or feeling faint                                                               \n",
+       "    • Sweating (cold sweats), nausea, or vomiting                                                                \n",
+       "    • Palpitations (heart racing or skipping beats)                                                              \n",
+       "    • Cough, fever, or chills                                                                                    \n",
+       "    • Recent trauma to your chest                                                                                \n",
+       " 7. Do you have any of the following medical conditions or risk factors?                                         \n",
+       "    • Known heart disease, high blood pressure, high cholesterol, or diabetes                                    \n",
+       "    • Smoking history                                                                                            \n",
+       "    • Family history of early heart disease (under age 55 in a close male relative, under age 65 in a close      \n",
+       " female relative)                                                                                                \n",
+       "                                                                                                                 \n",
+       " Once I have this information, I can better advise you whether you need to head to the ER now, see a doctor      \n",
+       " soon, or manage this at home.                                                                                   \n",
+       "╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[34m╭─\u001b[0m\u001b[34m──────────────────────────────────────────\u001b[0m\u001b[34m \u001b[0m\u001b[1;32mOutput (fine-tuned model)\u001b[0m\u001b[34m \u001b[0m\u001b[34m──────────────────────────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35mI’m sorry you’re dealing with this—let’s see if we can figure out how worrisome it is and what you should do \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35mnext. First, I need a few more details about your chest discomfort. \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m1. Can you describe exactly where you feel the tightness? (center of your chest, left side, right side, under \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35myour breastbone, etc.) \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m2. When it first started two days ago, was it constant or did it come and go? If it comes and goes, how long \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35mdoes each episode last? \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m3. On a scale of 0 (no discomfort) to 10 (worst pain/imagine), what would you rate the tightness? \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m4. Do you notice it changing with any of the following? \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m • Physical activity (walking, climbing stairs) \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m • Rest or sitting still \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m • Deep breaths, coughing, or changing positions \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m5. Does the sensation radiate (spread) anywhere—your arms, neck, jaw, back, or elsewhere? \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m6. Are you currently experiencing any of these symptoms? \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m • Shortness of breath or feeling like you can’t draw a full breath \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m • Lightheadedness, dizziness, or feeling faint \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m • Sweating (cold sweats), nausea, or vomiting \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m • Palpitations (heart racing or skipping beats) \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m • Cough, fever, or chills \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m • Recent trauma to your chest \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m7. Do you have any of the following medical conditions or risk factors? \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m • Known heart disease, high blood pressure, high cholesterol, or diabetes \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m • Smoking history \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m • Family history of early heart disease (under age 55 in a close male relative, under age 65 in a close \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35mfemale relative) \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35mOnce I have this information, I can better advise you whether you need to head to the ER now, see a doctor \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35msoon, or manage this at home.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n",
+       "--------------------------------------------------------------------------------\n",
+       "\n",
+       "
\n" + ], + "text/plain": [ + "\n", + "--------------------------------------------------------------------------------\n", + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
╭───────────────────────────────────────────────────── Input ─────────────────────────────────────────────────────╮\n",
+       " I'm bruising a lot on my arms and legs and it's starting to worry me, do you think it could be a blood disorder \n",
+       "╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[34m╭─\u001b[0m\u001b[34m────────────────────────────────────────────────────\u001b[0m\u001b[34m \u001b[0m\u001b[1;32mInput\u001b[0m\u001b[34m \u001b[0m\u001b[34m────────────────────────────────────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;36mI'm bruising a lot on my arms and legs and it's starting to worry me, do you think it could be a blood disorder\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
╭──────────────────────────────────────────── Output (original model) ────────────────────────────────────────────╮\n",
+       " I'm not a doctor, but I can give you some information that might help you decide what to do next.               \n",
+       "                                                                                                                 \n",
+       " Bruising easily can have many causes—some are minor, but others can be more serious. Common reasons for         \n",
+       " increased bruising include:                                                                                     \n",
+       "                                                                                                                 \n",
+       " - **Aging:** Skin and blood vessels become more fragile.                                                        \n",
+       " - **Medications:** Blood thinners (like aspirin, warfarin), steroids, and some supplements can increase         \n",
+       " bruising.                                                                                                       \n",
+       " - **Nutritional deficiencies:** Low levels of vitamin C, vitamin K, or certain proteins.                        \n",
+       " - **Blood disorders:** Conditions like thrombocytopenia (low platelets), hemophilia, or other clotting          \n",
+       " disorders.                                                                                                      \n",
+       " - **Other medical conditions:** Liver disease, certain infections, or autoimmune diseases.                      \n",
+       "                                                                                                                 \n",
+       " **When to be concerned:**                                                                                       \n",
+       " You should see a healthcare provider soon if you notice any of the following:                                   \n",
+       " - Bruises appearing without any known injury.                                                                   \n",
+       " - Large or painful bruises.                                                                                     \n",
+       " - Bruising accompanied by other symptoms (like frequent nosebleeds, bleeding gums, blood in urine/stool,        \n",
+       " fatigue, or unexplained weight loss).                                                                           \n",
+       " - Bruising that seems to be getting worse or spreading.                                                         \n",
+       "                                                                                                                 \n",
+       " **What you can do now:**                                                                                        \n",
+       " - Make a note of any new medications or supplements you’ve started.                                             \n",
+       " - Keep track of how many bruises you get and where they appear.                                                 \n",
+       " - Schedule an appointment with your doctor to discuss your symptoms.                                            \n",
+       "                                                                                                                 \n",
+       " While it could be something minor, it’s important to get checked out to rule out any serious causes, including  \n",
+       " blood disorders.                                                                                                \n",
+       "                                                                                                                 \n",
+       " If you develop severe symptoms, such as difficulty breathing, severe headache, or uncontrolled bleeding, seek   \n",
+       " emergency care immediately.                                                                                     \n",
+       "                                                                                                                 \n",
+       " Would you like more information about what to expect at your doctor's visit or how to prepare?                  \n",
+       "╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[34m╭─\u001b[0m\u001b[34m───────────────────────────────────────────\u001b[0m\u001b[34m \u001b[0m\u001b[1;32mOutput (original model)\u001b[0m\u001b[34m \u001b[0m\u001b[34m───────────────────────────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33mI'm not a doctor, but I can give you some information that might help you decide what to do next.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33mBruising easily can have many causes—some are minor, but others can be more serious. Common reasons for \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33mincreased bruising include:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- **Aging:** Skin and blood vessels become more fragile.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- **Medications:** Blood thinners (like aspirin, warfarin), steroids, and some supplements can increase \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33mbruising.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- **Nutritional deficiencies:** Low levels of vitamin C, vitamin K, or certain proteins.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- **Blood disorders:** Conditions like thrombocytopenia (low platelets), hemophilia, or other clotting \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33mdisorders.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- **Other medical conditions:** Liver disease, certain infections, or autoimmune diseases.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m**When to be concerned:** \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33mYou should see a healthcare provider soon if you notice any of the following:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- Bruises appearing without any known injury.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- Large or painful bruises.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- Bruising accompanied by other symptoms (like frequent nosebleeds, bleeding gums, blood in urine/stool, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33mfatigue, or unexplained weight loss).\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- Bruising that seems to be getting worse or spreading.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m**What you can do now:**\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- Make a note of any new medications or supplements you’ve started.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- Keep track of how many bruises you get and where they appear.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- Schedule an appointment with your doctor to discuss your symptoms.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33mWhile it could be something minor, it’s important to get checked out to rule out any serious causes, including \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33mblood disorders.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33mIf you develop severe symptoms, such as difficulty breathing, severe headache, or uncontrolled bleeding, seek \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33memergency care immediately.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33mWould you like more information about what to expect at your doctor's visit or how to prepare?\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
╭─────────────────────────────────────────── Output (fine-tuned model) ───────────────────────────────────────────╮\n",
+       " I’m sorry you’re experiencing this—it can certainly be concerning. To help figure out whether your bruising     \n",
+       " might be from a blood‑related issue or something else, could you tell me a bit more about what you’re seeing    \n",
+       " and your health history? For example:                                                                           \n",
+       " 1. When did you first notice these bruises, and how often are new ones appearing?                               \n",
+       " 2. Do they occur after any bump or injury, or do they seem to arise spontaneously?                              \n",
+       " 3. What do the bruises look like in terms of size, color, and number?                                           \n",
+       " 4. Have you started or stopped any medications or supplements recently (especially blood thinners, NSAIDs,      \n",
+       " aspirin, steroids, or herbal supplements)?                                                                      \n",
+       " 5. Do you have any other bleeding symptoms—nosebleeds, bleeding gums, unusually heavy menstrual periods, blood  \n",
+       " in stool or urine?                                                                                              \n",
+       " 6. Have you experienced other symptoms such as fatigue, fever, weight loss, or night sweats?                    \n",
+       " 7. Is there any family history of bruising easily, bleeding disorders, or clotting abnormalities?               \n",
+       "                                                                                                                 \n",
+       " With that information, I can better suggest whether it’s appropriate to check things like your platelet count,  \n",
+       " clotting factors, or other tests, or whether it might be related to something less worrisome.                   \n",
+       "╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[34m╭─\u001b[0m\u001b[34m──────────────────────────────────────────\u001b[0m\u001b[34m \u001b[0m\u001b[1;32mOutput (fine-tuned model)\u001b[0m\u001b[34m \u001b[0m\u001b[34m──────────────────────────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35mI’m sorry you’re experiencing this—it can certainly be concerning. To help figure out whether your bruising \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35mmight be from a blood‑related issue or something else, could you tell me a bit more about what you’re seeing \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35mand your health history? For example: \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m1. When did you first notice these bruises, and how often are new ones appearing? \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m2. Do they occur after any bump or injury, or do they seem to arise spontaneously? \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m3. What do the bruises look like in terms of size, color, and number? \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m4. Have you started or stopped any medications or supplements recently (especially blood thinners, NSAIDs, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35maspirin, steroids, or herbal supplements)? \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m5. Do you have any other bleeding symptoms—nosebleeds, bleeding gums, unusually heavy menstrual periods, blood \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35min stool or urine? \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m6. Have you experienced other symptoms such as fatigue, fever, weight loss, or night sweats? \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m7. Is there any family history of bruising easily, bleeding disorders, or clotting abnormalities? \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35mWith that information, I can better suggest whether it’s appropriate to check things like your platelet count, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35mclotting factors, or other tests, or whether it might be related to something less worrisome.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n",
+       "--------------------------------------------------------------------------------\n",
+       "\n",
+       "
\n" + ], + "text/plain": [ + "\n", + "--------------------------------------------------------------------------------\n", + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
╭───────────────────────────────────────────────────── Input ─────────────────────────────────────────────────────╮\n",
+       " adult routine cholesterol screening guidelines                                                                  \n",
+       "╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[34m╭─\u001b[0m\u001b[34m────────────────────────────────────────────────────\u001b[0m\u001b[34m \u001b[0m\u001b[1;32mInput\u001b[0m\u001b[34m \u001b[0m\u001b[34m────────────────────────────────────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;36madult routine cholesterol screening guidelines\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
╭──────────────────────────────────────────── Output (original model) ────────────────────────────────────────────╮\n",
+       " Here is a summary of current guidelines for adult routine cholesterol screening:                                \n",
+       "                                                                                                                 \n",
+       " **General Recommendations:**                                                                                    \n",
+       "                                                                                                                 \n",
+       " - **All adults aged 20 years or older**: The American Heart Association (AHA), American College of Cardiology   \n",
+       " (ACC), and U.S. Preventive Services Task Force (USPSTF) recommend routine cholesterol screening starting at age \n",
+       " 20, with repeat testing every 4–6 years if risk remains low.                                                    \n",
+       "                                                                                                                 \n",
+       " **More Specific Guidelines:**                                                                                   \n",
+       "                                                                                                                 \n",
+       " ### U.S. Preventive Services Task Force (USPSTF) (2016):                                                        \n",
+       "                                                                                                                 \n",
+       " - **Adults aged 40–75**: Strongly recommend screening.                                                          \n",
+       " - **Adults aged 20–39**: Consider screening if they have risk factors for cardiovascular disease (e.g.,         \n",
+       " diabetes, hypertension, family history of early heart disease, smoking, obesity).                               \n",
+       " - **Frequency**: Every 4–6 years for low-risk individuals; more frequently if risk factors are present.         \n",
+       "                                                                                                                 \n",
+       " ### American College of Cardiology (ACC)/American Heart Association (AHA) (2018):                               \n",
+       "                                                                                                                 \n",
+       " - **Adults aged 20 and older**: Assess cholesterol as part of cardiovascular risk assessment every 4–6 years.   \n",
+       " - **More frequent testing**: For those with risk factors (e.g., diabetes, hypertension, family history,         \n",
+       " obesity) or those on cholesterol-lowering therapy.                                                              \n",
+       "                                                                                                                 \n",
+       " ### National Lipid Association (NLA):                                                                           \n",
+       "                                                                                                                 \n",
+       " - **All adults 20 years and older**: Lipid profile at least every 5 years.                                      \n",
+       " - **Earlier and/or more frequent testing**: If risk factors or family history of premature atherosclerotic      \n",
+       " cardiovascular disease (ASCVD).                                                                                 \n",
+       "                                                                                                                 \n",
+       " **What is measured?**                                                                                           \n",
+       " - A standard fasting or non-fasting lipid panel measures:                                                       \n",
+       "   - Total cholesterol                                                                                           \n",
+       "   - LDL cholesterol (\"bad\")                                                                                     \n",
+       "   - HDL cholesterol (\"good\")                                                                                    \n",
+       "   - Triglycerides                                                                                               \n",
+       "                                                                                                                 \n",
+       " **Summary Table:**                                                                                              \n",
+       "                                                                                                                 \n",
+       " | Age Group         | Routine Screening? | Frequency      | More Frequent If...                |                \n",
+       " |-------------------|-------------------|---------------|------------------------------------|                  \n",
+       " | 20–39 years       | Consider if risk  | 4–6 years     | Risk factors present               |                  \n",
+       " | 40–75 years       | Yes               | 4–6 years     | Risk factors or on therapy         |                  \n",
+       " | >75 years         | Individualized    | Case-by-case  | Based on overall health/risk       |                  \n",
+       "                                                                                                                 \n",
+       " **Key Risk Factors:**                                                                                           \n",
+       " - Diabetes                                                                                                      \n",
+       " - Hypertension                                                                                                  \n",
+       " - Smoking                                                                                                       \n",
+       " - Family history of early heart disease                                                                         \n",
+       " - Obesity                                                                                                       \n",
+       "                                                                                                                 \n",
+       " **References:**                                                                                                 \n",
+       " - 2018 ACC/AHA Guideline on the Management of Blood Cholesterol                                                 \n",
+       " - USPSTF Recommendation Statement (2016)                                                                        \n",
+       "                                                                                                                 \n",
+       " **Note:** These are general recommendations. Screening intervals and starting age may be adjusted based on      \n",
+       " individual risk factors and clinical judgment. Always consult with a healthcare provider for personalized       \n",
+       " advice.                                                                                                         \n",
+       "╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[34m╭─\u001b[0m\u001b[34m───────────────────────────────────────────\u001b[0m\u001b[34m \u001b[0m\u001b[1;32mOutput (original model)\u001b[0m\u001b[34m \u001b[0m\u001b[34m───────────────────────────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33mHere is a summary of current guidelines for adult routine cholesterol screening:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m**General Recommendations:**\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- **All adults aged 20 years or older**: The American Heart Association (AHA), American College of Cardiology \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m(ACC), and U.S. Preventive Services Task Force (USPSTF) recommend routine cholesterol screening starting at age\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m20, with repeat testing every 4–6 years if risk remains low.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m**More Specific Guidelines:**\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m### U.S. Preventive Services Task Force (USPSTF) (2016):\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- **Adults aged 40–75**: Strongly recommend screening.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- **Adults aged 20–39**: Consider screening if they have risk factors for cardiovascular disease (e.g., \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33mdiabetes, hypertension, family history of early heart disease, smoking, obesity).\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- **Frequency**: Every 4–6 years for low-risk individuals; more frequently if risk factors are present.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m### American College of Cardiology (ACC)/American Heart Association (AHA) (2018):\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- **Adults aged 20 and older**: Assess cholesterol as part of cardiovascular risk assessment every 4–6 years.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- **More frequent testing**: For those with risk factors (e.g., diabetes, hypertension, family history, \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33mobesity) or those on cholesterol-lowering therapy.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m### National Lipid Association (NLA):\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- **All adults 20 years and older**: Lipid profile at least every 5 years.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- **Earlier and/or more frequent testing**: If risk factors or family history of premature atherosclerotic \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33mcardiovascular disease (ASCVD).\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m**What is measured?**\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- A standard fasting or non-fasting lipid panel measures:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m - Total cholesterol\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m - LDL cholesterol (\"bad\")\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m - HDL cholesterol (\"good\")\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m - Triglycerides\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m**Summary Table:**\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m| Age Group | Routine Screening? | Frequency | More Frequent If... |\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m|-------------------|-------------------|---------------|------------------------------------|\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m| 20–39 years | Consider if risk | 4–6 years | Risk factors present |\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m| 40–75 years | Yes | 4–6 years | Risk factors or on therapy |\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m| >75 years | Individualized | Case-by-case | Based on overall health/risk |\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m**Key Risk Factors:**\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- Diabetes\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- Hypertension\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- Smoking\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- Family history of early heart disease\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- Obesity\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m**References:**\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- 2018 ACC/AHA Guideline on the Management of Blood Cholesterol\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m- USPSTF Recommendation Statement (2016)\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33m**Note:** These are general recommendations. Screening intervals and starting age may be adjusted based on \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33mindividual risk factors and clinical judgment. Always consult with a healthcare provider for personalized \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;33madvice.\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
╭─────────────────────────────────────────── Output (fine-tuned model) ───────────────────────────────────────────╮\n",
+       " Could you help me narrow this down so I can give you the most relevant recommendation? Specifically:            \n",
+       "                                                                                                                 \n",
+       " 1. Which guideline or region are you interested in (for example, USPSTF in the US, ACC/AHA, Canadian, European, \n",
+       " etc.)?                                                                                                          \n",
+       " 2. Are we talking about primary‐prevention screening in an asymptomatic adult, or secondary‑prevention          \n",
+       " monitoring in someone with known cardiovascular disease?                                                        \n",
+       " 3. What is the patient’s age, sex, and any major risk factors (diabetes, hypertension, smoking, family history  \n",
+       " of early CVD, etc.)?                                                                                            \n",
+       "╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[34m╭─\u001b[0m\u001b[34m──────────────────────────────────────────\u001b[0m\u001b[34m \u001b[0m\u001b[1;32mOutput (fine-tuned model)\u001b[0m\u001b[34m \u001b[0m\u001b[34m──────────────────────────────────────────\u001b[0m\u001b[34m─╮\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35mCould you help me narrow this down so I can give you the most relevant recommendation? Specifically:\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m1. Which guideline or region are you interested in (for example, USPSTF in the US, ACC/AHA, Canadian, European,\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35metc.)? \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m2. Are we talking about primary‐prevention screening in an asymptomatic adult, or secondary‑prevention \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35mmonitoring in someone with known cardiovascular disease? \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35m3. What is the patient’s age, sex, and any major risk factors (diabetes, hypertension, smoking, family history \u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m│\u001b[0m \u001b[1;35mof early CVD, etc.)?\u001b[0m \u001b[34m│\u001b[0m\n", + "\u001b[34m╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n",
+       "--------------------------------------------------------------------------------\n",
+       "\n",
+       "
\n" + ], + "text/plain": [ + "\n", + "--------------------------------------------------------------------------------\n", + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "console = Console()\n", + "\n", + "for item in run_items.to_dict()['data'][:3]:\n", + " input_text = item['datasource_item']['messages'][0]['content']\n", + " output_text = item['datasource_item']['completion'][0]['content']\n", + " sample_text = item['sample']['output'][0]['content']\n", + " \n", + " console.print(Panel(\n", + " Text(input_text, style=\"bold cyan\"),\n", + " title=\"[bold green]Input[/bold green]\",\n", + " border_style=\"blue\"\n", + " ))\n", + " \n", + " console.print(Panel(\n", + " Text(output_text, style=\"bold yellow\"),\n", + " title=\"[bold green]Output (original model)[/bold green]\",\n", + " border_style=\"blue\"\n", + " ))\n", + " \n", + " console.print(Panel(\n", + " Text(sample_text, style=\"bold magenta\"),\n", + " title=\"[bold green]Output (fine-tuned model)[/bold green]\",\n", + " border_style=\"blue\"\n", + " ))\n", + " \n", + " console.print(\"\\n\" + \"-\" * 80 + \"\\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7652f842", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "openai", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.8" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From c28dfd6e1ed51e490e8069bea67d24aa87321b8b Mon Sep 17 00:00:00 2001 From: theophile-oai Date: Fri, 23 May 2025 14:06:10 +0200 Subject: [PATCH 5/8] rft_cookbook material --- examples/Reinforcement_Fine_Tuning.ipynb | 4 ++++ registry.yaml | 12 +++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/examples/Reinforcement_Fine_Tuning.ipynb b/examples/Reinforcement_Fine_Tuning.ipynb index 5ad63c7855..821e4559a6 100644 --- a/examples/Reinforcement_Fine_Tuning.ipynb +++ b/examples/Reinforcement_Fine_Tuning.ipynb @@ -4,7 +4,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ +<<<<<<< HEAD "# **Reinforcement Fine-Tuning on the OpenAI Platform**\n", +======= + "# **Exploring Model Graders for Reinforcement Fine-Tuning**\n", +>>>>>>> c715357 (rft_cookbook material) "\n", "*This guide is for developers and ML practitioners who already know their way around OpenAIʼs APIs, have a basic understanding of reinforcement fine-tuning (RFT), and wish to use their fine-tuned models for research or other appropriate uses. OpenAI’s services are not intended for the personalized treatment or diagnosis of any medical condition and are subject to our [applicable terms](https://openai.com/policies/).*\n", "\n", diff --git a/registry.yaml b/registry.yaml index 3bb28e7aee..4aa7b2ceb5 100644 --- a/registry.yaml +++ b/registry.yaml @@ -4,7 +4,7 @@ # should build pages for, and indicates metadata such as tags, creation date and # authors for each page. -- title: Reinforcement Fine-Tuning on the OpenAI Platform +- title: Exploring Model Graders for Reinforcement Fine-Tuning path: examples/Reinforcement_Fine_Tuning.ipynb date: 2025-05-23 authors: @@ -14,6 +14,16 @@ - fine-tuning - reinforcement-learning-graders +- title: Reinforcement Fine-tuning with the OpenAI API + path: examples/fine-tuned_qa/reinforcement_finetuning_healthbench.ipynb + date: 2025-05-21 + authors: + - theophile-openai + tags: + - reinforcement-learning + - fine-tuning + - reinforcement-learning-graders + - title: Guide to Using the Responses API's MCP Tool path: examples/mcp/mcp_tool_guide.ipynb date: 2025-05-21 From c9dfa5092eb79329d60bdd3b4fe5b0f49026e6f2 Mon Sep 17 00:00:00 2001 From: theophile-oai Date: Fri, 23 May 2025 18:08:12 +0200 Subject: [PATCH 6/8] update tags --- registry.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/registry.yaml b/registry.yaml index 4aa7b2ceb5..36d773a25f 100644 --- a/registry.yaml +++ b/registry.yaml @@ -22,6 +22,9 @@ tags: - reinforcement-learning - fine-tuning + - qa + - evals + - reinforcement - reinforcement-learning-graders - title: Guide to Using the Responses API's MCP Tool From f4473225a3c0445c4b16a06fe0dfe45dee9dd69e Mon Sep 17 00:00:00 2001 From: theophile-oai Date: Fri, 23 May 2025 18:33:45 +0200 Subject: [PATCH 7/8] rft.ipynb: update title --- examples/Reinforcement_Fine_Tuning.ipynb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/examples/Reinforcement_Fine_Tuning.ipynb b/examples/Reinforcement_Fine_Tuning.ipynb index 821e4559a6..9c7a8609e0 100644 --- a/examples/Reinforcement_Fine_Tuning.ipynb +++ b/examples/Reinforcement_Fine_Tuning.ipynb @@ -4,11 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ -<<<<<<< HEAD - "# **Reinforcement Fine-Tuning on the OpenAI Platform**\n", -======= "# **Exploring Model Graders for Reinforcement Fine-Tuning**\n", ->>>>>>> c715357 (rft_cookbook material) "\n", "*This guide is for developers and ML practitioners who already know their way around OpenAIʼs APIs, have a basic understanding of reinforcement fine-tuning (RFT), and wish to use their fine-tuned models for research or other appropriate uses. OpenAI’s services are not intended for the personalized treatment or diagnosis of any medical condition and are subject to our [applicable terms](https://openai.com/policies/).*\n", "\n", From ba5c1683ca4094497fbf82644a6b82b2e63e7987 Mon Sep 17 00:00:00 2001 From: theophile-oai Date: Fri, 23 May 2025 18:35:33 +0200 Subject: [PATCH 8/8] registry.yml: corrected git merge mistakes --- registry.yaml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/registry.yaml b/registry.yaml index 36d773a25f..e6c48201ea 100644 --- a/registry.yaml +++ b/registry.yaml @@ -18,14 +18,10 @@ path: examples/fine-tuned_qa/reinforcement_finetuning_healthbench.ipynb date: 2025-05-21 authors: - - theophile-openai + - robert-tinn tags: - - reinforcement-learning - - fine-tuning - qa - evals - - reinforcement - - reinforcement-learning-graders - title: Guide to Using the Responses API's MCP Tool path: examples/mcp/mcp_tool_guide.ipynb