module RubyLLM::ActiveRecord::ActsAs
def acts_as_chat(message_class: 'Message', tool_call_class: 'ToolCall')
def acts_as_chat(message_class: 'Message', tool_call_class: 'ToolCall') include ChatMethods @message_class = message_class.to_s @tool_call_class = tool_call_class.to_s has_many :messages, -> { order(created_at: :asc) }, class_name: @message_class, dependent: :destroy delegate :complete, :add_message, to: :to_llm end
def acts_as_message(chat_class: 'Chat', tool_call_class: 'ToolCall', touch_chat: false) # rubocop:disable Metrics/MethodLength
def acts_as_message(chat_class: 'Chat', tool_call_class: 'ToolCall', touch_chat: false) # rubocop:disable Metrics/MethodLength include MessageMethods @chat_class = chat_class.to_s @tool_call_class = tool_call_class.to_s belongs_to :chat, class_name: @chat_class, touch: touch_chat has_many :tool_calls, class_name: @tool_call_class, dependent: :destroy belongs_to :parent_tool_call, class_name: @tool_call_class, foreign_key: 'tool_call_id', optional: true, inverse_of: :result delegate :tool_call?, :tool_result?, :tool_results, to: :to_llm end
def acts_as_tool_call(message_class: 'Message')
def acts_as_tool_call(message_class: 'Message') @message_class = message_class.to_s belongs_to :message, class_name: @message_class has_one :result, class_name: @message_class, foreign_key: 'tool_call_id', inverse_of: :parent_tool_call, dependent: :nullify end