Module: ActionAI::Parameterized
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 account_invitation(inviter, invitee)
@account = inviter.account
@inviter = inviter
@invitee = invitee
end
def project_invitation(project, inviter, invitee)
@account = inviter.account
@project = project
@inviter = inviter
@invitee = invitee
@summarizer = ProjectInvitationSummarizer.new(@project.bucket)
end
def bulk_project_invitation(projects, inviter, invitee)
@account = inviter.account
@projects = projects.sort_by(&:name)
@inviter = inviter
@invitee = invitee
end
end
InvitationAgent.account_invitation(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].account }
def account_invitation
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).account_invitation.later
Defined Under Namespace
Modules: ClassMethods Classes: Agent, PromptExecution