nsarrazin HF Staff commited on
Commit
20d8f14
·
unverified ·
1 Parent(s): bdffe83

feat: add warnings to let people know they should use a tool calling model (#1590)

Browse files
src/routes/tools/+page.svelte CHANGED
@@ -20,6 +20,7 @@
20
  import { SortKey } from "$lib/types/Assistant";
21
  import ToolLogo from "$lib/components/ToolLogo.svelte";
22
  import { ReviewStatus } from "$lib/types/Review";
 
23
 
24
  export let data: PageData;
25
 
@@ -31,6 +32,11 @@
31
  $: createdByMe = data.user?.username && data.user.username === toolsCreator;
32
  $: activeOnly = $page.url.searchParams.get("active") === "true";
33
 
 
 
 
 
 
34
  const SEARCH_DEBOUNCE_DELAY = 400;
35
  let filterInputEl: HTMLInputElement;
36
  let filterValue = data.query;
@@ -144,7 +150,7 @@
144
  </a>
145
  </div>
146
 
147
- <div class="mt-7 flex flex-wrap items-center gap-x-2 gap-y-3 text-sm">
148
  {#if toolsCreator && !createdByMe}
149
  <div
150
  class="flex items-center gap-1.5 rounded-full border border-gray-300 bg-gray-50 px-3 py-1 dark:border-gray-600 dark:bg-gray-700 dark:text-white"
@@ -231,7 +237,14 @@
231
  </select>
232
  </div>
233
 
234
- <div class="mt-8 grid grid-cols-1 gap-3 sm:gap-5 lg:grid-cols-2">
 
 
 
 
 
 
 
235
  {#each tools as tool}
236
  {@const isActive = ($page.data.settings?.tools ?? []).includes(tool._id.toString())}
237
  {@const isOfficial = !tool.createdByName}
 
20
  import { SortKey } from "$lib/types/Assistant";
21
  import ToolLogo from "$lib/components/ToolLogo.svelte";
22
  import { ReviewStatus } from "$lib/types/Review";
23
+ import { useSettingsStore } from "$lib/stores/settings";
24
 
25
  export let data: PageData;
26
 
 
32
  $: createdByMe = data.user?.username && data.user.username === toolsCreator;
33
  $: activeOnly = $page.url.searchParams.get("active") === "true";
34
 
35
+ const settings = useSettingsStore();
36
+
37
+ $: currentModelSupportTools =
38
+ data.models.find((m) => m.id === $settings.activeModel)?.tools ?? false;
39
+
40
  const SEARCH_DEBOUNCE_DELAY = 400;
41
  let filterInputEl: HTMLInputElement;
42
  let filterValue = data.query;
 
150
  </a>
151
  </div>
152
 
153
+ <div class="mb-4 mt-7 flex flex-wrap items-center gap-x-2 gap-y-3 text-sm">
154
  {#if toolsCreator && !createdByMe}
155
  <div
156
  class="flex items-center gap-1.5 rounded-full border border-gray-300 bg-gray-50 px-3 py-1 dark:border-gray-600 dark:bg-gray-700 dark:text-white"
 
237
  </select>
238
  </div>
239
 
240
+ {#if !currentModelSupportTools}
241
+ <div class="mx-auto text-center text-sm text-purple-700 dark:text-purple-300">
242
+ You are currently not using a model that supports tools. Activate one
243
+ <a href="{base}/models" class="underline">here</a>.
244
+ </div>
245
+ {/if}
246
+
247
+ <div class="mt-4 grid grid-cols-1 gap-3 sm:gap-5 lg:grid-cols-2">
248
  {#each tools as tool}
249
  {@const isActive = ($page.data.settings?.tools ?? []).includes(tool._id.toString())}
250
  {@const isOfficial = !tool.createdByName}
src/routes/tools/[toolId]/+page.svelte CHANGED
@@ -39,6 +39,9 @@
39
  $: isActive = $settings.tools?.includes(data.tool?._id.toString());
40
 
41
  let displayReportModal = false;
 
 
 
42
  </script>
43
 
44
  {#if displayReportModal}
@@ -98,25 +101,34 @@
98
  class="flex flex-wrap items-center gap-x-4 gap-y-2 whitespace-nowrap text-sm text-gray-500 hover:*:text-gray-800 max-sm:justify-center"
99
  >
100
  <div class="w-full sm:w-auto">
101
- <button
102
- class="{isActive
103
- ? 'bg-gray-100 text-gray-800'
104
- : 'bg-black !text-white'} mx-auto my-2 flex w-min items-center justify-center rounded-full px-3 py-1 text-base"
105
- name="Activate model"
106
- on:click|stopPropagation={() => {
107
- if (isActive) {
108
- settings.instantSet({
109
- tools: ($settings?.tools ?? []).filter((t) => t !== data.tool._id),
110
- });
111
- } else {
112
- settings.instantSet({
113
- tools: [...($settings?.tools ?? []), data.tool._id],
114
- });
115
- }
116
- }}
117
- >
118
- {isActive ? "Deactivate" : "Activate"}
119
- </button>
 
 
 
 
 
 
 
 
 
120
  </div>
121
  {#if data.tool?.createdByMe}
122
  <a href="{base}/tools/{data.tool?._id}/edit" class="underline"
@@ -242,9 +254,16 @@
242
  </div>
243
  </div>
244
  </div>
245
- <p class="text-sm max-sm:hidden">
246
- Tools are applications that the model can choose to call while you are chatting with it.
247
- </p>
 
 
 
 
 
 
 
248
  {#if data.tool.description}
249
  <div>
250
  <h2 class="text-lg font-semibold">Description</h2>
 
39
  $: isActive = $settings.tools?.includes(data.tool?._id.toString());
40
 
41
  let displayReportModal = false;
42
+
43
+ $: currentModelSupportTools =
44
+ data.models.find((m) => m.id === $settings.activeModel)?.tools ?? false;
45
  </script>
46
 
47
  {#if displayReportModal}
 
101
  class="flex flex-wrap items-center gap-x-4 gap-y-2 whitespace-nowrap text-sm text-gray-500 hover:*:text-gray-800 max-sm:justify-center"
102
  >
103
  <div class="w-full sm:w-auto">
104
+ {#if currentModelSupportTools}
105
+ <button
106
+ class="{isActive
107
+ ? 'bg-gray-100 text-gray-800'
108
+ : 'bg-black !text-white'} mx-auto my-2 flex w-min items-center justify-center rounded-full px-3 py-1 text-base"
109
+ name="Activate model"
110
+ on:click|stopPropagation={() => {
111
+ if (isActive) {
112
+ settings.instantSet({
113
+ tools: ($settings?.tools ?? []).filter((t) => t !== data.tool._id),
114
+ });
115
+ } else {
116
+ settings.instantSet({
117
+ tools: [...($settings?.tools ?? []), data.tool._id],
118
+ });
119
+ }
120
+ }}
121
+ >
122
+ {isActive ? "Deactivate" : "Activate"}
123
+ </button>
124
+ {:else}
125
+ <button
126
+ disabled
127
+ class="mx-auto my-2 flex w-min items-center justify-center rounded-full bg-gray-200 px-3 py-1 text-base text-gray-500"
128
+ >
129
+ Activate
130
+ </button>
131
+ {/if}
132
  </div>
133
  {#if data.tool?.createdByMe}
134
  <a href="{base}/tools/{data.tool?._id}/edit" class="underline"
 
254
  </div>
255
  </div>
256
  </div>
257
+ {#if !currentModelSupportTools}
258
+ <span class="relative text-sm text-gray-500">
259
+ You are currently not using a model that supports tools. Activate one
260
+ <a href="{base}/models" class="underline">here</a>.
261
+ </span>
262
+ {:else}
263
+ <p class="text-sm max-sm:hidden">
264
+ Tools are applications that the model can choose to call while you are chatting with it.
265
+ </p>
266
+ {/if}
267
  {#if data.tool.description}
268
  <div>
269
  <h2 class="text-lg font-semibold">Description</h2>