Class: ActiveAgent::Generation

Inherits:
Object
  • Object
show all
Defined in:
lib/active_agent/generation.rb

Overview

Deferred agent action ready for synchronous or asynchronous execution.

Returned when calling agent actions. Provides methods to execute immediately or queue for background processing, plus access to prompt properties before execution.

Examples:

Synchronous generation

generation = MyAgent.with(message: "Hello").greet
response = generation.prompt_now

Asynchronous generation

MyAgent.with(message: "Hello").greet.prompt_later(queue: :prompts)

Accessing prompt properties before generation

generation = MyAgent.prompt(message: "Hello")
generation.message.content  # => "Hello"
generation.messages         # => [...]

Direct Known Subclasses

Parameterized::Generation

Instance Method Summary collapse

Constructor Details

#initialize(agent_class, action_name, *args, **kwargs) ⇒ Generation

Returns a new instance of Generation.

Parameters:

  • agent_class (Class)
  • action_name (Symbol)
  • args (Array)
  • kwargs (Hash)


29
30
31
# File 'lib/active_agent/generation.rb', line 29

def initialize(agent_class, action_name, *args, **kwargs)
  self.agent_class, self.action_name, self.args, self.kwargs = agent_class, action_name, args, kwargs
end

Instance Method Details

#actionsArray

Returns:

  • (Array)


76
77
78
# File 'lib/active_agent/generation.rb', line 76

def actions
  prompt_options[:actions] || []
end

#embed_later(options = {}) ⇒ Object

Queues embedding generation for background execution.

Parameters:

  • options (Hash) (defaults to: {})

    job options (queue, priority, wait, etc.)

Returns:

  • (Object)

    enqueued job instance

Raises:

  • (RuntimeError)

    if agent was accessed before queueing



129
130
131
# File 'lib/active_agent/generation.rb', line 129

def embed_later(options = {})
  enqueue_generation :embed_now, options
end

#embed_nowActiveAgent::Providers::Response

Executes embedding generation synchronously.

Returns:

  • (ActiveAgent::Providers::Response)

    embedding response with vector data



120
121
122
# File 'lib/active_agent/generation.rb', line 120

def embed_now
  agent.process_embed
end

#instructionsObject



53
54
55
# File 'lib/active_agent/generation.rb', line 53

def instructions
  agent.prompt_view_instructions(prompt_options[:instructions])
end

#messageActiveAgent::Providers::Common::Messages::Base?

Returns the last message with consistent ‘.content` access.

Wraps various message formats (String, Hash, objects) using the common MessageType for uniform access patterns.



68
69
70
71
72
73
# File 'lib/active_agent/generation.rb', line 68

def message
  last_message = messages.last
  return nil unless last_message

  message_type.cast(last_message)
end

#messagesArray

Returns:

  • (Array)


58
59
60
# File 'lib/active_agent/generation.rb', line 58

def messages
  prompt_options[:messages] || []
end

#optionsHash

Returns configuration options excluding messages and actions.

Returns:

  • (Hash)

    configuration options excluding messages and actions



49
50
51
# File 'lib/active_agent/generation.rb', line 49

def options
  prompt_options.except(:messages, :actions)
end

#processed?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/active_agent/generation.rb', line 34

def processed?
  !!@agent
end

#prompt_later(options = {}) ⇒ Object Also known as: generate_later

Queues for background execution.

Parameters:

  • options (Hash) (defaults to: {})

    job options (queue, priority, wait, etc.)

Returns:

  • (Object)

    enqueued job instance

Raises:

  • (RuntimeError)

    if agent was accessed before queueing



101
102
103
# File 'lib/active_agent/generation.rb', line 101

def prompt_later(options = {})
  enqueue_generation :prompt_now, options
end

#prompt_nowActiveAgent::Providers::Response Also known as: generate_now

Executes prompt generation synchronously.

Returns:

  • (ActiveAgent::Providers::Response)


91
92
93
# File 'lib/active_agent/generation.rb', line 91

def prompt_now
  agent.process_prompt
end

#prompt_now!ActiveAgent::Providers::Response Also known as: generate_now!

Executes prompt generation synchronously with immediate processing.

Returns:

  • (ActiveAgent::Providers::Response)


83
84
85
# File 'lib/active_agent/generation.rb', line 83

def prompt_now!
  agent.process_prompt!
end

#prompt_optionsHash

Accesses prompt options by processing the agent if needed.

Lazily processes the agent on first access, allowing inspection of prompt properties before executing generation.

Returns:

  • (Hash)

    with :messages, :actions, and configuration keys



44
45
46
# File 'lib/active_agent/generation.rb', line 44

def prompt_options
  agent.prompt_options
end

#prompt_previewString Also known as: preview_prompt

Generates a preview of the prompt without executing generation.

Processes the agent action and renders the prompt configuration as markdown for debugging and inspection.

Returns:

  • (String)

    markdown-formatted preview



112
113
114
# File 'lib/active_agent/generation.rb', line 112

def prompt_preview
  agent.preview_prompt
end