For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Sign inTry it free
DocsGuidesSDKsIntegrationsAPI docsTutorialsFlagship blog
DocsGuidesSDKsIntegrationsAPI docsTutorialsFlagship blog
  • SDKs
    • SDK concepts
    • SDK features
      • Aliasing users
      • Anonymous contexts and users
      • Automatic environment attributes
      • Big segments
      • Bootstrapping
      • Configuration
      • Context configuration
      • Customizing AgentControl
      • Data saving mode
      • Evaluating flags
      • Flag evaluation reasons
      • Flushing events
      • Getting all flags
      • Hooks
      • Identifying and changing contexts
      • Inspectors
      • Logging configuration
      • Migrations
      • Monitoring SDK status
      • Multiple environments
      • Offline mode
      • OpenTelemetry in server-side SDKs
      • Private attributes
      • User feedback
      • Reading flags from a file
      • Relay Proxy configuration
      • Secure mode
      • Sending custom events
      • Shutting down
      • Storing data
      • Subscribing to flag changes
      • Test data sources
      • Tracking AI metrics
      • Web proxy configuration
    • Client-side SDKs
    • Server-side SDKs
    • AI SDKs
    • Edge SDKs
    • OpenFeature providers
    • Observability SDKs
    • Relay Proxy
Sign inTry it free
LogoLogo
On this page
  • Overview
  • Customize messages
  • Syntax for customization
  • Customization is based on context
  • AI SDKs
  • .NET AI
  • Go AI
  • Node.js (server-side) AI
  • Customize configs in completion mode
  • Customize configs in agent mode
  • Python AI
  • Customize configs in completion mode
  • Customize configs in agent mode
  • Ruby AI
SDKsSDK features

Customizing AgentControl configs

Was this page helpful?
Previous

Data saving mode

Next
Built with

Overview

This topic explains how to customize an AgentControl config using LaunchDarkly AI SDKs.

Customizing a config evaluates the configuration for a given context and returns the appropriate variation based on targeting rules. Customization requires a config key, a context, a fallback value, and optional variables for substitution.

In completion mode, the customized variation includes the model configuration and messages for the context. In agent mode, the customized variation includes the instructions for the context. In both cases, you must customize the config each time you generate content from your AI model.

Customize messages

Customizing a config substitutes context attributes and optional variables into the messages or instructions defined in the config variation. If a variation includes multiple messages, all messages are customized and returned.

If the SDK cannot retrieve the variation, such as when the config key does not exist or LaunchDarkly is unreachable, the SDK returns the fallback value.

Syntax for customization

When you create a message or instruction in a config variation, use the following syntax to substitute context attributes or other variables.

  • Use double curly braces to indicate variables provided by your application. For example:

    • Enter This is an {{ example }} in the message or instruction in the LaunchDarkly UI. Variable names cannot include a period (.).
    • In the SDK, pass a dictionary or key-value pair with the key example and the value to substitute.
  • Use double curly braces with the ldctx prefix and dot (.) notation to reference context attributes. For example:

    • Enter Describe the typical weather in {{ ldctx.city }} to substitute the city attribute from each context that encounters the config.
    • Context attribute names cannot include a period (.). To reference nested attributes, use dot notation in the message or instruction. For example, if the context includes an address object with a city field, use {{ ldctx.address.city }}.
    • In the SDK, the context is a required parameter. You do not need to pass additional variables when using ldctx.

Customization is based on context

Customization adds a context to the Contexts list if a context with the same key does not already exist. Each SDK evaluates the config using only the context object you provide at runtime.

The SDK does not automatically use attributes shown on the Contexts list, and attributes are not synchronized across SDK instances. Provide all required attributes with each customization to ensure variables in messages or instructions are substituted correctly. To learn more, read Context configuration.

AI SDKs

This feature is available for the following AI SDKs:

  • .NET AI
  • Go AI
  • Node.js (server-side) AI
  • Python AI
  • Ruby AI

.NET AI

Expand .NET AI SDK code sample

Use the Config function to customize an AgentControl config. Customization substitutes context attributes and variables into the prompt messages defined in the config variation. You must call Config each time you generate content from your AI model.

The Config function takes the config key, a Context, a fallback value, and optional additional variables to substitute into your prompt. It performs the evaluation, then returns the customized prompt and model along with a tracker instance for recording prompt metrics. You can pass the customized prompt directly to your AI.

The fallback value is the value of the config variation that your application should use in the event of an error, for example, if the config key is not valid, or if there is a problem connecting to LaunchDarkly. You can use LdAiConfig.Disabled as a fallback value and handle the disabled case in your application.

Alternatively, you can create a custom LdAiConfig object using LdAiConfig.New().

Here is an example of calling the Config method:

.NET AI SDK
1var fallbackConfig = LdAiConfig.New()
2 .SetEnabled(false)
3 .Build()
4
5var tracker = aiClient.Config(
6 "example-config-key",
7 context,
8 fallbackConfig,
9 new Dictionary<string, object> {
10 { "exampleCustomVariable", "exampleCustomValue" }
11 }
12);
13
14if (tracker.Config.Enabled == true) {
15
16 // Send a request to your AI provider, using the details from the customized Config
17
18} else {
19
20 // Application path to take when the tracker.Config is disabled
21
22}

After the function call, you can view the context that you provided to it on the Contexts list.

To learn more, read Config.

Go AI

Expand Go AI SDK code sample

Use the Config() function to customize an AgentControl config. Customization substitutes context attributes and variables into the prompt messages defined in the config variation.

The Config() function takes a config key, a context, and a fallback value. It performs the evaluation and returns a Config object with the customized messages and model, along with a Tracker object to capture performance metrics. You can pass the customized messages directly to your AI.

The fallback value is used when an error occurs, such as when the config key is invalid or LaunchDarkly is unreachable. You can use an empty, disabled Config as a fallback value by calling ldai.Disabled() and handle the disabled case in your application. Alternatively, you can create a custom Config using NewConfig.

Here is an example of calling the Config() method:

Go AI SDK
1fallbackValue := NewConfig().Build() // by default, the Config is disabled
2
3cfg, tracker := aiClient.Config("example-config-key", context, fallbackValue, map[string]interface{}{"exampleCustomVariable": "exampleCustomValue"})
4
5if cfg.Enabled() {
6
7 // Send a request to your AI provider, using details from the customized cfg
8
9} else {
10
11 // Application path to take when the cfg is disabled
12
13}

After the function call, you can view the context that you provided to it on the Contexts list.

To learn more, read Config.

Node.js (server-side) AI

Expand Node.js (server-side) AI SDK code sample

The completionConfig(), agentConfig(), and agentConfigs() functions customize the AgentControl config at runtime. Customization substitutes context attributes and optional variables into the messages or instructions defined in the config variation.

The customization behavior depends on whether the config uses completion mode or agent mode. You select the mode when you create the config in the LaunchDarkly UI.

Customize configs in completion mode

In completion mode, each config variation includes a single set of roles and messages used to prompt your generative AI model.

In completion mode, use completionConfig() to customize the config. The completionConfig function takes the config key, a Context, a fallback value, and optional additional variables to substitute into your prompt. It performs the evaluation, then returns the customized prompt and model along with a tracker instance for recording prompt metrics. You can pass the customized prompt directly to your AI.

The fallback value is used when an error occurs, such as when the config key is invalid or LaunchDarkly is unreachable. You can use an empty, disabled configuration as a fallback value and handle the disabled case in your application. Alternatively, you can construct a fallback configuration using values from a config variation defined in the LaunchDarkly UI.

Here is an example of calling the completionConfig() method:

Customize a config in completion mode
1const fallbackConfig = { enabled: false };
2
3const aiConfig: LDAIConfig = await aiClient.completionConfig(
4 'example-config-key',
5 context,
6 fallbackConfig,
7 { exampleCustomVariable: 'exampleCustomValue' },
8);
9
10if (aiConfig.enabled) {
11 // Send a request to your AI provider using the customized config
12} else {
13 // Application path to take when the config is disabled
14}

Customize configs in agent mode

In agent mode, each config variation includes a set of instructions that enable multi-step workflows.

In agent mode, use agentConfig() or agentConfigs() to customize the config. The agentConfig() function customizes a single agent config, while the agentConfigs() function customizes an array of agent configurations.

The instructions returned by the SDK come directly from the instructions you define for the config variation in the LaunchDarkly UI. The goal or task shown in the UI is delivered unchanged as the instructions field in the SDK.

Customization requires a config key, a fallback value, optional variables, and a context. Both functions perform the evaluation and return the customized instructions along with a tracker instance for recording metrics. If the SDK cannot perform the evaluation or LaunchDarkly is unreachable, it returns the fallback value.

For example, you might use an empty, disabled agent-mode configuration as a fallback value and handle the disabled case in your application.

Here is an example of customizing a config in agent mode:

Customize a config in agent mode
1agent_config = LDAIAgentConfig(
2 key='example-config-key',
3 default_value=LDAIAgentDefaults(
4 enabled=False
5 ),
6 variables={ 'example_custom_variable': 'example_custom_value' }
7)
8
9const agent: LDAIAgentConfig = await aiClient.agentConfig(
10 'example-config-key',
11 context,
12 fallbackConfig,
13 { 'exampleCustomVariable': 'exampleCustomValue' },
14);

To learn more, read agent and agents.

Python AI

Expand Python AI SDK code sample

The completion_config(), agent_config(), and agent_configs() functions customize the AgentControl config at runtime. Customization substitutes context attributes and optional variables into the messages or instructions defined in the config variation.

The customization behavior depends on whether the config uses completion mode or agent mode. You select the mode when you create the config in the LaunchDarkly UI.

Customize configs in completion mode

In completion mode, each config variation includes a single set of roles and messages used to prompt the generative AI model.

In completion mode, use completion_config() to customize the config. The completion_config() function takes a config key, a context, and a fallback value. It performs the evaluation, then returns the customized messages and model along with a tracker instance for recording metrics.

The fallback value is used when an error occurs, such as when the config key is invalid or LaunchDarkly is unreachable. You can use an empty, disabled configuration as a fallback value and handle the disabled case in your application. Alternatively, you can construct a fallback configuration using values from a config variation defined in the LaunchDarkly UI.

Here is an example of calling the completion_config() method:

Customize a config in completion mode
1key = 'example-config-key'
2context = Context.builder('example-context-key') \
3 .kind('user') \
4 .set('name', 'Sandy') \
5 .build()
6fallback_value = AICompletionConfigDefault(enabled=False)
7variables = { 'example_custom_variable': 'example_custom_value' }
8
9config, tracker = aiclient.completion_config(key, context, fallback_value, variables)
10
11if config.enabled:
12 # Send a request to your AI provider using the customized config
13else:
14 # Application path to take when the config is disabled

After the function call, you can view the context that you provided to it on the Contexts list.

To learn more, read config.

Customize configs in agent mode

In agent mode, each config variation includes a set of instructions that enable multi-step workflows.

In agent mode, use agent_config() or agent_configs() to customize the config. The agent_config() function customizes a single agent config, while the agent_configs() function customizes a list of them.

The instructions returned by the SDK come directly from the instructions you define for the config variation in the LaunchDarkly UI. The goal or task shown in the UI is delivered unchanged as the instructions field in the SDK.

Customization requires a config key, a fallback value, optional variables, and a context. Both functions perform the evaluation and return the customized instructions along with a tracker instance for recording metrics. If the SDK cannot perform the evaluation or LaunchDarkly is unreachable, it returns the fallback value.

For example, you might use an empty, disabled agent-mode configuration as a fallback value and handle the disabled case in your application.

Here is an example of customizing a config in agent mode:

Customize a config in agent mode
1from ldai import AIAgentConfigDefault
2
3agent = aiclient.agent_config(
4 'example-config-key',
5 context,
6 AIAgentConfigDefault(
7 enabled=False
8 ),
9 { 'example_custom_variable': 'example_custom_value'}
10)

Ruby AI

Expand Ruby AI SDK code sample

Use the config function to customize an AgentControl config. Customization substitutes context attributes and optional variables into the prompt messages defined in the config variation. You must call config each time you generate content from your AI model.

The config function takes a config key, a Context, a fallback value, and optional variables for substitution. It performs the evaluation and returns the customized prompt and model along with a tracker instance for recording metrics. You can pass the customized prompt directly to your AI provider.

The fallback value is used when an error occurs, such as when the config key is invalid or LaunchDarkly is unreachable. You can use an empty, disabled configuration as a fallback value and handle the disabled case in your application. Alternatively, you can construct a fallback configuration using values from a config variation defined in the LaunchDarkly UI.

Here is an example of calling the config method:

1key = 'example-config-key'
2context = LaunchDarkly::LDContext.create({ key: 'example-user-key', kind: 'user', name: 'Sandy' })
3fallback_value = LaunchDarkly::AI::AIConfig.new(enabled: false)
4variables = { 'example_custom_variable' => 'example_custom_value' }
5
6ai_config = ai_client.config(key, context, fallback_value, variables)
7
8if ai_config.enabled
9 # Send a request to your AI provider using the customized config
10else
11 # Application path to take when the config is disabled
12end