41 lines
1.1 KiB
Ruby
41 lines
1.1 KiB
Ruby
class Ai::Tool < RubyLLM::Tool
|
|
include Rails.application.routes.url_helpers
|
|
|
|
private
|
|
def paginated_response(records, page:, ordered_by:, per_page: nil, &block)
|
|
page = GearedPagination::Recordset.new(records, ordered_by: ordered_by, per_page: per_page).page(page)
|
|
|
|
response = [ "There are #{page.recordset.records_count} records in total." ]
|
|
|
|
if page.only? || page.last?
|
|
response << "This is the last page of results."
|
|
else
|
|
response << "This is one page of results."
|
|
response << "To see more, use this cursor for the next page:"
|
|
response << "```"
|
|
response << page.next_param
|
|
response << "```"
|
|
end
|
|
|
|
response << nil
|
|
response << "Records:"
|
|
response << "```"
|
|
response << page.records.map(&block).to_json
|
|
response << "```"
|
|
|
|
response.join("\n")
|
|
end
|
|
|
|
def default_url_options
|
|
options = Rails.application.default_url_options.merge(
|
|
script_name: "/#{ApplicationRecord.current_tenant}"
|
|
)
|
|
|
|
unless options.key?(:host)
|
|
options[:only_path] = true
|
|
end
|
|
|
|
options
|
|
end
|
|
end
|