Metadata-Version: 2.4
Name: launchdarkly-server-sdk-ai-openai
Version: 0.4.0
Summary: LaunchDarkly AI SDK OpenAI Provider
Project-URL: Homepage, https://docs.launchdarkly.com/sdk/ai/python
Project-URL: Repository, https://github.com/launchdarkly/python-server-sdk-ai
Author-email: LaunchDarkly <dev@launchdarkly.com>
License: Apache-2.0
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development
Classifier: Topic :: Software Development :: Libraries
Requires-Python: <4,>=3.10
Requires-Dist: launchdarkly-server-sdk-ai>=0.18.0
Requires-Dist: openai>=1.0.0
Provides-Extra: agents
Requires-Dist: openai-agents>=0.0.1; extra == 'agents'
Description-Content-Type: text/markdown

# LaunchDarkly AI SDK OpenAI Provider

[![Actions Status](https://github.com/launchdarkly/python-server-sdk-ai/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/launchdarkly/python-server-sdk-ai/actions/workflows/ci.yml)

[![PyPI](https://img.shields.io/pypi/v/launchdarkly-server-sdk-ai-openai.svg?maxAge=2592000)](https://pypi.org/project/launchdarkly-server-sdk-ai-openai/)
[![PyPI](https://img.shields.io/pypi/pyversions/launchdarkly-server-sdk-ai-openai.svg)](https://pypi.org/project/launchdarkly-server-sdk-ai-openai/)

> [!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](CHANGELOG.md) before upgrading.

This package provides an OpenAI integration for the LaunchDarkly AI SDK.

## Installation

```bash
pip install launchdarkly-server-sdk-ai-openai
```

## Quick Start

```python
import asyncio
from ldai import AIClient
from ldai_openai import OpenAIProvider

async def main():
    # Initialize the AI client
    ai_client = AIClient(ld_client)

    # Get AI config. Pass a default for improved resiliency when the flag is unavailable or
    # LaunchDarkly is unreachable; omit for a disabled default. Example:
    #   from ldai.models import AICompletionConfigDefault, LDMessage, ModelConfig, ProviderConfig
    #   default = AICompletionConfigDefault(
    #       enabled=True,
    #       model=ModelConfig("gpt-4"),
    #       provider=ProviderConfig("openai"),
    #       messages=[LDMessage(role="system", content="You are a helpful assistant.")]
    #   )
    #   ai_config = ai_client.config("my-ai-config-key", context, default)
    ai_config = ai_client.config("my-ai-config-key", context)
    
    # Create an OpenAI provider from the config
    provider = await OpenAIProvider.create(ai_config)
    
    # Invoke the model
    response = await provider.invoke_model(ai_config.messages)
    print(response.message.content)

asyncio.run(main())
```

## Features

- Full integration with OpenAI's chat completions API
- Automatic token usage tracking
- Support for structured output (JSON schema)
- Static utility methods for custom integrations

## API Reference

### OpenAIProvider

#### Constructor

```python
OpenAIProvider(client: OpenAI, model_name: str, parameters: Dict[str, Any], logger: Optional[Any] = None)
```

#### Static Methods

- `create(ai_config: AIConfigKind, logger: Optional[Any] = None) -> OpenAIProvider` - Factory method to create a provider from an AI config
- `get_ai_metrics_from_response(response: Any) -> LDAIMetrics` - Extract metrics from an OpenAI response

#### 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 the model with structured output
- `get_client() -> OpenAI` - Get the underlying OpenAI client

## License

Apache-2.0

