Class: Chatpdf::Session::Conversation

Inherits:
Object
  • Object
show all
Defined in:
lib/chatpdf/session/conversation.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(file_path: nil, url: nil, source_id: nil) ⇒ Conversation

Returns a new instance of Conversation.



6
7
8
9
10
11
12
# File 'lib/chatpdf/session/conversation.rb', line 6

def initialize(file_path: nil, url: nil, source_id: nil)
  @file_path = file_path
  @url = url
  @questions = []
  @source_id = source_id
  validate_params
end

Instance Attribute Details

#file_pathObject (readonly)

Returns the value of attribute file_path.



4
5
6
# File 'lib/chatpdf/session/conversation.rb', line 4

def file_path
  @file_path
end

#questionsObject (readonly)

Returns the value of attribute questions.



4
5
6
# File 'lib/chatpdf/session/conversation.rb', line 4

def questions
  @questions
end

#source_idObject (readonly)

Returns the value of attribute source_id.



4
5
6
# File 'lib/chatpdf/session/conversation.rb', line 4

def source_id
  @source_id
end

#urlObject (readonly)

Returns the value of attribute url.



4
5
6
# File 'lib/chatpdf/session/conversation.rb', line 4

def url
  @url
end

Instance Method Details

#ask(question, references: false) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/chatpdf/session/conversation.rb', line 14

def ask(question, references: false)
  add_pdf if source_id.nil?

  question = Question.new(question)
  @questions << question

  response = client.chat(source_id, [Chatpdf::Message.new("#{question}").to_h]) unless references
  response = client.chat_with_reference(source_id, [Chatpdf::Message.new("#{question}").to_h]) if references

  question.answer = Answer.new(response)

  question.answer.to_s
end

#delete_sourceObject



28
29
30
31
32
# File 'lib/chatpdf/session/conversation.rb', line 28

def delete_source
  return unless source_id

  client.delete_source([source_id])
end

#serialiseObject



34
35
36
37
38
39
40
41
# File 'lib/chatpdf/session/conversation.rb', line 34

def serialise
  {
    file_path: file_path,
    url: url,
    source_id: source_id,
    questions: questions.map(&:serialise)
  }
end