Class: Agentic::LlmAssistedCompositionStrategy

Inherits:
AgentCompositionStrategy show all
Defined in:
lib/agentic/llm_assisted_composition_strategy.rb

Overview

LLM-assisted strategy for agent composition Uses an LLM to analyze requirements and suggest capabilities

Instance Method Summary collapse

Constructor Details

#initialize(llm_config_or_client = nil) ⇒ LlmAssistedCompositionStrategy

Initialize a new LLM-assisted composition strategy

Parameters:

  • llm_config_or_client (LlmConfig, LlmClient, nil) (defaults to: nil)

    The LLM configuration or client to use



9
10
11
12
13
14
15
# File 'lib/agentic/llm_assisted_composition_strategy.rb', line 9

def initialize(llm_config_or_client = nil)
  if llm_config_or_client.is_a?(LlmClient)
    @llm_client = llm_config_or_client
  else
    @llm_config = llm_config_or_client || LlmConfig.new
  end
end

Instance Method Details

#select_capabilities(requirements, registry) ⇒ Array<Hash>

Select capabilities based on requirements

Parameters:

  • requirements (Hash)

    The capability requirements

  • registry (AgentCapabilityRegistry)

    The capability registry

Returns:

  • (Array<Hash>)

    The selected capabilities



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/agentic/llm_assisted_composition_strategy.rb', line 21

def select_capabilities(requirements, registry)
  # Get all available capabilities from the registry
  available_capabilities = registry.list

  # Use existing client or create a new one
  client = @llm_client || Agentic.client(@llm_config)

  # Create a prompt for the LLM
  prompt = build_llm_prompt(requirements, available_capabilities)

  # Get LLM response
  response = client.complete(
    prompt: prompt,
    response_format: {type: "json"}
  )

  # Parse the response
  suggested_capabilities = parse_llm_response(response.to_s, registry)

  # Fall back to default strategy if LLM suggestion fails
  if suggested_capabilities.empty?
    Agentic.logger.warn("LLM capability suggestion failed, falling back to default strategy")
    return DefaultCompositionStrategy.new.select_capabilities(requirements, registry)
  end

  # Add dependencies
  add_dependencies(suggested_capabilities, registry)
end