Class: Retab::Classifications

Inherits:
Object
  • Object
show all
Defined in:
lib/retab/classifications.rb

Instance Method Summary collapse

Constructor Details

#initialize(client) ⇒ Classifications

Returns a new instance of Classifications.



9
10
11
# File 'lib/retab/classifications.rb', line 9

def initialize(client)
  @client = client
end

Instance Method Details

#create(document:, categories:, model: nil, first_n_pages: nil, instructions: nil, n_consensus: nil, bust_cache: nil, request_options: {}) ⇒ Retab::Classification

Create Classification

Parameters:

  • document (Retab::MimeData, Pathname, IO, String, Hash)

    The document to classify

  • categories (Array<Retab::Category>)

    The categories to classify the document into

  • model (String, nil) (defaults to: nil)

    The model to use for classification

  • first_n_pages (Integer, nil) (defaults to: nil)

    Only use the first N pages of the document for classification. Useful for large documents where classification can be determined from early pages.

  • instructions (String, nil) (defaults to: nil)

    Free-form instructions appended to the system prompt to steer the classification.

  • n_consensus (Integer, nil) (defaults to: nil)

    Number of classification runs to use for consensus voting. Uses deterministic single-pass when set to 1.

  • bust_cache (Boolean, nil) (defaults to: nil)

    If true, skip the LLM cache and force a fresh completion

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

    (see Retab::Types::RequestOptions)

Returns:



79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/retab/classifications.rb', line 79

def create(
  document:,
  categories:,
  model: nil,
  first_n_pages: nil,
  instructions: nil,
  n_consensus: nil,
  bust_cache: nil,
  request_options: {}
)
  document = Retab::MimeData.coerce(document) unless document.nil?
  body = {
    'document' => document,
    'categories' => categories,
    'model' => model,
    'first_n_pages' => first_n_pages,
    'instructions' => instructions,
    'n_consensus' => n_consensus,
    'bust_cache' => bust_cache
  }.compact
  response = @client.request(
    method: :post,
    path: '/v1/classifications',
    auth: true,
    body: body,
    request_options: request_options
  )
  result = Retab::Classification.new(response.body)
  result.last_response = Retab::Types::ApiResponse.new(http_status: response.code.to_i, http_headers: response.each_header.to_h, request_id: response["x-request-id"])
  result
end

#delete(classification_id:, request_options: {}) ⇒ void

This method returns an undefined value.

Delete Classification

Parameters:

  • classification_id (String)
  • request_options (Hash) (defaults to: {})

    (see Retab::Types::RequestOptions)



134
135
136
137
138
139
140
141
142
143
144
145
# File 'lib/retab/classifications.rb', line 134

def delete(
  classification_id:,
  request_options: {}
)
  response = @client.request(
    method: :delete,
    path: "/v1/classifications/#{Retab::Util.encode_path(classification_id)}",
    auth: true,
    request_options: request_options
  )
  nil
end

#get(classification_id:, request_options: {}) ⇒ Retab::Classification

Get Classification

Parameters:

  • classification_id (String)
  • request_options (Hash) (defaults to: {})

    (see Retab::Types::RequestOptions)

Returns:



115
116
117
118
119
120
121
122
123
124
125
126
127
128
# File 'lib/retab/classifications.rb', line 115

def get(
  classification_id:,
  request_options: {}
)
  response = @client.request(
    method: :get,
    path: "/v1/classifications/#{Retab::Util.encode_path(classification_id)}",
    auth: true,
    request_options: request_options
  )
  result = Retab::Classification.new(response.body)
  result.last_response = Retab::Types::ApiResponse.new(http_status: response.code.to_i, http_headers: response.each_header.to_h, request_id: response["x-request-id"])
  result
end

#list(before: nil, after: nil, limit: 10, order: 'desc', filename: nil, from_date: nil, to_date: nil, request_options: {}) ⇒ Retab::Types::ListStruct<Retab::Classification>

List Classifications

Parameters:

  • before (String, nil) (defaults to: nil)
  • after (String, nil) (defaults to: nil)
  • limit (Integer, nil) (defaults to: 10)
  • order (Retab::Types::ClassificationsOrder, nil) (defaults to: 'desc')
  • filename (String, nil) (defaults to: nil)
  • from_date (String, nil) (defaults to: nil)
  • to_date (String, nil) (defaults to: nil)
  • request_options (Hash) (defaults to: {})

    (see Retab::Types::RequestOptions)

Returns:



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/retab/classifications.rb', line 23

def list(
  before: nil,
  after: nil,
  limit: 10,
  order: 'desc',
  filename: nil,
  from_date: nil,
  to_date: nil,
  request_options: {}
)
  params = {
    'before' => before,
    'after' => after,
    'limit' => limit,
    'order' => order,
    'filename' => filename,
    'from_date' => from_date,
    'to_date' => to_date
  }.compact
  response = @client.request(
    method: :get,
    path: '/v1/classifications',
    auth: true,
    params: params,
    request_options: request_options
  )
  fetch_next = ->(cursor) {
    list(
      before: before,
      after: cursor,
      limit: limit,
      order: order,
      filename: filename,
      from_date: from_date,
      to_date: to_date,
      request_options: request_options
    )
  }
  Retab::Types::ListStruct.from_response(
    response,
    model: Retab::Classification,
    filters: { before: before, limit: limit, order: order, filename: filename, from_date: from_date, to_date: to_date },
    fetch_next: fetch_next
  )
end