Skip to main content

LaunchDarkly AI SDK LangChain Provider

Project description

LaunchDarkly AI SDK - LangChain Provider

PyPI

[!CAUTION] This package is in pre-release and not subject to backwards compatibility guarantees. The API may change based on feedback.

Pin to a specific minor version and review the changelog before upgrading.

This package provides LangChain integration for the LaunchDarkly Server-Side AI SDK, allowing you to use LangChain models and chains with LaunchDarkly's tracking and configuration capabilities.

Installation

pip install launchdarkly-server-sdk-ai-langchain

You'll also need to install the LangChain provider packages for the models you want to use:

# For OpenAI
pip install langchain-openai

# For Anthropic
pip install langchain-anthropic

# For Google
pip install langchain-google-genai

Quick Start

import asyncio
from ldclient import LDClient, Config, Context
from ldai import init
from ldai_langchain import LangChainProvider

# Initialize LaunchDarkly client
ld_client = LDClient(Config("your-sdk-key"))
ai_client = init(ld_client)

# Get AI configuration
context = Context.builder("user-123").build()
config = ai_client.config("ai-config-key", context, {})

async def main():
    # Create a LangChain provider from the AI configuration
    provider = await LangChainProvider.create(config)

    # Use the provider to invoke the model
    from ldai.models import LDMessage
    messages = [
        LDMessage(role="system", content="You are a helpful assistant."),
        LDMessage(role="user", content="Hello, how are you?"),
    ]
    
    response = await provider.invoke_model(messages)
    print(response.message.content)

asyncio.run(main())

Usage

Using LangChainProvider with the Create Factory

The simplest way to use the LangChain provider is with the static create factory method, which automatically creates the appropriate LangChain model based on your LaunchDarkly AI configuration:

from ldai_langchain import LangChainProvider

# Create provider from AI configuration
provider = await LangChainProvider.create(ai_config)

# Invoke the model
response = await provider.invoke_model(messages)

Using an Existing LangChain Model

If you already have a LangChain model configured, you can use it directly:

from langchain_openai import ChatOpenAI
from ldai_langchain import LangChainProvider

# Create your own LangChain model
llm = ChatOpenAI(model="gpt-4", temperature=0.7)

# Wrap it with LangChainProvider
provider = LangChainProvider(llm)

# Use with LaunchDarkly tracking
response = await provider.invoke_model(messages)

Structured Output

The provider supports structured output using LangChain's with_structured_output:

response_structure = {
    "type": "object",
    "properties": {
        "sentiment": {"type": "string", "enum": ["positive", "negative", "neutral"]},
        "confidence": {"type": "number"},
    },
    "required": ["sentiment", "confidence"],
}

result = await provider.invoke_structured_model(messages, response_structure)
print(result.data)  # {"sentiment": "positive", "confidence": 0.95}

Tracking Metrics

Use the provider with LaunchDarkly's tracking capabilities:

# Get the AI config with tracker
config = ai_client.config("ai-config-key", context, {})

# Create provider
provider = await LangChainProvider.create(config)

# Track metrics automatically
async def invoke():
    return await provider.invoke_model(messages)

response = await config.tracker.track_metrics_of(
    invoke,
    lambda r: r.metrics
)

Static Utility Methods

The LangChainProvider class provides several utility methods:

Converting Messages

from ldai.models import LDMessage
from ldai_langchain import LangChainProvider

messages = [
    LDMessage(role="system", content="You are helpful."),
    LDMessage(role="user", content="Hello!"),
]

# Convert to LangChain messages
langchain_messages = LangChainProvider.convert_messages_to_langchain(messages)

Extracting Metrics

from ldai_langchain import LangChainProvider

# After getting a response from LangChain
metrics = LangChainProvider.get_ai_metrics_from_response(ai_message)
print(f"Success: {metrics.success}")
print(f"Tokens used: {metrics.usage.total if metrics.usage else 'N/A'}")

Provider Name Mapping

# Map LaunchDarkly provider names to LangChain provider names
langchain_provider = LangChainProvider.map_provider("gemini")  # Returns "google-genai"

API Reference

LangChainProvider

Constructor

LangChainProvider(llm: BaseChatModel, logger: Optional[Any] = None)

Static Methods

  • create(ai_config: AIConfigKind, logger: Optional[Any] = None) -> LangChainProvider - Factory method to create a provider from AI configuration
  • convert_messages_to_langchain(messages: List[LDMessage]) -> List[BaseMessage] - Convert LaunchDarkly messages to LangChain messages
  • get_ai_metrics_from_response(response: AIMessage) -> LDAIMetrics - Extract metrics from a LangChain response
  • map_provider(ld_provider_name: str) -> str - Map LaunchDarkly provider names to LangChain names
  • create_langchain_model(ai_config: AIConfigKind) -> BaseChatModel - Create a LangChain model from AI configuration

Instance Methods

  • invoke_model(messages: List[LDMessage]) -> ChatResponse - Invoke the model with messages
  • invoke_structured_model(messages: List[LDMessage], response_structure: Dict[str, Any]) -> StructuredResponse - Invoke with structured output
  • get_chat_model() -> BaseChatModel - Get the underlying LangChain model

Documentation

For full documentation, please refer to the LaunchDarkly AI SDK documentation.

Contributing

See CONTRIBUTING.md in the repository root.

License

Apache-2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

launchdarkly_server_sdk_ai_langchain-0.3.1.tar.gz (5.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file launchdarkly_server_sdk_ai_langchain-0.3.1.tar.gz.

File metadata

File hashes

Hashes for launchdarkly_server_sdk_ai_langchain-0.3.1.tar.gz
Algorithm Hash digest
SHA256 1552934cdc8868a8bb5bb5641ccadc3b6a72edeb884579a1e3a4c05e9c55e925
MD5 c31b21b7a60427149e191b7c0e634971
BLAKE2b-256 d2a83a59d53e9c0475239c571945624065c194f4911f28df9ef8c9b89a331de1

See more details on using hashes here.

File details

Details for the file launchdarkly_server_sdk_ai_langchain-0.3.1-py3-none-any.whl.

File metadata

File hashes

Hashes for launchdarkly_server_sdk_ai_langchain-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7dba1de223df4e1dbd3c531f0f2df9f49cf1316859c5ee41efd7d4616b140cc0
MD5 cc8fbdeee920b039a16e90f6170ebb74
BLAKE2b-256 c15d7ca10dec7db421ed909df120b806f1ea4ac2e67af866a33e823bc4fc26bc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page