Client Node.js pour l'API non officielle Character AI, un site Web génial qui donne vie aux personnages grâce à l'IA !
Ce référentiel est inspiré de l'API de nœud non officielle de RichardDorian. Cependant, j'ai eu du mal à l'utiliser et il n'était pas vraiment stable et archivé. Je l'ai donc refait en javascript.
Ce projet n'est en aucun cas affilié à Character AI ! C'est un projet communautaire. Le but de ce projet est de créer et de construire des projets propulsés par Character AI.
Si vous aimez ce projet, veuillez consulter leur site Web.
Entièrement écrit en Javascript et CommonJS (pour une compatibilité maximale et une facilité d'utilisation)
Requêtes asynchrones
Utilisez des conversations ou utilisez l'API pour récupérer des informations
Facile à utiliser
Développement actif
Prise en charge de la connexion des invités et des jetons
npm installer node_characterai
Authentification invité de base et message :
const CharacterAI = require("node_characterai");const CharacterAI = new CharacterAI();(async () => { // Authentification en tant qu'invité (utilisez `.authenticateWithToken()` pour utiliser un compte) attendre caractèreAI.authenticateAsGuest(); // Placez ici l'identifiant de votre personnage const caractèreId = "8_1NyR8w1dOXmI1uWaieQcd147hecbdIK7CeEAIrdJw"; // Crée un objet de discussion pour interagir avec la conversation const chat = attendre caractèreAI.createOrContinueChat(characterId); // Envoyer un message const réponse = wait chat.sendAndAwaitResponse("Bonjour mod discord !", true); console.log(réponse); // Utilisez `response.text` pour l'utiliser comme chaîne})();
Certaines parties de l'API (comme la gestion d'une conversation) nécessitent que vous soyez connecté à l'aide d'un sessionToken
.
Pour l'obtenir, vous pouvez ouvrir votre navigateur, rendez-vous sur le site Character.AI dans localStorage
.
Important
Si vous utilisez d'anciennes versions du package et que vous obtenez un Authentication token is invalid
, vous avez à nouveau besoin d'un sessionToken
pour vous authentifier (à partir de la mise à jour 1.2.5
et ultérieure). Voir ci-dessous.
Si vous utilisez quelque chose qui utilise le package et n'a pas été mis à jour vers la dernière version depuis un certain temps, assurez-vous de mettre à jour le package en effectuant npm update node_characterai
ou en copiant manuellement les fichiers ou en ouvrant un problème respectif dans leur package (s'ils ont un).
Ouvrez le site Web Character.AI dans votre navigateur (https://beta.character.ai)
Ouvrez les outils de développement ( F12 , Ctrl+Shift+I ou Cmd+J )
Allez dans l'onglet Application
Allez dans la section Storage
et cliquez sur Local Storage
Recherchez la clé char_token
Ouvrez l'objet, faites un clic droit sur la valeur et copiez votre jeton de session.
Ouvrez le site Web Character.AI dans votre navigateur sur l'ANCIENNE interface (https://old.character.ai/)
Ouvrez la barre d'URL, écrivez javascript:
(sensible à la casse) et collez ce qui suit :
(function(){let e=window.localStorage["char_token"];if(!e){alert("Vous devez d'abord vous connecter !");return;}let t=JSON.parse(e).value ;document.documentElement.innerHTML=`<div><i><p>fourni par node_characterai - <a href="https://github.com/realcoloride/node_characteraitab=readme-ov-file#using-an-access-token">cliquez ici pour plus d'informations</a></p></i><p> Voici votre jeton de session :</p><input value="${t}" readonly><p><strong>Ne le partagez avec personne à moins que vous sachiez ce que vous faites : il s'agit de votre jeton de session personnel ! volé ou demandé par quelqu'un en qui vous n'avez pas confiance, il pourrait accédez à votre compte sans votre consentement ; si tel est le cas, veuillez fermer la page immédiatement.</strong></p><button id="copy" onclick="navigator.clipboard.writeText('${t}'); alert( 'Copié dans le presse-papiers !')">Copier le jeton de session dans le presse-papiers</button><button onclick="window.location.reload();">Actualiser le page</button></div>`;localStorageKey=null;storageInformation=null;t=null;})();
La page suivante devrait apparaître :
Cliquez sur les boutons respectifs pour copier votre jeton d'accès ou votre jeton d'identification dans votre presse-papiers.
Lorsque vous utilisez le package, vous pouvez :
Connectez-vous en tant qu'invité à l'aide authenticateAsGuest()
- pour une utilisation massive ou à des fins de test
Connectez-vous avec votre compte ou un jeton en utilisant authenticateWithToken()
- pour des fonctionnalités complètes et une messagerie illimitée
Vous pouvez trouver l'identifiant de votre personnage dans l'URL de la page de discussion d'un personnage.
Par exemple, si vous allez sur la page de discussion du personnage Discord Moderator
vous verrez l'URL https://beta.character.ai/chatchar=8_1NyR8w1dOXmI1uWaieQcd147hecbdIK7CeEAIrdJw
.
La dernière partie de l'URL est l'ID du personnage :
️ Character AI a la capacité de générer et d’interpréter des images dans une conversation. Certains personnages basent ce concept sur des caractères spéciaux, ou peuvent l'utiliser pour reconnaître des images, ou pour interagir avec un personnage et lui donner plus de détails sur quelque chose : les possibilités sont infinies .
La plupart des fonctionnalités d'image de Character AI peuvent être utilisées comme suit :
// La plupart de ces fonctions vous renverront une URL vers l'imageawait chat.generateImage("dauphins nageant dans l'eau verte");await chat.uploadImage("https://www.example.com/image.jpg");await chat.uploadImage("./photos/image.jpg");// Les autres types pris en charge sont les tampons, les flux lisibles, les chemins de fichiers et les URLsawait. chat.uploadImage(imageBuffer);// L'inclusion du chemin relatif de l'image est nécessaire pour le téléchargement une image en attente de chat.sendAndAwaitResponse({ texte : "Qu'est-ce qu'il y a dans cette image", image_rel_path : "https://www.example.com/coffee.jpg", image_description: "C'est du café.", image_description_type : "HUMAN" // Définissez ceci si vous dites manuellement ce que l'IA regarde}, true);
Accessoires à @creepycats pour avoir implémenté la plupart de ces choses
Problème | Répondre |
---|---|
Le jeton n'était pas valide | Assurez-vous que votre jeton est réellement valide et que vous avez copié l'intégralité de votre jeton (c'est assez long) ou que vous n'avez pas mis à jour le package. |
Sur la plupart des systèmes, le marionnettiste localisera automatiquement Chromium. Mais sur certaines distributions, le chemin doit être spécifié manuellement. Cet avertissement se produit si node_characterai n'a pas pu localiser Chromium sous Linux ( /usr/bin/chromium-browser ), et générera une erreur si le marionnettiste ne peut pas le localiser automatiquement. Voir ceci pour un correctif. | |
Pourquoi les processus de chrome s'ouvrent-ils | En effet, pour le moment, la récupération simple est interrompue et j'utilise Puppeteer (une bibliothèque de contrôle de navigateur Chrome) pour contourner les restrictions de cloudflare. |
authenticateAsGuest() ne fonctionne pas | Voir le numéro 14. |
Atteignez le nombre maximum de messages | Malheureusement, les comptes invités ne reçoivent qu'un nombre limité de messages avant d'être limités et obligés de se connecter. Voir ci-dessous pour plus d'informations |
Comment utiliser un compte pour utiliser en masse la bibliothèque | Vous pouvez utiliser les conversations , une fonctionnalité introduite dans 1.0.0 , pour les attribuer aux utilisateurs et aux canaux. Pour reproduire une conversation, utilisez OOC (hors personnage) pour faire croire à l'IA que vous êtes avec plusieurs personnes. Voir un exemple ici : (Avertissement : sur certains personnages, leur personnalité leur fera ignorer toute demande OOC). |
Comment puis-je éviter la concurrence et les plantages lors de l'utilisation de plusieurs requêtes à la fois | Vérifiez la solution trouvée par @SeoulSKY ici en utilisant async-mutex . |
Est-ce officiel | Non, ce projet est réalisé par un fan du site et n'est pas officiel. Pour soutenir les développeurs, veuillez consulter leur site Web . |
J'ai fait quelque chose de génial avec node_characterai | S'il vous plaît laissez-moi savoir! |
✉️ Vous souhaitez me contacter | Voir mon profil |
☕ Tu veux me soutenir | Vous pouvez m'envoyer un café sur ko.fi : https://ko-fi.com/coloride. Merci beaucoup! |
Avoir une idée | Ouvrir un problème dans l'onglet Problèmes |
➕ Autre problème | Ouvrir un problème dans l'onglet Problèmes |
Dans la classe Client
, vous pouvez accéder à la classe Requester
et définir un marionnettiste ou d'autres variables liées au fonctionnement de CharacterAI à l'aide de characterAI.requester.(property)
. De plus, tout ici est sujet à changement, alors assurez-vous de mettre à jour le package fréquemment.
Modifiez la propriété .usePlus
du demandeur et si nécessaire, modifiez .forceWaitingRoom
.
Par exemple:
// La valeur par défaut est `false`characterAI.requester.usePlus = true ;
Il y a environ quelques mois, le package nécessitait uniquement l'exécution du module node-fetch
. Le package a été créé à l’aide de simples requêtes API.
Cependant, au fil du temps, Cloudflare a commencé à lutter contre le scraping et les robots, ce qui a également rendu presque impossible l'utilisation de ce package pour quiconque.
C'est là que dans les versions 1.1 et supérieures, le marionnettiste est utilisé (qui utilise un navigateur Chrome) pour effectuer des requêtes avec l'API.
IMPORTANT : effectuez les modifications avant d'initialiser votre client !
Dans la classe CharacterAI, vous pouvez accéder au demandeur et définir la variable .puppeteerPath
ou d'autres arguments, et les propriétés incluent (et sont sujettes à modification dans les versions futures) :
// Chemin de l'exécutable Chromium (dans certaines distributions Linux, /usr/bin/chromium-browser) puppeteerPath;// Arguments par défaut pour le lancement du navigateurpuppeteerLaunchArgs;// Booléen représentant le délai d'expiration par défaut (la valeur par défaut est 30 000 ms) puppeteerNoDefaultTimeout;// Nombre représentant le timeout du protocole par défautpuppeteerProtocolTimeout ;
Pour les utilisateurs Linux, si votre marionnettiste ne détecte pas automatiquement le chemin vers Chromium, vous devrez le spécifier manuellement.
Pour ce faire, il vous suffit de définir puppeteerPath
sur votre chemin Chromium :
caractèreAI.puppeteerPath = "/chemin/vers/chromium-browser";
Sous Linux, vous pouvez utiliser la commande which
pour trouver où Chromium est installé :
$ quel navigateur Chrome # ou quelle que soit la commande que vous utilisez pour lancer Chrome
Je vous recommande de mettre fréquemment à jour ce package pour les corrections de bugs et les nouveaux ajouts.
Si vous avez un problème ou une idée, faites-le moi savoir dans la section Problèmes .
Si vous utilisez cette API, vous êtes également lié aux conditions d'utilisation de leur site Web.
(vrai)coloride - 2023-2024, Licence MIT.