Class: LangExtract::Extractor

Inherits:
Object
  • Object
show all
Defined in:
lib/langextract/extractor.rb

Constant Summary collapse

DEFAULT_MAX_CHAR_BUFFER =
Core::SentenceAwareChunker::DEFAULT_MAX_CHAR_BUFFER

Instance Method Summary collapse

Constructor Details

#initialize(model:, prompt_description:, examples: [], additional_context: nil, max_char_buffer: DEFAULT_MAX_CHAR_BUFFER, context_window_chars: 0, extraction_passes: 1, format: :auto, strict: true, prompt_validation: :warning, suppress_parse_errors: false, suppress_alignment_errors: true, allow_overlaps: false, fuzzy_threshold: Core::Resolver::DEFAULT_FUZZY_THRESHOLD, tokenizer: Core::UnicodeTokenizer.new) ⇒ Extractor

Returns a new instance of Extractor.



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/langextract/extractor.rb', line 12

def initialize(model:, prompt_description:, examples: [], additional_context: nil,
               max_char_buffer: DEFAULT_MAX_CHAR_BUFFER, context_window_chars: 0,
               extraction_passes: 1, format: :auto, strict: true,
               prompt_validation: :warning, suppress_parse_errors: false,
               suppress_alignment_errors: true, allow_overlaps: false,
               fuzzy_threshold: Core::Resolver::DEFAULT_FUZZY_THRESHOLD,
               tokenizer: Core::UnicodeTokenizer.new)
  @model = model
  @prompt_description = prompt_description
  @examples = examples
  @additional_context = additional_context
  @max_char_buffer = max_char_buffer
  @context_window_chars = context_window_chars
  @extraction_passes = extraction_passes
  @format = format
  @strict = strict
  @prompt_validation = prompt_validation
  @suppress_parse_errors = suppress_parse_errors
  @suppress_alignment_errors = suppress_alignment_errors
  @allow_overlaps = allow_overlaps
  @fuzzy_threshold = fuzzy_threshold
  @tokenizer = tokenizer
  validate_model!
end

Instance Method Details

#extract(text: nil, documents: nil) ⇒ Object



37
38
39
40
41
42
# File 'lib/langextract/extractor.rb', line 37

def extract(text: nil, documents: nil)
  coerced_documents = coerce_documents(text, documents)
  annotated = coerced_documents.map { |document| extract_document(document) }

  documents.nil? && !text.nil? ? annotated.first : annotated
end