{ e.preventDefault(); if (!e.target) { return; } const formData = new FormData(e.target as HTMLFormElement, e.submitter); loading = true; if (files?.[0] && files[0].size > 0) { formData.set("avatar", files[0]); } if (deleteExistingAvatar === true) { if (assistant?.avatar) { // if there is an avatar we explicitly removei t formData.set("avatar", "null"); } else { // else we just remove it from the input formData.delete("avatar"); } } else { if (files === null) { formData.delete("avatar"); } } formData.delete("ragMode"); if (ragMode === false || !page.data.enableAssistantsRAG) { formData.set("ragAllowAll", "false"); formData.set("ragLinkList", ""); formData.set("ragDomainList", ""); } else if (ragMode === "all") { formData.set("ragAllowAll", "true"); formData.set("ragLinkList", ""); formData.set("ragDomainList", ""); } else if (ragMode === "links") { formData.set("ragAllowAll", "false"); formData.set("ragDomainList", ""); } else if (ragMode === "domains") { formData.set("ragAllowAll", "false"); formData.set("ragLinkList", ""); } formData.set("tools", tools.join(",")); let response: Response; if (assistant?._id) { response = await fetch(`${base}/api/assistant/${assistant._id}`, { method: "PATCH", body: formData, }); if (response.ok) { goto(`${base}/settings/assistants/${assistant?._id}`, { invalidateAll: true }); } else { if (response.status === 400) { const data = await response.json(); errors = data.errors; } else { $error = response.statusText; } } } else { response = await fetch(`${base}/api/assistant`, { method: "POST", body: formData, }); if (response.ok) { const { assistantId } = await response.json(); goto(`${base}/settings/assistants/${assistantId}`, { invalidateAll: true }); } else { if (response.status === 400) { const data = await response.json(); errors = data.errors; } else { $error = response.statusText; } } } }} > {#if assistant}

Edit Assistant: {assistant?.name ?? "assistant"}

Modifying an existing assistant will propagate the changes to all users.

{:else}

Create new assistant

Create and share your own AI Assistant. All assistants are public

{/if}
Avatar
{#if (files && files[0]) || (assistant?.avatar && !deleteExistingAvatar)}
{#if files && files[0]} avatar {:else if assistant?.avatar} avatar {/if}
{:else}
{/if}

{getError("avatar")}

{#if selectedModel?.tools}
Tools Experimental

Choose up to 3 community tools that will be used with this assistant.

{/if} {#if page.data.enableAssistantsRAG}
Internet access {#if isHuggingChat} Give feedback {/if} {#if ragMode === "domains"} Specify domains and URLs that the application can search, separated by commas.

{getError("ragDomainList")}

{/if} {#if ragMode === "links"} Specify a maximum of 10 direct URLs that the Assistant will access. HTML & Plain Text only, separated by commas

{getError("ragLinkList")}

{/if}
{/if}
Instructions (System Prompt) {#if dynamicPrompt && templateVariables.length}
{/if}
{#if modelId} {@const model = models.find((_model) => _model.id === modelId)} {#if model?.tokenizer && systemPrompt} {/if} {/if}

{getError("preprompt")}

Cancel