From 85c1ea14d2787e4939e8de4d617422f5a91d5bec Mon Sep 17 00:00:00 2001 From: Scarlett Attensil Date: Wed, 13 May 2026 17:11:02 -0700 Subject: [PATCH 1/4] Add LaunchDarkly AI Configs integration sample for Strands MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A new sample under python/03-integrate/runtime-control/launchdarkly demonstrating how to drive a Strands agent entirely from LaunchDarkly AI Configs: model, instructions, parameters, tool list, and multi-agent graph topology all live in LaunchDarkly. Provider, tools, and graph shape can be changed from the LaunchDarkly UI with no code change. The notebook is self-contained: it creates the LaunchDarkly project, two AI Configs (triage + specialist), three triage variations (OpenAI gpt-5, Anthropic Claude Sonnet 4.6, Bedrock Claude Sonnet 4.6), a governed get_order_status tool attached per-variation, default targeting, and an Agent Graph wiring triage -> specialist with handoff metadata. Highlights: - create_strands_model maps an AIAgentConfig to the matching Strands model class (OpenAIModel / AnthropicModel / BedrockModel) by reading config.provider.name with a Bedrock model-id fallback. - The agent's tool list comes from config.model.parameters['tools'], resolved against a local TOOL_REGISTRY at runtime. Detach a tool in the LaunchDarkly UI and the next invocation has no tools. - Per-config tracking via config.create_tracker().track_metrics_of_async + an LDAIMetrics extractor fires duration / success / tokens atomically for async Strands invocations; tool-call counts come from the @tool body. - execute_graph walks node.get_edges() at runtime, builds a Strands Agent per node generically from node.get_config(), and routes between agents based on edge.handoff.route values that the LLM selects from the valid set. Graph-level handoff success/failure + final path are tracked via graph.create_tracker(). - The routing protocol (JSON envelope, when to hand off) lives in each AI Config's instructions field in LaunchDarkly; the builder only injects the runtime list of available routes derived from edges. - Section 9 demos both branches: a status-only query terminates at the triage agent; an analysis query hands off to the specialist. Adding a node + edge in the LaunchDarkly UI changes which agents fire on the next run with no code change — GRAPH_KEY is the only key the dispatcher hardcodes. --- .../LaunchDarkly-AI-Configs-strands.ipynb | 1115 +++++++++++++++++ .../runtime-control/launchdarkly/README.md | 106 ++ .../images/launchdarkly-ai-insights.png | Bin 0 -> 292046 bytes .../launchdarkly/requirements.txt | 9 + 4 files changed, 1230 insertions(+) create mode 100644 python/03-integrate/runtime-control/launchdarkly/LaunchDarkly-AI-Configs-strands.ipynb create mode 100644 python/03-integrate/runtime-control/launchdarkly/README.md create mode 100644 python/03-integrate/runtime-control/launchdarkly/images/launchdarkly-ai-insights.png create mode 100644 python/03-integrate/runtime-control/launchdarkly/requirements.txt diff --git a/python/03-integrate/runtime-control/launchdarkly/LaunchDarkly-AI-Configs-strands.ipynb b/python/03-integrate/runtime-control/launchdarkly/LaunchDarkly-AI-Configs-strands.ipynb new file mode 100644 index 00000000..ddc0f994 --- /dev/null +++ b/python/03-integrate/runtime-control/launchdarkly/LaunchDarkly-AI-Configs-strands.ipynb @@ -0,0 +1,1115 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Strands Agents with LaunchDarkly AI Configs\n", + "\n", + "[LaunchDarkly AI Configs](https://launchdarkly.com/docs/home/ai-configs) externalize the model, prompt, parameters, and tools your agent uses, so you can change them in the LaunchDarkly UI without redeploying.\n", + "\n", + "The [Strands Agents SDK](https://strandsagents.com) builds agents with pluggable model classes (`OpenAIModel`, `AnthropicModel`, `BedrockModel`). LaunchDarkly picks *which* variation to serve at runtime; Strands just reads it back and instantiates the matching model class. The result: swap `gpt-5` for `claude-sonnet-4-6` (or Bedrock-hosted Claude) without changing a line of agent code.\n", + "\n", + "This sample creates an agent-mode AI Config with three variations (OpenAI, Anthropic, Bedrock), attaches a governed `get_order_status` tool, and runs three turns through a Strands `Agent` with `SlidingWindowConversationManager` for multi-turn memory. The final section builds an Agent Graph that wires a deep-reasoning specialist node onto the root agent.\n", + "\n", + "## What you'll learn\n", + "- Map a LaunchDarkly AI Config variation to a Strands model class (`create_strands_model`)\n", + "- Drive an agent's tool list from LaunchDarkly rather than hardcoded Python lists\n", + "- Track duration, tokens, success/error, and tool-call counts per turn with the LaunchDarkly AI SDK\n", + "- Compose multiple agents into an Agent Graph and read the topology back via the SDK\n", + "\n", + "## Prerequisites\n", + "- Python 3.10+\n", + "- A LaunchDarkly account with an API token (Writer role). The notebook creates the project, AI Config, variations, and tool for you, and fetches the SDK key from the API at runtime.\n", + "- `OPENAI_API_KEY` and `ANTHROPIC_API_KEY` (Strands reads them from the environment)\n", + "- Optional: AWS credentials with Bedrock model access for the `bedrock-claude-agent` variation\n", + "- A `.env` file in this directory with the keys above" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "execution": { + "iopub.execute_input": "2026-05-13T23:06:39.634009Z", + "iopub.status.busy": "2026-05-13T23:06:39.633830Z", + "iopub.status.idle": "2026-05-13T23:06:40.941001Z", + "shell.execute_reply": "2026-05-13T23:06:40.940278Z" + } + }, + "outputs": [], + "source": [ + "import sys\n", + "!{sys.executable} -m pip install -q --upgrade launchdarkly-server-sdk launchdarkly-server-sdk-ai strands-agents strands-agents-tools boto3 python-dotenv requests" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "execution": { + "iopub.execute_input": "2026-05-13T23:06:40.942983Z", + "iopub.status.busy": "2026-05-13T23:06:40.942862Z", + "iopub.status.idle": "2026-05-13T23:06:41.799094Z", + "shell.execute_reply": "2026-05-13T23:06:41.798275Z" + } + }, + "outputs": [], + "source": [ + "import os\n", + "import json\n", + "import time\n", + "import requests\n", + "from dotenv import load_dotenv\n", + "\n", + "# Load .env from the directory containing this notebook.\n", + "load_dotenv()\n", + "\n", + "LD_API_TOKEN = os.environ[\"LAUNCHDARKLY_API_TOKEN\"]\n", + "BASE_URL = \"https://app.launchdarkly.com/api/v2\"\n", + "# Project + environment are overridable so this sample can run against any\n", + "# LaunchDarkly account. Defaults create a fresh project named below.\n", + "PROJECT_KEY = os.environ.get(\"LAUNCHDARKLY_PROJECT_KEY\", \"strands-launchdarkly-sample\")\n", + "PROJECT_NAME = os.environ.get(\"LAUNCHDARKLY_PROJECT_NAME\", \"Strands + LaunchDarkly Sample\")\n", + "ENVIRONMENT = os.environ.get(\"LAUNCHDARKLY_ENVIRONMENT\", \"production\")\n", + "CONFIG_KEY = \"strands-agent\"\n", + "TOOL_KEY = \"get_order_status\"\n", + "\n", + "# `LD-API-Version: beta` is required by the agent-graphs endpoints; harmless\n", + "# on the older endpoints used elsewhere in this notebook.\n", + "HEADERS = {\n", + " \"Authorization\": LD_API_TOKEN,\n", + " \"Content-Type\": \"application/json\",\n", + " \"LD-API-Version\": \"beta\",\n", + "}\n", + "PATCH_HEADERS = {\n", + " \"Authorization\": LD_API_TOKEN,\n", + " \"Content-Type\": \"application/json; domain-model=launchdarkly.semanticpatch\",\n", + " \"LD-API-Version\": \"beta\",\n", + "}\n", + "\n", + "# Ensure the LaunchDarkly project exists. Idempotent: 201 on first run, 409 on\n", + "# re-runs against an existing project.\n", + "r = requests.post(\n", + " f\"{BASE_URL}/projects\",\n", + " headers=HEADERS,\n", + " json={\"key\": PROJECT_KEY, \"name\": PROJECT_NAME},\n", + ")\n", + "if r.status_code == 201:\n", + " print(f\"[OK] Project created: {PROJECT_KEY}\")\n", + "elif r.status_code == 409:\n", + " print(f\"[INFO] Project already exists: {PROJECT_KEY}\")\n", + "else:\n", + " print(f\"[ERROR] Project {r.status_code}: {r.text[:200]}\")\n", + "\n", + "# Fetch the SDK key for this environment from the API rather than reading it\n", + "# from .env. If the project was deleted and recreated, an old SDK key in .env\n", + "# won't authenticate; this always pulls the live one.\n", + "r = requests.get(\n", + " f\"{BASE_URL}/projects/{PROJECT_KEY}/environments\",\n", + " headers={\"Authorization\": LD_API_TOKEN},\n", + ")\n", + "SDK_KEY = next(\n", + " (env[\"apiKey\"] for env in r.json().get(\"items\", []) if env[\"key\"] == ENVIRONMENT),\n", + " None,\n", + ")\n", + "if SDK_KEY:\n", + " print(f\"[OK] Retrieved SDK key for environment: {ENVIRONMENT}\")\n", + "else:\n", + " raise RuntimeError(f\"No SDK key found for environment: {ENVIRONMENT}\")\n", + "\n", + "print(f\"[OK] Targeting project: {PROJECT_KEY}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Create AI Config (agent mode)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "execution": { + "iopub.execute_input": "2026-05-13T23:06:41.801571Z", + "iopub.status.busy": "2026-05-13T23:06:41.801369Z", + "iopub.status.idle": "2026-05-13T23:06:43.394127Z", + "shell.execute_reply": "2026-05-13T23:06:43.393236Z" + } + }, + "outputs": [], + "source": [ + "# Delete the existing config so re-runs start clean. NOTE: if section 8 has run\n", + "# before, an agent graph references this config as its root and LD will refuse\n", + "# the delete with 409 (\"AI Config cannot be deleted because it is used by the\n", + "# following agent graphs\"). That's fine \u2014 the variation/tool/targeting cells\n", + "# below all upsert correctly against an existing config. The same goes for the\n", + "# create call: when the config still exists, LD returns 400 with the misleading\n", + "# message \"could not find the 'enabled' variation\" instead of 409 \"already\n", + "# exists\" \u2014 we treat both as the existing-config case.\n", + "requests.delete(f\"{BASE_URL}/projects/{PROJECT_KEY}/ai-configs/{CONFIG_KEY}\", headers=HEADERS)\n", + "time.sleep(0.5)\n", + "\n", + "r = requests.post(\n", + " f\"{BASE_URL}/projects/{PROJECT_KEY}/ai-configs\",\n", + " headers=HEADERS,\n", + " json={\"key\": CONFIG_KEY, \"name\": \"Strands Agent\", \"mode\": \"agent\"},\n", + ")\n", + "if r.status_code == 201:\n", + " print(f\"[OK] AI Config created: {CONFIG_KEY}\")\n", + "elif r.status_code == 409 or (r.status_code == 400 and \"enabled\" in r.text):\n", + " print(f\"[INFO] AI Config already exists: {CONFIG_KEY} (keeping existing)\")\n", + "else:\n", + " print(f\"[ERROR] {r.status_code}: {r.text[:200]}\")\n", + "print(f\"[INFO] https://app.launchdarkly.com/projects/{PROJECT_KEY}/ai-configs/{CONFIG_KEY}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. Create Variations\n", + "\n", + "Three variations, each pinned to a different provider. `create_strands_model` later dispatches on `agent_config.provider.name` (with a model-id fallback for Bedrock) to pick the right Strands model class.\n", + "\n", + "- `gpt-5-agent` \u2014 OpenAI gpt-5, `max_completion_tokens=1024` (gpt-5 does not accept `max_tokens` or non-default temperature)\n", + "- `claude-sonnet-agent` \u2014 Anthropic Claude Sonnet 4.6, standard parameters\n", + "- `bedrock-claude-agent` \u2014 Anthropic Claude Sonnet 4.6 *via AWS Bedrock*. Requires `AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY` / `AWS_REGION` (or AWS SSO) in the environment with Bedrock model access enabled.\n", + "\n", + "We set `gpt-5-agent` as the default via targeting so the notebook runs deterministically on the first turn." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "execution": { + "iopub.execute_input": "2026-05-13T23:06:43.396495Z", + "iopub.status.busy": "2026-05-13T23:06:43.396299Z", + "iopub.status.idle": "2026-05-13T23:06:45.793558Z", + "shell.execute_reply": "2026-05-13T23:06:45.792659Z" + } + }, + "outputs": [], + "source": [ + "def create_variation(body, retries=5):\n", + " \"\"\"LD occasionally returns a transient 400 right after a sibling variation is created; retry.\"\"\"\n", + " for attempt in range(retries):\n", + " r = requests.post(\n", + " f\"{BASE_URL}/projects/{PROJECT_KEY}/ai-configs/{CONFIG_KEY}/variations\",\n", + " headers=HEADERS, json=body,\n", + " )\n", + " if r.status_code in (201, 409):\n", + " return r\n", + " time.sleep(0.6)\n", + " return r\n", + "\n", + "r = create_variation({\n", + " \"key\": \"gpt-5-agent\",\n", + " \"name\": \"OpenAI GPT-5 Agent\",\n", + " \"modelConfigKey\": \"OpenAI.gpt-5\",\n", + " \"model\": {\"modelName\": \"gpt-5\", \"parameters\": {\"max_completion_tokens\": 4096}},\n", + " \"messages\": [],\n", + " \"instructions\": (\n", + " \"You are an order triage assistant. Use the get_order_status tool to look \"\n", + " \"up the order, then give a one-line status summary.\\n\\n\"\n", + " \"Two response modes:\\n\"\n", + " \"1) If the user only asked about status, answer directly and STOP. Do not \"\n", + " \"emit any JSON.\\n\"\n", + " \"2) If the user is asking for follow-up analysis (investigation, escalation, \"\n", + " \"customer communication, root-cause reasoning), give the one-line status, \"\n", + " \"then hand off by ending your response with this JSON envelope on its own \"\n", + " \"line: `{\\\"route\\\": \\\"\\\"}`. The available route names will be \"\n", + " \"listed in your context. Keep your own response brief \u2014 the specialist \"\n", + " \"produces the analysis.\"\n", + " ),\n", + "})\n", + "print(f\"[{'OK' if r.status_code == 201 else 'INFO'}] Variation: gpt-5-agent\")\n", + "\n", + "r = create_variation({\n", + " \"key\": \"claude-sonnet-agent\",\n", + " \"name\": \"Anthropic Claude Sonnet Agent\",\n", + " \"modelConfigKey\": \"Anthropic.claude-sonnet-4-6\",\n", + " \"model\": {\"modelName\": \"claude-sonnet-4-6\", \"parameters\": {\"max_tokens\": 4096, \"temperature\": 0.7}},\n", + " \"messages\": [],\n", + " \"instructions\": (\n", + " \"You are an order triage assistant. Use the get_order_status tool to look \"\n", + " \"up the order, then give a one-line status summary.\\n\\n\"\n", + " \"Two response modes:\\n\"\n", + " \"1) If the user only asked about status, answer directly and STOP. Do not \"\n", + " \"emit any JSON.\\n\"\n", + " \"2) If the user is asking for follow-up analysis (investigation, escalation, \"\n", + " \"customer communication, root-cause reasoning), give the one-line status, \"\n", + " \"then hand off by ending your response with this JSON envelope on its own \"\n", + " \"line: `{\\\"route\\\": \\\"\\\"}`. The available route names will be \"\n", + " \"listed in your context. Keep your own response brief \u2014 the specialist \"\n", + " \"produces the analysis.\"\n", + " ),\n", + "})\n", + "print(f\"[{'OK' if r.status_code == 201 else 'INFO'}] Variation: claude-sonnet-agent\")\n", + "\n", + "# Bedrock variation: optional. We always create it so the LD UI shows the\n", + "# three-provider story, but the variation will only serve successfully if the\n", + "# notebook environment has AWS credentials with Bedrock model access.\n", + "r = create_variation({\n", + " \"key\": \"bedrock-claude-agent\",\n", + " \"name\": \"Bedrock Claude Sonnet Agent\",\n", + " \"model\": {\"modelName\": \"us.anthropic.claude-sonnet-4-6\", \"parameters\": {\"max_tokens\": 4096, \"temperature\": 0.7}},\n", + " \"messages\": [],\n", + " \"instructions\": (\n", + " \"You are an order triage assistant. Use the get_order_status tool to look \"\n", + " \"up the order, then give a one-line status summary.\\n\\n\"\n", + " \"Two response modes:\\n\"\n", + " \"1) If the user only asked about status, answer directly and STOP. Do not \"\n", + " \"emit any JSON.\\n\"\n", + " \"2) If the user is asking for follow-up analysis (investigation, escalation, \"\n", + " \"customer communication, root-cause reasoning), give the one-line status, \"\n", + " \"then hand off by ending your response with this JSON envelope on its own \"\n", + " \"line: `{\\\"route\\\": \\\"\\\"}`. The available route names will be \"\n", + " \"listed in your context. Keep your own response brief \u2014 the specialist \"\n", + " \"produces the analysis.\"\n", + " ),\n", + "})\n", + "print(f\"[{'OK' if r.status_code == 201 else 'INFO'}] Variation: bedrock-claude-agent\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. Attach the governed tool\n", + "\n", + "`get_order_status` was created centrally by `tools.ipynb`. We attach it to the `gpt-5-agent` variation (the default) so the agent has access to it when served. Attachment is via `PATCH /ai-configs/{key}/variations/{variation-id}`.\n", + "\n", + "The Strands Python SDK wires tools through the `Agent(tools=[...])` constructor from application code \u2014 LD's attachment is for governance (schema + version tracking), not dispatch.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "execution": { + "iopub.execute_input": "2026-05-13T23:06:45.795847Z", + "iopub.status.busy": "2026-05-13T23:06:45.795658Z", + "iopub.status.idle": "2026-05-13T23:06:48.281855Z", + "shell.execute_reply": "2026-05-13T23:06:48.280725Z" + } + }, + "outputs": [], + "source": [ + "# Ensure the tool exists (tools.ipynb may or may not have run in this project)\n", + "tool_body = {\n", + " \"key\": TOOL_KEY,\n", + " \"name\": \"Get Order Status\",\n", + " \"description\": \"Look up the status of a customer order by order ID\",\n", + " \"schema\": {\n", + " \"type\": \"object\",\n", + " \"properties\": {\n", + " \"order_id\": {\"type\": \"string\", \"description\": \"The order ID to look up\"}\n", + " },\n", + " \"required\": [\"order_id\"],\n", + " },\n", + "}\n", + "r = requests.post(f\"{BASE_URL}/projects/{PROJECT_KEY}/ai-tools\", headers=HEADERS, json=tool_body)\n", + "if r.status_code == 201:\n", + " print(f\"[OK] Tool created: {TOOL_KEY}\")\n", + "elif r.status_code == 409:\n", + " print(f\"[INFO] Tool already exists: {TOOL_KEY}\")\n", + "else:\n", + " print(f\"[ERROR] {r.status_code}: {r.text[:200]}\")\n", + "\n", + "# PATCH /variations/{variation-key} \u2014 attach the governed tool to each variation.\n", + "# (Takes the variation KEY, not its _id.)\n", + "for variation_key in (\"gpt-5-agent\", \"claude-sonnet-agent\", \"bedrock-claude-agent\"):\n", + " r = requests.patch(\n", + " f\"{BASE_URL}/projects/{PROJECT_KEY}/ai-configs/{CONFIG_KEY}/variations/{variation_key}\",\n", + " headers=HEADERS,\n", + " json={\"tools\": [{\"key\": TOOL_KEY, \"version\": 1}]},\n", + " )\n", + " ok = r.status_code in (200, 204)\n", + " print(f\"[{'OK' if ok else 'ERROR'}] Attached '{TOOL_KEY}' to {variation_key} ({r.status_code})\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Set default variation & enable targeting\n", + "\n", + "Point the production fallthrough at `gpt-5-agent` so the config serves a real (enabled) variation by default. Without this the config is reachable but disabled.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "execution": { + "iopub.execute_input": "2026-05-13T23:06:48.284110Z", + "iopub.status.busy": "2026-05-13T23:06:48.283913Z", + "iopub.status.idle": "2026-05-13T23:06:49.669427Z", + "shell.execute_reply": "2026-05-13T23:06:49.668877Z" + } + }, + "outputs": [], + "source": [ + "# Read the targeting variation IDs (different from the AI Config variation _id)\n", + "r = requests.get(\n", + " f\"{BASE_URL}/projects/{PROJECT_KEY}/ai-configs/{CONFIG_KEY}/targeting\",\n", + " headers=HEADERS,\n", + ")\n", + "tvid_map = {}\n", + "for v in r.json().get(\"variations\", []):\n", + " if v.get(\"name\") == \"disabled\":\n", + " continue\n", + " key = v.get(\"value\", {}).get(\"_ldMeta\", {}).get(\"variationKey\")\n", + " if key:\n", + " tvid_map[key] = v[\"_id\"]\n", + "\n", + "fallthrough_id = tvid_map.get(\"gpt-5-agent\")\n", + "if fallthrough_id:\n", + " r = requests.patch(\n", + " f\"{BASE_URL}/projects/{PROJECT_KEY}/ai-configs/{CONFIG_KEY}/targeting\",\n", + " headers=PATCH_HEADERS,\n", + " json={\n", + " \"environmentKey\": ENVIRONMENT,\n", + " \"instructions\": [{\n", + " \"kind\": \"updateFallthroughVariationOrRollout\",\n", + " \"variationId\": fallthrough_id,\n", + " }],\n", + " },\n", + " )\n", + " print(f\"[{'OK' if r.status_code == 200 else 'ERROR'}] Default variation: gpt-5-agent\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 5. Define the tool handler and registry\n", + "\n", + "The `@tool` decorator exposes a Python function as a callable tool for the Strands `Agent`. The handler stays in application code \u2014 LD governs the schema, the app owns execution.\n", + "\n", + "`TOOL_REGISTRY` maps tool *names* (matching the LD tool keys) to the local handlers. We resolve the actual list of tools to pass to the agent at runtime, from `agent_config.model.parameters['tools']` \u2014 so detaching `get_order_status` from the variation in the LaunchDarkly UI takes effect on the next agent invocation, with no code change.\n", + "\n", + "The handler also fires `tracker.track_tool_call(\"get_order_status\")` on every invocation so LD's tool-call metrics line up with what the agent actually did. (The tracker is created later in the notebook; we look it up via the module global at call time.)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "execution": { + "iopub.execute_input": "2026-05-13T23:06:49.671893Z", + "iopub.status.busy": "2026-05-13T23:06:49.671725Z", + "iopub.status.idle": "2026-05-13T23:06:50.481420Z", + "shell.execute_reply": "2026-05-13T23:06:50.480888Z" + } + }, + "outputs": [], + "source": [ + "from strands import tool\n", + "\n", + "\n", + "# Module-level reference; reassigned by `run_turn` (cell 17) to the per-turn\n", + "# tracker. The @tool body looks it up at call time, so as long as `_tracker` is\n", + "# bound before the agent invokes the tool, `track_tool_call` fires on the right\n", + "# tracker. SDK 0.18 enforces at-most-once tracking per tracker, which is why\n", + "# each turn needs a fresh `create_tracker()` rather than a single shared one.\n", + "_tracker = None\n", + "\n", + "\n", + "@tool\n", + "def get_order_status(order_id: str) -> str:\n", + " \"\"\"Look up the status of a customer order by order ID.\"\"\"\n", + " if _tracker is not None:\n", + " _tracker.track_tool_call(\"get_order_status\")\n", + " orders = {\n", + " \"ORD-123\": \"Shipped \u2014 arrives Thursday\",\n", + " \"ORD-456\": \"Processing \u2014 estimated ship date: tomorrow\",\n", + " \"ORD-789\": \"Delivered on Monday\",\n", + " }\n", + " return orders.get(order_id, f\"No order found with ID {order_id}\")\n", + "\n", + "\n", + "# Registry maps the LD tool *key* to the local Strands tool object.\n", + "# create_strands_model + the agent build cell below use this to resolve the\n", + "# tool list from `agent_config.model.parameters['tools']` at runtime.\n", + "TOOL_REGISTRY = {\"get_order_status\": get_order_status}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 6. Initialize LaunchDarkly and build the Strands agent\n", + "\n", + "`create_strands_model` is the only provider-aware code: given an `LDAIAgentConfig`, it returns the matching Strands model class. Memory, invocation, and tracking are identical across providers. Tools are pulled from `agent_config.model.parameters['tools']` and resolved against `TOOL_REGISTRY`, so the LD UI is the source of truth for what the agent can call." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "execution": { + "iopub.execute_input": "2026-05-13T23:06:50.483318Z", + "iopub.status.busy": "2026-05-13T23:06:50.483207Z", + "iopub.status.idle": "2026-05-13T23:06:51.618419Z", + "shell.execute_reply": "2026-05-13T23:06:51.617875Z" + } + }, + "outputs": [], + "source": [ + "import asyncio\n", + "import ldclient\n", + "from ldclient import Context\n", + "from ldclient.config import Config\n", + "from ldai.client import LDAIClient\n", + "from ldai.tracker import TokenUsage\n", + "from strands import Agent\n", + "from strands.models.anthropic import AnthropicModel\n", + "from strands.models.openai import OpenAIModel\n", + "from strands.models.bedrock import BedrockModel\n", + "from strands.agent.conversation_manager.sliding_window_conversation_manager import (\n", + " SlidingWindowConversationManager,\n", + ")\n", + "\n", + "ldclient.set_config(Config(SDK_KEY))\n", + "ai_client = LDAIClient(ldclient.get())\n", + "if not ldclient.get().is_initialized():\n", + " raise RuntimeError(\"LaunchDarkly SDK failed to initialize\")\n", + "\n", + "context = Context.builder(\"user-123\").kind(\"user\").name(\"Sandy\").build()\n", + "agent_config = ai_client.agent_config(CONFIG_KEY, context)\n", + "if not agent_config.enabled:\n", + " raise RuntimeError(\"Agent Config is disabled\")\n", + "\n", + "print(f\"Provider: {agent_config.provider.name if agent_config.provider else 'n/a'}\")\n", + "print(f\"Model: {agent_config.model.name}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "execution": { + "iopub.execute_input": "2026-05-13T23:06:51.620387Z", + "iopub.status.busy": "2026-05-13T23:06:51.620233Z", + "iopub.status.idle": "2026-05-13T23:06:51.626140Z", + "shell.execute_reply": "2026-05-13T23:06:51.625550Z" + } + }, + "outputs": [], + "source": [ + "def create_strands_model(cfg):\n", + " \"\"\"Map an LDAIAgentConfig to the matching Strands model class.\n", + "\n", + " Dispatches on `provider.name` first; for Bedrock variations (which omit\n", + " `modelConfigKey` and so have no provider field) falls back to the standard\n", + " Bedrock model-id prefixes (`us.`, `eu.`, `apac.`, `anthropic.`, `amazon.`,\n", + " `meta.`).\n", + " \"\"\"\n", + " provider = (cfg.provider.name if cfg.provider else \"\").lower()\n", + " model_id = cfg.model.name\n", + " params = dict(cfg.model.to_dict().get(\"parameters\") or {})\n", + " # LD surfaces attached tools via `parameters.tools`; Strands gets tools\n", + " # through the Agent constructor, so drop it from model params.\n", + " params.pop(\"tools\", None)\n", + "\n", + " is_bedrock = provider == \"bedrock\" or model_id.startswith(\n", + " (\"us.\", \"eu.\", \"apac.\", \"anthropic.\", \"amazon.\", \"meta.\")\n", + " )\n", + "\n", + " if is_bedrock:\n", + " # BedrockModel takes flat kwargs (no `params` dict): pass model_id +\n", + " # known inference fields as kwargs, drop anything else into\n", + " # additional_request_fields so it still reaches the Converse API.\n", + " region = (\n", + " params.pop(\"region_name\", None)\n", + " or os.environ.get(\"AWS_REGION\")\n", + " or \"us-west-2\"\n", + " )\n", + " known = {\n", + " k: params.pop(k)\n", + " for k in (\"max_tokens\", \"temperature\", \"top_p\", \"stop_sequences\")\n", + " if k in params\n", + " }\n", + " if \"max_tokens\" not in known:\n", + " known[\"max_tokens\"] = 1024\n", + " return BedrockModel(\n", + " model_id=model_id,\n", + " region_name=region,\n", + " additional_request_fields=params or None,\n", + " **known,\n", + " )\n", + " if provider == \"anthropic\":\n", + " # AnthropicModel requires max_tokens as a kwarg, not in params.\n", + " max_tokens = int(params.pop(\"max_tokens\", None) or params.pop(\"maxTokens\", None) or 1024)\n", + " return AnthropicModel(model_id=model_id, max_tokens=max_tokens, params=params or None)\n", + " if provider == \"openai\":\n", + " # gpt-5 wants max_completion_tokens; gpt-4o wants max_tokens. Keep that\n", + " # choice in the LD variation's parameters and pass through as-is.\n", + " return OpenAIModel(model_id=model_id, params=params)\n", + " raise ValueError(f\"Unsupported provider for Strands: {provider!r}\")\n", + "\n", + "\n", + "model = create_strands_model(agent_config)\n", + "\n", + "# Resolve the agent's tool list from the LD variation, not from a hardcoded\n", + "# Python list. `agent_config.model.parameters['tools']` is the OpenAI-style\n", + "# function shape LD returns; we only need the names to look up the local\n", + "# handlers from TOOL_REGISTRY.\n", + "ld_tool_params = (agent_config.model.to_dict().get(\"parameters\") or {}).get(\"tools\") or []\n", + "ld_tool_names = [t[\"name\"] for t in ld_tool_params]\n", + "\n", + "resolved_tools = []\n", + "for name in ld_tool_names:\n", + " handler = TOOL_REGISTRY.get(name)\n", + " if handler is None:\n", + " print(f\"[WARN] LD attached tool '{name}' has no local handler \u2014 skipping\")\n", + " continue\n", + " resolved_tools.append(handler)\n", + "print(f\"[INFO] Tools from LD: {ld_tool_names}\")\n", + "\n", + "# SlidingWindowConversationManager gives the agent short-term memory \u2014 reuse\n", + "# the same Agent across invoke_async calls and it carries context across turns.\n", + "agent = Agent(\n", + " name=\"order-assistant\",\n", + " model=model,\n", + " system_prompt=agent_config.instructions,\n", + " tools=resolved_tools,\n", + " conversation_manager=SlidingWindowConversationManager(window_size=40),\n", + ")\n", + "print(\"[OK] Strands agent ready\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 7. Run three turns\n", + "\n", + "Strands' `ConversationManager` carries context between `invoke_async` calls \u2014 no explicit thread id required. LaunchDarkly's tracker records duration, token usage, and success/error per turn.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "execution": { + "iopub.execute_input": "2026-05-13T23:06:51.627599Z", + "iopub.status.busy": "2026-05-13T23:06:51.627495Z", + "iopub.status.idle": "2026-05-13T23:07:03.714469Z", + "shell.execute_reply": "2026-05-13T23:07:03.713475Z" + } + }, + "outputs": [], + "source": [ + "from ldai.providers.types import LDAIMetrics\n", + "\n", + "\n", + "def strands_metrics_extractor(result):\n", + " \"\"\"Pull token usage off a Strands AgentResult into an LDAIMetrics.\n", + "\n", + " Returned to track_metrics_of_async, which fires duration/success/tokens\n", + " atomically. Tool calls stay tracked from inside the @tool body so we don't\n", + " double-count.\n", + " \"\"\"\n", + " usage = getattr(result.metrics, \"accumulated_usage\", {}) or {}\n", + " input_tokens = usage.get(\"inputTokens\", 0)\n", + " output_tokens = usage.get(\"outputTokens\", 0)\n", + " total = usage.get(\"totalTokens\", 0) or (input_tokens + output_tokens)\n", + " return LDAIMetrics(\n", + " success=True,\n", + " usage=TokenUsage(input=input_tokens, output=output_tokens, total=total) if total > 0 else None,\n", + " duration_ms=None, # let the SDK use wall-clock elapsed\n", + " )\n", + "\n", + "\n", + "async def run_turn(user_input):\n", + " # Fresh tracker per turn (SDK 0.18+ enforces at-most-once per execution).\n", + " # Publish to module global so the @tool body fires track_tool_call on the\n", + " # same tracker the metrics extractor finalizes.\n", + " global _tracker\n", + " _tracker = agent_config.create_tracker()\n", + " try:\n", + " result = await _tracker.track_metrics_of_async(\n", + " strands_metrics_extractor,\n", + " lambda: agent.invoke_async(user_input),\n", + " )\n", + " print(f\"> {user_input}\")\n", + " print(f\" {result.message['content'][0]['text']}\\n\")\n", + " except Exception as e:\n", + " # track_metrics_of_async records track_duration + track_error on exceptions\n", + " # before re-raising; we just surface the failure here.\n", + " print(f\"[ERROR] {e}\")\n", + "\n", + "\n", + "async def main():\n", + " await run_turn(\"What's the status of order ORD-123?\")\n", + " await run_turn(\"What about ORD-456?\")\n", + " await run_turn(\"Summarize both orders for me.\")\n", + "\n", + "await main()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 8. Wire the agent into a graph\n", + "\n", + "LaunchDarkly Agent Graphs let you compose multiple AI Configs into a multi-agent system: one root config, one or more target configs, and named edges (with optional `handoff` metadata) describing the routing between them. The Python SDK exposes the result via `ai_client.agent_graph(GRAPH_KEY, context)` \u2014 your application code reads the topology and dispatches between agents accordingly.\n", + "\n", + "This section creates a second AI Config \u2014 `strands-specialist-agent` \u2014 and wires `strands-agent` \u2192 `strands-specialist-agent` as a one-edge graph. The actual orchestration (when to delegate to the specialist) stays in your application code; LaunchDarkly's job is to declare the graph and serve the right variation of each node per user.\n", + "\n", + "### Endpoints used\n", + "- `POST /projects/{project}/ai-configs` \u2014 create the specialist node\n", + "- `POST /ai-configs/{key}/variations` \u2014 give it a variation\n", + "- `PATCH /ai-configs/{key}/targeting` \u2014 enable + set fallthrough\n", + "- `POST /projects/{project}/agent-graphs` \u2014 create the graph with a `rootConfigKey`\n", + "- `PATCH /agent-graphs/{key}` \u2014 add edges (must include `rootConfigKey` *and* `edges`; edges sent alone are silently ignored)\n", + "- `PATCH /agent-graphs/{key}` with `instructions: [{kind: \"turnTargetingOn\"}]` \u2014 enable the graph in production" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "execution": { + "iopub.execute_input": "2026-05-13T23:07:03.717445Z", + "iopub.status.busy": "2026-05-13T23:07:03.717231Z", + "iopub.status.idle": "2026-05-13T23:07:09.547774Z", + "shell.execute_reply": "2026-05-13T23:07:09.546836Z" + } + }, + "outputs": [], + "source": [ + "SPECIALIST_KEY = \"strands-specialist-agent\"\n", + "GRAPH_KEY = \"strands-agent-graph\"\n", + "\n", + "# 0. Delete the graph FIRST on re-runs. While a graph references a config as\n", + "# root or as an edge target, LD blocks `DELETE /ai-configs/{key}` with 409.\n", + "# Removing the graph first lets the specialist delete-then-create cycle work.\n", + "requests.delete(f\"{BASE_URL}/projects/{PROJECT_KEY}/agent-graphs/{GRAPH_KEY}\", headers=HEADERS)\n", + "time.sleep(0.5)\n", + "\n", + "# 1. Create the specialist AI Config (the second node in the graph).\n", + "requests.delete(f\"{BASE_URL}/projects/{PROJECT_KEY}/ai-configs/{SPECIALIST_KEY}\", headers=HEADERS)\n", + "time.sleep(0.5)\n", + "r = requests.post(\n", + " f\"{BASE_URL}/projects/{PROJECT_KEY}/ai-configs\",\n", + " headers=HEADERS,\n", + " json={\"key\": SPECIALIST_KEY, \"name\": \"Strands Specialist Agent\", \"mode\": \"agent\"},\n", + ")\n", + "if r.status_code == 201:\n", + " print(f\"[OK] Specialist Config: {SPECIALIST_KEY}\")\n", + "elif r.status_code == 409 or (r.status_code == 400 and \"enabled\" in r.text):\n", + " print(f\"[INFO] Specialist Config already exists: {SPECIALIST_KEY}\")\n", + "else:\n", + " print(f\"[ERROR] {r.status_code}: {r.text[:200]}\")\n", + "print(f\"[INFO] https://app.launchdarkly.com/projects/{PROJECT_KEY}/ai-configs/{SPECIALIST_KEY}\")\n", + "\n", + "# 2. Add a single variation so the specialist serves something when invoked.\n", + "r = requests.post(\n", + " f\"{BASE_URL}/projects/{PROJECT_KEY}/ai-configs/{SPECIALIST_KEY}/variations\",\n", + " headers=HEADERS,\n", + " json={\n", + " \"key\": \"specialist-default\",\n", + " \"name\": \"Specialist Default\",\n", + " \"modelConfigKey\": \"OpenAI.gpt-5\",\n", + " \"model\": {\"modelName\": \"gpt-5\", \"parameters\": {\"max_completion_tokens\": 4096}},\n", + " \"messages\": [],\n", + " \"instructions\": (\n", + " \"You are a deep-reasoning order operations specialist. The triage agent \"\n", + " \"hands off to you for follow-up analysis: investigation steps, escalation \"\n", + " \"paths, communication templates, root-cause reasoning. The triage agent's \"\n", + " \"lookup result is included in your context \u2014 use it. Be thorough and \"\n", + " \"concrete. No further handoff is needed; produce the full analysis.\"\n", + " ),\n", + " },\n", + ")\n", + "print(f\"[{'OK' if r.status_code == 201 else 'INFO'}] Specialist variation: specialist-default ({r.status_code})\")\n", + "\n", + "# 3. Enable the specialist by pointing fallthrough at the variation we just made.\n", + "time.sleep(0.5)\n", + "r = requests.get(f\"{BASE_URL}/projects/{PROJECT_KEY}/ai-configs/{SPECIALIST_KEY}/targeting\", headers=HEADERS)\n", + "spec_vmap = {\n", + " v.get(\"value\", {}).get(\"_ldMeta\", {}).get(\"variationKey\"): v[\"_id\"]\n", + " for v in r.json().get(\"variations\", [])\n", + " if v.get(\"name\") != \"disabled\"\n", + "}\n", + "spec_id = spec_vmap.get(\"specialist-default\")\n", + "if spec_id:\n", + " r = requests.patch(\n", + " f\"{BASE_URL}/projects/{PROJECT_KEY}/ai-configs/{SPECIALIST_KEY}/targeting\",\n", + " headers=PATCH_HEADERS,\n", + " json={\n", + " \"environmentKey\": ENVIRONMENT,\n", + " \"instructions\": [{\"kind\": \"updateFallthroughVariationOrRollout\", \"variationId\": spec_id}],\n", + " },\n", + " )\n", + " print(f\"[{'OK' if r.status_code == 200 else 'INFO'}] Specialist fallthrough set ({r.status_code})\")\n", + "\n", + "# 4. Create the Agent Graph with strands-agent as the root.\n", + "r = requests.post(\n", + " f\"{BASE_URL}/projects/{PROJECT_KEY}/agent-graphs\",\n", + " headers=HEADERS,\n", + " json={\n", + " \"key\": GRAPH_KEY,\n", + " \"name\": \"Strands Agent Graph\",\n", + " \"description\": \"Root strands-agent with a deep-reasoning specialist.\",\n", + " \"rootConfigKey\": CONFIG_KEY,\n", + " },\n", + ")\n", + "print(f\"[{'OK' if r.status_code == 201 else 'INFO'}] Agent Graph: {GRAPH_KEY} ({r.status_code})\")\n", + "\n", + "# 5. Add the edge. NOTE: the API requires `rootConfigKey` to be re-sent with\n", + "# `edges`; edges sent alone are silently ignored.\n", + "r = requests.patch(\n", + " f\"{BASE_URL}/projects/{PROJECT_KEY}/agent-graphs/{GRAPH_KEY}\",\n", + " headers=HEADERS,\n", + " json={\n", + " \"rootConfigKey\": CONFIG_KEY,\n", + " \"edges\": [{\n", + " \"key\": \"edge-strands-specialist\",\n", + " \"sourceConfig\": CONFIG_KEY,\n", + " \"targetConfig\": SPECIALIST_KEY,\n", + " \"handoff\": {\"route\": \"specialist\", \"reason\": \"needs deep reasoning\"},\n", + " }],\n", + " },\n", + ")\n", + "print(f\"[{'OK' if r.status_code == 200 else 'ERROR'}] Edge added: {CONFIG_KEY} \u2192 {SPECIALIST_KEY}\")\n", + "\n", + "# 6. Turn the graph on in production. Without this the SDK reads it back as disabled.\n", + "r = requests.patch(\n", + " f\"{BASE_URL}/projects/{PROJECT_KEY}/agent-graphs/{GRAPH_KEY}\",\n", + " headers=HEADERS,\n", + " json={\"instructions\": [{\"kind\": \"turnTargetingOn\"}]},\n", + ")\n", + "print(f\"[{'OK' if r.status_code == 200 else 'ERROR'}] Graph enabled in {ENVIRONMENT}\")\n", + "print(f\"[INFO] https://app.launchdarkly.com/projects/{PROJECT_KEY}/ai/graphs?env={ENVIRONMENT}&selected-env={ENVIRONMENT}\")\n", + "\n", + "# 7. Read it back via the SDK and print the topology.\n", + "graph = ai_client.agent_graph(GRAPH_KEY, context)\n", + "print(f\"\\nGraph enabled: {graph.is_enabled()}\")\n", + "root = graph.root()\n", + "if root:\n", + " print(f\"Root: {root.get_key()}\")\n", + " for edge in root.get_edges():\n", + " print(f\" \u2192 {edge.target_config} (handoff: {edge.handoff})\")\n", + "print(\n", + " \"\\n[INFO] Application code reads `graph.root()` / `graph.get_child_nodes(...)` \"\n", + " \"and dispatches between agents itself; LaunchDarkly only declares the topology.\"\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 9. Graph-driven dispatcher\n", + "\n", + "Section 7 invokes the root agent directly; section 8 only *declares* the graph topology. To make the LaunchDarkly graph actually drive Strands behavior \u2014 so adding a node + edge in the LaunchDarkly UI changes which agents run, with no code change \u2014 fetch the graph at runtime and traverse it.\n", + "\n", + "Three pieces, all parameterized on whatever the graph contains:\n", + "\n", + "1. **`build_strands_agent(node_key, config, valid_routes)`** \u2014 generic Strands `Agent` builder. Reads model class, instructions, parameters, and the tool list from the AI Config. If the node has outgoing edges, appends a routing instruction so the LLM emits `{\"route\": \"...\"}` at the end of its response.\n", + "2. **`extract_route(text, valid_routes)`** \u2014 parses that JSON and validates against the edges' `handoff.route` values.\n", + "3. **`execute_graph(graph_key, user_input, context)`** \u2014 walks the graph: at each node, build the agent, invoke it with the previous node's output, parse the route, jump to the matching edge target. Terminates at the first node with no outgoing edges. Tracks per-node metrics with `config.create_tracker()` (duration / tokens / success+error / tool calls) **and** graph-level handoffs + final path with `graph.create_tracker()`.\n", + "\n", + "`GRAPH_KEY` is the only key the notebook hardcodes from here on \u2014 every agent is materialized from whatever the graph contains at runtime." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import re\n", + "\n", + "\n", + "def build_strands_agent(node_key, config, edges):\n", + " \"\"\"Build a Strands Agent generically from any AIAgentConfig.\n", + "\n", + " Reads model, instructions, parameters, and attached tools from the config.\n", + " The routing protocol (JSON envelope, when to hand off) lives in each AI\n", + " Config's `instructions` field in LaunchDarkly \u2014 this builder only surfaces\n", + " the runtime-derived *list* of available routes from the graph's edges, so\n", + " that adding/removing an edge in LD changes what the LLM sees, with no code\n", + " change.\n", + " \"\"\"\n", + " model = create_strands_model(config)\n", + " instructions = config.instructions or \"Process the input and respond helpfully.\"\n", + "\n", + " # Build the runtime route list from edges (LD-stored handoff metadata).\n", + " # `route` is the value the LLM emits; `reason` is the editable description.\n", + " route_lines = []\n", + " for e in edges:\n", + " if not e.handoff:\n", + " continue\n", + " route = e.handoff.get(\"route\")\n", + " if not route:\n", + " continue\n", + " reason = e.handoff.get(\"reason\")\n", + " route_lines.append(f\"- `{route}` \u2014 {reason}\" if reason else f\"- `{route}`\")\n", + "\n", + " if route_lines:\n", + " instructions += \"\\n\\nAvailable routes:\\n\" + \"\\n\".join(route_lines)\n", + "\n", + " # Tool list from LD, resolved against the local TOOL_REGISTRY.\n", + " ld_tool_params = (config.model.to_dict().get(\"parameters\") or {}).get(\"tools\") or []\n", + " tool_names = [t[\"name\"] for t in ld_tool_params]\n", + " resolved_tools = [TOOL_REGISTRY[n] for n in tool_names if n in TOOL_REGISTRY]\n", + " missing = [n for n in tool_names if n not in TOOL_REGISTRY]\n", + " if missing:\n", + " print(f\"[WARN] {node_key}: LD attached tools {missing} have no local handler\")\n", + "\n", + " return Agent(\n", + " name=node_key,\n", + " model=model,\n", + " system_prompt=instructions,\n", + " tools=resolved_tools,\n", + " conversation_manager=SlidingWindowConversationManager(window_size=40),\n", + " # Suppress Strands' default stdout streaming so the dispatcher prints\n", + " # each agent's response exactly once, under its banner.\n", + " callback_handler=None,\n", + " )\n", + "\n", + "\n", + "def extract_route(text, valid_routes):\n", + " \"\"\"Find a {\"route\": \"...\"} object in the LLM response and validate it.\"\"\"\n", + " if not valid_routes:\n", + " return None\n", + " patterns = [\n", + " r'```json\\s*(\\{[^`]+\\})\\s*```',\n", + " r'(\\{\"route\":\\s*\"[^\"]+\"\\s*\\})',\n", + " r'(\\{[^{}]*\"route\"\\s*:\\s*\"[^\"]+\"[^{}]*\\})',\n", + " ]\n", + " valid_lower = [r.lower() for r in valid_routes]\n", + " for pat in patterns:\n", + " m = re.search(pat, text, re.DOTALL)\n", + " if not m:\n", + " continue\n", + " try:\n", + " data = json.loads(m.group(1))\n", + " except json.JSONDecodeError:\n", + " continue\n", + " route = (data.get(\"route\") or \"\").lower().strip()\n", + " if route in valid_lower:\n", + " return valid_routes[valid_lower.index(route)]\n", + " return None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "async def execute_graph(graph_key, user_input, context):\n", + " \"\"\"Walk the LaunchDarkly Agent Graph, invoking each node's Strands agent.\n", + "\n", + " No hardcoded agent keys. Routing decisions come from each agent's response\n", + " (a JSON route), validated against the node's outgoing edges. If a node has\n", + " edges but the agent does not emit a route, the dispatcher terminates at that\n", + " node \u2014 handoffs are optional, governed by the agent's instructions.\n", + " \"\"\"\n", + " global _tracker\n", + " graph = ai_client.agent_graph(graph_key, context)\n", + " if not graph.is_enabled():\n", + " raise RuntimeError(f\"Agent Graph '{graph_key}' is not enabled\")\n", + "\n", + " graph_tracker = graph.create_tracker()\n", + "\n", + " nodes = {}\n", + " graph.reverse_traverse(lambda n, _: nodes.update({n.get_key(): n}), {})\n", + " print(f\"[INFO] Graph '{graph_key}' has {len(nodes)} node(s): {list(nodes.keys())}\")\n", + "\n", + " current = graph.root()\n", + " visited = set()\n", + " path = []\n", + " current_input = user_input\n", + " prev_key = None\n", + "\n", + " try:\n", + " while current is not None:\n", + " key = current.get_key()\n", + " if key in visited:\n", + " raise RuntimeError(f\"Cycle detected at node: {key}\")\n", + " visited.add(key)\n", + " path.append(key)\n", + "\n", + " config = current.get_config()\n", + " edges = current.get_edges()\n", + " valid_routes = [e.handoff[\"route\"] for e in edges if e.handoff and e.handoff.get(\"route\")]\n", + "\n", + " if prev_key is not None:\n", + " graph_tracker.track_handoff_success(prev_key, key)\n", + "\n", + " agent = build_strands_agent(key, config, edges)\n", + " print(f\"\\n\u250c\u2500 INVOKED agent: {key} \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\")\n", + " # Show the input this agent receives. For the root that's the\n", + " # user's original query; for downstream agents it's the prior\n", + " # agent's full response (the conversation hop).\n", + " preview = current_input if len(current_input) <= 600 else current_input[:600] + \"...\"\n", + " print(f\"\u2502 input ({len(current_input)} chars):\")\n", + " for line in preview.splitlines() or [\"\"]:\n", + " print(f\"\u2502 {line}\")\n", + " print(\"\u251c\u2500 response \u2500\")\n", + "\n", + " _tracker = config.create_tracker()\n", + " try:\n", + " result = await _tracker.track_metrics_of_async(\n", + " strands_metrics_extractor,\n", + " lambda: agent.invoke_async(current_input),\n", + " )\n", + " except Exception as e:\n", + " print(f\"\u2514\u2500 [ERROR] {key}: {e}\")\n", + " raise\n", + "\n", + " response_text = result.message[\"content\"][0][\"text\"]\n", + " print(response_text)\n", + " print(f\"\u2514\u2500 done: {key}\")\n", + "\n", + " if not edges:\n", + " break\n", + "\n", + " route = extract_route(response_text, valid_routes)\n", + " if route is None:\n", + " # Agent omitted the JSON envelope \u2014 that's the \"stop here\" signal.\n", + " # No handoff attempted, no failure event.\n", + " print(f\"[INFO] {key} omitted route JSON \u2014 terminating here.\")\n", + " break\n", + "\n", + " next_key = None\n", + " for edge in edges:\n", + " if edge.handoff and edge.handoff.get(\"route\") == route:\n", + " next_key = edge.target_config\n", + " break\n", + " if next_key is None:\n", + " # Emitted an unrecognized route \u2014 record a real handoff failure\n", + " # against the intended target (first edge) and stop.\n", + " target_guess = edges[0].target_config\n", + " graph_tracker.track_handoff_failure(key, target_guess)\n", + " print(f\"[INFO] {key} emitted unrecognized route '{route}'; stopping.\")\n", + " break\n", + "\n", + " print(f\"[INFO] {key} chose route '{route}' \u2192 {next_key}\")\n", + " prev_key = key\n", + " current = nodes.get(next_key)\n", + " current_input = response_text # downstream agent sees prior agent's output\n", + "\n", + " graph_tracker.track_path(path)\n", + " graph_tracker.track_invocation_success()\n", + " print(f\"\\n[OK] Path invoked: {' \u2192 '.join(path)}\")\n", + " except Exception:\n", + " graph_tracker.track_invocation_failure()\n", + " raise\n", + "\n", + "\n", + "# Two queries demonstrating both branches:\n", + "# - Simple status lookup: triage answers, no handoff (only strands-agent fires)\n", + "# - Complex follow-up: triage hands off to specialist (both fire)\n", + "\n", + "print(\"\\n========== Query 1: status only ==========\")\n", + "await execute_graph(GRAPH_KEY, \"What's the status of order ORD-789?\", context)\n", + "\n", + "print(\"\\n========== Query 2: needs analysis ==========\")\n", + "await execute_graph(\n", + " GRAPH_KEY,\n", + " \"Order ORD-456 has been stuck in 'Processing' for 5 days. The customer is asking why. \"\n", + " \"Walk me through how to investigate and what to say to the customer.\",\n", + " context,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "execution": { + "iopub.execute_input": "2026-05-13T23:07:09.550988Z", + "iopub.status.busy": "2026-05-13T23:07:09.550705Z", + "iopub.status.idle": "2026-05-13T23:07:09.647445Z", + "shell.execute_reply": "2026-05-13T23:07:09.646385Z" + } + }, + "outputs": [], + "source": [ + "ldclient.get().flush()\n", + "ldclient.get().close()\n", + "print(\"[OK] Done\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "execution": { + "iopub.execute_input": "2026-05-13T23:07:09.650241Z", + "iopub.status.busy": "2026-05-13T23:07:09.650045Z", + "iopub.status.idle": "2026-05-13T23:07:09.652678Z", + "shell.execute_reply": "2026-05-13T23:07:09.651986Z" + } + }, + "outputs": [], + "source": [ + "# Uncomment to delete resources\n", + "# requests.delete(f\"{BASE_URL}/projects/{PROJECT_KEY}/ai-configs/{CONFIG_KEY}\", headers=HEADERS)\n", + "# requests.delete(f\"{BASE_URL}/projects/{PROJECT_KEY}\", headers=HEADERS)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## What this sample showed\n", + "\n", + "- **One agent config, three providers.** `create_strands_model` picks the Strands model class from `config.provider.name` (with a Bedrock model-id fallback). No per-provider branching in your code.\n", + "- **Tools driven by LaunchDarkly.** Each agent's tool list comes from `config.model.parameters['tools']`, resolved against a local `TOOL_REGISTRY`. Detach `get_order_status` from a variation in the LaunchDarkly UI and the next invocation has no tools \u2014 no code change.\n", + "- **Governed tools.** `get_order_status` is registered centrally via `POST /ai-tools` and attached per-variation via `PATCH /ai-configs/.../variations/{id}`. The Python handler stays local; LaunchDarkly tracks the schema + version.\n", + "- **Multi-turn memory.** Strands' `SlidingWindowConversationManager` plus a reused `Agent` instance \u2014 no thread IDs, no explicit state store. Section 7 demonstrates this on the root agent.\n", + "- **Per-config tracking.** `config.create_tracker().track_duration_of` + `track_success/error` + `track_tokens`, plus `track_tool_call` from inside the `@tool` body, feed the AI Config's Monitoring tab.\n", + "- **Graph-driven multi-agent dispatch.** Section 9's `execute_graph` is the load-bearing piece: it reads the topology from LaunchDarkly at runtime, builds a Strands `Agent` per node generically from `node.get_config()`, and routes between agents based on `edge.handoff.route` values that each LLM selects from the valid set. The graph tracker records handoffs + the final path.\n", + "- **The only key in the runtime path is `GRAPH_KEY`.** Add a node + edge in the LaunchDarkly UI, re-run section 9, and the new agent participates \u2014 no code change.\n", + "\n", + "## Try it\n", + "\n", + "- **Swap providers.** Set the default variation on `strands-agent` to `claude-sonnet-agent` or `bedrock-claude-agent` and re-run section 9 \u2014 same agent code, different provider.\n", + "- **Add an agent.** Create a third AI Config (e.g. `strands-fraud-agent`), add it as a node in the `strands-agent-graph`, and add an edge from `strands-agent` with `handoff: {route: \"fraud\"}`. Re-run section 9 with a fraud-flavored query and watch the new node light up in the Agent Graph view.\n", + "- **Detach a tool.** Detach `get_order_status` from the served variation in the UI and re-run \u2014 the root agent stops calling it.\n", + "\n", + "## Additional resources\n", + "- [LaunchDarkly AI Configs documentation](https://launchdarkly.com/docs/home/ai-configs)\n", + "- [LaunchDarkly Agent Graphs](https://launchdarkly.com/docs/home/ai-configs/agent-graphs)\n", + "- [LaunchDarkly AI SDK for Python](https://github.com/launchdarkly/python-server-sdk-ai)\n", + "- [Strands Agents SDK](https://github.com/strands-agents/sdk-python)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.14.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/python/03-integrate/runtime-control/launchdarkly/README.md b/python/03-integrate/runtime-control/launchdarkly/README.md new file mode 100644 index 00000000..31f3e9a3 --- /dev/null +++ b/python/03-integrate/runtime-control/launchdarkly/README.md @@ -0,0 +1,106 @@ +# Strands Agents with LaunchDarkly AI Configs + +This sample shows how to drive a [Strands](https://strandsagents.com) agent entirely from [LaunchDarkly AI Configs](https://launchdarkly.com/docs/home/ai-configs): the model, the instructions, the parameters, the tool list, **and** the multi-agent graph topology all live in LaunchDarkly. The notebook builds a multi-provider order-status triage agent (OpenAI, Anthropic, and Bedrock-hosted Claude), attaches a governed tool, composes a second "specialist" agent into an Agent Graph, then runs a generic graph-driven dispatcher that materializes Strands `Agent` instances from each node at runtime. + +Provider, tool list, agent instructions, and graph shape can all be changed from the LaunchDarkly UI — no code change, no redeploy. + +## Prerequisites + +* Python 3.10+ +* A [LaunchDarkly account](https://launchdarkly.com/start-trial) with an API token that has the **Writer** role (the notebook creates the project, AI Configs, variations, tool, and graph for you) +* `OPENAI_API_KEY` for the `gpt-5-agent` variation and the specialist +* `ANTHROPIC_API_KEY` for the `claude-sonnet-agent` variation +* *(Optional)* AWS credentials with Bedrock model access for the `bedrock-claude-agent` variation. The variation is created either way; serving it only succeeds if Bedrock is reachable. + +## Setup Instructions + +1. Clone the repository and change into this directory: + + ```bash + git clone https://github.com/strands-agents/samples.git + cd samples/python/03-integrate/runtime-control/launchdarkly + ``` + +2. Install dependencies (the notebook's first cell does this for you if you'd rather skip it): + + ```bash + pip install -r requirements.txt + ``` + +3. Create a `.env` file in this directory: + + ```bash + LAUNCHDARKLY_API_TOKEN=api-... + OPENAI_API_KEY=sk-... + ANTHROPIC_API_KEY=sk-ant-... + + # Optional overrides + # LAUNCHDARKLY_PROJECT_KEY=strands-launchdarkly-sample + # LAUNCHDARKLY_PROJECT_NAME=Strands + LaunchDarkly Sample + # LAUNCHDARKLY_ENVIRONMENT=production + + # Optional: only required if you want the Bedrock variation to serve + # AWS_ACCESS_KEY_ID=... + # AWS_SECRET_ACCESS_KEY=... + # AWS_REGION=us-west-2 + ``` + +4. Run the notebook: + + ```bash + jupyter notebook LaunchDarkly-AI-Configs-strands.ipynb + ``` + + The notebook is self-contained: it creates the LaunchDarkly project, the `strands-agent` triage AI Config (three variations), a governed `get_order_status` tool, default targeting, a `strands-specialist-agent` AI Config, and an Agent Graph that wires them together with a `handoff` edge. Re-running is idempotent. + +5. After the run, open the AI Config in LaunchDarkly and switch to the **Monitoring** tab to see invocation count, token usage, duration, tool-call counts, and error rate per variation. The **Agent Graph** view shows per-node metrics + the handoff edges. + +## What You'll Learn + +* **Map an `AIAgentConfig` to a Strands model class.** `create_strands_model` dispatches on `config.provider.name` (with a Bedrock model-id fallback) — no per-provider branching in your code. +* **Drive an agent's tool list from LaunchDarkly.** Tools come from `config.model.parameters['tools']`, resolved against a local `TOOL_REGISTRY` at runtime. Detach a tool in the UI and the next invocation has no tools. +* **Govern tool schemas centrally.** Register tools with `POST /ai-tools` and attach per-variation via `PATCH /ai-configs/.../variations/{key}`. +* **Track per-agent metrics correctly for async work.** `tracker.track_metrics_of_async(extractor, lambda: agent.invoke_async(...))` atomically fires duration + success/error + tokens; tool calls are tracked from the `@tool` body via a fresh per-invocation tracker. +* **Compose multiple AI Configs into an Agent Graph.** Each edge carries `handoff` metadata (a `route` key the LLM emits + a human-readable `reason`). +* **Drive multi-agent behavior from the graph at runtime.** `execute_graph` walks `graph.root().get_edges()`, builds a Strands `Agent` per node from `node.get_config()`, parses the LLM's `{"route": "..."}` envelope, and jumps to the matching edge target — *or terminates cleanly when no handoff is needed*. The dispatcher also records graph-level handoff success/failure + the final path via `graph.create_tracker()`. +* **Adding a node + edge in LaunchDarkly changes runtime behavior without code changes.** The only key the dispatcher hardcodes is `GRAPH_KEY`. + +## What the notebook prints + +Section 9 runs two queries that exercise both branches of the graph: + +``` +========== Query 1: status only ========== +┌─ INVOKED agent: strands-agent ─ +│ input (40 chars): +│ What's the status of order ORD-789? +├─ response ─ +Order ORD-789 was delivered on Monday. +└─ done: strands-agent +[INFO] strands-agent omitted route JSON — terminating here. +[OK] Path invoked: strands-agent + +========== Query 2: needs analysis ========== +┌─ INVOKED agent: strands-agent ─ +[one-line status + {"route": "specialist"}] +└─ done: strands-agent +[INFO] strands-agent chose route 'specialist' → strands-specialist-agent +┌─ INVOKED agent: strands-specialist-agent ─ +[full investigation + comms templates + escalation path] +└─ done: strands-specialist-agent +[OK] Path invoked: strands-agent → strands-specialist-agent +``` + +## Monitoring in LaunchDarkly + +After running the agent, view metrics on the AI Config's **Monitoring** tab, or open **Insights** under **AI** in the left navigation for aggregated cost, latency, error rate, and model-distribution metrics across every AI Config in your project. The **Agent Graph** view (same nav) shows the same metrics laid out by node + the edges between them. + +![LaunchDarkly AI Insights overview showing cost, latency, error rate, and invocation metrics for a Strands AI Config](images/launchdarkly-ai-insights.png) + +## Additional Resources + +* [LaunchDarkly + Strands guide](https://launchdarkly.com/docs/guides/ai-configs/strands) — the canonical walkthrough, including a Node.js example +* [LaunchDarkly AI Configs documentation](https://launchdarkly.com/docs/home/ai-configs) +* [LaunchDarkly Agent Graphs](https://launchdarkly.com/docs/home/ai-configs/agent-graphs) +* [LaunchDarkly Python AI SDK reference](https://launchdarkly.com/docs/sdk/ai/python) +* [Strands Agents documentation](https://strandsagents.com) diff --git a/python/03-integrate/runtime-control/launchdarkly/images/launchdarkly-ai-insights.png b/python/03-integrate/runtime-control/launchdarkly/images/launchdarkly-ai-insights.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6171cc90a7122ae962fccc27cb2eb008c2f77a GIT binary patch literal 292046 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±H&c;?s}O3t}QRr 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

v8uE@Ut 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 nZ`MDk;69aVS-Clj7*i;YH17c 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 bj!dP;zdZ@ZH?|%C|L!ZPDdydI{PO<*={dx` literal 0 HcmV?d00001 diff --git a/python/03-integrate/runtime-control/launchdarkly/requirements.txt b/python/03-integrate/runtime-control/launchdarkly/requirements.txt new file mode 100644 index 00000000..a7ff7f66 --- /dev/null +++ b/python/03-integrate/runtime-control/launchdarkly/requirements.txt @@ -0,0 +1,9 @@ +launchdarkly-server-sdk +launchdarkly-server-sdk-ai>=0.18.0 +strands-agents>=1.8.0 +strands-agents-tools>=0.2.0 +anthropic +openai +boto3 +python-dotenv +requests From 3bdbdc7870e830d8292a008ad113ef00dcb406df Mon Sep 17 00:00:00 2001 From: Scarlett Attensil Date: Wed, 13 May 2026 17:27:42 -0700 Subject: [PATCH 2/4] Self-heal LD client in execute_graph + run_turn MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If a prior cleanup cell closed the LDClient, re-running section 7 or section 9 alone evaluated against a closed client and got stale 'last known values' from the in-memory feature store — new nodes added in the LD UI weren't visible because the cache predated them. Both run_turn and execute_graph now check ldclient.get().is_initialized() at entry. If not, they reinit via ldclient.set_config + rebuild the LDAIClient/agent_config wrappers. Once initialized, the SDK streaming connection keeps state live within ~1s of UI changes. --- .../LaunchDarkly-AI-Configs-strands.ipynb | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/python/03-integrate/runtime-control/launchdarkly/LaunchDarkly-AI-Configs-strands.ipynb b/python/03-integrate/runtime-control/launchdarkly/LaunchDarkly-AI-Configs-strands.ipynb index ddc0f994..66464e7a 100644 --- a/python/03-integrate/runtime-control/launchdarkly/LaunchDarkly-AI-Configs-strands.ipynb +++ b/python/03-integrate/runtime-control/launchdarkly/LaunchDarkly-AI-Configs-strands.ipynb @@ -630,8 +630,16 @@ "async def run_turn(user_input):\n", " # Fresh tracker per turn (SDK 0.18+ enforces at-most-once per execution).\n", " # Publish to module global so the @tool body fires track_tool_call on the\n", - " # same tracker the metrics extractor finalizes.\n", - " global _tracker\n", + " # same tracker the metrics extractor finalizes. Reinit the LDClient if a\n", + " # prior cleanup cell closed it.\n", + " global _tracker, ai_client, agent_config\n", + " if not ldclient.get().is_initialized():\n", + " ldclient.set_config(Config(SDK_KEY))\n", + " if not ldclient.get().is_initialized():\n", + " raise RuntimeError(\"LaunchDarkly SDK failed to initialize\")\n", + " ai_client = LDAIClient(ldclient.get())\n", + " agent_config = ai_client.agent_config(CONFIG_KEY, context)\n", + " print(\"[INFO] Reinitialized LaunchDarkly client (was closed or stale)\")\n", " _tracker = agent_config.create_tracker()\n", " try:\n", " result = await _tracker.track_metrics_of_async(\n", @@ -917,8 +925,19 @@ " (a JSON route), validated against the node's outgoing edges. If a node has\n", " edges but the agent does not emit a route, the dispatcher terminates at that\n", " node \u2014 handoffs are optional, governed by the agent's instructions.\n", + "\n", + " Self-heals across re-runs: if the LDClient was closed by a prior cleanup\n", + " cell (or never initialized in this kernel), reinitialize it + rebuild the\n", + " LDAIClient wrapper before fetching the graph. Once initialized, the SDK's\n", + " streaming connection keeps state fresh within ~1s of any LD UI change.\n", " \"\"\"\n", - " global _tracker\n", + " global _tracker, ai_client\n", + " if not ldclient.get().is_initialized():\n", + " ldclient.set_config(Config(SDK_KEY))\n", + " if not ldclient.get().is_initialized():\n", + " raise RuntimeError(\"LaunchDarkly SDK failed to initialize\")\n", + " ai_client = LDAIClient(ldclient.get())\n", + " print(\"[INFO] Reinitialized LaunchDarkly client (was closed or stale)\")\n", " graph = ai_client.agent_graph(graph_key, context)\n", " if not graph.is_enabled():\n", " raise RuntimeError(f\"Agent Graph '{graph_key}' is not enabled\")\n", From 27c06cba17ea39a8fb171dae874ca0601650b241 Mon Sep 17 00:00:00 2001 From: Scarlett Attensil Date: Wed, 13 May 2026 17:32:39 -0700 Subject: [PATCH 3/4] Harden self-heal; drop close() from cleanup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two bugs kept the LDClient stuck on stale state across re-runs: 1. is_initialized() is a one-way latch — it stays True after close(), so the prior self-heal check skipped reinit and agent_graph served from the in-memory snapshot frozen at close() time. 2. The cleanup cell called close() at all. flush() is enough; kernel shutdown handles connection release. Fix: - Drop close() from the cleanup cell. - Harden self-heal in run_turn + execute_graph to also probe the private _closed flag. --- .../LaunchDarkly-AI-Configs-strands.ipynb | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/python/03-integrate/runtime-control/launchdarkly/LaunchDarkly-AI-Configs-strands.ipynb b/python/03-integrate/runtime-control/launchdarkly/LaunchDarkly-AI-Configs-strands.ipynb index 66464e7a..10eb37ef 100644 --- a/python/03-integrate/runtime-control/launchdarkly/LaunchDarkly-AI-Configs-strands.ipynb +++ b/python/03-integrate/runtime-control/launchdarkly/LaunchDarkly-AI-Configs-strands.ipynb @@ -633,7 +633,11 @@ " # same tracker the metrics extractor finalizes. Reinit the LDClient if a\n", " # prior cleanup cell closed it.\n", " global _tracker, ai_client, agent_config\n", - " if not ldclient.get().is_initialized():\n", + " _ld = ldclient.get()\n", + " # is_initialized() is a one-way latch; it stays True even after close().\n", + " # The private _closed flag is the only reliable signal of a dead client.\n", + " _closed = getattr(_ld, \"_closed\", False) or getattr(_ld, \"_LDClient__closed\", False)\n", + " if (not _ld.is_initialized()) or _closed:\n", " ldclient.set_config(Config(SDK_KEY))\n", " if not ldclient.get().is_initialized():\n", " raise RuntimeError(\"LaunchDarkly SDK failed to initialize\")\n", @@ -932,7 +936,11 @@ " streaming connection keeps state fresh within ~1s of any LD UI change.\n", " \"\"\"\n", " global _tracker, ai_client\n", - " if not ldclient.get().is_initialized():\n", + " _ld = ldclient.get()\n", + " # is_initialized() is a one-way latch; it stays True even after close().\n", + " # The private _closed flag is the only reliable signal of a dead client.\n", + " _closed = getattr(_ld, \"_closed\", False) or getattr(_ld, \"_LDClient__closed\", False)\n", + " if (not _ld.is_initialized()) or _closed:\n", " ldclient.set_config(Config(SDK_KEY))\n", " if not ldclient.get().is_initialized():\n", " raise RuntimeError(\"LaunchDarkly SDK failed to initialize\")\n", @@ -1059,8 +1067,12 @@ }, "outputs": [], "source": [ + "# Flush buffered events so they reach LaunchDarkly. We intentionally do NOT\n", + "# call ldclient.get().close() here \u2014 close() puts the singleton into a state\n", + "# where subsequent ai_client.agent_graph(...) calls hit a cached snapshot\n", + "# (and emit \"evaluation attempted before client has initialized\" warnings)\n", + "# instead of the live LD state. Kernel shutdown releases the connection.\n", "ldclient.get().flush()\n", - "ldclient.get().close()\n", "print(\"[OK] Done\")\n" ] }, From 844cafffe85e7643fa894bb1d656c8b13cc1c48c Mon Sep 17 00:00:00 2001 From: Scarlett Attensil Date: Wed, 13 May 2026 17:40:40 -0700 Subject: [PATCH 4/4] README: note on changing the graph at runtime Brief operational tip pointing users at the self-heal behavior and the 'Restart Kernel + Run All' fallback after editing the graph in the LD UI. --- python/03-integrate/runtime-control/launchdarkly/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/python/03-integrate/runtime-control/launchdarkly/README.md b/python/03-integrate/runtime-control/launchdarkly/README.md index 31f3e9a3..40fa2729 100644 --- a/python/03-integrate/runtime-control/launchdarkly/README.md +++ b/python/03-integrate/runtime-control/launchdarkly/README.md @@ -91,6 +91,10 @@ Order ORD-789 was delivered on Monday. [OK] Path invoked: strands-agent → strands-specialist-agent ``` +## Changing the graph at runtime + +Add a node + edge in LaunchDarkly's Agent Graph UI, save, and re-run the section 9 cell. The dispatcher re-fetches the live topology on every call and self-heals the SDK client if a prior cleanup closed it, so new nodes show up without restarting the kernel. The most reliable refresh after any LD UI change is still **Kernel → Restart and Run All**, which guarantees a fresh streaming connection. + ## Monitoring in LaunchDarkly After running the agent, view metrics on the AI Config's **Monitoring** tab, or open **Insights** under **AI** in the left navigation for aggregated cost, latency, error rate, and model-distribution metrics across every AI Config in your project. The **Agent Graph** view (same nav) shows the same metrics laid out by node + the edges between them.