17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
# File 'app/services/collavre_openclaw/ai_client_extension.rb', line 17
def chat(messages_input, tools: [], &block)
normalized_vendor = vendor.to_s.downcase
messages_data = normalize_messages_input(messages_input)
adapter_class = self.class.adapter_registry[normalized_vendor]
if adapter_class
resolved_system_prompt = messages_data.key?(:system_prompt) ? messages_data[:system_prompt] : system_prompt
user = context&.dig(:user)
adapter = adapter_class.new(
user: user,
system_prompt: resolved_system_prompt,
context: context
)
response_content = nil
error_message = nil
begin
response_content = adapter.chat(messages_data, &block)
rescue StandardError => e
error_message = e.message
raise
ensure
log_interaction(
messages: messages_data[:messages],
tools: [],
response_content: response_content,
error_message: error_message,
input_tokens: nil,
output_tokens: nil
)
end
return response_content
end
super(messages_data[:messages], tools: tools, &block)
end
|