Class: LLMed::LLM::Agent

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

Instance Method Summary collapse

Constructor Details

#initialize(llm_instance) ⇒ Agent

Returns a new instance of Agent.



22
23
24
25
26
27
# File 'lib/llm.rb', line 22

def initialize(llm_instance)
  @llm_instance = llm_instance
  @assistant = Langchain::Assistant.new(
    llm: @llm_instance.llm
  )
end

Instance Method Details

#chat(messages: []) ⇒ Object



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

def chat(messages: [])
  llm_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

  @assistant.add_messages(messages: llm_messages)
  assistant_messages = @assistant.run!

  assistant_response = assistant_messages.select { |m| m.role == 'assistant' }.last

  stop = Time.now
  Response.new({ provider: @llm_instance.provider,
                 model: @llm_instance.model,
                 duration_seconds: stop.to_i - start.to_i,
                 source_code: @llm_instance.source_code(assistant_response.content),
                 total_tokens: @assistant.total_tokens })
end