From 89f37a0535f9b8cd7718f7c6e339e261e4aaad04 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Mon, 6 Apr 2026 09:10:28 +0000 Subject: [PATCH 1/2] chore: update langchain examples to use top-level get_ai_metrics_from_response Replace LangChainProvider.get_ai_metrics_from_response with the top-level get_ai_metrics_from_response function from ldai_langchain, which is the new API in launchdarkly-server-sdk-ai-langchain 0.4.0. Co-Authored-By: rlamb@launchdarkly.com <4955475+kinyoklion@users.noreply.github.com> --- examples/langchain_example.py | 4 ++-- examples/langgraph_agent_example.py | 4 ++-- examples/langgraph_multi_agent_example.py | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/langchain_example.py b/examples/langchain_example.py index 6908d9d..0fe3f70 100644 --- a/examples/langchain_example.py +++ b/examples/langchain_example.py @@ -4,7 +4,7 @@ from ldclient import Context from ldclient.config import Config from ldai.client import LDAIClient -from ldai_langchain import LangChainProvider +from ldai_langchain import get_ai_metrics_from_response from langchain.chat_models import init_chat_model # Set sdk_key to your LaunchDarkly SDK key. @@ -89,7 +89,7 @@ async def async_main(): # Track the LangChain completion with LaunchDarkly metrics using the LD LangChain provider's extractor completion = await tracker.track_metrics_of( lambda: llm.ainvoke(messages), - LangChainProvider.get_ai_metrics_from_response, + get_ai_metrics_from_response, ) ai_response = completion.content diff --git a/examples/langgraph_agent_example.py b/examples/langgraph_agent_example.py index 44e8e8e..93b072f 100644 --- a/examples/langgraph_agent_example.py +++ b/examples/langgraph_agent_example.py @@ -5,7 +5,7 @@ from ldclient.config import Config from ldai.client import LDAIClient from ldai.tracker import TokenUsage -from ldai_langchain import LangChainProvider +from ldai_langchain import get_ai_metrics_from_response from langchain.chat_models import init_chat_model from langgraph.prebuilt import create_react_agent @@ -36,7 +36,7 @@ def track_langgraph_metrics(tracker, func): total_tokens = 0 if "messages" in result: for message in result["messages"]: - metrics = LangChainProvider.get_ai_metrics_from_response(message) + metrics = get_ai_metrics_from_response(message) if metrics.usage: total_input_tokens += metrics.usage.input total_output_tokens += metrics.usage.output diff --git a/examples/langgraph_multi_agent_example.py b/examples/langgraph_multi_agent_example.py index d09e3e0..6989b4a 100644 --- a/examples/langgraph_multi_agent_example.py +++ b/examples/langgraph_multi_agent_example.py @@ -4,7 +4,7 @@ from ldclient.config import Config from ldai.client import LDAIClient from ldai.tracker import TokenUsage -from ldai_langchain import LangChainProvider +from ldai_langchain import get_ai_metrics_from_response from langchain.chat_models import init_chat_model from langgraph.prebuilt import create_react_agent from langgraph.graph import StateGraph, END @@ -47,7 +47,7 @@ def track_langgraph_metrics(tracker, func, prev_message_count=0): if "messages" in result: new_messages = result["messages"][prev_message_count:] for message in new_messages: - metrics = LangChainProvider.get_ai_metrics_from_response(message) + metrics = get_ai_metrics_from_response(message) if metrics.usage: total_input_tokens += metrics.usage.input total_output_tokens += metrics.usage.output From 70cfac541080c1b63ebfb4d08e20762908dc0d86 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Mon, 6 Apr 2026 09:10:37 +0000 Subject: [PATCH 2/2] chore: bump LaunchDarkly AI SDK and langchain dependencies - launchdarkly-server-sdk-ai: ^0.16.1 -> ^0.17.0 - launchdarkly-server-sdk-ai-langchain: ^0.3.2 -> ^0.4.0 - launchdarkly-server-sdk-ai-openai: ^0.2.1 -> ^0.3.0 - langchain: ^0.3.0 -> ^1.0.0 - langchain-core: ^0.3.0 -> ^1.0.0 - langchain-openai: ^0.3.30 -> ^1.0.0 - langchain-aws: ^0.2.30 -> ^1.0.0 - langchain-google-genai: ^2.1.9 -> ^4.0.0 - langgraph: ^0.2.0 -> ^1.0.0 Co-Authored-By: rlamb@launchdarkly.com <4955475+kinyoklion@users.noreply.github.com> --- pyproject.toml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index a53daee..a6b3c4f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,20 +20,20 @@ direct-judge-example = 'examples.direct_judge_example:main' [tool.poetry.dependencies] python = "^3.10" -launchdarkly-server-sdk-ai = "^0.16.1" -launchdarkly-server-sdk-ai-langchain = "^0.3.2" -launchdarkly-server-sdk-ai-openai = "^0.2.1" +launchdarkly-server-sdk-ai = "^0.17.0" +launchdarkly-server-sdk-ai-langchain = "^0.4.0" +launchdarkly-server-sdk-ai-openai = "^0.3.0" launchdarkly-observability = { version = ">=0.1.0", optional = true } boto3 = { version = ">=0.2.0", optional = true } openai = { version = ">=0.2.0", optional = true } google-genai = { version = "^1.30.0", optional = true } -langchain = {version = "^0.3.0", optional = true} -langchain-aws = {version = "^0.2.30", optional = true} -langchain-core = {version = "^0.3.0", optional = true} -langchain-google-genai = {version = "^2.1.9", optional = true} -langchain-openai = {version = "^0.3.30", optional = true} -langgraph = {version = "^0.2.0", optional = true} +langchain = {version = "^1.0.0", optional = true} +langchain-aws = {version = "^1.0.0", optional = true} +langchain-core = {version = "^1.0.0", optional = true} +langchain-google-genai = {version = "^4.0.0", optional = true} +langchain-openai = {version = "^1.0.0", optional = true} +langgraph = {version = "^1.0.0", optional = true} [tool.poetry.extras] bedrock = ["boto3"]