XAIConfig.fromLLMConfig constructor

XAIConfig.fromLLMConfig(
  1. LLMConfig config
)

Create XAIConfig from unified LLMConfig

Implementation

factory XAIConfig.fromLLMConfig(LLMConfig config) {
  // Handle web search configuration
  SearchParameters? searchParams =
      config.getExtension<SearchParameters>('searchParameters');
  bool? liveSearchEnabled = config.getExtension<bool>('liveSearch');

  // Check for webSearchEnabled flag
  final webSearchEnabled = config.getExtension<bool>('webSearchEnabled');
  if (webSearchEnabled == true &&
      searchParams == null &&
      liveSearchEnabled != true) {
    // Enable live search with default web search parameters
    liveSearchEnabled = true;
    searchParams = SearchParameters.webSearch();
  }

  // Check for webSearchConfig and convert to SearchParameters
  final webSearchConfig =
      config.getExtension<WebSearchConfig>('webSearchConfig');
  if (webSearchConfig != null && searchParams == null) {
    searchParams = _convertWebSearchConfigToSearchParameters(webSearchConfig);
    liveSearchEnabled = true;
  }

  return XAIConfig(
    apiKey: config.apiKey!,
    baseUrl: config.baseUrl,
    model: config.model,
    maxTokens: config.maxTokens,
    temperature: config.temperature,
    systemPrompt: config.systemPrompt,
    timeout: config.timeout,

    topP: config.topP,
    topK: config.topK,
    tools: config.tools,
    toolChoice: config.toolChoice,
    // xAI-specific extensions
    jsonSchema: config.getExtension<StructuredOutputFormat>('jsonSchema'),
    embeddingEncodingFormat:
        config.getExtension<String>('embeddingEncodingFormat'),
    embeddingDimensions: config.getExtension<int>('embeddingDimensions'),
    searchParameters: searchParams,
    liveSearch: liveSearchEnabled,
    originalConfig: config,
  );
}