diff --git a/Chat.go b/Chat.go index c55dc81..cf9bcac 100644 --- a/Chat.go +++ b/Chat.go @@ -289,7 +289,7 @@ func generateWelcomeChatHTML() string { } NextMessages = append(NextMessages, nextMsg) - botOut, err := botTmpl.Execute(pongo2.Context{"Messages": NextMessages, "ConversationAreaId": 0, "NotClickable": true}) + botOut, err := botTmpl.Execute(pongo2.Context{"Messages": NextMessages, "ConversationAreaId": 0, "NotClickable": true, "DontShowName": true}) if err != nil { fmt.Println("Error executing bot template") panic(err) @@ -334,7 +334,7 @@ func generateHelpChatHTML() string { } NextMessages = append(NextMessages, nextMsg) - botOut, err := botTmpl.Execute(pongo2.Context{"Messages": NextMessages, "ConversationAreaId": 0, "NotClickable": true}) + botOut, err := botTmpl.Execute(pongo2.Context{"Messages": NextMessages, "ConversationAreaId": 0, "NotClickable": true, "DontShowName": true}) if err != nil { fmt.Println("Error executing bot template") panic(err) @@ -383,7 +383,7 @@ func generateEnterKeyChatHTML() string { } NextMessages = append(NextMessages, nextMsg) - botOut, err := botTmpl.Execute(pongo2.Context{"Messages": NextMessages, "ConversationAreaId": 0, "NotClickable": true}) + botOut, err := botTmpl.Execute(pongo2.Context{"Messages": NextMessages, "ConversationAreaId": 0, "NotClickable": true, "DontShowName": true}) if err != nil { fmt.Println("Error executing bot template") panic(err) @@ -463,7 +463,7 @@ func generateTermAndServiceChatHTML() string { } NextMessages = append(NextMessages, nextMsg) - botOut, err := botTmpl.Execute(pongo2.Context{"Messages": NextMessages, "ConversationAreaId": 0, "NotClickable": true}) + botOut, err := botTmpl.Execute(pongo2.Context{"Messages": NextMessages, "ConversationAreaId": 0, "NotClickable": true, "DontShowName": true}) if err != nil { fmt.Println("Error executing bot template") panic(err) @@ -842,7 +842,7 @@ func LoadSettingsHandler(c *fiber.Ctx) error { // Percent encoding of the email user.Email = url.QueryEscape(user.Email) - stripeSubLink := "https://billing.stripe.com/p/login/test_eVa5kC1q7dogaaIcMM?prefilled_email=" + user.Email + stripeSubLink := "https://billing.stripe.com/p/login/6oE6sc0PTfvq1Hi288?prefilled_email=" + user.Email openaiExists, anthropicExists, mistralExists, groqExists, gooseaiExists, googleExists := getExistingKeys(c) isPremium, isBasic := IsCurrentUserSubscribed(c) diff --git a/Stripe.go b/Stripe.go index 02f3a73..1c3ff2c 100644 --- a/Stripe.go +++ b/Stripe.go @@ -58,7 +58,7 @@ func generatePricingTableChatHTML(c *fiber.Ctx) string { } NextMessages = append(NextMessages, nextMsg) - botOut, err := botTmpl.Execute(pongo2.Context{"Messages": NextMessages, "ConversationAreaId": 0, "NotClickable": true, "notFlex": true}) + botOut, err := botTmpl.Execute(pongo2.Context{"Messages": NextMessages, "ConversationAreaId": 0, "NotClickable": true, "notFlex": true, "DontShowName": true}) if err != nil { fmt.Println("Error executing template") panic(err) diff --git a/views/partials/chat-input.html b/views/partials/chat-input.html index 50eb4ba..9eb7406 100644 --- a/views/partials/chat-input.html +++ b/views/partials/chat-input.html @@ -1,4 +1,4 @@ -{% if IsSubscribed or not IsLimiteReached %} +{% if IsSubscribed or not IsLimiteReached or not IsLogin %}
diff --git a/views/partials/explain-llm-conv-chat.html b/views/partials/explain-llm-conv-chat.html index e9fbf53..ab96567 100644 --- a/views/partials/explain-llm-conv-chat.html +++ b/views/partials/explain-llm-conv-chat.html @@ -1,34 +1,91 @@ -

JADE is the first Multi-Models chatbot.

-

It was build with simplicity in mind. The goal being to have a minimalist chatbot for all models.

-

I don't want fancy stuff like importing files or images. I want the chatbot to be as simple as possible.

-

Following this philosophy, I was able to focus on other way to improve the current way we use AI chatbots.

-

My first complain was that there is a lot of models, and they are all good at different things.

-

But if you want to use all of them, it get impractical and very expensive.

+

JADE: The First Multi-Model Chatbot

+

JADE was built with simplicity in mind. The goal is to have a minimalist chatbot that supports all models without + unnecessary features like importing files or images. This focus on simplicity allows us to improve how we use AI + chatbots in other ways.

+ +

One of my main concerns was the variety of models available, each excelling in different areas. Using all of them can + be impractical and very expensive.

Multi-Models

-

So I decided to focus my chatbot on this and created the first Multi-Models chatbot.

-

The idea is to use multiple models in the same conversation.

-

There is 2 things to understand about this:

-

1. When asking a question, you can ask it to multiple models. You can them compare and pick the best one.

-

2. The next message will use the text of the selected message for all models. So the response from GPT4 can be then - use by Claude Haiku for example.

+

To address this, I created the first Multi-Model chatbot. The idea is to use multiple models within the same + conversation. Here are the key points:

+
    +
  1. When asking a question, you can query multiple models and compare their responses to choose the best one.
  2. +
  3. The selected response can be used as the basis for the next message across all models. For example, a response + from GPT-4 can be used by Claude Haiku in the next interaction.
  4. +
+ +

API Keys

+

To use JADE, you need to sign up for an API key to providers. There is 5 providers available:

+
    +
  • OpenAI
  • +
  • Anthropic
  • +
  • Mistral
  • +
  • Groq
  • +
  • Google
  • +
  • Custom endpoint (premium)
  • +
  • GooseAI (coming soon)
  • +
+

You can enter an API key in the settings menu. One enter you get access to all models from this provider. Check the + appendix for more details about available models.

Bots

-

Once an API key enter, you have access to all models from that provider.

-

If you open the Bots menu (next to send), you will find a list of all your Bots. A bot have a name, a model and some - parameters.

-

You can create a new bot by clicking on the "+" button. And enter a name and a model. Additionaly, you can add choose - a temperature and a system prompt.

-

Once created, you can select it by clicking on it and order it by draging it. You can keep SHIFT pressed and click on - 2 Bots to select them and all in between.

-

You can also delete selected Bots by clicking on the trash can.

+

Once you enter an API key, you gain access to all models from that provider. In the Bots menu (next to the send + button), you'll find a list of all your Bots.

+

To create a new bot, click the "+" button, enter a name and a model, and optionally set a temperature and a system + prompt. Once created, you can select a bot by clicking on it and reorder it by dragging. Hold SHIFT and click to + select multiple bots. You can delete selected bots by clicking the trash can icon.

-

Conversation

-

A conversation is a list of messages. You have a Default conversation that is created when you first sign in.

-

You can create a new conversation by clicking on the "+" button. You can also delete a conversation by clicking on - the trash can.

-

You can not delete the Default conversation but you can Archive it.

+

Conversations

+

A conversation is a list of messages. A Default conversation is created when you first sign in. You can create a new + conversation by clicking the "+" button and delete one by clicking the trash can icon. The Default conversation + cannot be deleted but can be renamed.

Usage

-

You can see the usage of your account in the Usage menu. You can see how many messages you have sent and received, - and how much the API costed you.

\ No newline at end of file +

In the Usage menu, you can see the usage of your account, including the number of messages sent and received and the + associated API costs.

+ +

Appendix

+

The following is a list of available models for each provider:

+
    +
  • OpenAI: +
      +
    • gpt-3.5-turbo
    • +
    • gpt-4
    • +
    • gpt-4-turbo
    • +
    • gpt-4o
    • +
    +
  • +
  • Anthropic: +
      +
    • claude-3-haiku-20240307
    • +
    • claude-3-sonnet-20240229
    • +
    • claude-3-opus-20240229
    • +
    +
  • +
  • Mistral: +
      +
    • open-mistral-7b
    • +
    • open-mixtral-8x7b
    • +
    • open-mixtral-8x22b
    • +
    • mistral-small-latest
    • +
    • mistral-large-latest
    • +
    • codestral-latest
    • +
    +
  • +
  • Groq: +
      +
    • llama3-8b-8192
    • +
    • llama3-70b-8192
    • +
    • gemma-7b-it
    • +
    +
  • +
  • Google: +
      +
    • gemini-1.5-pro
    • +
    • gemini-1.5-flash
    • +
    • gemini-1.0-pro
    • +
    +
  • +
  • Inference Endpoints (More custom to come)
  • +
\ No newline at end of file diff --git a/views/partials/message-bot.html b/views/partials/message-bot.html index cddda32..c3a374a 100644 --- a/views/partials/message-bot.html +++ b/views/partials/message-bot.html @@ -1,5 +1,6 @@
+ {% if not DontShowName %}
{% if IsPlaceholder %} @@ -21,6 +22,7 @@ {% endif %}
+ {% endif %}
{% if not IsPlaceholder %} @@ -29,11 +31,13 @@ id="content-{{ ConversationAreaId }}"> {% for message in Messages %} {% if not message.Hidden %} + {% if not DontShowName %}

{{ message.Name }} {{ message.ModelID }}

+ {% endif %}
{{ message.Content | safe }} diff --git a/views/partials/popover-settings.html b/views/partials/popover-settings.html index 608395c..4df0a78 100644 --- a/views/partials/popover-settings.html +++ b/views/partials/popover-settings.html @@ -93,7 +93,7 @@

- {% if IsSub or isPremium %} + {% if isBasic or isPremium %} diff --git a/views/partials/welcome-chat.html b/views/partials/welcome-chat.html index 01ede7d..cc3ef8f 100644 --- a/views/partials/welcome-chat.html +++ b/views/partials/welcome-chat.html @@ -1,20 +1,89 @@ -

So you like chatGPT and want more GPT-4o but don't want to pay 20$/month?.

+

JADE: The First Multi-Model Chatbot

+

JADE was built with simplicity in mind. The goal is to have a minimalist chatbot that supports all models without + unnecessary features like importing files or images. This focus on simplicity allows us to improve how we use AI + chatbots in other ways.

-

JADE allows you to pay by the token. So if you use it a little, you pay near nothing.

+

One of my main concerns was the variety of models available, each excelling in different areas. Unfortunately using + all of them can be impractical and very expensive.

+ +

Multi-Models

+

To address this, I created the first Multi-Model chatbot. The idea is to use multiple models within the same + conversation. Here are the key points:

+
    +
  1. When asking a question, you can query multiple models and compare their responses to choose the best one.
  2. +
  3. The selected response can be used as the basis for the next message across all models. For example, a response + from GPT-4 can be used by Claude Haiku in the next interaction.
  4. +

To start using JADE, please sign in.

-
+ Sign in -

You can find more informations about JADE bellow:

+

+ +

You can find more information about JADE below:

    -
  • All Models
  • -
  • Multi-Models
  • -
  • Compare & Pick
  • -
  • Reduce Hallucination
  • -
  • Multi-Models
  • +
  • +

    Variety of AI models from different providers.

    + +
  • +
  • +

    Multiple models in a single conversation.

    + +
  • +
  • +

    Reduce Hallucination.

    + +
  • +
  • +

    Pay only for what you use.

    + +
-

JADE start with a free tier that allow you to use ask 200 messages a month. You can then upgrade for $0.95/month.

\ No newline at end of file + \ No newline at end of file