diff --git a/08-agents/08-03-hosted-agents/08-03-01-deploy-hosted-agent.ipynb b/08-agents/08-03-hosted-agents/08-03-01-deploy-hosted-agent.ipynb index 9cae529..0cf28de 100644 --- a/08-agents/08-03-hosted-agents/08-03-01-deploy-hosted-agent.ipynb +++ b/08-agents/08-03-hosted-agents/08-03-01-deploy-hosted-agent.ipynb @@ -335,7 +335,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Principal ID: 5db0aa5d-f281-47a3-9720-04727dec61e8\n", + "Principal ID: 00000000-0000-0000-0000-000000000000\n", "Deploying ACR infrastructure (~1-2 min)...\n", "\u001b[?1h\u001b=\u001b[93mA new Bicep release is available: v0.43.8. Upgrade now by running \"az bicep upgrade\".\u001b[0m\n", "\u001b[?1h\u001b=\u001b[93m/08-agents/08-03-hosted-agents/main.bicep(41,9) : Warning BCP334: The provided value can have a length as small as 3 and may be too short to assign to a target with a configured minimum length of 5. [https://aka.ms/bicep/core-diagnostics#BCP334]\n", @@ -511,7 +511,7 @@ "\u001b[93mWaiting for an agent...\u001b[0m\n", "2026/05/10 13:05:26 Downloading source code...\n", "2026/05/10 13:05:27 Finished downloading source code\n", - "2026/05/10 13:05:27 Using acb_vol_def3c675-dcb8-438a-b726-37b613e7a5aa as the home volume\n", + "2026/05/10 13:05:27 Using acb_vol_00000000-0000-0000-0000-000000000000 as the home volume\n", "2026/05/10 13:05:27 Setting up Docker configuration...\n", "2026/05/10 13:05:28 Successfully set up Docker configuration\n", "2026/05/10 13:05:28 Logging in to registry: acralphac2676f.azurecr.io\n", diff --git a/08-agents/08-05-contoso-pmo-mcp/08-05-01-contoso-pmo-agent-setup.ipynb b/08-agents/08-05-contoso-pmo-mcp/08-05-01-contoso-pmo-agent-setup.ipynb index bd81abc..65d1cf3 100644 --- a/08-agents/08-05-contoso-pmo-mcp/08-05-01-contoso-pmo-agent-setup.ipynb +++ b/08-agents/08-05-contoso-pmo-mcp/08-05-01-contoso-pmo-agent-setup.ipynb @@ -299,7 +299,7 @@ " ERROR: Cannot change the site func-contoso-pmo-mcp-d55074 to the App Service Plan ASP-rgfoundrycontosopmomcp-e6cf due to hosting constraints.\n", " … waiting 30 s for managed identity to initialize...\n", "Assigning storage roles to managed identity...\n", - " ✓ managed identity principal: 187581c6-b580-42c9-a030-01de0e898f4d\n", + " ✓ managed identity principal: 00000000-0000-0000-0000-000000000000\n", " ✓ Storage Blob Data Owner\n", " ✓ Storage Queue Data Contributor\n", " ✓ Storage Table Data Contributor\n", diff --git a/08-agents/08-05b-contoso-private-banking-mcp/08-05b-01-private-banking-agent-setup.ipynb b/08-agents/08-05b-contoso-private-banking-mcp/08-05b-01-private-banking-agent-setup.ipynb index 790381f..4329b5f 100644 --- a/08-agents/08-05b-contoso-private-banking-mcp/08-05b-01-private-banking-agent-setup.ipynb +++ b/08-agents/08-05b-contoso-private-banking-mcp/08-05b-01-private-banking-agent-setup.ipynb @@ -259,7 +259,7 @@ " ERROR: Cannot change the site func-private-banking-mcp-97aab2 to the App Service Plan ASP-rgfoundryprivatebankingmcp-c0e3 due to hosting constraints.\n", " … waiting 30 s for managed identity to initialize...\n", "Assigning storage roles to managed identity...\n", - " ✓ managed identity principal: 67bc2a77-6ab1-4d78-b03a-16ccc0529bdd\n", + " ✓ managed identity principal: 00000000-0000-0000-0000-000000000000\n", " ✓ Storage Blob Data Owner\n", " ✓ Storage Queue Data Contributor\n", " ✓ Storage Table Data Contributor\n", diff --git a/08-agents/08-06-agent-offline-evaluation/08-06-05-results-and-portal.ipynb b/08-agents/08-06-agent-offline-evaluation/08-06-05-results-and-portal.ipynb index cf99080..dd47910 100644 --- a/08-agents/08-06-agent-offline-evaluation/08-06-05-results-and-portal.ipynb +++ b/08-agents/08-06-agent-offline-evaluation/08-06-05-results-and-portal.ipynb @@ -407,7 +407,7 @@ "output_type": "stream", "text": [ "View evaluation results in Foundry portal:\n", - "https://ai.azure.com/resource/build/evaluation/3e864d4f-d92d-4182-a49f-f1118878762c?wsid=/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-foundry-core-c2676f/providers/Microsoft.CognitiveServices/accounts/aif-core-c2676f/projects/project-admin-c2676f&tid=b845d325-6786-435a-bc28-b326d9fcbe16\n" + "https://ai.azure.com/resource/build/evaluation/00000000-0000-0000-0000-000000000000?wsid=/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-foundry-core-c2676f/providers/Microsoft.CognitiveServices/accounts/aif-core-c2676f/projects/project-admin-c2676f&tid=00000000-0000-0000-0000-000000000000\n" ] }, { diff --git a/08-agents/08-07-agent-live-observability/08-07-01-deploy-observability-infra.ipynb b/08-agents/08-07-agent-live-observability/08-07-01-deploy-observability-infra.ipynb index 539c7d6..0183857 100644 --- a/08-agents/08-07-agent-live-observability/08-07-01-deploy-observability-infra.ipynb +++ b/08-agents/08-07-agent-live-observability/08-07-01-deploy-observability-infra.ipynb @@ -119,7 +119,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Principal ID: 5db0aa5d-f281-47a3-9720-04727dec61e8\n" + "Principal ID: 00000000-0000-0000-0000-000000000000\n" ] } ], diff --git a/12-foundry-iq-deep-research/12-01-deploy-o3-backend.ipynb b/12-foundry-iq-deep-research/12-01-deploy-o3-backend.ipynb index 6ff6185..73776d5 100644 --- a/12-foundry-iq-deep-research/12-01-deploy-o3-backend.ipynb +++ b/12-foundry-iq-deep-research/12-01-deploy-o3-backend.ipynb @@ -41,10 +41,19 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "12010001-0000-0000-0000-000000000003", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gateway URL : https://apim-foundry-c2676f.azure-api.net/openai\n", + "Chat model : gpt-4.1-mini\n" + ] + } + ], "source": [ "import json\n", "import os\n", @@ -81,11 +90,52 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "12010001-0000-0000-0000-000000000005", "metadata": {}, - "outputs": [], - "source": "# Derive APIM name and suffix from GATEWAY_URL\n# e.g. https://apim-foundry-{suffix}.azure-api.net/openai -> apim-foundry-{suffix}\nAPIM_NAME = GATEWAY_URL.split('//')[1].split('.')[0]\nSUFFIX = APIM_NAME.split('-')[-1] # e.g. {suffix}\nCORE_RG = f'rg-foundry-core-{SUFFIX}'\n\n# Subscription ID + ARM base URI used by Steps 3 and 5 to call APIM management\n# endpoints directly via `az rest`. This avoids requiring the `az apim` CLI\n# extension, which is not bundled with the base Azure CLI.\nSUB_ID = subprocess.run(\n 'az account show --query id -o tsv', shell=True, capture_output=True, text=True\n).stdout.strip()\nAPIM_BASE_URI = (\n f'https://management.azure.com/subscriptions/{SUB_ID}'\n f'/resourceGroups/{CORE_RG}/providers/Microsoft.ApiManagement/service/{APIM_NAME}'\n)\n\n# Get deployer principal ID from cached JWT\ntoken = subprocess.run(\n 'az account get-access-token --query accessToken -o tsv',\n shell=True, capture_output=True, text=True\n).stdout.strip()\npadding = '=' * (4 - len(token.split('.')[1]) % 4)\nPRINCIPAL_ID = json.loads(base64.b64decode(token.split('.')[1] + padding))['oid']\n\nprint(f'APIM service : {APIM_NAME}')\nprint(f'Core RG : {CORE_RG}')\nprint(f'Subscription : {SUB_ID}')\nprint(f'Principal ID : {PRINCIPAL_ID}')" + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "APIM service : apim-foundry-c2676f\n", + "Core RG : rg-foundry-core-c2676f\n", + "Subscription : 00000000-0000-0000-0000-000000000000\n", + "Principal ID : 00000000-0000-0000-0000-000000000000\n" + ] + } + ], + "source": [ + "# Derive APIM name and suffix from GATEWAY_URL\n", + "# e.g. https://apim-foundry-{suffix}.azure-api.net/openai -> apim-foundry-{suffix}\n", + "APIM_NAME = GATEWAY_URL.split('//')[1].split('.')[0]\n", + "SUFFIX = APIM_NAME.split('-')[-1] # e.g. {suffix}\n", + "CORE_RG = f'rg-foundry-core-{SUFFIX}'\n", + "\n", + "# Subscription ID + ARM base URI used by Steps 3 and 5 to call APIM management\n", + "# endpoints directly via `az rest`. This avoids requiring the `az apim` CLI\n", + "# extension, which is not bundled with the base Azure CLI.\n", + "SUB_ID = subprocess.run(\n", + " 'az account show --query id -o tsv', shell=True, capture_output=True, text=True\n", + ").stdout.strip()\n", + "APIM_BASE_URI = (\n", + " f'https://management.azure.com/subscriptions/{SUB_ID}'\n", + " f'/resourceGroups/{CORE_RG}/providers/Microsoft.ApiManagement/service/{APIM_NAME}'\n", + ")\n", + "\n", + "# Get deployer principal ID from cached JWT\n", + "token = subprocess.run(\n", + " 'az account get-access-token --query accessToken -o tsv',\n", + " shell=True, capture_output=True, text=True\n", + ").stdout.strip()\n", + "padding = '=' * (4 - len(token.split('.')[1]) % 4)\n", + "PRINCIPAL_ID = json.loads(base64.b64decode(token.split('.')[1] + padding))['oid']\n", + "\n", + "print(f'APIM service : {APIM_NAME}')\n", + "print(f'Core RG : {CORE_RG}')\n", + "print(f'Subscription : {SUB_ID}')\n", + "print(f'Principal ID : {PRINCIPAL_ID}')" + ] }, { "cell_type": "markdown", @@ -97,11 +147,34 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "12010001-0000-0000-0000-000000000007", "metadata": {}, - "outputs": [], - "source": "check = subprocess.run(\n f'az rest --method GET'\n f' --uri \"{APIM_BASE_URI}/backends/openai-research?api-version=2024-06-01-preview\"'\n f' -o none',\n shell=True, capture_output=True, text=True\n)\nBACKEND_EXISTS = check.returncode == 0\n\nif BACKEND_EXISTS:\n print('✅ openai-research APIM backend already exists - skipping Bicep deployment.')\n print(' Proceeding to read existing resources.')\nelse:\n print('ℹ️ openai-research backend not found - will deploy main.bicep.')" + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "✅ openai-research APIM backend already exists - skipping Bicep deployment.\n", + " Proceeding to read existing resources.\n" + ] + } + ], + "source": [ + "check = subprocess.run(\n", + " f'az rest --method GET'\n", + " f' --uri \"{APIM_BASE_URI}/backends/openai-research?api-version=2024-06-01-preview\"'\n", + " f' -o none',\n", + " shell=True, capture_output=True, text=True\n", + ")\n", + "BACKEND_EXISTS = check.returncode == 0\n", + "\n", + "if BACKEND_EXISTS:\n", + " print('✅ openai-research APIM backend already exists - skipping Bicep deployment.')\n", + " print(' Proceeding to read existing resources.')\n", + "else:\n", + " print('ℹ️ openai-research backend not found - will deploy main.bicep.')" + ] }, { "cell_type": "markdown", @@ -115,10 +188,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "12010001-0000-0000-0000-000000000009", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ℹ️ Skipped (backend already exists)\n" + ] + } + ], "source": [ "if not BACKEND_EXISTS:\n", " result = subprocess.run(\n", @@ -152,11 +233,48 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "12010001-0000-0000-0000-000000000011", "metadata": {}, - "outputs": [], - "source": "# Try the dedicated deep research subscription first; fall back to the alpha\n# subscription if it doesn't exist yet. Uses `az rest` against ARM directly,\n# matching the pattern in 10-01 and 11-01, so the `az apim` extension is not needed.\ndef _list_apim_subscription_key(sub_name: str) -> str | None:\n r = subprocess.run(\n f'az rest --method POST'\n f' --uri \"{APIM_BASE_URI}/subscriptions/{sub_name}/listSecrets?api-version=2024-06-01-preview\"'\n f' --query primaryKey -o tsv',\n shell=True, capture_output=True, text=True\n )\n return r.stdout.strip() if r.returncode == 0 and r.stdout.strip() else None\n\nDR_GATEWAY_KEY = _list_apim_subscription_key('foundry-gateway-dr')\nif DR_GATEWAY_KEY:\n print('✅ Using foundry-gateway-dr subscription key')\nelse:\n DR_GATEWAY_KEY = _list_apim_subscription_key('foundry-gateway-alpha')\n if DR_GATEWAY_KEY:\n print('ℹ️ Using foundry-gateway-alpha subscription key (fallback)')\n else:\n raise RuntimeError('Could not retrieve APIM subscription key. Check az login and core RG.')\n\nDR_MODEL = 'o3-deep-research'\n\nprint(f'DR model : {DR_MODEL}')\nprint(f'DR key : {DR_GATEWAY_KEY[:4]}... (hidden)')" + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ℹ️ Using foundry-gateway-alpha subscription key (fallback)\n", + "DR model : o3-deep-research\n", + "DR key : 8382... (hidden)\n" + ] + } + ], + "source": [ + "# Try the dedicated deep research subscription first; fall back to the alpha\n", + "# subscription if it doesn't exist yet. Uses `az rest` against ARM directly,\n", + "# matching the pattern in 10-01 and 11-01, so the `az apim` extension is not needed.\n", + "def _list_apim_subscription_key(sub_name: str) -> str | None:\n", + " r = subprocess.run(\n", + " f'az rest --method POST'\n", + " f' --uri \"{APIM_BASE_URI}/subscriptions/{sub_name}/listSecrets?api-version=2024-06-01-preview\"'\n", + " f' --query primaryKey -o tsv',\n", + " shell=True, capture_output=True, text=True\n", + " )\n", + " return r.stdout.strip() if r.returncode == 0 and r.stdout.strip() else None\n", + "\n", + "DR_GATEWAY_KEY = _list_apim_subscription_key('foundry-gateway-dr')\n", + "if DR_GATEWAY_KEY:\n", + " print('✅ Using foundry-gateway-dr subscription key')\n", + "else:\n", + " DR_GATEWAY_KEY = _list_apim_subscription_key('foundry-gateway-alpha')\n", + " if DR_GATEWAY_KEY:\n", + " print('ℹ️ Using foundry-gateway-alpha subscription key (fallback)')\n", + " else:\n", + " raise RuntimeError('Could not retrieve APIM subscription key. Check az login and core RG.')\n", + "\n", + "DR_MODEL = 'o3-deep-research'\n", + "\n", + "print(f'DR model : {DR_MODEL}')\n", + "print(f'DR key : {DR_GATEWAY_KEY[:4]}... (hidden)')" + ] }, { "cell_type": "markdown", @@ -168,10 +286,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "id": "12010001-0000-0000-0000-000000000013", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "✅ .env updated:\n", + " DR_MODEL=o3-deep-research\n", + " DR_GATEWAY_KEY=8382...\n" + ] + } + ], "source": [ "lines = env_file.read_text().splitlines() if env_file.exists() else []\n", "\n", @@ -225,4 +353,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/12-foundry-iq-deep-research/12-02-deep-research-loop.ipynb b/12-foundry-iq-deep-research/12-02-deep-research-loop.ipynb index 7d23d8b..7f11ba9 100644 --- a/12-foundry-iq-deep-research/12-02-deep-research-loop.ipynb +++ b/12-foundry-iq-deep-research/12-02-deep-research-loop.ipynb @@ -35,10 +35,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "12020001-0000-0000-0000-000000000003", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gateway URL : https://apim-foundry-c2676f.azure-api.net/openai\n", + "APIM base : https://apim-foundry-c2676f.azure-api.net\n", + "IQ Search endpoint : https://iq-search-n5d3ja.search.windows.net\n", + "Chat model : gpt-4.1-mini\n", + "Deep research model : o3-deep-research\n", + "KB name : arxiv-nlp-kb\n" + ] + } + ], "source": [ "import hashlib\n", "import json\n", @@ -90,10 +103,19 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "12020001-0000-0000-0000-000000000005", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "✅ Deep research client : ready (o3-deep-research via APIM)\n", + "✅ Chat client : ready (gpt-4.1-mini via APIM)\n" + ] + } + ], "source": [ "credential = DefaultAzureCredential()\n", "\n", @@ -131,10 +153,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "12020001-0000-0000-0000-000000000007", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "✅ Foundry IQ KB (arxiv-nlp-kb) reachable\n" + ] + } + ], "source": [ "def _get_search_token() -> str:\n", " \"\"\"Get a bearer token scoped to Azure AI Search.\"\"\"\n", @@ -185,10 +215,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "12020001-0000-0000-0000-000000000009", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "✅ Research tools defined\n", + " - search : query Foundry IQ arxiv-nlp-kb\n", + " - fetch : retrieve full document content by ID\n" + ] + } + ], "source": [ "# In-session document cache (populated by search, read by fetch)\n", "_doc_cache: Dict[str, Dict[str, Any]] = {}\n", @@ -314,10 +354,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "12020001-0000-0000-0000-000000000011", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "✅ Deep research runner ready\n" + ] + } + ], "source": [ "@dataclass\n", "class ResearchResult:\n", @@ -552,10 +600,330 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "id": "12020001-0000-0000-0000-000000000013", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "=================================================================\n", + "🔬 DEEP RESEARCH STARTED\n", + "=================================================================\n", + "Query: What are the main approaches to few-shot learning described in the corpus? Compare their performance...\n", + "\n", + "📍 Iteration 1/10\n", + " 🔍 search(\"few-shot learning approaches comparisons benchmarks models...\")\n", + " → 10 document(s) found\n", + "📍 Iteration 2/10\n", + " 🔍 search(\"\"few-shot learning\" NLP approaches benchmarks...\")\n", + " → 10 document(s) found\n", + "📍 Iteration 3/10\n", + " 🔍 search(\"\"few-shot\" NLP meta-learning prototypical BERT...\")\n", + " → 5 document(s) found\n", + "📍 Iteration 4/10\n", + " 🔍 search(\"\"few-shot\" language model GPT-3 PET LM-BFF...\")\n", + " → 10 document(s) found\n", + "📍 Iteration 5/10\n", + " 🔍 search(\"\"few-shot classification\" BERT...\")\n", + " → 4 document(s) found\n", + "📍 Iteration 6/10\n", + " 🔍 search(\"Pattern Exploiting Training few-shot...\")\n", + " → 5 document(s) found\n", + "📍 Iteration 7/10\n", + " 🔍 search(\"survey few-shot learning NLP meta-learning...\")\n", + " → 9 document(s) found\n", + "📍 Iteration 8/10\n", + " 🔍 search(\"MAML few-shot language tasks Bert BERT...\")\n", + " → 10 document(s) found\n", + "📍 Iteration 9/10\n", + " 🔍 search(\"FewRel few-shot relation dataset...\")\n", + " → 2 document(s) found\n", + "📍 Iteration 10/10\n", + " 🔍 search(\"p-tuning few-shot nlp...\")\n", + " → 10 document(s) found\n", + "\n", + "⚠️ Max iterations reached - synthesising from gathered data...\n", + "\n", + "=================================================================\n", + "🔬 DEEP RESEARCH COMPLETE\n", + "=================================================================\n", + " Iterations : 10\n", + " Tool calls : 10\n", + " Total tokens : 81,987\n", + " Reasoning tokens : 2,112\n", + " Duration : 114.43s\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + "

🔬 Deep Research Results

\n", + "

What are the main approaches to few-shot learning described in the corpus? Compare their performance characteristics, th...

\n", + "
\n", + "
\n", + "
10
\n", + "
Iterations
\n", + "
\n", + "
\n", + "
10
\n", + "
Tool Calls
\n", + "
\n", + "
\n", + "
81,987
\n", + "
Total Tokens
\n", + "
\n", + "
\n", + "
114.43s
\n", + "
Duration
\n", + "
\n", + "
\n", + "
2,112
\n", + "
Reasoning Tokens
\n", + "
\n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Tool calls (10)
[iter 1] search({\"query\": \"few-shot learning approaches comparisons benchmarks models\"})\n",
+       "[iter 2] search({\"query\": \"\\\"few-shot learning\\\" NLP approaches benchmarks\"})\n",
+       "[iter 3] search({\"query\": \"\\\"few-shot\\\" NLP meta-learning prototypical BERT\"})\n",
+       "[iter 4] search({\"query\": \"\\\"few-shot\\\" language model GPT-3 PET LM-BFF\"})\n",
+       "[iter 5] search({\"query\": \"\\\"few-shot classification\\\" BERT\"})\n",
+       "[iter 6] search({\"query\": \"Pattern Exploiting Training few-shot\"})\n",
+       "[iter 7] search({\"query\": \"survey few-shot learning NLP meta-learning\"})\n",
+       "[iter 8] search({\"query\": \"MAML few-shot language tasks Bert BERT\"})\n",
+       "[iter 9] search({\"query\": \"FewRel few-shot relation dataset\"})\n",
+       "[iter 10] search({\"query\": \"p-tuning few-shot nlp\"})
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "---\n", + "# Research Report on Main Approaches to Few-Shot Learning in NLP: Performance, Benchmarks, and Distinctions\n", + "\n", + "## 1. Introduction\n", + "\n", + "Few-shot learning in natural language processing (NLP) addresses the challenge of building models capable of understanding or performing tasks with very limited labeled training data. This setting is critical for many real-world applications where annotated data is scarce or expensive to obtain. The literature reveals several distinct methodological paradigms within few-shot learning, including zero-shot learning, meta-learning, and transfer learning-based approaches leveraging large pre-trained language models.\n", + "\n", + "This report synthesizes findings from recent research papers to elucidate the main few-shot learning approaches, comparing their performance characteristics, benchmarks used for evaluation, and the unique aspects that distinguish them. Specific models such as BERT variants, GPT-3, and neural translation models are discussed alongside relevant benchmark datasets and reported empirical results.\n", + "\n", + "---\n", + "\n", + "## 2. Main Approaches to Few-Shot Learning in NLP\n", + "\n", + "### 2.1 Zero-Shot Learning (ZSL)\n", + "\n", + "Zero-shot learning aims to classify instances into categories not observed during training by leveraging auxiliary semantic information or shared embedding spaces.\n", + "\n", + "- **Methodology**: The common approach is to learn a mapping from input features (e.g., utterances or images) to a semantic embedding space where both seen and unseen categories are represented. Classification is performed by nearest neighbor search in this shared space.\n", + "\n", + "- **Key Models and Contributions**:\n", + " - **Semantic Utterance Classification (SUC)** [Paper ID: babd45576e6a, 2fad96743d08]:\n", + " - A ZSL framework that learns a classifier \\( f: X \\to Y \\) without training examples for target categories.\n", + " - Leverages deep neural networks trained on large-scale search query logs to learn the semantic space.\n", + " - **Mitigating Hubness Problem** [Paper ID: c11bb17bc446, 1]:\n", + " - Addresses the hubness phenomenon where certain vectors (hubs) become nearest neighbors to many points, degrading ZSL performance.\n", + " - Proposes methods to mitigate hubs to improve nearest neighbor classification accuracy.\n", + " - **Collaborative Training of Tensors for Compositional Distributional Semantics** [Paper ID: 1]:\n", + " - Enables zero-shot learning for compositional word-type combinations by parameter sharing.\n", + " \n", + "- **Benchmarks**:\n", + " - SUC models often evaluate on semantic utterance classification benchmarks, data extracted from large query logs.\n", + " - Image attribute tagging in zero-shot settings evaluated on datasets with object attributes (e.g., adjectives tagging images) [Paper ID: 1].\n", + "\n", + "- **Performance Characteristics**:\n", + " - Effective in settings lacking direct supervision for target classes.\n", + " - Performance depends strongly on the quality of the semantic embedding space and mitigation of hubness.\n", + " - Results show improved accuracy when semantic spaces are learned with large external datasets and when hubness is addressed.\n", + "\n", + "- **Distinctive Features**:\n", + " - Emphasizes transfer of learned representations from seen to unseen categories without labeled examples.\n", + " - Exploits external knowledge sources such as word embeddings or multimodal data.\n", + " - Applicable not only to NLP but also to vision-language tasks.\n", + "\n", + "---\n", + "\n", + "### 2.2 Meta-Learning and Model-Agnostic Approaches\n", + "\n", + "Meta-learning, or “learning to learn,” involves training models on a variety of tasks to quickly adapt to new tasks with few examples.\n", + "\n", + "- **Methodology**:\n", + " - Models like **Model-Agnostic Meta-Learning (MAML)** train a base model to adapt rapidly to new tasks via fine-tuning.\n", + " - Meta-learning frameworks may involve episodic training simulating few-shot conditions.\n", + "\n", + "- **Key Models**:\n", + " - Though the corpus mentions MAML primarily in NLP contexts, direct reported applications in few-shot classification on BERT or similar transformers are noted sparsely.\n", + " - **Meta-embeddings using ensembles** [Paper ID: 4 in third query]:\n", + " - Combines multiple embedding sets to improve generalization in semantic tasks.\n", + " - **Deep hierarchical recurrent neural networks for sequence tagging** [Paper ID: 8 in second query]:\n", + " - Multi-task and cross-lingual joint training is presented, aligning with meta-learning principles to leverage parameter sharing.\n", + "\n", + "- **Benchmarks**:\n", + " - Few-shot sequence tagging and classification datasets.\n", + " - Cross-lingual tasks for models to adapt quickly to low-resource languages.\n", + "\n", + "- **Performance Characteristics**:\n", + " - Models trained meta-learn can quickly adapt to novel tasks using minimal examples.\n", + " - Improvements over single-task learned models, especially in low-data regimes.\n", + "\n", + "- **Distinctive Features**:\n", + " - Focused on task-level generalization.\n", + " - Employs training procedures that mimic few-shot scenarios to build adaptability.\n", + "\n", + "---\n", + "\n", + "### 2.3 Large Pre-Trained Language Models with Prompting (e.g., GPT-3, PET, LM-BFF)\n", + "\n", + "Leveraging large-scale pre-training followed by prompt- or pattern-based fine-tuning has emerged as a powerful few-shot approach.\n", + "\n", + "- **Methodology**:\n", + " - Use language models like GPT-3 that are trained on massive corpora to implicitly encode knowledge.\n", + " - Few-shot learning is enabled by providing task descriptions or exemplars in the input (prompting).\n", + " - Pattern Exploiting Training (PET) and LM-BFF are prompt-based fine-tuning strategies to enhance few-shot performance.\n", + "\n", + "- **Key Models**:\n", + " - **GPT-3**: Demonstrates few-shot performance where tasks are specified via prompts and a few examples in-context.\n", + " - **PET (Pattern Exploiting Training)** and **LM-BFF**: Use discrete natural language patterns and verbalizers combined with BERT-like models to improve few-shot classification.\n", + "\n", + "- **Benchmarks**:\n", + " - Standard NLP bench-marking datasets: text classification, question answering, semantic similarity.\n", + " - The One Billion Word Benchmark for language modeling [Paper ID: 3 in second query].\n", + " - Few-shot task suites such as GLUE, SuperGLUE, and custom semantic utterance classification tasks.\n", + "\n", + "- **Performance Characteristics**:\n", + " - Large pre-trained models demonstrate strong few-shot capabilities, sometimes approaching fine-tuned supervised models.\n", + " - PET and LM-BFF show improved data efficiency in fine-tuning BERT models on very small datasets.\n", + " - Performance improves significantly as the size of the underlying language model increases.\n", + "\n", + "- **Distinctive Features**:\n", + " - Shift from fine-tuning on large labeled datasets to prompt-based few-shot inference.\n", + " - Relies heavily on the richness of the pre-training phase.\n", + " - Allows flexible adaptation to new tasks without architecture modification.\n", + "\n", + "---\n", + "\n", + "### 2.4 Multimodal and Compositional Approaches\n", + "\n", + "These approaches integrate visual and linguistic information or utilize compositional structures for few-shot learning.\n", + "\n", + "- **Methodology**:\n", + " - Multimodal skip-gram models (MMSKIP-GRAM) learn word representations that fuse textual and visual features.\n", + " - Decompositional distributional semantics models treat attributes as modifiers (e.g., adjectives), enabling zero-shot attribute tagging in images.\n", + " - Compositional vector space models infer relations in knowledge bases by composing multi-hop relational paths.\n", + "\n", + "- **Key Models**:\n", + " - **MMSKIP-GRAM** [Paper ID: 1 in second query]:\n", + " - Extends SKIP-GRAM to incorporate visual features alongside text.\n", + " - **Decompositional Distributional Semantics for Adjective Tagging** [Paper ID: 1 in first query]:\n", + " - Achieves zero-shot attribute annotation of images using linguistic composition.\n", + " - **Compositional Vector Space Models for KB Completion** [Paper ID: 3 in first query]:\n", + " - Reason about conjunctions of relational paths to infer unseen facts.\n", + "\n", + "- **Benchmarks**:\n", + " - Image annotation datasets (attribute tagging).\n", + " - Knowledge base completion benchmarks.\n", + "\n", + "- **Performance Characteristics**:\n", + " - Improved representation learning by combining modalities leads to better zero-shot recognition.\n", + " - Enables tagging of unseen combinations leveraging compositionality.\n", + " - Contributes to boosting recall in knowledge base expansions.\n", + "\n", + "- **Distinctive Features**:\n", + " - Exploits structured linguistic and multimodal knowledge.\n", + " - Leverages compositionality to generalize across unseen inputs.\n", + "\n", + "---\n", + "\n", + "## 3. Benchmark Datasets and Evaluation Protocols\n", + "\n", + "- **Semantic Utterance Classification (SUC) Datasets**: Used for evaluating zero-shot semantic category classification from utterances.\n", + "- **Image Attribute Datasets**: For zero-shot learning of visual adjectives and attributes.\n", + "- **One Billion Word Benchmark**: Standard large-scale corpus for language modeling evaluation.\n", + "- **Multilingual Translation Datasets**: For evaluating zero-shot translation abilities across languages.\n", + "- **Task-Specific Benchmarks**: Including Named Entity Disambiguation for streaming graphs, phrase structure learning for text classification, and online popularity prediction tasks.\n", + "\n", + "Evaluation metrics typically include classification accuracy, F1-score, and precision-recall measures depending on the task.\n", + "\n", + "---\n", + "\n", + "## 4. Comparative Analysis of Approaches\n", + "\n", + "| Approach | Models / Techniques Featured | Strengths | Weaknesses / Challenges | Typical Benchmarks |\n", + "|------------------------------|-----------------------------------------------|--------------------------------------------------------------|------------------------------------------------------------|-----------------------------------------------|\n", + "| **Zero-Shot Learning (ZSL)** | SUC, Hubness mitigation, Collaborative tensors | No labeled examples needed for target classes; leverages embeddings | Hubness problem; reliance on high-quality semantic space | SUC datasets, Attribute tagging datasets |\n", + "| **Meta-Learning** | MAML, multi-task RNNs, meta-embedding ensembles | Fast adaptation to new tasks; effective with few examples | Training complexity; need diverse meta-training tasks | Few-shot sequence tagging datasets |\n", + "| **Pre-trained LMs with Prompting** | GPT-3, PET, LM-BFF | Strong few-shot performance; minimal fine-tuning required | Compute intensive; prompt design sensitivity | GLUE, SuperGLUE, One Billion Word Benchmark |\n", + "| **Multimodal & Compositional** | MMSKIP-GRAM, compositional vector space models | Exploits multiple modalities; rich compositional representations | Requires aligned multimodal data; complexity in composition | Image attribute datasets, Knowledge base completion |\n", + "\n", + "---\n", + "\n", + "## 5. Key Reported Results and Performance Highlights\n", + "\n", + "- Zero-shot semantic utterance classification approaches can successfully classify queries into unseen categories by embedding utterances into semantic spaces built from large query logs, achieving significant generalization without direct supervision [Paper ID: babd45576e6a].\n", + "\n", + "- Mitigating the hubness problem in zero-shot learning improves the accuracy of nearest-neighbor classification by reducing the impact of hub vectors, thereby enhancing label assignment in semantic spaces [Paper ID: c11bb17bc446].\n", + "\n", + "- The use of multimodal skip-gram models yields improved word representations that capture both linguistic and visual semantics, beneficial for zero-shot tasks involving visual attribute recognition [Paper ID: 1 in second query].\n", + "\n", + "- Large-scale pre-trained language models such as GPT-3 show impressive few-shot capabilities by conditioning on in-context examples, often outperforming traditional fine-tuned models on benchmark NLP tasks.\n", + "\n", + "- Pattern Exploiting Training (PET) and LM-BFF methods enhance few-shot fine-tuning on BERT models by leveraging natural language prompts, leading to increased data efficiency and improved classification accuracies.\n", + "\n", + "---\n", + "\n", + "## 6. Conclusion\n", + "\n", + "The landscape of few-shot learning in NLP is characterized by diverse approaches encompassing zero-shot learning with semantic embeddings, meta-learning with adaptable models, and large-scale pre-trained language models exploiting prompt-based fine-tuning. Zero-shot learning excels in scenarios with no labeled target data by leveraging a semantic space, while meta-learning provides fast adaptation at the cost of complex training regimes. Meanwhile, prompt-based approaches with models like GPT-3 and PET achieve state-of-the-art few-shot performance via intelligent use of pre-trained knowledge and task templates.\n", + "\n", + "Evaluated on a variety of benchmarks—from semantic utterance classification to image attribute tagging—each approach demonstrates unique strengths shaped by its underlying design principles. Future developments are likely to involve hybrid methods combining meta-learning adaptability, zero-shot semantic modeling, and expansive priors from large language models to push the boundaries of few-shot NLP further.\n", + "\n", + "---\n", + "\n", + "# References\n", + "\n", + "- Zero-Shot Learning for Semantic Utterance Classification (SUC)\n", + "- Improving Zero-Shot Learning by Mitigating the Hubness Problem\n", + "- Collaborative Training of Tensors for Compositional Distributional Semantics\n", + "- Google's Multilingual Neural Machine Translation System: Enabling Zero-Shot Translation\n", + "- Combining Language and Vision with a Multimodal Skip-Gram Model\n", + "- Pattern Exploiting Training (PET) and LM-BFF methods\n", + "- One Billion Word Benchmark for Language Modeling\n", + "\n", + "---\n", + "\n", + "*Report compiled based on aggregated research data up to June 2024.*" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "_doc_cache.clear()\n", "\n", @@ -582,10 +950,211 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "id": "12020001-0000-0000-0000-000000000015", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "=================================================================\n", + "🔬 DEEP RESEARCH STARTED\n", + "=================================================================\n", + "Query: Summarise the evolution of transformer attention mechanisms described across papers in the corpus. W...\n", + "\n", + "📍 Iteration 1/10\n", + " 🔍 search(\"efficient attention O(n) transformer complexity...\")\n", + " → 2 document(s) found\n", + "📍 Iteration 2/10\n", + " 📄 fetch(\"cd26eed697e5\")\n", + " → \"An Empirical Study of Adequate Vision Span for Att\"\n", + "📍 Iteration 3/10\n", + " 🔍 search(\"Reformer efficient transformer LSH attention n log n...\")\n", + " → 0 document(s) found\n", + "📍 Iteration 4/10\n", + " 🔍 search(\"\"Reformer: The Efficient Transformer\"...\")\n", + " → 0 document(s) found\n", + "📍 Iteration 5/10\n", + " 🔍 search(\"LSH attention O(n log n) complexity...\")\n", + " → 0 document(s) found\n", + "📍 Iteration 6/10\n", + " 🔍 search(\"random feature approximate softmax attention linear time...\")\n", + " → 4 document(s) found\n", + "📍 Iteration 7/10\n", + " 🔍 search(\"Linformer self-attention linear complexity O(nk)...\")\n", + " → 0 document(s) found\n", + "📍 Iteration 8/10\n", + " 🔍 search(\"\"Linformer\"...\")\n", + " → 0 document(s) found\n", + "📍 Iteration 9/10\n", + " 🔍 search(\"\"linear Transformer\" efficient attention...\")\n", + " → 10 document(s) found\n", + "📍 Iteration 10/10\n", + " 🔍 search(\"\"Big Bird\" Transformer attention...\")\n", + " → 2 document(s) found\n", + "\n", + "⚠️ Max iterations reached - synthesising from gathered data...\n", + "\n", + "=================================================================\n", + "🔬 DEEP RESEARCH COMPLETE\n", + "=================================================================\n", + " Iterations : 10\n", + " Tool calls : 10\n", + " Total tokens : 26,744\n", + " Reasoning tokens : 1,472\n", + " Duration : 72.05s\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + "

🔬 Deep Research Results

\n", + "

Summarise the evolution of transformer attention mechanisms described across papers in the corpus. What are the key effi...

\n", + "
\n", + "
\n", + "
10
\n", + "
Iterations
\n", + "
\n", + "
\n", + "
10
\n", + "
Tool Calls
\n", + "
\n", + "
\n", + "
26,744
\n", + "
Total Tokens
\n", + "
\n", + "
\n", + "
72.05s
\n", + "
Duration
\n", + "
\n", + "
\n", + "
1,472
\n", + "
Reasoning Tokens
\n", + "
\n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Tool calls (10)
[iter 1] search({\"query\": \"efficient attention O(n) transformer complexity\"})\n",
+       "[iter 2] fetch({\"document_id\": \"cd26eed697e5\"})\n",
+       "[iter 3] search({\"query\": \"Reformer efficient transformer LSH attention n log n\"})\n",
+       "[iter 4] search({\"query\": \"\\\"Reformer: The Efficient Transformer\\\"\"})\n",
+       "[iter 5] search({\"query\": \"LSH attention O(n log n) complexity\"})\n",
+       "[iter 6] search({\"query\": \"random feature approximate softmax attention linear time\"})\n",
+       "[iter 7] search({\"query\": \"Linformer self-attention linear complexity O(nk)\"})\n",
+       "[iter 8] search({\"query\": \"\\\"Linformer\\\"\"})\n",
+       "[iter 9] search({\"query\": \"\\\"linear Transformer\\\" efficient attention\"})\n",
+       "[iter 10] search({\"query\": \"\\\"Big Bird\\\" Transformer attention\"})
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "# Research Report: Evolution and Efficiency Improvements of Transformer Attention Mechanisms\n", + "\n", + "## 1. Introduction\n", + "\n", + "Transformers have revolutionized natural language processing (NLP) and related fields by enabling highly effective sequence modeling via the self-attention mechanism. Despite their impressive performance, standard self-attention exhibits quadratic computational and memory complexity—O(n²), where n represents the sequence length. This computational bottleneck severely limits the scalability of transformers to long sequences and large datasets.\n", + "\n", + "Over recent years, there has been considerable research focus on evolving the attention mechanism to achieve better efficiency while retaining or improving performance. This report synthesizes current research findings on the evolution of transformer attention mechanisms with an emphasis on key strategies to address the quadratic complexity challenge. It highlights specific techniques, their complexity bounds, and reported experimental outcomes.\n", + "\n", + "## 2. Standard Self-Attention and Its Complexity\n", + "\n", + "The canonical self-attention mechanism computes pairwise interactions between all elements in the input sequence per layer. Concretely, given input length n, the operation involves computing an n×n attention matrix, resulting in **O(n²)** time and memory complexity per layer. This quadratic dependency constitutes a critical efficiency bottleneck for long input sequences like extended documents, genome data, or high-resolution images in vision transformers.\n", + "\n", + "## 3. Key Efficiency Improvements in Transformer Attention Mechanisms\n", + "\n", + "### 3.1. Vision Span Reduction for Attention (Adaptive Windowing)\n", + "\n", + "**Reference:** \"An Empirical Study of Adequate Vision Span for Attention-Based Neural Machine Translation\"\n", + "\n", + "- **Main Idea:** The authors introduce the concept of a \"vision span,\" defined as a dynamically adaptative fixed window size limiting the encoder states attended at each decoding step, rather than attending over all n positions.\n", + "- **Mechanism:** By restricting attention computation to a subset (window) of encoder states, the attention module can avoid redundant score computations that yield marginal utility in sequence tasks like machine translation.\n", + "- **Complexity Reduction:** Although exact complexity is not formulated as a strict bound, experimentally, they report reducing the attention window size—and consequently the computational cost—by over 50%, effectively moving towards linear scaling in practice.\n", + "- **Empirical Results:** On English-Japanese and German-English translation tasks, this approach achieves reduced computational overhead with only modest accuracy loss, demonstrating that full attention over all positions is often redundant.\n", + "\n", + "### 3.2. Softmax Approximation and Sparsity-Inducing Functions\n", + "\n", + "While not specifically altering the complexity class of self-attention, these approaches optimize the computational burden involved in the softmax normalization step of attention distributions.\n", + "\n", + "- **Adaptive Softmax:** By clustering vocabulary tokens according to frequency and exploiting unbalanced word distributions, adaptive softmax reduces computation time in language models, indirectly improving efficiency in attention-heavy architectures.\n", + "- **Sparsemax:** A softmax-like function that outputs sparse probability distributions, enabling attention focusing on fewer key positions and potentially reducing unnecessary computation.\n", + "- **Impact:** These methods reduce overhead in normalization and may facilitate sparsity in attention maps but do not explicitly reduce the quadratic dependency in general.\n", + "\n", + "### 3.3. Emerging Techniques from Broader Literature (Insight from Missing Data)\n", + "\n", + "Although not present directly in the retrieved dataset, widely recognized approaches described in seminal works often target the quadratic complexity explicitly, including:\n", + "\n", + "- **Reformer (Kitaev et al., 2020):** Employs locality-sensitive hashing (LSH) to approximate attention with **O(n log n)** complexity by hashing similar key-query pairs and computing attention only within those buckets.\n", + "- **Linformer (Wang et al., 2020):** Projects key and value matrices into lower dimensional spaces, reducing complexity to **O(nk)** where k ≪ n is a fixed projection dimension.\n", + "- **Performer (Choromanski et al., 2020):** Uses random feature methods to approximate the softmax kernel with linear time complexity **O(n)**.\n", + "\n", + "Such approaches explicitly provide theoretical guarantees on lowering time and memory costs while maintaining competitive accuracy but were not directly found in the given corpus.\n", + "\n", + "## 4. Addressing the Quadratic Complexity\n", + "\n", + "Summarizing the strategies by which efficiency improvements address the quadratic growth issue:\n", + "\n", + "| Technique | Complexity Bound | Core Strategy | Empirical Findings |\n", + "|-------------------------------|--------------------|--------------------------------------------|----------------------------------------------|\n", + "| Vision Span Reduction | Approximate O(nk), k < n | Restricts attention to a sliding or adaptive window of encoder states to avoid full sequence scoring | >50% reduction in window size, modest accuracy loss in NMT tasks |\n", + "| Adaptive Softmax & Sparsemax | Improved constant factors | Clustering, sparsity to reduce computation within softmax operation | Improves training efficiency, sparsity induces interpretability |\n", + "| Reformer LSH Attention | O(n log n) | Hash-based approximate nearest neighbor attention | Comparable accuracy, scalable to long sequences |\n", + "| Linformer | O(nk), k ≪ n | Low-rank linear projections of key/value matrices | Empirical evidence of reduced complexity with minor losses |\n", + "| Performer Random Features | O(n) | Kernel approximations for softmax attention | Theoretically grounded, efficient on long sequences |\n", + "\n", + "## 5. Conclusions and Future Directions\n", + "\n", + "The evolution of transformer attention mechanisms reflects a steady trend toward improving efficiency while maintaining the modeling power of self-attention. Key advances include:\n", + "\n", + "- **Adaptive attention spans** to reduce redundant computations dynamically.\n", + "- **Sparse attention mechanisms** to focus compute on important token subsets.\n", + "- **Approximate attention algorithms** leveraging hashing, kernel approximations, and low-rank projections to reduce theoretical complexity from quadratic to near-linear or logarithmic scale.\n", + "\n", + "Current reported experiments confirm these approaches can deliver substantial computational efficiency gains with modest or negligible trade-offs in accuracy for tasks such as machine translation.\n", + "\n", + "Future research directions include combining these complementary strategies, rigorous benchmarking in diverse domains (e.g., vision, speech), and hardware-aware algorithm design to maximize practical gains.\n", + "\n", + "---\n", + "\n", + "# References\n", + "\n", + "1. An Empirical Study of Adequate Vision Span for Attention-Based Neural Machine Translation. (Details from provided corpus)\n", + "2. Kitaev, N., Kaiser, L., & Levskaya, A. (2020). Reformer: The Efficient Transformer.\n", + "3. Wang, S., Li, B. Z., Khabsa, M., Fang, H., & Ma, H. (2020). Linformer: Self-Attention with Linear Complexity.\n", + "4. Choromanski, K., et al. (2020). Rethinking Attention with Performers.\n", + "\n", + "*(Note: references 2-4 are cited for completeness though not part of provided data.)*" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "_doc_cache.clear()\n", "\n", @@ -612,10 +1181,264 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "id": "12020001-0000-0000-0000-000000000017", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "=================================================================\n", + "🔬 DEEP RESEARCH STARTED\n", + "=================================================================\n", + "Query: Which papers in the corpus address multilingual NLP? What languages are covered and what NLP tasks a...\n", + "\n", + "📍 Iteration 1/10\n", + " 🔍 search(\"multilingual NLP tasks low-resource languages cross-lingual ...\")\n", + " → 10 document(s) found\n", + "📍 Iteration 2/10\n", + " 📄 fetch(\"affb0602d095\")\n", + " → \"Cross-Lingual Dependency Parsing with Late Decodin\"\n", + "📍 Iteration 3/10\n", + " 🔍 search(\"\"multilingual model to translate a zero-resource language pa...\")\n", + " → 10 document(s) found\n", + "📍 Iteration 4/10\n", + " 📄 fetch(\"919b93decf62\")\n", + " → \"Zero-Resource Translation with Multi-Lingual Neura\"\n", + "📍 Iteration 5/10\n", + " 🔍 search(\"multilingual named entity recognition cross-lingual transfer...\")\n", + " → 10 document(s) found\n", + "📍 Iteration 6/10\n", + " 📄 fetch(\"8\")\n", + " → \"Boosting Named Entity Recognition with Neural Char\"\n", + "📍 Iteration 7/10\n", + " 🔍 search(\"\"Transfer Learning for Low-Resource Neural Machine Translati...\")\n", + " → 10 document(s) found\n", + "📍 Iteration 8/10\n", + " 📄 fetch(\"e7c24d200e55\")\n", + " → \"Transfer Learning for Low-Resource Neural Machine \"\n", + "📍 Iteration 9/10\n", + " 🔍 search(\"\"XLM\" cross-lingual language model multilingual...\")\n", + " → 10 document(s) found\n", + "📍 Iteration 10/10\n", + " 🔍 search(\"cross-lingual question answering multilingual QA languages e...\")\n", + " → 10 document(s) found\n", + "\n", + "⚠️ Max iterations reached - synthesising from gathered data...\n", + "\n", + "=================================================================\n", + "🔬 DEEP RESEARCH COMPLETE\n", + "=================================================================\n", + " Iterations : 10\n", + " Tool calls : 10\n", + " Total tokens : 70,188\n", + " Reasoning tokens : 3,264\n", + " Duration : 88.24s\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + "

🔬 Deep Research Results

\n", + "

Which papers in the corpus address multilingual NLP? What languages are covered and what NLP tasks are evaluated (transl...

\n", + "
\n", + "
\n", + "
10
\n", + "
Iterations
\n", + "
\n", + "
\n", + "
10
\n", + "
Tool Calls
\n", + "
\n", + "
\n", + "
70,188
\n", + "
Total Tokens
\n", + "
\n", + "
\n", + "
88.24s
\n", + "
Duration
\n", + "
\n", + "
\n", + "
3,264
\n", + "
Reasoning Tokens
\n", + "
\n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Tool calls (10)
[iter 1] search({\"query\": \"multilingual NLP tasks low-resource languages cross-lingual transfer\"})\n",
+       "[iter 2] fetch({\"document_id\": \"affb0602d095\"})\n",
+       "[iter 3] search({\"query\": \"\\\"multilingual model to translate a zero-resource language pair (1) as well as a single-pair neural translation model\\\"\"})\n",
+       "[iter 4] fetch({\"document_id\": \"919b93decf62\"})\n",
+       "[iter 5] search({\"query\": \"multilingual named entity recognition cross-lingual transfer low resource\"})\n",
+       "[iter 6] fetch({\"document_id\": \"8\"})\n",
+       "[iter 7] search({\"query\": \"\\\"Transfer Learning for Low-Resource Neural Machine Translation\\\"\"})\n",
+       "[iter 8] fetch({\"document_id\": \"e7c24d200e55\"})\n",
+       "[iter 9] search({\"query\": \"\\\"XLM\\\" cross-lingual language model multilingual\"})\n",
+       "[iter 10] search({\"query\": \"cross-lingual question answering multilingual QA languages evaluated\"})
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "Research Report: Multilingual NLP with a Focus on Low-Resource Languages and Cross-Lingual Transfer Learning\n", + "\n", + "1. Introduction\n", + "\n", + "Multilingual Natural Language Processing (NLP) has become an increasingly significant area of research due to the diversity of languages worldwide and the varying availability of linguistic resources. A major challenge is effectively handling low-resource languages—those with limited annotated datasets—and improving NLP tasks such as machine translation (MT), named entity recognition (NER), dependency parsing, and more. Cross-lingual transfer learning techniques have been instrumental in addressing these challenges by leveraging data and models from resource-rich languages to benefit low-resource counterparts.\n", + "\n", + "This report synthesizes findings from recent research papers targeting multilingual NLP, highlighting the languages studied, NLP tasks addressed, and approaches to cross-lingual transfer learning, especially for low-resource scenarios.\n", + "\n", + "2. Overview of Multilingual NLP Tasks Covered\n", + "\n", + "The surveyed papers address a range of key NLP tasks in multilingual settings:\n", + "\n", + "- Machine Translation (MT), including zero-resource and low-resource scenarios\n", + "- Named Entity Recognition (NER)\n", + "- Dependency Parsing\n", + "- Morphological Tagging\n", + "- Sentiment Classification\n", + "- Language Segmentation\n", + "- Speech-to-Translation Alignment\n", + "- Question Answering (less directly reported)\n", + "\n", + "2.1 Machine Translation\n", + "\n", + "Numerous papers propose and evaluate multilingual neural machine translation (NMT) models capable of many-to-many translations among multiple languages:\n", + "\n", + "- \"Zero-Resource Translation with Multi-Lingual Neural Machine Translation\" introduces finetuning algorithms and many-to-one strategies to enable zero-resource translation for language pairs without direct parallel data. The model matches or exceeds the performance of single-pair models trained on large direct corpora and outperforms pivot-based approaches.\n", + "\n", + "- \"Transfer Learning for Low-Resource Neural Machine Translation\" demonstrates that pretraining on high-resource language pairs (parent model) followed by parameter transfer to low-resource language pairs (child model) substantially improves BLEU scores for low-resource languages, closing the gap with syntax-based machine translation systems.\n", + "\n", + "- \"Multi-Way, Multilingual Neural Machine Translation with a Shared Attention Mechanism\" presents a model that shares a single attention mechanism across multiple language pairs, achieving improved performance across ten language pairs and supporting efficient scaling.\n", + "\n", + "- Additional contributions include fully character-level NMT without explicit segmentation and models utilizing convolutional encoders for more efficient translation encoding.\n", + "\n", + "2.2 Named Entity Recognition (NER)\n", + "\n", + "NER in multilingual and low-resource contexts is another focus:\n", + "\n", + "- \"Sharing Network Parameters for Crosslingual Named Entity Recognition\" proposes neural architectures sharing decoder and embedding parameters between languages, facilitating effective cross-lingual transfer without large annotated corpora.\n", + "\n", + "- \"Boosting Named Entity Recognition with Neural Character Embeddings\" introduces CharWNN, a language-independent deep neural network leveraging character- and word-level embeddings. Experiments on Portuguese and Spanish corpora show significant improvements without handcrafted features.\n", + "\n", + "- The \"POLYGLOT-NER\" system builds massive multilingual NER annotators covering 40 major languages using large-scale Wikipedia and Freebase data, emphasizing minimal human intervention.\n", + "\n", + "2.3 Dependency Parsing and Morphological Tagging\n", + "\n", + "- \"Cross-Lingual Dependency Parsing with Late Decoding for Truly Low-Resource Languages\" proposes an end-to-end graph-based neural dependency parser that projects edge score matrices directly, avoiding early decoding losses. It reports average improvements across 10 low-resource languages.\n", + "\n", + "- \"Cross-Lingual Morphological Tagging for Low-Resource Languages\" advances morphological tagging models trained without direct supervision, exploiting bitext to infer tag constraints, which is critical for morphologically rich but low-resource languages.\n", + "\n", + "2.4 Sentiment Classification and Language Segmentation\n", + "\n", + "- \"Adversarial Deep Averaging Networks for Cross-Lingual Sentiment Classification\" introduces an adversarial training network that transfers sentiment analysis knowledge from resource-rich languages to low-resource ones.\n", + "\n", + "- \"Language Segmentation\" investigates methods for segmenting multi-lingual texts, a prerequisite for several NLP tasks, emphasizing unsupervised techniques when annotated data is unavailable.\n", + "\n", + "2.5 Speech-to-Translation Alignment\n", + "\n", + "- An unsupervised probability model combining IBM Model 2 and k-means clustering addresses alignment of spoken words with their translations for low-resource languages, beneficial for spoken language documentation and speech translation.\n", + "\n", + "3. Languages Covered in the Studies\n", + "\n", + "While not all papers specify every language pair tested, the following observations emerge:\n", + "\n", + "- Machine translation studies cover diverse languages including multiple from WMT datasets (European languages such as English, French, German, Romanian), as well as low-resource languages not explicitly named but implied through references to \"low-resource pairs.\"\n", + "\n", + "- NER research includes Portuguese, Spanish, Assamese, and a wider set of 40 major languages leveraged via Wikipedia data.\n", + "\n", + "- Dependency parsing and morphological tagging papers focus on low-resource and morphologically rich languages, though specific languages are less detailed.\n", + "\n", + "- Sentiment classification and language segmentation apply generally to languages with scarce annotated data.\n", + "\n", + "4. Approaches to Cross-Lingual Transfer Learning for Low-Resource Languages\n", + "\n", + "4.1 Transfer Learning in Neural Machine Translation\n", + "\n", + "- Pretraining on high-resource language pairs and subsequently fine-tuning on low-resource pairs enables the reuse of learned parameters, offering substantial BLEU improvements (approx. +5.6 BLEU) for low-resource languages (E7C24D200E55).\n", + "\n", + "- Multi-way multilingual NMT models use shared attention mechanisms and shared vocabularies to facilitate parameter sharing among many languages, allowing zero-shot and zero-resource translation capabilities (919b93decf62, 1).\n", + "\n", + "- Finetuning algorithms that adapt multilingual models enable translation quality close to or better than pivot-based methods without requiring large parallel corpora for low-resource pairs.\n", + "\n", + "- Models may also incorporate structural alignment biases and monolingual data to further augment transfer learning.\n", + "\n", + "4.2 Cross-Lingual Transfer in Named Entity Recognition\n", + "\n", + "- Neural network models that share parameters at word and character embedding levels between languages reduce dependency on annotated data in the target low-resource language (4c2efdfc23fe).\n", + "\n", + "- Leveraging unsupervised word clusters from phylogenetically related languages improves NER performance when direct training data is sparse.\n", + "\n", + "- Use of deep character embeddings enables language-independent NER models that generalize well across languages without handcrafted feature engineering.\n", + "\n", + "4.3 Other Cross-Lingual Syntactic and Morphological Transfer\n", + "\n", + "- Projection of syntactic structures and morphological tags across languages using bitext and cross-lingual word clusters supports the creation of parsers and taggers for under-resourced languages (affb0602d095, 4).\n", + "\n", + "- Late decoding methods in dependency parsers help preserve structural information lost in early decoding, benefiting low-resource language parsing.\n", + "\n", + "4.4 Handling Extreme Low-Resource Settings\n", + "\n", + "- Some approaches focus on unsupervised or semi-supervised methods to cope with no or minimal annotated data, such as unsupervised language segmentation, speech-to-translation alignment with weak supervision, and adversarial training for sentiment analysis.\n", + "\n", + "5. Summary of Key Contributions and Performance Gains\n", + "\n", + "- Cross-lingual transfer learning via parameter sharing, finetuning, and shared architectures has proven effective across multiple tasks, particularly in neural machine translation and named entity recognition.\n", + "\n", + "- Zero-shot and zero-resource translation models achieve competitive or superior performance to traditional pivot-based or syntax-based systems in several language pairs.\n", + "\n", + "- Neural character embeddings and deep architectures provide language-agnostic models that reduce the need for handcrafted features and extensive annotation.\n", + "\n", + "- For dependency parsing and morphological tagging, projection techniques along with graph-based neural parsing methods enhance performance in low-resource contexts.\n", + "\n", + "6. Conclusion\n", + "\n", + "The corpus reveals a strong research trend towards unified multilingual models that leverage cross-lingual transfer learning and parameter sharing to address the scarcity of annotated data in low-resource languages. Techniques such as finetuning of pretrained multilingual models, end-to-end neural architectures, and leveraging linguistic similarities between languages facilitate improvements in key NLP tasks including machine translation, named entity recognition, dependency parsing, and morphological analysis.\n", + "\n", + "These approaches collectively work towards the goal of creating scalable NLP systems capable of supporting a wide range of languages with limited resources, thereby promoting inclusivity and broad applicability of language technologies globally.\n", + "\n", + "---\n", + "\n", + "References: \n", + "(Main papers referenced by their ID for clarity) \n", + "- Affb0602d095: Cross-Lingual Dependency Parsing with Late Decoding for Truly Low-Resource Languages \n", + "- 919b93decf62: Zero-Resource Translation with Multi-Lingual Neural Machine Translation \n", + "- E7c24d200e55: Transfer Learning for Low-Resource Neural Machine Translation \n", + "- 4c2efdfc23fe: Sharing Network Parameters for Crosslingual Named Entity Recognition \n", + "- 8: Boosting Named Entity Recognition with Neural Character Embeddings \n", + "- 4: Cross-Lingual Morphological Tagging for Low-Resource Languages \n", + "- 6: Adversarial Deep Averaging Networks for Cross-Lingual Sentiment Classification" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "_doc_cache.clear()\n", "\n", @@ -644,10 +1467,206 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "id": "12020001-0000-0000-0000-000000000019", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "=================================================================\n", + "🔬 DEEP RESEARCH STARTED\n", + "=================================================================\n", + "Query: What are the latest breakthroughs in nuclear fusion energy research? Summarise the most recent achie...\n", + "\n", + "📍 Iteration 1/10\n", + " 🔍 search(\"nuclear fusion energy research latest breakthroughs...\")\n", + " → 0 document(s) found\n", + "📍 Iteration 2/10\n", + " 🔍 search(\"nuclear fusion research...\")\n", + " → 1 document(s) found\n", + "📍 Iteration 3/10\n", + " 🔍 search(\"\"nuclear fusion\"...\")\n", + " → 6 document(s) found\n", + "📍 Iteration 4/10\n", + " 🔍 search(\"fusion energy plasma...\")\n", + " → 0 document(s) found\n", + "📍 Iteration 5/10\n", + " 🔍 search(\"fusion breakthrough Livermore ignition NIF...\")\n", + " → 0 document(s) found\n", + "📍 Iteration 6/10\n", + " 🔍 search(\"National Ignition Facility fusion 2022...\")\n", + " → 0 document(s) found\n", + "📍 Iteration 7/10\n", + " 🔍 search(\"ITER tokamak...\")\n", + " → 0 document(s) found\n", + "📍 Iteration 8/10\n", + " 🔍 search(\"latest nuclear fusion breakthrough 2023 research institution...\")\n", + " → 0 document(s) found\n", + "📍 Iteration 9/10\n", + " 🔍 search(\"\"fusion\" energy research breakthrough 2022...\")\n", + " → 0 document(s) found\n", + "📍 Iteration 10/10\n", + " 🔍 search(\"Lawrence Livermore National Ignition Facilty 2023 arXiv...\")\n", + " → 1 document(s) found\n", + "\n", + "⚠️ Max iterations reached - synthesising from gathered data...\n", + "\n", + "=================================================================\n", + "🔬 DEEP RESEARCH COMPLETE\n", + "=================================================================\n", + " Iterations : 10\n", + " Tool calls : 10\n", + " Total tokens : 45,283\n", + " Reasoning tokens : 6,272\n", + " Duration : 105.65s\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + "

🔬 Deep Research Results

\n", + "

What are the latest breakthroughs in nuclear fusion energy research? Summarise the most recent achievements, the institu...

\n", + "
\n", + "
\n", + "
10
\n", + "
Iterations
\n", + "
\n", + "
\n", + "
10
\n", + "
Tool Calls
\n", + "
\n", + "
\n", + "
45,283
\n", + "
Total Tokens
\n", + "
\n", + "
\n", + "
105.65s
\n", + "
Duration
\n", + "
\n", + "
\n", + "
6,272
\n", + "
Reasoning Tokens
\n", + "
\n", + "
\n", + "
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
Tool calls (10)
[iter 1] search({\"query\": \"nuclear fusion energy research latest breakthroughs\"})\n",
+       "[iter 2] search({\"query\": \"nuclear fusion research\"})\n",
+       "[iter 3] search({\"query\": \"\\\"nuclear fusion\\\"\"})\n",
+       "[iter 4] search({\"query\": \"fusion energy plasma\"})\n",
+       "[iter 5] search({\"query\": \"fusion breakthrough Livermore ignition NIF\"})\n",
+       "[iter 6] search({\"query\": \"National Ignition Facility fusion 2022\"})\n",
+       "[iter 7] search({\"query\": \"ITER tokamak\"})\n",
+       "[iter 8] search({\"query\": \"latest nuclear fusion breakthrough 2023 research institution challenge\"})\n",
+       "[iter 9] search({\"query\": \"\\\"fusion\\\" energy research breakthrough 2022\"})\n",
+       "[iter 10] search({\"query\": \"Lawrence Livermore National Ignition Facilty 2023 arXiv\"})
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "---\n", + "**Research Report: Latest Breakthroughs in Nuclear Fusion Energy Research**\n", + "\n", + "---\n", + "\n", + "### Executive Summary\n", + "\n", + "Nuclear fusion energy research remains a frontier of scientific inquiry promising a potentially transformative source of clean and virtually limitless energy. Recent investigations aimed at achieving controlled fusion continue to push technological and physical barriers. However, as of the current data cutoff in mid-2024, there are no publicly documented confirmed breakthroughs or newly published authoritative research results reporting successful sustained net-energy-positive fusion reactions or commercially viable fusion reactors. This report synthesizes available contextual knowledge, summarizes institutional efforts, outlines ongoing challenges, and identifies gaps in current accessible information on fusion energy progress.\n", + "\n", + "---\n", + "\n", + "### 1. Background on Nuclear Fusion Energy Research\n", + "\n", + "Nuclear fusion is the process by which atomic nuclei combine to form heavier nuclei, releasing substantial energy. Achieving controlled fusion for energy generation on Earth involves replicating conditions found in stars, requiring extremely high temperatures and pressures to sustain plasma. The major approaches include magnetic confinement (e.g., tokamak reactors like ITER), inertial confinement (such as the National Ignition Facility - NIF’s laser-based experiments), and alternative emerging concepts.\n", + "\n", + "---\n", + "\n", + "### 2. Summary of Recent Achievements and Developments\n", + "\n", + "- **Lack of Verified Breakthrough Data**: Extensive queries in multiple science and technology databases reveal an absence of newly confirmed breakthroughs announced publicly as of 2023-2024.\n", + "- **High-Profile Facilities**:\n", + " - The *National Ignition Facility* (NIF) in Livermore, California, historically has aimed to achieve ignition through inertial confinement fusion but recent publicly accessible data do not report new ignition events or improved net positive energy outputs.\n", + " - The *ITER* (International Thermonuclear Experimental Reactor), an international collaborative tokamak project, continues construction and experimental work but has not yet achieved full plasma operation or net energy gain.\n", + "- **Literature and Research Landscape**:\n", + " - Current publications and available academic sources largely revolve around theoretical models, engineering challenges, plasma control methods, and preliminary experimental setups.\n", + " - No current documented successful scale-ups or commercial demonstrations in fusion energy generation have emerged in the last year.\n", + "\n", + "---\n", + "\n", + "### 3. Institutions Involved\n", + "\n", + "- **National Ignition Facility (NIF), Lawrence Livermore National Laboratory, USA**: Focuses on laser-driven inertial confinement fusion.\n", + "- **ITER Organization, international consortium**: Pursues magnetic confinement fusion via the tokamak approach, with members from the EU, USA, China, Russia, India, Japan, and South Korea.\n", + "- Other national laboratories and universities worldwide contribute foundational fusion science and engineering advances, although they have not yet reported ground-breaking net energy gain.\n", + "\n", + "---\n", + "\n", + "### 4. Key Challenges Remaining\n", + "\n", + "- **Achieving Net Energy Gain (Ignition)**: Sustaining a fusion reaction that produces more energy than consumed remains elusive.\n", + "- **Plasma Stability and Control**: Controlling plasma turbulence and instabilities to maintain confinement is a critical hurdle.\n", + "- **Materials Endurance**: Reactor materials must withstand intense neutron bombardment and extreme heat.\n", + "- **Scaling Up**: Demonstration of scalable, economically viable reactors transitioning from experimental setups to operational power plants.\n", + "- **Cost and Engineering Complexity**: High costs and complex engineering impede rapid commercial deployment.\n", + "\n", + "---\n", + "\n", + "### 5. Conclusion and Outlook\n", + "\n", + "Despite significant scientific effort and large-scale international collaboration, there is no confirmed recent breakthrough meeting the milestone of practical net energy production from controlled nuclear fusion as of mid-2024. Advancements continue in experimental techniques, plasma physics understanding, and reactor engineering. The pathway to commercial fusion energy remains challenging, requiring sustained multidisciplinary research and technological innovation.\n", + "\n", + "---\n", + "\n", + "### 6. Recommendations for Future Research Monitoring\n", + "\n", + "- Closely follow publications from leading fusion research centers (NIF, ITER, and equivalents globally).\n", + "- Monitor reports from fusion energy startups potentially applying novel approaches.\n", + "- Watch for peer-reviewed articles on plasma physics and reactor materials to track incremental advances.\n", + "\n", + "---\n", + "\n", + "**Note:** This report is compiled from an exhaustive search of current public scientific databases and research repositories up to June 2024. No new verified data on breakthroughs in nuclear fusion energy were available at the time of writing.\n", + "\n", + "---\n", + "\n", + "*Prepared by: Research Analysis Unit*\n", + "\n", + "*Date: June 2024*\n", + "\n", + "---" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "_doc_cache.clear()\n", "\n", @@ -664,7 +1683,7 @@ ], "metadata": { "kernelspec": { - "display_name": "foundry-samples", + "display_name": "awesome-foundry-nextgen", "language": "python", "name": "python3" }, @@ -678,7 +1697,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.14" + "version": "3.13.13" } }, "nbformat": 4, diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a0b115..320ba5c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,25 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.8.6] - 2026-05-27 + +Tenant-identifier scrub of cached notebook outputs across sections 08 and 12, plus refreshed cached outputs for the deep-research notebooks. + +### Changed + +- Scrubbed nine tenant-specific UUIDs from cached notebook outputs to the conventional `00000000-0000-0000-0000-000000000000` placeholder. Per the notebook-output hygiene policy in `CONTRIBUTING.md`: deterministic resource-name suffixes (`c2676f`, `n5d3ja`) are kept; subscription IDs, Entra principal IDs, project managed-identity principals, eval-run IDs, and ACR build volume IDs are scrubbed. + - `08-agents/08-03-hosted-agents/08-03-01-deploy-hosted-agent.ipynb` - Entra principal ID + ACR build volume ID + - `08-agents/08-05-contoso-pmo-mcp/08-05-01-contoso-pmo-agent-setup.ipynb` - project MI principal + - `08-agents/08-05b-contoso-private-banking-mcp/08-05b-01-private-banking-agent-setup.ipynb` - project MI principal + - `08-agents/08-06-agent-offline-evaluation/08-06-05-results-and-portal.ipynb` - two eval-run IDs in portal URLs + - `08-agents/08-07-agent-live-observability/08-07-01-deploy-observability-infra.ipynb` - Entra principal ID + - `12-foundry-iq-deep-research/12-01-deploy-o3-backend.ipynb` - subscription ID + Entra principal ID +- Refreshed cached outputs in `12-foundry-iq-deep-research/12-01-deploy-o3-backend.ipynb` and `12-foundry-iq-deep-research/12-02-deep-research-loop.ipynb` from a successful end-to-end run after the v0.8.4 / v0.8.5 fixes landed. + +### Kept (false positive flagged for completeness) + +- `08-agents/08-03-hosted-agents/08-03-01-deploy-hosted-agent.ipynb` references `53ca6127-db72-4b80-b1b0-d745d6d5456d` as `FOUNDRY_USER_ROLE_ID`. This is the public Azure built-in role-definition ID for "Foundry User", identical across all Azure tenants - not personal data. + ## [0.8.5] - 2026-05-27 ### Fixed diff --git a/pyproject.toml b/pyproject.toml index 03cd9d9..fc0ae9a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "awesome-foundry-nextgen" -version = "0.8.5" +version = "0.8.6" description = "Hands-on labs for Microsoft Foundry — Azure's unified PaaS for enterprise AI" requires-python = ">=3.11" dependencies = [