Class: NerRuby::Models::Api

Inherits:
Base
  • Object
show all
Defined in:
lib/ner_ruby/models/api.rb

Constant Summary collapse

PROVIDERS =
{
  openai: {
    url: "https://api.openai.com/v1/chat/completions",
    model: "gpt-4o"
  },
  huggingface: {
    url: "https://api-inference.huggingface.co/models/",
    model: "dslim/bert-base-NER"
  }
}.freeze

Instance Method Summary collapse

Methods inherited from Base

#predict

Constructor Details

#initialize(provider: :openai, api_key: nil, model: nil) ⇒ Api

Returns a new instance of Api.

Raises:



21
22
23
24
25
26
27
# File 'lib/ner_ruby/models/api.rb', line 21

def initialize(provider: :openai, api_key: nil, model: nil)
  @provider = provider
  @api_key = api_key || ENV["#{provider.to_s.upcase}_API_KEY"]
  @model = model || PROVIDERS.dig(provider, :model)

  raise Error, "API key is required for #{provider}" unless @api_key
end

Instance Method Details

#recognize(text, labels: nil) ⇒ Object



29
30
31
32
33
34
35
36
37
# File 'lib/ner_ruby/models/api.rb', line 29

def recognize(text, labels: nil)
  return [] if text.nil? || text.strip.empty?

  case @provider
  when :openai then recognize_openai(text, labels: labels)
  when :huggingface then recognize_huggingface(text)
  else raise Error, "Unknown provider: #{@provider}"
  end
end