Module: ActionAI::Parameterized

Extended by:
ActiveSupport::Concern
Included in:
Agent
Defined in:
lib/action_ai/parameterized.rb

Overview

Action AI Parameterized

Provides the option to parameterize AI agents in order to share instance variable setup, processing, and common defaults.

Consider this example that does not use parameterization:

class InvitationAgent < ApplicationAI
def (inviter, invitee)
  @account = inviter.
  @inviter = inviter
  @invitee = invitee
end

def project_invitation(project, inviter, invitee)
  @account = inviter.
  @project = project
  @inviter = inviter
  @invitee = invitee
  @summarizer = ProjectInvitationSummarizer.new(@project.bucket)
end

def bulk_project_invitation(projects, inviter, invitee)
  @account  = inviter.
  @projects = projects.sort_by(&:name)
  @inviter  = inviter
  @invitee  = invitee
end
end

InvitationAgent.(person_a, person_b).later

Using parameterized agents, this can be rewritten as:

class InvitationAgent < ApplicationAI
before_action { @inviter, @invitee = params[:inviter], params[:invitee] }
before_action { @account = params[:inviter]. }

def 
end

def project_invitation
  @project = params[:project]
  @summarizer = ProjectInvitationSummarizer.new(@project.bucket)
end

def bulk_project_invitation
  @projects = params[:projects].sort_by(&:name)
end
end

InvitationAgent.with(inviter: person_a, invitee: person_b)..later

Defined Under Namespace

Modules: ClassMethods Classes: Agent, PromptExecution