Class: LLMs::Conversation
- Inherits:
-
Object
- Object
- LLMs::Conversation
- Defined in:
- lib/llms/conversation.rb
Instance Attribute Summary collapse
-
#system_message ⇒ Object
readonly
Returns the value of attribute system_message.
Instance Method Summary collapse
- #add_assistant_message(content, tool_calls = nil) ⇒ Object
- #add_conversation_message(message) ⇒ Object
- #add_user_message(content, tool_results = nil) ⇒ Object
- #available_tools ⇒ Object
- #find_tool_call(tool_call_id) ⇒ Object
-
#initialize ⇒ Conversation
constructor
A new instance of Conversation.
- #last_message ⇒ Object
- #messages(include_system_message: false) ⇒ Object
- #pending? ⇒ Boolean
- #set_available_tools(tools) ⇒ Object
- #set_system_message(content) ⇒ Object
Constructor Details
#initialize ⇒ Conversation
Returns a new instance of Conversation.
10 11 12 13 14 |
# File 'lib/llms/conversation.rb', line 10 def initialize = [] = nil @available_tools = nil end |
Instance Attribute Details
#system_message ⇒ Object (readonly)
Returns the value of attribute system_message.
8 9 10 |
# File 'lib/llms/conversation.rb', line 8 def end |
Instance Method Details
#add_assistant_message(content, tool_calls = nil) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/llms/conversation.rb', line 46 def (content, tool_calls = nil) if content.is_a?(LLMs::ConversationMessage) unless tool_calls.nil? raise "tool_calls argument not allowed when adding a ConversationMessage" end unless content.assistant? raise "message role must be 'assistant' when calling add_assistant_message with a ConversationMessage" end (content) else unless tool_calls.nil? || tool_calls.all? { |tc| tc.is_a?(LLMs::ConversationToolCall) } raise "tool_calls argument must be an array of ConversationToolCall" end (LLMs::ConversationMessage.new("assistant", content, tool_calls, nil)) end end |
#add_conversation_message(message) ⇒ Object
63 64 65 66 |
# File 'lib/llms/conversation.rb', line 63 def () raise "message is not a ConversationMessage" unless .is_a?(LLMs::ConversationMessage) << end |
#add_user_message(content, tool_results = nil) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/llms/conversation.rb', line 29 def (content, tool_results = nil) if content.is_a?(LLMs::ConversationMessage) unless tool_results.nil? raise "tool_results argument not allowed when adding a ConversationMessage" end unless content.user? raise "message role must be 'user' when calling add_user_message with a ConversationMessage" end (content) else unless tool_results.nil? || tool_results.all? { |tr| tr.is_a?(LLMs::ConversationToolResult) } raise "tool_results argument must be an array of ConversationToolResult" end (LLMs::ConversationMessage.new("user", content, nil, tool_results)) end end |
#available_tools ⇒ Object
72 73 74 |
# File 'lib/llms/conversation.rb', line 72 def available_tools @available_tools&.dup end |
#find_tool_call(tool_call_id) ⇒ Object
90 91 92 93 94 95 96 97 |
# File 'lib/llms/conversation.rb', line 90 def find_tool_call(tool_call_id) .each do || .tool_calls&.each do |tool_call| return tool_call if tool_call.tool_call_id == tool_call_id end end nil end |
#last_message ⇒ Object
86 87 88 |
# File 'lib/llms/conversation.rb', line 86 def .last&.dup end |
#messages(include_system_message: false) ⇒ Object
76 77 78 79 80 81 82 |
# File 'lib/llms/conversation.rb', line 76 def (include_system_message: false) m = .dup if && m.unshift(LLMs::ConversationMessage.new("system", , nil, nil)) end m end |
#pending? ⇒ Boolean
16 17 18 |
# File 'lib/llms/conversation.rb', line 16 def pending? !!.last&.user? end |
#set_available_tools(tools) ⇒ Object
25 26 27 |
# File 'lib/llms/conversation.rb', line 25 def set_available_tools(tools) @available_tools = tools end |
#set_system_message(content) ⇒ Object
20 21 22 23 |
# File 'lib/llms/conversation.rb', line 20 def (content) raise "content is not a String" unless content.is_a?(String) = content end |