Class: LLMed::LLM::OpenAI

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

Direct Known Subclasses

Anthropic, LikeOpenAI

Constant Summary collapse

DEFAULT_URI_BASE =
"https://api.openai.com/".freeze
MAX_TOKENS =
8192

Instance Method Summary collapse

Constructor Details

#initialize(**args) ⇒ OpenAI

Returns a new instance of OpenAI.



26
27
28
29
# File 'lib/llm.rb', line 26

def initialize(**args)
  @logger = args.delete(:logger)
  @llm = Langchain::LLM::OpenAI.new(**llm_arguments(args))
end

Instance Method Details

#chat(messages: []) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/llm.rb', line 31

def chat(messages: [])
  messages = messages.map do |m|
    case m
    when Message::System
      { role: 'system', content: m.content }
    when Message::User
      { role: 'user', content: m.content }
    end
  end

  start = Time.now
  llm_response = @llm.chat(messages: messages, max_tokens: MAX_TOKENS)
  warn_token_limits(llm_response)

  stop = Time.now
  Response.new({ provider: provider,
                 model: @llm.chat_parameters[:model],
                 duration_seconds: stop.to_i - start.to_i,
                 source_code: source_code(llm_response.chat_completion),
                 total_tokens: llm_response.total_tokens })
end