Aller au contenu principal

Format d'URL

AISCouncil encode les configurations de bot directement dans le fragment d'URL (la partie après #). Cela signifie que partager un bot est aussi simple que partager un lien — pas de serveur, pas de base de données, pas de compte requis. L'URL est le bot.

Comment Fonctionnent les URLs de Bot

Lorsque vous partagez un bot, l'application prend la configuration entière du bot — nom, fournisseur, modèle, prompt système, température et tous les autres paramètres — et la compresse en une chaîne compacte qui vit dans le fragment d'URL.

https://aiscouncil.net/#B{payload_base80}

Le navigateur n'envoie jamais le fragment à aucun serveur (cela fait partie de la spécification HTTP), donc la configuration reste entièrement côté client.

Structure de l'URL

Une URL de bot a trois parties :

PartieExempleObjectif
URL de basehttps://aiscouncil.net/L'application elle-même
##Séparateur de fragment (jamais envoyé au serveur)
Préfixe VLQ + payloadBeLT1Qx9k...Octet de version + config compressée

Le Préfixe de Version VLQ

Le(s) premier(s) caractère(s) du fragment identifient la version d'encodage en utilisant l'encodage Variable-Length Quantity (VLQ) :

PréfixeVersionType de Contenu
A0Contenu éditeur (utilisé par aiscouncil.net/s/)
B1Configuration de bot
C2Spécification de page PDL

Le préfixe B indique à l'application "c'est une config de bot encodée avec la version 1 du codec." Les versions futures peuvent ajouter de nouveaux formats sans casser les URLs existantes.

Encodage Base80

Après le préfixe de version, le payload est encodé en utilisant un alphabet Base80 personnalisé. Cet alphabet a été choisi pour maximiser la densité d'URL tout en utilisant uniquement des caractères sûrs dans les fragments d'URL sans encodage de pourcentage :

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~$&'()*+,;=:@/?

Base80 est plus efficace que Base64 pour les fragments d'URL car il utilise 80 caractères au lieu de 64, emballant plus de données par caractère.

Compression

Avant l'encodage Base80, le JSON de config de bot est compressé en utilisant deflate-raw (via l'API native CompressionStream du navigateur). Cela réduit typiquement une config de bot à 30-60% de sa taille originale. La compression est sans perte et la décompression utilise la DecompressionStream native du navigateur.

Pipeline d'Encodage

Config Bot (JSON) --> Octets UTF-8 --> Compression deflate-raw --> Encodage Base80 --> Préfixe VLQ

Étape par étape :

  1. L'objet de config de bot est sérialisé en JSON
  2. La chaîne JSON est encodée en octets UTF-8
  3. Les octets sont compressés avec deflate-raw (native CompressionStream)
  4. Les octets compressés sont encodés en caractères Base80
  5. Le préfixe de version VLQ (B) est préfixé

Le décodage inverse exactement le processus.

Schéma de Config de Bot

La config utilise des clés courtes d'une seule lettre pour minimiser la taille compressée :

CléTypeDescriptionDéfaut
nstringNom d'affichage du bot"New Bot"
pstringID du fournisseur (anthropic, openai, xai, gemini, openrouter, ollama, etc.)Requis
mstringID du modèle (ex. claude-sonnet-4-20250514, gpt-4o)Requis
sstringPrompt système""
tnumberTempérature (0-2)0.7
xintegerMax tokens de sortie4096
restringEffort de raisonnement (low, medium, high, max, ou budget numérique)
tpnumberTop P (0-1)1
fpnumberPénalité de fréquence (0-2)0
ppnumberPénalité de présence (0-2)0
seintegerGraine (pour des sorties reproductibles)
starraySéquences d'arrêt
rfstringFormat de réponse (text ou json)"text"
authintegerContrôle d'accès : 1 = public (pas de connexion requise)
iconstringIcône du bot (emoji)
dstringDescription du bot
colorstringCouleur d'accent du bot (hex)"#7c3aed"
kstringClé API par bot (stockée localement, jamais dans l'URL)
cobjectConfiguration de conseil (pour bots multi-modèles)
pfstringID de référence de profil
clintegerLongueur de contexte (limite d'historique de messages)
smbooleanStreaming activétrue
atbooleanAuto-titrage des conversationsfalse
mrbooleanRendu Markdown activétrue
stcbooleanAfficher le nombre de tokensfalse

Seules les valeurs non-défaut sont incluses dans la config pour minimiser la longueur de l'URL.

Ce Qui N'est PAS dans l'URL

Garantie de Sécurité

Les clés API ne sont jamais incluses dans les URLs. Le champ k (clé API par bot) est retiré pendant l'encodage de l'URL. Les clés sont stockées uniquement dans le localStorage du navigateur et sont envoyées uniquement à l'endpoint API du fournisseur LLM.

Les éléments suivants sont exclus des URLs partagées :

  • Clés API — les destinataires doivent fournir les leurs
  • Historique de chat — seule la configuration du bot est partagée
  • Entrées de mémoire — la mémoire persistante par bot reste locale
  • Statistiques d'utilisation — les données de suivi sont locales à l'appareil

URLs de l'Éditeur

L'éditeur web à aiscouncil.net/s/ utilise le même système d'encodage avec un préfixe de version différent :

https://aiscouncil.net/s/#A{payload_base80}

Le préfixe A indique la version 0 (contenu éditeur). Le payload contient le contenu du document compressé plutôt qu'une configuration de bot.

Encodage et Décodage Programmatique

Vous pouvez encoder et décoder des configs de bot programmatiquement en utilisant le module AIS.Codec dans la console du navigateur :

Décoder une URL

// Décoder depuis le hash de l'URL
const hash = location.hash.slice(1); // Retirer le '#'
const config = await AIS.Codec.decodeBotConfig(hash);
console.log(config);
// { n: "Mon Bot", p: "anthropic", m: "claude-sonnet-4-20250514", s: "Tu es serviable.", t: 0.7, x: 4096 }

Encoder une config

const config = {
n: "Assistant de Recherche",
p: "anthropic",
m: "claude-sonnet-4-20250514",
s: "Tu es un assistant de recherche minutieux. Cite les sources.",
t: 0.3,
x: 8192,
};
const hash = await AIS.Codec.encodeBotConfig(config);
const url = location.origin + "/#" + hash;
console.log(url);
// https://aiscouncil.net/#BeLT1Qx9k...

Inspecter le schéma

console.log(AIS.Codec.CONFIG_SCHEMA);
// Retourne la définition JSON Schema pour les configs de bot

Limites de Longueur d'URL

Limites du Navigateur

La plupart des navigateurs modernes supportent des longueurs d'URL d'au moins 2 000 caractères, beaucoup supportant 8 000+ caractères. Cependant, certains intermédiaires (clients email, plateformes de médias sociaux, raccourcisseurs d'URL) peuvent tronquer les longues URLs.

La limite pratique dépend de la longueur du prompt système :

Longueur du Prompt SystèmeLongueur d'URL ApproximativeCompatibilité
< 500 caractères~300-500 carsSûr partout
500-2 000 caractères~500-1 200 carsSûr dans les navigateurs et la plupart des plateformes
2 000-5 000 caractères~1 200-2 500 carsFonctionne dans les navigateurs, peut échouer dans email/SMS
> 5 000 caractères2 500+ carsNavigateur uniquement, peut être tronqué ailleurs

Si votre prompt système est très long, envisagez :

  • Raccourcir ou résumer le prompt
  • Utiliser un raccourcisseur d'URL qui préserve les fragments
  • Partager la config du bot comme fichier JSON à la place (via export)

Comportement de la Page d'Accueil

Pas d'Encodage d'URL sur la Page d'Accueil

Lorsque vous chargez aiscouncil.net directement (pas de hash dans l'URL), l'application n'encode pas votre configuration de bot dans l'URL. L'encodage d'URL ne s'active que lorsque la page a été chargée depuis une URL de bot partagée (i.e., l'URL contenait déjà un fragment #B...). Cela garde l'URL de la page d'accueil propre.