Skip to main content

LaunchDarkly AI SDK LangChain Provider

Project description

LaunchDarkly AI SDK - LangChain Provider

PyPI

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.2.0.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.2.0.tar.gz.

File metadata

File hashes

Hashes for launchdarkly_server_sdk_ai_langchain-0.2.0.tar.gz
Algorithm Hash digest
SHA256 b466a7a15485e1b1791988efc6e22fef36806e7c9812390e3eae7e8afb6ab25a
MD5 47e87eb9a887ea52b5c55196eb654a28
BLAKE2b-256 393528f1f286ba5bcf87bbf251eff41bd4d709314aad72f09fc256d0cbe55a70

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for launchdarkly_server_sdk_ai_langchain-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9c800be831933a3a1a2ce9b02d98c433a9b495971b37ecdee000c11003cabe7b
MD5 91df74902789863fcf27c92d63b536bd
BLAKE2b-256 955b7c78300ffc0c015b31e56986a14a77a4ff67db95c50577e0e89ba61a87cc

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