launchdarkly-ai-openai-agents
OpenAI handler for launchdarkly-ai-server using the OpenAI Agents SDK (openai-agents). Delegates the full agentic loop — tool calls, retries, and orchestration — to the Agents SDK.
provides_for: ['OpenAI', 'agent'] — matches flag variations where provider.name is "OpenAI" and meta.mode is "agent".
Installation
pip install launchdarkly-ai-server launchdarkly-ai-openai-agents
Set OPENAI_API_KEY in your environment (the OpenAI SDK reads it automatically).
Usage
With config()
import asyncio
from launchdarkly_ai_server import config, shutdown
from launchdarkly_ai_openai_agents import create_openai_agent_handler
async def main():
result = await config(
key="my-ai-config-flag",
handler=create_openai_agent_handler(),
tool_handlers={"search": lambda q: "..."},
).invoke("Summarize today's changelog", {"kind": "user", "key": "user-123"})
print(result.response)
await shutdown()
asyncio.run(main())
Convenience wrapper
import asyncio
from launchdarkly_ai_openai_agents import openai_agents
async def main():
user_input = "Summarize today's changelog"
result = await openai_agents(
user_input,
{"kind": "user", "key": "user-123"},
{"key": "my-ai-config-flag"},
variables={"user_input": user_input},
)
print(result.response)
asyncio.run(main())
Agent graphs — openai_graph()
Runs a LaunchDarkly agent graph with the OpenAI agent handler pre-bound. Equivalent to calling the base graph() with handlers=[create_openai_agent_handler()]. See the core client docs for the full graph() API.
import asyncio
from launchdarkly_ai_openai_agents import openai_graph
async def main():
result = await openai_graph("support-graph").invoke(
"I was double charged",
{"kind": "user", "key": "user-123"},
)
print(result["response"])
asyncio.run(main())
Native graph adapter — to_openai_agents()
Converts a resolve_graph() result into a framework-native OpenAI Agents swarm (post-order traversal: leaves → root). Children are wired as handoffs; the root is run with Runner.run.
import asyncio
from launchdarkly_ai_server import resolve_graph
from launchdarkly_ai_openai_agents import to_openai_agents
async def main():
ctx = {"kind": "user", "key": "user-123"}
result = await to_openai_agents(
resolve_graph("support-graph", context=ctx),
{"tool_handlers": registry.tools, "context": ctx},
).call("I was double charged")
print(result["response"])
asyncio.run(main())
How It Works
- Uses the system prompt and tools defined in your LaunchDarkly flag config.
- Template placeholders (
{{variable}}) in the prompt are substituted usingvariablesbefore the call. - The OpenAI Agents SDK manages the full agentic loop — tool dispatch, re-prompting, and termination — automatically.
- Emits an OTel span and LaunchDarkly telemetry for every call.
Choosing Between openai-agents and openai-messages
openai-agents |
openai-messages |
|
|---|---|---|
| Underlying SDK | openai-agents |
openai (Responses API) |
| Tool loop | Managed by Agents SDK | Executed and fed back manually |
| Complexity | Lower (SDK manages loop) | More explicit control |
Environment Variables
| Variable | Description |
|---|---|
OPENAI_API_KEY |
OpenAI API key (read automatically by the OpenAI SDK) |
LD_SDK_KEY |
LaunchDarkly server-side SDK key |
LD_SERVICE_NAME |
OTel service.name resource attribute (default: python-sdk) |
LD_ENVIRONMENT |
deployment.environment attribute attached to telemetry |
OTEL_EXPORTER_OTLP_ENDPOINT |
OTLP endpoint override (default: LaunchDarkly Observability backend) |
Metadata
Release files for launchdarkly-ai-openai-agents 0.2.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| launchdarkly_ai_openai_agents-0.2.3.tar.gz | 43.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| launchdarkly_ai_openai_agents-0.2.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 66.1 kB
Release files / launchdarkly_ai_openai_agents-0.2.3.tar.gz
| Download URL | launchdarkly_ai_openai_agents-0.2.3.tar.gz |
|---|---|
| Size | 43.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
049053cb3c30c8d4483f6a2e16b9ed8aab56157b90a9dea55c6dbd963c387be5
|
|
BLAKE2b-256 checksum How to use checksums |
573669becfb88338813a5fe1f082668b3669e0cd5e08aeef5652f6ba30000deb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / launchdarkly_ai_openai_agents-0.2.3-py3-none-any.whl
| Download URL | launchdarkly_ai_openai_agents-0.2.3-py3-none-any.whl |
|---|---|
| Size | 22.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f35881e87aac40d1e7ca94b4a9c90a5d9b14f70c995d3738b7b2f3729ca1eadd
|
|
BLAKE2b-256 checksum How to use checksums |
a1eaa98248776d952bf5b06d173045756ee507a2cca43ded783deb54e74c3a0d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|