6
7
8
9
10
11
12
13
14
15
16
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
|
# File 'lib/ruby_llm/template/chat_extension.rb', line 6
def with_template(template_name, context = {})
loader = RubyLLM::Template::Loader.new(template_name)
unless loader.template_exists?
raise RubyLLM::Template::Error, "Template '#{template_name}' not found in #{RubyLLM::Template.configuration.template_directory}"
end
template_order = ["system", "user", "assistant"]
template_order.each do |role|
next unless loader.available_roles.include?(role)
content = loader.render_template(role, context)
next unless content && !content.strip.empty?
add_message(role: role, content: content.strip)
end
if loader.available_roles.include?("schema")
schema_result = loader.render_template("schema", context)
if schema_result
if schema_result.respond_to?(:to_json_schema)
with_schema(schema_result.to_json_schema)
else
with_schema(schema_result)
end
end
end
self
end
|