lex-llm 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/CHANGELOG.md +12 -1
- data/Gemfile +1 -19
- data/README.md +25 -26
- data/lex-llm.gemspec +2 -2
- data/lib/legion/extensions/llm/agent.rb +366 -0
- data/lib/legion/extensions/llm/aliases.rb +42 -0
- data/lib/legion/extensions/llm/attachment.rb +229 -0
- data/lib/legion/extensions/llm/chat.rb +355 -0
- data/lib/legion/extensions/llm/chunk.rb +10 -0
- data/lib/legion/extensions/llm/configuration.rb +82 -0
- data/lib/legion/extensions/llm/connection.rb +134 -0
- data/lib/legion/extensions/llm/content.rb +81 -0
- data/lib/legion/extensions/llm/context.rb +33 -0
- data/lib/legion/extensions/llm/embedding.rb +33 -0
- data/lib/legion/extensions/llm/error.rb +116 -0
- data/lib/legion/extensions/llm/image.rb +109 -0
- data/lib/legion/extensions/llm/message.rb +111 -0
- data/lib/legion/extensions/llm/mime_type.rb +75 -0
- data/lib/legion/extensions/llm/model/info.rb +117 -0
- data/lib/legion/extensions/llm/model/modalities.rb +26 -0
- data/lib/legion/extensions/llm/model/pricing.rb +52 -0
- data/lib/legion/extensions/llm/model/pricing_category.rb +50 -0
- data/lib/legion/extensions/llm/model/pricing_tier.rb +37 -0
- data/lib/legion/extensions/llm/model.rb +11 -0
- data/lib/legion/extensions/llm/models.rb +514 -0
- data/lib/{lex_llm → legion/extensions/llm}/models_schema.json +1 -1
- data/lib/legion/extensions/llm/moderation.rb +60 -0
- data/lib/legion/extensions/llm/provider/open_ai_compatible.rb +276 -0
- data/lib/legion/extensions/llm/provider.rb +337 -0
- data/lib/legion/extensions/llm/routing/lane_key.rb +57 -0
- data/lib/legion/extensions/llm/routing/model_offering.rb +173 -0
- data/lib/legion/extensions/llm/routing.rb +11 -0
- data/lib/legion/extensions/llm/stream_accumulator.rb +209 -0
- data/lib/legion/extensions/llm/streaming.rb +181 -0
- data/lib/legion/extensions/llm/thinking.rb +53 -0
- data/lib/legion/extensions/llm/tokens.rb +51 -0
- data/lib/legion/extensions/llm/tool.rb +258 -0
- data/lib/legion/extensions/llm/tool_call.rb +29 -0
- data/lib/legion/extensions/llm/transcription.rb +39 -0
- data/lib/legion/extensions/llm/utils.rb +95 -0
- data/lib/legion/extensions/llm/version.rb +9 -0
- data/lib/legion/extensions/llm.rb +85 -6
- metadata +40 -122
- data/lib/generators/lex_llm/agent/agent_generator.rb +0 -36
- data/lib/generators/lex_llm/agent/templates/agent.rb.tt +0 -6
- data/lib/generators/lex_llm/agent/templates/instructions.txt.erb.tt +0 -0
- data/lib/generators/lex_llm/chat_ui/chat_ui_generator.rb +0 -256
- data/lib/generators/lex_llm/chat_ui/templates/controllers/chats_controller.rb.tt +0 -38
- data/lib/generators/lex_llm/chat_ui/templates/controllers/messages_controller.rb.tt +0 -21
- data/lib/generators/lex_llm/chat_ui/templates/controllers/models_controller.rb.tt +0 -14
- data/lib/generators/lex_llm/chat_ui/templates/helpers/messages_helper.rb.tt +0 -25
- data/lib/generators/lex_llm/chat_ui/templates/jobs/chat_response_job.rb.tt +0 -12
- data/lib/generators/lex_llm/chat_ui/templates/tailwind/views/chats/_chat.html.erb.tt +0 -16
- data/lib/generators/lex_llm/chat_ui/templates/tailwind/views/chats/_form.html.erb.tt +0 -31
- data/lib/generators/lex_llm/chat_ui/templates/tailwind/views/chats/index.html.erb.tt +0 -31
- data/lib/generators/lex_llm/chat_ui/templates/tailwind/views/chats/new.html.erb.tt +0 -9
- data/lib/generators/lex_llm/chat_ui/templates/tailwind/views/chats/show.html.erb.tt +0 -27
- data/lib/generators/lex_llm/chat_ui/templates/tailwind/views/messages/_assistant.html.erb.tt +0 -14
- data/lib/generators/lex_llm/chat_ui/templates/tailwind/views/messages/_content.html.erb.tt +0 -1
- data/lib/generators/lex_llm/chat_ui/templates/tailwind/views/messages/_error.html.erb.tt +0 -13
- data/lib/generators/lex_llm/chat_ui/templates/tailwind/views/messages/_form.html.erb.tt +0 -23
- data/lib/generators/lex_llm/chat_ui/templates/tailwind/views/messages/_system.html.erb.tt +0 -10
- data/lib/generators/lex_llm/chat_ui/templates/tailwind/views/messages/_tool.html.erb.tt +0 -2
- data/lib/generators/lex_llm/chat_ui/templates/tailwind/views/messages/_tool_calls.html.erb.tt +0 -4
- data/lib/generators/lex_llm/chat_ui/templates/tailwind/views/messages/_user.html.erb.tt +0 -14
- data/lib/generators/lex_llm/chat_ui/templates/tailwind/views/messages/tool_calls/_default.html.erb.tt +0 -13
- data/lib/generators/lex_llm/chat_ui/templates/tailwind/views/messages/tool_results/_default.html.erb.tt +0 -21
- data/lib/generators/lex_llm/chat_ui/templates/tailwind/views/models/_model.html.erb.tt +0 -17
- data/lib/generators/lex_llm/chat_ui/templates/tailwind/views/models/index.html.erb.tt +0 -40
- data/lib/generators/lex_llm/chat_ui/templates/tailwind/views/models/show.html.erb.tt +0 -27
- data/lib/generators/lex_llm/chat_ui/templates/views/chats/_chat.html.erb.tt +0 -16
- data/lib/generators/lex_llm/chat_ui/templates/views/chats/_form.html.erb.tt +0 -29
- data/lib/generators/lex_llm/chat_ui/templates/views/chats/index.html.erb.tt +0 -28
- data/lib/generators/lex_llm/chat_ui/templates/views/chats/new.html.erb.tt +0 -11
- data/lib/generators/lex_llm/chat_ui/templates/views/chats/show.html.erb.tt +0 -25
- data/lib/generators/lex_llm/chat_ui/templates/views/messages/_assistant.html.erb.tt +0 -9
- data/lib/generators/lex_llm/chat_ui/templates/views/messages/_content.html.erb.tt +0 -1
- data/lib/generators/lex_llm/chat_ui/templates/views/messages/_error.html.erb.tt +0 -8
- data/lib/generators/lex_llm/chat_ui/templates/views/messages/_form.html.erb.tt +0 -21
- data/lib/generators/lex_llm/chat_ui/templates/views/messages/_system.html.erb.tt +0 -6
- data/lib/generators/lex_llm/chat_ui/templates/views/messages/_tool.html.erb.tt +0 -2
- data/lib/generators/lex_llm/chat_ui/templates/views/messages/_tool_calls.html.erb.tt +0 -4
- data/lib/generators/lex_llm/chat_ui/templates/views/messages/_user.html.erb.tt +0 -9
- data/lib/generators/lex_llm/chat_ui/templates/views/messages/create.turbo_stream.erb.tt +0 -7
- data/lib/generators/lex_llm/chat_ui/templates/views/messages/tool_calls/_default.html.erb.tt +0 -8
- data/lib/generators/lex_llm/chat_ui/templates/views/messages/tool_results/_default.html.erb.tt +0 -16
- data/lib/generators/lex_llm/chat_ui/templates/views/models/_model.html.erb.tt +0 -15
- data/lib/generators/lex_llm/chat_ui/templates/views/models/index.html.erb.tt +0 -38
- data/lib/generators/lex_llm/chat_ui/templates/views/models/show.html.erb.tt +0 -17
- data/lib/generators/lex_llm/generator_helpers.rb +0 -214
- data/lib/generators/lex_llm/install/install_generator.rb +0 -109
- data/lib/generators/lex_llm/install/templates/add_references_to_chats_tool_calls_and_messages_migration.rb.tt +0 -9
- data/lib/generators/lex_llm/install/templates/chat_model.rb.tt +0 -3
- data/lib/generators/lex_llm/install/templates/create_chats_migration.rb.tt +0 -7
- data/lib/generators/lex_llm/install/templates/create_messages_migration.rb.tt +0 -19
- data/lib/generators/lex_llm/install/templates/create_models_migration.rb.tt +0 -39
- data/lib/generators/lex_llm/install/templates/create_tool_calls_migration.rb.tt +0 -21
- data/lib/generators/lex_llm/install/templates/initializer.rb.tt +0 -20
- data/lib/generators/lex_llm/install/templates/message_model.rb.tt +0 -4
- data/lib/generators/lex_llm/install/templates/model_model.rb.tt +0 -3
- data/lib/generators/lex_llm/install/templates/tool_call_model.rb.tt +0 -3
- data/lib/generators/lex_llm/schema/schema_generator.rb +0 -26
- data/lib/generators/lex_llm/schema/templates/schema.rb.tt +0 -2
- data/lib/generators/lex_llm/tool/templates/tool.rb.tt +0 -9
- data/lib/generators/lex_llm/tool/templates/tool_call.html.erb.tt +0 -13
- data/lib/generators/lex_llm/tool/templates/tool_result.html.erb.tt +0 -13
- data/lib/generators/lex_llm/tool/tool_generator.rb +0 -96
- data/lib/generators/lex_llm/upgrade_to_v1_10/templates/add_v1_10_message_columns.rb.tt +0 -19
- data/lib/generators/lex_llm/upgrade_to_v1_10/upgrade_to_v1_10_generator.rb +0 -50
- data/lib/generators/lex_llm/upgrade_to_v1_14/templates/add_v1_14_tool_call_columns.rb.tt +0 -7
- data/lib/generators/lex_llm/upgrade_to_v1_14/upgrade_to_v1_14_generator.rb +0 -49
- data/lib/generators/lex_llm/upgrade_to_v1_7/templates/migration.rb.tt +0 -145
- data/lib/generators/lex_llm/upgrade_to_v1_7/upgrade_to_v1_7_generator.rb +0 -122
- data/lib/generators/lex_llm/upgrade_to_v1_9/templates/add_v1_9_message_columns.rb.tt +0 -15
- data/lib/generators/lex_llm/upgrade_to_v1_9/upgrade_to_v1_9_generator.rb +0 -49
- data/lib/lex_llm/active_record/acts_as.rb +0 -180
- data/lib/lex_llm/active_record/acts_as_legacy.rb +0 -503
- data/lib/lex_llm/active_record/chat_methods.rb +0 -468
- data/lib/lex_llm/active_record/message_methods.rb +0 -131
- data/lib/lex_llm/active_record/model_methods.rb +0 -76
- data/lib/lex_llm/active_record/payload_helpers.rb +0 -26
- data/lib/lex_llm/active_record/tool_call_methods.rb +0 -15
- data/lib/lex_llm/agent.rb +0 -365
- data/lib/lex_llm/aliases.rb +0 -38
- data/lib/lex_llm/attachment.rb +0 -223
- data/lib/lex_llm/chat.rb +0 -351
- data/lib/lex_llm/chunk.rb +0 -6
- data/lib/lex_llm/configuration.rb +0 -81
- data/lib/lex_llm/connection.rb +0 -130
- data/lib/lex_llm/content.rb +0 -77
- data/lib/lex_llm/context.rb +0 -29
- data/lib/lex_llm/embedding.rb +0 -29
- data/lib/lex_llm/error.rb +0 -112
- data/lib/lex_llm/image.rb +0 -105
- data/lib/lex_llm/message.rb +0 -107
- data/lib/lex_llm/mime_type.rb +0 -71
- data/lib/lex_llm/model/info.rb +0 -113
- data/lib/lex_llm/model/modalities.rb +0 -22
- data/lib/lex_llm/model/pricing.rb +0 -48
- data/lib/lex_llm/model/pricing_category.rb +0 -46
- data/lib/lex_llm/model/pricing_tier.rb +0 -33
- data/lib/lex_llm/model.rb +0 -7
- data/lib/lex_llm/models.rb +0 -506
- data/lib/lex_llm/moderation.rb +0 -56
- data/lib/lex_llm/provider/open_ai_compatible.rb +0 -219
- data/lib/lex_llm/provider.rb +0 -278
- data/lib/lex_llm/railtie.rb +0 -35
- data/lib/lex_llm/routing/lane_key.rb +0 -51
- data/lib/lex_llm/routing/model_offering.rb +0 -169
- data/lib/lex_llm/routing.rb +0 -7
- data/lib/lex_llm/stream_accumulator.rb +0 -203
- data/lib/lex_llm/streaming.rb +0 -175
- data/lib/lex_llm/thinking.rb +0 -49
- data/lib/lex_llm/tokens.rb +0 -47
- data/lib/lex_llm/tool.rb +0 -254
- data/lib/lex_llm/tool_call.rb +0 -25
- data/lib/lex_llm/transcription.rb +0 -35
- data/lib/lex_llm/utils.rb +0 -91
- data/lib/lex_llm/version.rb +0 -5
- data/lib/lex_llm.rb +0 -96
- data/lib/tasks/lex_llm.rake +0 -23
- /data/lib/{lex_llm → legion/extensions/llm}/aliases.json +0 -0
- /data/lib/{lex_llm → legion/extensions/llm}/models.json +0 -0
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
<%% content_for :title, "<%= chat_model_name.pluralize %>" %>
|
|
2
|
-
|
|
3
|
-
<div class="w-full">
|
|
4
|
-
<%% if notice.present? %>
|
|
5
|
-
<p class="py-2 px-3 bg-green-50 mb-5 text-green-500 font-medium rounded-md inline-block" id="notice"><%%= notice %></p>
|
|
6
|
-
<%% end %>
|
|
7
|
-
|
|
8
|
-
<div class="flex justify-between items-center">
|
|
9
|
-
<h1 class="font-bold text-4xl"><%= chat_model_name.pluralize %></h1>
|
|
10
|
-
<div class="flex items-center gap-2">
|
|
11
|
-
<%%= link_to "<%= model_model_name.pluralize %>", <%= model_table_name %>_path, class: "rounded-md px-3.5 py-2.5 bg-gray-100 hover:bg-gray-50 text-gray-900 block font-medium" %>
|
|
12
|
-
<%%= link_to "New <%= chat_table_name.singularize.humanize.downcase %>", new_<%= chat_variable_name %>_path, class: "rounded-md px-3.5 py-2.5 bg-blue-600 hover:bg-blue-500 text-white block font-medium" %>
|
|
13
|
-
</div>
|
|
14
|
-
</div>
|
|
15
|
-
|
|
16
|
-
<div id="<%= chat_table_name %>" class="min-w-full divide-y divide-gray-200 space-y-5">
|
|
17
|
-
<%% if @<%= chat_table_name %>.any? %>
|
|
18
|
-
<%% @<%= chat_table_name %>.each do |<%= chat_variable_name %>| %>
|
|
19
|
-
<div class="flex flex-col sm:flex-row justify-between items-center pb-5 sm:pb-0">
|
|
20
|
-
<%%= render <%= chat_variable_name %> %>
|
|
21
|
-
<div class="w-full sm:w-auto flex flex-col sm:flex-row space-x-2 space-y-2">
|
|
22
|
-
<%%= link_to "Show", <%= chat_variable_name %>, class: "w-full sm:w-auto text-center rounded-md px-3.5 py-2.5 bg-gray-100 hover:bg-gray-50 inline-block font-medium" %>
|
|
23
|
-
<%%= button_to "Destroy", <%= chat_variable_name %>, method: :delete, class: "w-full sm:w-auto rounded-md px-3.5 py-2.5 bg-red-600 hover:bg-red-500 text-white inline-block font-medium cursor-pointer", data: { turbo_confirm: "Are you sure?" } %>
|
|
24
|
-
</div>
|
|
25
|
-
</div>
|
|
26
|
-
<%% end %>
|
|
27
|
-
<%% else %>
|
|
28
|
-
<p class="text-center my-10">No <%= chat_table_name.humanize.downcase %> found.</p>
|
|
29
|
-
<%% end %>
|
|
30
|
-
</div>
|
|
31
|
-
</div>
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
<%% content_for :title, "New <%= chat_table_name.singularize.humanize.downcase %>" %>
|
|
2
|
-
|
|
3
|
-
<div class="md:w-2/3 w-full">
|
|
4
|
-
<h1 class="font-bold text-4xl">New <%= chat_table_name.singularize.humanize.downcase %></h1>
|
|
5
|
-
|
|
6
|
-
<%%= render "form", <%= chat_variable_name %>: @<%= chat_variable_name %> %>
|
|
7
|
-
|
|
8
|
-
<%%= link_to "Back to <%= chat_table_name.humanize.downcase %>", <%= chat_table_name %>_path, class: "w-full sm:w-auto text-center mt-2 sm:mt-0 sm:ml-2 rounded-md px-3.5 py-2.5 bg-gray-100 hover:bg-gray-50 inline-block font-medium" %>
|
|
9
|
-
</div>
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
<%% content_for :title, "Showing <%= chat_table_name.singularize.humanize.downcase %>" %>
|
|
2
|
-
|
|
3
|
-
<%%= turbo_stream_from "<%= chat_variable_name %>_#{@<%= chat_variable_name %>.id}" %>
|
|
4
|
-
|
|
5
|
-
<%# Keep layout conventions aligned with tailwindcss-rails scaffold (top-left, md:w-2/3). -%>
|
|
6
|
-
<div class="md:w-2/3 w-full">
|
|
7
|
-
<%% if notice.present? %>
|
|
8
|
-
<p class="py-2 px-3 bg-green-50 mb-5 text-green-500 font-medium rounded-md inline-block" id="notice"><%%= notice %></p>
|
|
9
|
-
<%% end %>
|
|
10
|
-
|
|
11
|
-
<h1 class="font-bold text-4xl">Showing <%= chat_table_name.singularize.humanize.downcase %> #<%%= @<%= chat_variable_name %>.id %></h1>
|
|
12
|
-
|
|
13
|
-
<div class="my-5">
|
|
14
|
-
<strong class="block font-medium mb-1">Model:</strong>
|
|
15
|
-
<%%= @<%= chat_variable_name %>.<%= model_table_name.singularize %>&.label || default_model_display_name %>
|
|
16
|
-
</div>
|
|
17
|
-
|
|
18
|
-
<div id="<%= message_table_name %>" class="min-w-full divide-y divide-gray-200 space-y-5 my-5">
|
|
19
|
-
<%% @<%= chat_variable_name %>.<%= message_table_name %>.where.not(id: nil).each do |<%= message_variable_name %>| %>
|
|
20
|
-
<%%= render <%= message_variable_name %> %>
|
|
21
|
-
<%% end %>
|
|
22
|
-
</div>
|
|
23
|
-
|
|
24
|
-
<%%= render "<%= message_model_name.underscore.pluralize %>/form", <%= chat_variable_name %>: @<%= chat_variable_name %>, <%= message_variable_name %>: @<%= message_variable_name %> %>
|
|
25
|
-
|
|
26
|
-
<%%= link_to "Back to <%= chat_table_name.humanize.downcase %>", <%= chat_table_name %>_path, class: "w-full sm:w-auto text-center mt-2 sm:mt-0 sm:ml-2 rounded-md px-3.5 py-2.5 bg-gray-100 hover:bg-gray-50 inline-block font-medium" %>
|
|
27
|
-
</div>
|
data/lib/generators/lex_llm/chat_ui/templates/tailwind/views/messages/_assistant.html.erb.tt
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
<%% assistant ||= local_assigns[:message] %>
|
|
2
|
-
<div id="<%= message_variable_name %>_<%%= assistant.id %>" class="w-full sm:w-auto my-5 space-y-3 rounded-md px-3 py-2 bg-green-50">
|
|
3
|
-
<div>
|
|
4
|
-
<span class="inline-block rounded px-2 py-0.5 text-xs font-medium bg-green-100 text-green-700">
|
|
5
|
-
Assistant
|
|
6
|
-
</span>
|
|
7
|
-
</div>
|
|
8
|
-
|
|
9
|
-
<div id="<%= message_variable_name %>_<%%= assistant.id %>_content" class="whitespace-pre-wrap"><%%= assistant.content %></div>
|
|
10
|
-
|
|
11
|
-
<div>
|
|
12
|
-
<span class="text-sm text-gray-600"><%%= assistant.created_at&.strftime("%I:%M %p") %></span>
|
|
13
|
-
</div>
|
|
14
|
-
</div>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<%%= content -%>
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
<div id="<%= message_variable_name %>_<%%= <%= message_model_name.demodulize.underscore %>.id %>" class="w-full sm:w-auto my-5 space-y-3 rounded-md px-3 py-2 bg-red-50 border border-red-200">
|
|
2
|
-
<div>
|
|
3
|
-
<span class="inline-block rounded px-2 py-0.5 text-xs font-medium bg-red-100 text-red-700">
|
|
4
|
-
<%%= title.presence || "Error" %>
|
|
5
|
-
</span>
|
|
6
|
-
</div>
|
|
7
|
-
|
|
8
|
-
<pre class="whitespace-pre-wrap text-red-900 text-sm overflow-x-auto"><%%= error_message %></pre>
|
|
9
|
-
|
|
10
|
-
<div>
|
|
11
|
-
<span class="text-sm text-red-700"><%%= <%= message_model_name.demodulize.underscore %>.created_at&.strftime("%I:%M %p") %></span>
|
|
12
|
-
</div>
|
|
13
|
-
</div>
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
<%%= form_with(model: <%= message_variable_name %>, url: <%= chat_model_name.include?('::') ? "#{chat_model_name.split('::').first.underscore}_#{chat_model_name.demodulize.underscore}_#{message_model_name.demodulize.underscore.pluralize}_path(@#{chat_variable_name})" : "[@#{chat_variable_name}, #{message_variable_name}]" %>, id: "new_<%= message_variable_name %>", class: "contents") do |form| %>
|
|
2
|
-
<%% if <%= message_variable_name %>.errors.any? %>
|
|
3
|
-
<div id="error_explanation" class="bg-red-50 text-red-500 px-3 py-2 font-medium rounded-md mt-3">
|
|
4
|
-
<h2><%%= pluralize(<%= message_variable_name %>.errors.count, "error") %> prohibited this <%= message_table_name.singularize.humanize.downcase %> from being saved:</h2>
|
|
5
|
-
|
|
6
|
-
<ul class="list-disc ml-6">
|
|
7
|
-
<%% <%= message_variable_name %>.errors.each do |error| %>
|
|
8
|
-
<li><%%= error.full_message %></li>
|
|
9
|
-
<%% end %>
|
|
10
|
-
</ul>
|
|
11
|
-
</div>
|
|
12
|
-
<%% end %>
|
|
13
|
-
|
|
14
|
-
<div class="my-5">
|
|
15
|
-
<%%= form.label :content, "Message" %>
|
|
16
|
-
<%%= form.text_area :content, rows: 4, placeholder: "Message...", autofocus: true,
|
|
17
|
-
class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": <%= message_variable_name %>.errors[:content].none?, "border-red-400 focus:outline-red-600": <%= message_variable_name %>.errors[:content].any?}] %>
|
|
18
|
-
</div>
|
|
19
|
-
|
|
20
|
-
<div class="inline">
|
|
21
|
-
<%%= form.submit "Send <%= message_table_name.singularize.humanize.downcase %>", class: "w-full sm:w-auto rounded-md px-3.5 py-2.5 bg-blue-600 hover:bg-blue-500 text-white inline-block font-medium cursor-pointer" %>
|
|
22
|
-
</div>
|
|
23
|
-
<%% end %>
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
<%% system ||= local_assigns[:message] %>
|
|
2
|
-
<div id="<%= message_variable_name %>_<%%= system.id %>" class="w-full sm:w-auto my-5 space-y-3 rounded-md px-3 py-2 bg-gray-50 border border-gray-200">
|
|
3
|
-
<div>
|
|
4
|
-
<span class="inline-block rounded px-2 py-0.5 text-xs font-medium bg-gray-200 text-gray-700">
|
|
5
|
-
System
|
|
6
|
-
</span>
|
|
7
|
-
</div>
|
|
8
|
-
|
|
9
|
-
<div class="whitespace-pre-wrap text-gray-700"><%%= system.content %></div>
|
|
10
|
-
</div>
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
<%% user ||= local_assigns[:message] %>
|
|
2
|
-
<div id="<%= message_variable_name %>_<%%= user.id %>" class="w-full sm:w-auto my-5 space-y-3 rounded-md px-3 py-2 bg-blue-50">
|
|
3
|
-
<div>
|
|
4
|
-
<span class="inline-block rounded px-2 py-0.5 text-xs font-medium bg-blue-100 text-blue-700">
|
|
5
|
-
User
|
|
6
|
-
</span>
|
|
7
|
-
</div>
|
|
8
|
-
|
|
9
|
-
<div id="<%= message_variable_name %>_<%%= user.id %>_content" class="whitespace-pre-wrap"><%%= user.content %></div>
|
|
10
|
-
|
|
11
|
-
<div>
|
|
12
|
-
<span class="text-sm text-gray-600"><%%= user.created_at&.strftime("%I:%M %p") %></span>
|
|
13
|
-
</div>
|
|
14
|
-
</div>
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
<div id="<%= message_variable_name %>_<%%= tool_calls.id %>" class="w-full sm:w-auto my-5 space-y-3 rounded-md px-3 py-2 bg-gray-50 border border-gray-200">
|
|
2
|
-
<div>
|
|
3
|
-
<span class="inline-block rounded px-2 py-0.5 text-xs font-medium bg-gray-200 text-gray-700">
|
|
4
|
-
Tool Call
|
|
5
|
-
</span>
|
|
6
|
-
</div>
|
|
7
|
-
|
|
8
|
-
<pre class="whitespace-pre-wrap text-gray-700 text-sm overflow-x-auto"><%%= tool_call.name %>(<%%= tool_call.arguments.map { |k, v| "#{k}: #{v.inspect}" }.join(", ") %>)</pre>
|
|
9
|
-
|
|
10
|
-
<div>
|
|
11
|
-
<span class="text-sm text-gray-600"><%%= tool_calls.created_at&.strftime("%I:%M %p") %></span>
|
|
12
|
-
</div>
|
|
13
|
-
</div>
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
<%% error_message = tool.tool_error_message %>
|
|
2
|
-
<%% if error_message.present? %>
|
|
3
|
-
<%%= render "<%= message_model_name.underscore.pluralize %>/error",
|
|
4
|
-
<%= message_model_name.demodulize.underscore %>: tool,
|
|
5
|
-
title: "Tool Result Error",
|
|
6
|
-
error_message: error_message %>
|
|
7
|
-
<%% else %>
|
|
8
|
-
<div id="<%= message_variable_name %>_<%%= tool.id %>" class="w-full sm:w-auto my-5 space-y-3 rounded-md px-3 py-2 bg-gray-50 border border-gray-200">
|
|
9
|
-
<div>
|
|
10
|
-
<span class="inline-block rounded px-2 py-0.5 text-xs font-medium bg-gray-200 text-gray-700">
|
|
11
|
-
Tool
|
|
12
|
-
</span>
|
|
13
|
-
</div>
|
|
14
|
-
|
|
15
|
-
<pre class="whitespace-pre-wrap text-gray-700 text-sm overflow-x-auto"><%%= tool.content.presence || "(no output)" %></pre>
|
|
16
|
-
|
|
17
|
-
<div>
|
|
18
|
-
<span class="text-sm text-gray-600"><%%= tool.created_at&.strftime("%I:%M %p") %></span>
|
|
19
|
-
</div>
|
|
20
|
-
</div>
|
|
21
|
-
<%% end %>
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
<%% model_id = <%= model_model_name.demodulize.underscore %>.respond_to?(:model_id) ? <%= model_model_name.demodulize.underscore %>.model_id : <%= model_model_name.demodulize.underscore %>.id %>
|
|
2
|
-
<%% row_id = [<%= model_model_name.demodulize.underscore %>.provider, model_id].join("_").parameterize(separator: "_") %>
|
|
3
|
-
<tr id="model_<%%= row_id %>">
|
|
4
|
-
<td class="px-3 py-2 text-sm text-gray-700"><%%= <%= model_model_name.demodulize.underscore %>.provider_class&.name || <%= model_model_name.demodulize.underscore %>.provider %></td>
|
|
5
|
-
<td class="px-3 py-2 text-sm text-gray-900"><%%= <%= model_model_name.demodulize.underscore %>.respond_to?(:display_name) ? <%= model_model_name.demodulize.underscore %>.display_name : <%= model_model_name.demodulize.underscore %>.name %></td>
|
|
6
|
-
<td class="px-3 py-2 text-sm text-gray-700"><%%= number_with_delimiter(<%= model_model_name.demodulize.underscore %>.context_window) if <%= model_model_name.demodulize.underscore %>.context_window %></td>
|
|
7
|
-
<td class="px-3 py-2 text-sm text-gray-700">
|
|
8
|
-
<%% input = <%= model_model_name.demodulize.underscore %>.input_price_per_million %>
|
|
9
|
-
<%% output = <%= model_model_name.demodulize.underscore %>.output_price_per_million %>
|
|
10
|
-
<%% if input && output %>
|
|
11
|
-
$<%%= "%.2f" % input %> / $<%%= "%.2f" % output %>
|
|
12
|
-
<%% end %>
|
|
13
|
-
</td>
|
|
14
|
-
<td class="px-3 py-2 text-sm">
|
|
15
|
-
<%%= link_to "Start <%= chat_table_name.singularize.humanize.downcase %>", new_<%= chat_variable_name %>_path(model: model_id), class: "text-blue-600 hover:text-blue-500" %>
|
|
16
|
-
</td>
|
|
17
|
-
</tr>
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
<%% content_for :title, "<%= model_model_name.pluralize %>" %>
|
|
2
|
-
|
|
3
|
-
<div class="w-full">
|
|
4
|
-
<%% if notice.present? %>
|
|
5
|
-
<p class="py-2 px-3 bg-green-50 mb-5 text-green-500 font-medium rounded-md inline-block" id="notice"><%%= notice %></p>
|
|
6
|
-
<%% end %>
|
|
7
|
-
|
|
8
|
-
<div class="flex justify-between items-center">
|
|
9
|
-
<h1 class="font-bold text-4xl"><%= model_model_name.pluralize %></h1>
|
|
10
|
-
<div class="flex items-center gap-2">
|
|
11
|
-
<%%= link_to "<%= chat_model_name.pluralize %>", <%= chat_table_name %>_path, class: "rounded-md px-3.5 py-2.5 bg-gray-100 hover:bg-gray-50 text-gray-900 block font-medium" %>
|
|
12
|
-
<%%= button_to "Refresh <%= model_model_name.pluralize %>", refresh_<%= model_table_name %>_path, method: :post, class: "rounded-md px-3.5 py-2.5 bg-blue-600 hover:bg-blue-500 text-white block font-medium cursor-pointer" %>
|
|
13
|
-
</div>
|
|
14
|
-
</div>
|
|
15
|
-
|
|
16
|
-
<div id="<%= model_table_name %>" class="mt-5 overflow-x-auto">
|
|
17
|
-
<%% if @<%= model_variable_name.pluralize %>.any? %>
|
|
18
|
-
<table class="min-w-full divide-y divide-gray-300 border border-gray-300">
|
|
19
|
-
<thead class="bg-gray-50">
|
|
20
|
-
<tr>
|
|
21
|
-
<th class="px-3 py-2 text-left text-sm font-semibold text-gray-900">Provider</th>
|
|
22
|
-
<th class="px-3 py-2 text-left text-sm font-semibold text-gray-900">Model</th>
|
|
23
|
-
<th class="px-3 py-2 text-left text-sm font-semibold text-gray-900">Context Window</th>
|
|
24
|
-
<th class="px-3 py-2 text-left text-sm font-semibold text-gray-900">$/1M tokens (In/Out)</th>
|
|
25
|
-
<th class="px-3 py-2 text-left text-sm font-semibold text-gray-900"></th>
|
|
26
|
-
</tr>
|
|
27
|
-
</thead>
|
|
28
|
-
<tbody class="divide-y divide-gray-200 bg-white">
|
|
29
|
-
<%% @<%= model_variable_name.pluralize %>.each do |model_info| %>
|
|
30
|
-
<%%= render "<%= model_model_name.underscore.pluralize %>/<%= model_model_name.demodulize.underscore %>",
|
|
31
|
-
<%= model_model_name.demodulize.underscore %>: model_info %>
|
|
32
|
-
<%% end %>
|
|
33
|
-
</tbody>
|
|
34
|
-
</table>
|
|
35
|
-
<%% else %>
|
|
36
|
-
<p class="text-center my-10">No chat models found.</p>
|
|
37
|
-
<%% end %>
|
|
38
|
-
</div>
|
|
39
|
-
|
|
40
|
-
</div>
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
<%% content_for :title, "Showing <%= model_table_name.singularize.humanize.downcase %>" %>
|
|
2
|
-
|
|
3
|
-
<div class="md:w-2/3 w-full">
|
|
4
|
-
<%% if notice.present? %>
|
|
5
|
-
<p class="py-2 px-3 bg-green-50 mb-5 text-green-500 font-medium rounded-md inline-block" id="notice"><%%= notice %></p>
|
|
6
|
-
<%% end %>
|
|
7
|
-
|
|
8
|
-
<h1 class="font-bold text-4xl">Showing <%= model_table_name.singularize.humanize.downcase %></h1>
|
|
9
|
-
|
|
10
|
-
<div class="my-5 space-y-3">
|
|
11
|
-
<p><strong class="block font-medium mb-1">Provider:</strong> <%%= @<%= model_variable_name %>.provider_class&.name || @<%= model_variable_name %>.provider %></p>
|
|
12
|
-
<p><strong class="block font-medium mb-1">Model:</strong> <%%= @<%= model_variable_name %>.name %></p>
|
|
13
|
-
<p><strong class="block font-medium mb-1">ID:</strong> <%%= @<%= model_variable_name %>.model_id %></p>
|
|
14
|
-
<p><strong class="block font-medium mb-1">Context Window:</strong> <%%= number_with_delimiter(@<%= model_variable_name %>.context_window) if @<%= model_variable_name %>.context_window %></p>
|
|
15
|
-
<p><strong class="block font-medium mb-1">Max Output Tokens:</strong> <%%= number_with_delimiter(@<%= model_variable_name %>.max_output_tokens) if @<%= model_variable_name %>.max_output_tokens %></p>
|
|
16
|
-
</div>
|
|
17
|
-
|
|
18
|
-
<%% if @<%= model_variable_name %>.capabilities.any? %>
|
|
19
|
-
<div class="my-5">
|
|
20
|
-
<strong class="block font-medium mb-1">Capabilities:</strong>
|
|
21
|
-
<%%= @<%= model_variable_name %>.capabilities.join(", ") %>
|
|
22
|
-
</div>
|
|
23
|
-
<%% end %>
|
|
24
|
-
|
|
25
|
-
<%%= link_to "Start <%= chat_table_name.singularize.humanize.downcase %> with this model", new_<%= chat_variable_name %>_path(model: @<%= model_variable_name %>.model_id), class: "w-full sm:w-auto text-center rounded-md px-3.5 py-2.5 bg-gray-100 hover:bg-gray-50 inline-block font-medium" %>
|
|
26
|
-
<%%= link_to "All <%= model_table_name.humanize.downcase %>", <%= model_table_name %>_path, class: "w-full sm:w-auto text-center mt-2 sm:mt-0 sm:ml-2 rounded-md px-3.5 py-2.5 bg-gray-100 hover:bg-gray-50 inline-block font-medium" %>
|
|
27
|
-
</div>
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
<div id="<%%= dom_id <%= chat_model_name.demodulize.underscore %> %>">
|
|
2
|
-
<div>
|
|
3
|
-
<strong>Model:</strong>
|
|
4
|
-
<%%= <%= chat_model_name.demodulize.underscore %>.<%= model_table_name.singularize %>&.label || default_model_display_name %>
|
|
5
|
-
</div>
|
|
6
|
-
|
|
7
|
-
<div>
|
|
8
|
-
<strong>Messages:</strong>
|
|
9
|
-
<%%= <%= chat_model_name.demodulize.underscore %>.<%= message_table_name %>.count %>
|
|
10
|
-
</div>
|
|
11
|
-
|
|
12
|
-
<div>
|
|
13
|
-
<strong>Created:</strong>
|
|
14
|
-
<%%= <%= chat_model_name.demodulize.underscore %>.created_at.strftime("%B %d, %Y at %I:%M %p") %>
|
|
15
|
-
</div>
|
|
16
|
-
</div>
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
<%%= form_with(model: <%= chat_variable_name %>, url: <%= chat_table_name %>_path) do |form| %>
|
|
2
|
-
<%% if <%= chat_variable_name %>.errors.any? %>
|
|
3
|
-
<div style="color: red">
|
|
4
|
-
<h2><%%= pluralize(<%= chat_variable_name %>.errors.count, "error") %> prohibited this <%= chat_table_name.singularize.humanize.downcase %> from being saved:</h2>
|
|
5
|
-
|
|
6
|
-
<ul>
|
|
7
|
-
<%% <%= chat_variable_name %>.errors.each do |error| %>
|
|
8
|
-
<li><%%= error.full_message %></li>
|
|
9
|
-
<%% end %>
|
|
10
|
-
</ul>
|
|
11
|
-
</div>
|
|
12
|
-
<%% end %>
|
|
13
|
-
|
|
14
|
-
<div>
|
|
15
|
-
<%%= form.label :model, "Select AI model:", style: "display: block" %>
|
|
16
|
-
<%%= form.select :model,
|
|
17
|
-
options_for_select(@chat_models.map { |model| [model.label, model.id] }.unshift([default_model_display_name, nil]), @selected_model),
|
|
18
|
-
{},
|
|
19
|
-
style: "width: 100%; max-width: 600px; padding: 5px;" %>
|
|
20
|
-
</div>
|
|
21
|
-
|
|
22
|
-
<div style="margin-top: 15px;">
|
|
23
|
-
<%%= form.text_field :prompt, style: "width: 100%; max-width: 600px;", placeholder: "What would you like to discuss?", autofocus: true %>
|
|
24
|
-
</div>
|
|
25
|
-
|
|
26
|
-
<div>
|
|
27
|
-
<%%= form.submit "Start new <%= chat_table_name.singularize.humanize.downcase %>" %>
|
|
28
|
-
</div>
|
|
29
|
-
<%% end %>
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
<%% if notice.present? %>
|
|
2
|
-
<p style="color: green"><%%= notice %></p>
|
|
3
|
-
<%% end %>
|
|
4
|
-
|
|
5
|
-
<%% content_for :title, "<%= chat_model_name.pluralize %>" %>
|
|
6
|
-
|
|
7
|
-
<h1><%= chat_model_name.pluralize %></h1>
|
|
8
|
-
<p>
|
|
9
|
-
<%%= link_to "<%= model_model_name.pluralize %>", <%= model_table_name %>_path %>
|
|
10
|
-
</p>
|
|
11
|
-
|
|
12
|
-
<div id="<%= chat_table_name %>">
|
|
13
|
-
<%% if @<%= chat_table_name %>.any? %>
|
|
14
|
-
<%% @<%= chat_table_name %>.each do |<%= chat_variable_name %>| %>
|
|
15
|
-
<%%= render <%= chat_variable_name %> %>
|
|
16
|
-
<p>
|
|
17
|
-
<%%= link_to "Show this <%= chat_table_name.singularize.humanize.downcase %>", <%= chat_variable_name %> %>
|
|
18
|
-
</p>
|
|
19
|
-
<p>
|
|
20
|
-
<%%= link_to "Destroy this <%= chat_table_name.singularize.humanize.downcase %>", <%= chat_variable_name %>, data: { turbo_method: :delete, turbo_confirm: "Are you sure?" } %>
|
|
21
|
-
</p>
|
|
22
|
-
<%% end %>
|
|
23
|
-
<%% else %>
|
|
24
|
-
<p>No <%= chat_table_name.humanize.downcase %> found.</p>
|
|
25
|
-
<%% end %>
|
|
26
|
-
</div>
|
|
27
|
-
|
|
28
|
-
<%%= link_to "New <%= chat_table_name.singularize.humanize.downcase %>", new_<%= chat_variable_name %>_path %>
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
<%% content_for :title, "New <%= chat_table_name.singularize.humanize.downcase %>" %>
|
|
2
|
-
|
|
3
|
-
<h1>New <%= chat_table_name.singularize.humanize.downcase %></h1>
|
|
4
|
-
|
|
5
|
-
<%%= render "form", <%= chat_variable_name %>: @<%= chat_variable_name %> %>
|
|
6
|
-
|
|
7
|
-
<br>
|
|
8
|
-
|
|
9
|
-
<div>
|
|
10
|
-
<%%= link_to "Back to <%= chat_table_name.humanize.downcase %>", <%= chat_table_name %>_path %>
|
|
11
|
-
</div>
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
<%% if notice.present? %>
|
|
2
|
-
<p style="color: green"><%%= notice %></p>
|
|
3
|
-
<%% end %>
|
|
4
|
-
|
|
5
|
-
<%%= turbo_stream_from "<%= chat_variable_name %>_#{@<%= chat_variable_name %>.id}" %>
|
|
6
|
-
|
|
7
|
-
<%% content_for :title, "<%= chat_model_name %>" %>
|
|
8
|
-
|
|
9
|
-
<h1><%= chat_model_name %> <%%= @<%= chat_variable_name %>.id %></h1>
|
|
10
|
-
|
|
11
|
-
<p>Using <strong><%%= @<%= chat_variable_name %>.<%= model_table_name.singularize %>&.label || default_model_display_name %></strong></p>
|
|
12
|
-
|
|
13
|
-
<div id="<%= message_table_name %>">
|
|
14
|
-
<%% @<%= chat_variable_name %>.<%= message_table_name %>.where.not(id: nil).each do |<%= message_variable_name %>| %>
|
|
15
|
-
<%%= render <%= message_variable_name %> %>
|
|
16
|
-
<%% end %>
|
|
17
|
-
</div>
|
|
18
|
-
|
|
19
|
-
<div style="margin-top: 30px;">
|
|
20
|
-
<%%= render "<%= message_model_name.underscore.pluralize %>/form", <%= chat_variable_name %>: @<%= chat_variable_name %>, <%= message_variable_name %>: @<%= message_variable_name %> %>
|
|
21
|
-
</div>
|
|
22
|
-
|
|
23
|
-
<div style="margin-top: 20px;">
|
|
24
|
-
<%%= link_to "Back to <%= chat_table_name.humanize.downcase %>", <%= chat_table_name %>_path %>
|
|
25
|
-
</div>
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
<%% assistant ||= local_assigns[:message] %>
|
|
2
|
-
<div id="<%= message_variable_name %>_<%%= assistant.id %>" class="<%= message_variable_name %>"
|
|
3
|
-
style="margin-bottom: 20px; padding: 10px; border-left: 3px solid #28a745;">
|
|
4
|
-
<div style="font-weight: bold; margin-bottom: 5px;">Assistant</div>
|
|
5
|
-
<div id="<%= message_variable_name %>_<%%= assistant.id %>_content" style="white-space: pre-wrap;"><%%= assistant.content %></div>
|
|
6
|
-
<div style="font-size: 0.85em; color: #666; margin-top: 5px;">
|
|
7
|
-
<%%= assistant.created_at&.strftime("%I:%M %p") %>
|
|
8
|
-
</div>
|
|
9
|
-
</div>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<%%= content -%>
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
<div id="<%= message_variable_name %>_<%%= <%= message_model_name.demodulize.underscore %>.id %>" class="<%= message_variable_name %>"
|
|
2
|
-
style="margin-bottom: 20px; padding: 10px; border-left: 3px solid #dc2626; background: #fef2f2;">
|
|
3
|
-
<div style="font-weight: bold; margin-bottom: 5px; color: #b91c1c;"><%%= title.presence || "Error" %></div>
|
|
4
|
-
<pre style="white-space: pre-wrap; margin: 0; color: #7f1d1d;"><%%= error_message %></pre>
|
|
5
|
-
<div style="font-size: 0.85em; color: #7f1d1d; margin-top: 5px;">
|
|
6
|
-
<%%= <%= message_model_name.demodulize.underscore %>.created_at&.strftime("%I:%M %p") %>
|
|
7
|
-
</div>
|
|
8
|
-
</div>
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
<%%= form_with(model: <%= message_variable_name %>, url: <%= chat_model_name.include?('::') ? "#{chat_model_name.split('::').first.underscore}_#{chat_model_name.demodulize.underscore}_#{message_model_name.demodulize.underscore.pluralize}_path(@#{chat_variable_name})" : "[@#{chat_variable_name}, #{message_variable_name}]" %>, id: "new_<%= message_variable_name %>") do |form| %>
|
|
2
|
-
<%% if <%= message_variable_name %>.errors.any? %>
|
|
3
|
-
<div style="color: red">
|
|
4
|
-
<h2><%%= pluralize(<%= message_variable_name %>.errors.count, "error") %> prohibited this <%= message_table_name.singularize.humanize.downcase %> from being saved:</h2>
|
|
5
|
-
|
|
6
|
-
<ul>
|
|
7
|
-
<%% <%= message_variable_name %>.errors.each do |error| %>
|
|
8
|
-
<li><%%= error.full_message %></li>
|
|
9
|
-
<%% end %>
|
|
10
|
-
</ul>
|
|
11
|
-
</div>
|
|
12
|
-
<%% end %>
|
|
13
|
-
|
|
14
|
-
<div>
|
|
15
|
-
<%%= form.text_field :content, style: "width: 100%; max-width: 600px;", placeholder: "Message...", autofocus: true %>
|
|
16
|
-
</div>
|
|
17
|
-
|
|
18
|
-
<div>
|
|
19
|
-
<%%= form.submit "Send <%= message_table_name.singularize.humanize.downcase %>" %>
|
|
20
|
-
</div>
|
|
21
|
-
<%% end %>
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
<%% system ||= local_assigns[:message] %>
|
|
2
|
-
<div id="<%= message_variable_name %>_<%%= system.id %>" class="<%= message_variable_name %>"
|
|
3
|
-
style="margin-bottom: 20px; padding: 10px; border-left: 3px solid #6b7280; background: #f9fafb;">
|
|
4
|
-
<div style="font-weight: bold; margin-bottom: 5px; color: #374151;">System</div>
|
|
5
|
-
<div style="white-space: pre-wrap; color: #4b5563;"><%%= system.content %></div>
|
|
6
|
-
</div>
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
<%% user ||= local_assigns[:message] %>
|
|
2
|
-
<div id="<%= message_variable_name %>_<%%= user.id %>" class="<%= message_variable_name %>"
|
|
3
|
-
style="margin-bottom: 20px; padding: 10px; border-left: 3px solid #007bff;">
|
|
4
|
-
<div style="font-weight: bold; margin-bottom: 5px;">User</div>
|
|
5
|
-
<div id="<%= message_variable_name %>_<%%= user.id %>_content" style="white-space: pre-wrap;"><%%= user.content %></div>
|
|
6
|
-
<div style="font-size: 0.85em; color: #666; margin-top: 5px;">
|
|
7
|
-
<%%= user.created_at&.strftime("%I:%M %p") %>
|
|
8
|
-
</div>
|
|
9
|
-
</div>
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
<%% if defined?(@<%= chat_variable_name %>) && @<%= chat_variable_name %>.present? %>
|
|
2
|
-
<%%= turbo_stream.replace "new_<%= message_variable_name %>" do %>
|
|
3
|
-
<%%= render "<%= message_model_name.underscore.pluralize %>/form",
|
|
4
|
-
<%= chat_variable_name %>: @<%= chat_variable_name %>,
|
|
5
|
-
<%= message_variable_name %>: @<%= chat_variable_name %>.<%= message_table_name %>.build %>
|
|
6
|
-
<%% end %>
|
|
7
|
-
<%% end %>
|
data/lib/generators/lex_llm/chat_ui/templates/views/messages/tool_calls/_default.html.erb.tt
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
<div id="<%= message_variable_name %>_<%%= tool_calls.id %>" class="<%= message_variable_name %>"
|
|
2
|
-
style="margin-bottom: 20px; padding: 10px; border-left: 3px solid #6b7280; background: #f9fafb;">
|
|
3
|
-
<div style="font-weight: bold; margin-bottom: 5px;">Tool Call</div>
|
|
4
|
-
<pre style="white-space: pre-wrap; margin: 0;"><%%= tool_call.name %>(<%%= tool_call.arguments.map { |k, v| "#{k}: #{v.inspect}" }.join(", ") %>)</pre>
|
|
5
|
-
<div style="font-size: 0.85em; color: #666; margin-top: 5px;">
|
|
6
|
-
<%%= tool_calls.created_at&.strftime("%I:%M %p") %>
|
|
7
|
-
</div>
|
|
8
|
-
</div>
|
data/lib/generators/lex_llm/chat_ui/templates/views/messages/tool_results/_default.html.erb.tt
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
<%% error_message = tool.tool_error_message %>
|
|
2
|
-
<%% if error_message.present? %>
|
|
3
|
-
<%%= render "<%= message_model_name.underscore.pluralize %>/error",
|
|
4
|
-
<%= message_model_name.demodulize.underscore %>: tool,
|
|
5
|
-
title: "Tool Result Error",
|
|
6
|
-
error_message: error_message %>
|
|
7
|
-
<%% else %>
|
|
8
|
-
<div id="<%= message_variable_name %>_<%%= tool.id %>" class="<%= message_variable_name %>"
|
|
9
|
-
style="margin-bottom: 20px; padding: 10px; border-left: 3px solid #6b7280; background: #f9fafb;">
|
|
10
|
-
<div style="font-weight: bold; margin-bottom: 5px;">Tool</div>
|
|
11
|
-
<pre style="white-space: pre-wrap; margin: 0;"><%%= tool.content.presence || "(no output)" %></pre>
|
|
12
|
-
<div style="font-size: 0.85em; color: #666; margin-top: 5px;">
|
|
13
|
-
<%%= tool.created_at&.strftime("%I:%M %p") %>
|
|
14
|
-
</div>
|
|
15
|
-
</div>
|
|
16
|
-
<%% end %>
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
<%% model_id = <%= model_model_name.demodulize.underscore %>.respond_to?(:model_id) ? <%= model_model_name.demodulize.underscore %>.model_id : <%= model_model_name.demodulize.underscore %>.id %>
|
|
2
|
-
<%% row_id = [<%= model_model_name.demodulize.underscore %>.provider, model_id].join("_").parameterize(separator: "_") %>
|
|
3
|
-
<tr id="model_<%%= row_id %>">
|
|
4
|
-
<td><%%= <%= model_model_name.demodulize.underscore %>.provider_class&.name || <%= model_model_name.demodulize.underscore %>.provider %></td>
|
|
5
|
-
<td><%%= <%= model_model_name.demodulize.underscore %>.respond_to?(:display_name) ? <%= model_model_name.demodulize.underscore %>.display_name : <%= model_model_name.demodulize.underscore %>.name %></td>
|
|
6
|
-
<td><%%= number_with_delimiter(<%= model_model_name.demodulize.underscore %>.context_window) if <%= model_model_name.demodulize.underscore %>.context_window %></td>
|
|
7
|
-
<td>
|
|
8
|
-
<%% input = <%= model_model_name.demodulize.underscore %>.input_price_per_million %>
|
|
9
|
-
<%% output = <%= model_model_name.demodulize.underscore %>.output_price_per_million %>
|
|
10
|
-
<%% if input && output %>
|
|
11
|
-
$<%%= "%.2f" % input %> / $<%%= "%.2f" % output %>
|
|
12
|
-
<%% end %>
|
|
13
|
-
</td>
|
|
14
|
-
<td><%%= link_to "Start <%= chat_table_name.singularize.humanize.downcase %>", new_<%= chat_variable_name %>_path(model: model_id) %></td>
|
|
15
|
-
</tr>
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
<%% if notice.present? %>
|
|
2
|
-
<p style="color: green"><%%= notice %></p>
|
|
3
|
-
<%% end %>
|
|
4
|
-
|
|
5
|
-
<%% content_for :title, "<%= model_model_name.pluralize %>" %>
|
|
6
|
-
|
|
7
|
-
<h1><%= model_model_name.pluralize %></h1>
|
|
8
|
-
<p>
|
|
9
|
-
<%%= link_to "<%= chat_model_name.pluralize %>", <%= chat_table_name %>_path %>
|
|
10
|
-
</p>
|
|
11
|
-
|
|
12
|
-
<p>
|
|
13
|
-
<%%= button_to "Refresh <%= model_model_name.pluralize %>", refresh_<%= model_table_name %>_path, method: :post %>
|
|
14
|
-
</p>
|
|
15
|
-
|
|
16
|
-
<div id="<%= model_table_name %>">
|
|
17
|
-
<%% if @<%= model_variable_name.pluralize %>.any? %>
|
|
18
|
-
<table>
|
|
19
|
-
<thead>
|
|
20
|
-
<tr>
|
|
21
|
-
<th>Provider</th>
|
|
22
|
-
<th>Model</th>
|
|
23
|
-
<th>Context Window</th>
|
|
24
|
-
<th>$/1M tokens (In/Out)</th>
|
|
25
|
-
<th></th>
|
|
26
|
-
</tr>
|
|
27
|
-
</thead>
|
|
28
|
-
<tbody>
|
|
29
|
-
<%% @<%= model_variable_name.pluralize %>.each do |model_info| %>
|
|
30
|
-
<%%= render "<%= model_model_name.underscore.pluralize %>/<%= model_model_name.demodulize.underscore %>",
|
|
31
|
-
<%= model_model_name.demodulize.underscore %>: model_info %>
|
|
32
|
-
<%% end %>
|
|
33
|
-
</tbody>
|
|
34
|
-
</table>
|
|
35
|
-
<%% else %>
|
|
36
|
-
<p>No chat models found.</p>
|
|
37
|
-
<%% end %>
|
|
38
|
-
</div>
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
<%% content_for :title, @<%= model_variable_name %>.name %>
|
|
2
|
-
|
|
3
|
-
<h1><%%= @<%= model_variable_name %>.name %></h1>
|
|
4
|
-
|
|
5
|
-
<p><strong>ID:</strong> <%%= @<%= model_variable_name %>.model_id %></p>
|
|
6
|
-
<p><strong>Provider:</strong> <%%= @<%= model_variable_name %>.provider_class&.name || @<%= model_variable_name %>.provider %></p>
|
|
7
|
-
<p><strong>Context Window:</strong> <%%= number_with_delimiter(@<%= model_variable_name %>.context_window) %> tokens</p>
|
|
8
|
-
<p><strong>Max Output:</strong> <%%= number_with_delimiter(@<%= model_variable_name %>.max_output_tokens) %> tokens</p>
|
|
9
|
-
|
|
10
|
-
<%% if @<%= model_variable_name %>.capabilities.any? %>
|
|
11
|
-
<p><strong>Capabilities:</strong> <%%= @<%= model_variable_name %>.capabilities.join(", ") %></p>
|
|
12
|
-
<%% end %>
|
|
13
|
-
|
|
14
|
-
<p>
|
|
15
|
-
<%%= link_to "Start chat with this model", new_<%= chat_variable_name %>_path(model: @<%= model_variable_name %>.model_id) %> |
|
|
16
|
-
<%%= link_to "All models", <%= model_table_name %>_path %>
|
|
17
|
-
</p>
|