Skip to content

Commit f6a92cc

Browse files
committed
don't set success
1 parent 1ed23cf commit f6a92cc

1 file changed

Lines changed: 30 additions & 17 deletions

File tree

packages/ai-providers/server-ai-langchain/src/ldai_langchain/langchain_provider.py

Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
"""LangChain implementation of AIProvider for LaunchDarkly AI SDK."""
22

3+
from tokenize import Token
34
from typing import Any, Dict, List, Optional, Union
45

56
from langchain_core.language_models.chat_models import BaseChatModel
@@ -107,11 +108,10 @@ async def invoke_structured_model(
107108
if raw_response is not None:
108109
if hasattr(raw_response, 'content'):
109110
structured_response.raw_response = raw_response.content
110-
structured_response.metrics = LangChainProvider.get_ai_metrics_from_response(raw_response)
111+
structured_response.metrics.usage = LangChainProvider.get_ai_usage_from_response(raw_response)
111112

112113
if response.get('parsing_error'):
113114
log.warning(f'LangChain structured model invocation had a parsing error')
114-
structured_response.metrics.success = False
115115
return structured_response
116116

117117
structured_response.metrics.success = True
@@ -147,24 +147,14 @@ def map_provider(ld_provider_name: str) -> str:
147147
'bedrock': 'bedrock_converse',
148148
}
149149
return mapping.get(lowercased_name, lowercased_name)
150-
150+
151151
@staticmethod
152-
def get_ai_metrics_from_response(response: BaseMessage) -> LDAIMetrics:
152+
def get_ai_usage_from_response(response: BaseMessage) -> TokenUsage:
153153
"""
154-
Get AI metrics from a LangChain provider response.
155-
156-
This method extracts token usage information and success status from LangChain responses
157-
and returns a LaunchDarkly AIMetrics object.
154+
Get token usage from a LangChain provider response.
158155
159156
:param response: The response from the LangChain model
160-
:return: LDAIMetrics with success status and token usage
161-
162-
Example:
163-
# Use with tracker.track_metrics_of for automatic tracking
164-
response = await tracker.track_metrics_of(
165-
lambda: llm.ainvoke(messages),
166-
LangChainProvider.get_ai_metrics_from_response
167-
)
157+
:return: TokenUsage with success status and token usage
168158
"""
169159
# Extract token usage if available
170160
usage: Optional[TokenUsage] = None
@@ -183,6 +173,29 @@ def get_ai_metrics_from_response(response: BaseMessage) -> LDAIMetrics:
183173
output=token_usage.get('completionTokens', 0) or token_usage.get('completion_tokens', 0),
184174
)
185175

176+
return usage
177+
178+
@staticmethod
179+
def get_ai_metrics_from_response(response: BaseMessage) -> LDAIMetrics:
180+
"""
181+
Get AI metrics from a LangChain provider response.
182+
183+
This method extracts token usage information and success status from LangChain responses
184+
and returns a LaunchDarkly AIMetrics object.
185+
186+
:param response: The response from the LangChain model
187+
:return: LDAIMetrics with success status and token usage
188+
189+
Example:
190+
# Use with tracker.track_metrics_of for automatic tracking
191+
response = await tracker.track_metrics_of(
192+
lambda: llm.ainvoke(messages),
193+
LangChainProvider.get_ai_metrics_from_response
194+
)
195+
"""
196+
# Extract token usage if available
197+
usage = LangChainProvider.get_ai_usage_from_response(response)
198+
186199
return LDAIMetrics(success=True, usage=usage)
187200

188201
@staticmethod
@@ -238,7 +251,7 @@ def create_langchain_model(ai_config: AIConfigKind) -> BaseChatModel:
238251
# Bedrock requires the foundation provider (e.g. Bedrock:Anthropic) passed in
239252
# parameters separately from model_provider, which is used for LangChain routing.
240253
if mapped_provider == 'bedrock_converse' and 'provider' not in parameters:
241-
parameters['provider'] = provider
254+
parameters['provider'] = provider.removeprefix('bedrock:')
242255
return init_chat_model(
243256
model_name,
244257
model_provider=mapped_provider,

0 commit comments

Comments
 (0)