JouerRécupérer
PlayFetch permet d'ajouter des fonctionnalités de modèle de langage étendu à votre application de manière rapide et simple.
Arrière-plan
Les LLM ont changé la façon dont les équipes produit travaillent. De plus en plus de parties d’applications sont désormais construites en langage naturel. Il y a souvent des membres de l'équipe non-ingénieurs impliqués dans ce processus : des stratèges de contenu qui se soucient du ton et de la livraison du texte généré, des experts du domaine qui apportent des connaissances hautement spécialisées au contenu généré, et des concepteurs et chefs de produit qui ont une compréhension approfondie de leurs besoins en produits. Avec ces nouveaux membres de l'équipe impliqués dans le prototypage, le développement et la maintenance des parties critiques des applications aux côtés de l'équipe d'ingénierie, de nombreuses nouvelles interactions se créent.
Ces nouvelles interactions entre les ingénieurs et le reste de l’équipe nécessitent de nouveaux outils. Les ingénieurs ne veulent pas que du texte brut soit distribué dans leurs bases de code avec des demandes constantes de mises à jour pour se rendre compte que la nouvelle version n'est pas réellement meilleure. Les contributeurs aux invites ou aux chaînes ne veulent pas avoir à attendre qu'un ingénieur intègre leurs mises à jour avant de constater qu'elles ne fonctionnent pas comme prévu. PlayFetch résout ces problèmes et bien d’autres que nous avons observés dans les entreprises travaillant de cette manière.
Qu’est-ce que PlayFetch ?
- Un terrain de jeu intuitif construit autour de la collaboration avec des commentaires, des annotations, des étiquettes et des évaluations.
- Un système de versioning non destructif que tout membre de l’équipe peut utiliser en toute transparence.
- Un environnement de test avec importation et exportation de données, chaînes de mesure et tests automatisés de chatbots.
- Une plateforme LLM qui s'intègre parfaitement aux outils de contrôle de code source, de gestion de projet et de magasins de vecteurs.
- Une solution d'hébergement indépendante du modèle avec une API unifiée simple prenant en charge des appels simples, des discussions et des interruptions manuelles.
- Une solution d'analyse et de surveillance axée sur les besoins en fonctionnalités LLM.
Déployer PlayFetch sur Google Cloud
PlayFetch a été optimisé pour fonctionner sur Google Cloud Platform. Suivez les instructions ci-dessous pour rendre votre propre instance opérationnelle. Nous supposerons que vous avez créé le référentiel officiel PlayFetch sur https://github.com/yello-xyz/playfetch (afin que vous puissiez configurer l'intégration continue). Si vous envisagez d'apporter des modifications au code, vous pouvez exécuter ces instructions plusieurs fois pour configurer des instances distinctes pour le développement, la préparation et la production.
Configurer un nouveau projet
- Configurez votre compte Google Cloud Platform sur https://cloud.google.com/.
- Accédez à Cloud Console à l'adresse https://console.cloud.google.com.
- Accédez à IAM et administrateur → Gérer les ressources et cliquez sur CRÉER UN PROJET .
- Choisissez un nom unique (ne peut pas être modifié ultérieurement) et cliquez sur CRÉER .
- Accédez à Facturation et sous Gestion des comptes , assurez-vous que la facturation est activée pour le nouveau projet.
Configurer les API
- Accédez à API et services → API et services activés .
- Assurez-vous que le projet nouvellement créé est sélectionné dans le sélecteur de projet en haut.
- Cliquez sur ACTIVER LES APIS ET LES SERVICES .
- Recherchez l'API d'administration App Engine et cliquez sur ACTIVER .
- Recherchez l'API Cloud Build et cliquez sur ACTIVER .
- Recherchez l'API Cloud Datastore et cliquez sur ACTIVER .
- Recherchez l'API Cloud Scheduler et cliquez sur ACTIVER .
- Recherchez Google App Engine Flexible Environment et cliquez sur ACTIVER .
- Recherchez l’API Identity and Access Management (IAM) et cliquez sur ACTIVER .
- Recherchez l'API Vertex AI et cliquez sur ACTIVER .
Configurer l'application App Engine
- Accédez à App Engine → Tableau de bord et cliquez sur CRÉER UNE APPLICATION .
- Choisissez un emplacement (ne peut pas être modifié ultérieurement).
- Laissez l'option du compte de service ouverte (nous utiliserons la valeur par défaut) et cliquez sur SUIVANT .
- Ignorez le panneau de déploiement (cliquez sur JE LE FAIRE PLUS TARD ).
Configurer la banque de données
- Accédez à Banque de données .
- Si vous ne voyez pas la banque de données (par défaut) , attendez une minute et actualisez.
- Sélectionnez la banque de données (par défaut) .
- Sélectionnez Durée de vie (TTL) dans la barre latérale et cliquez sur CRÉER UNE POLITIQUE .
- Définissez Kind sur _nextauth_token et la propriété Timestamp sur expires et cliquez sur CREATE .
- Créez une autre stratégie avec le type de cache et la propriété expiresAt .
Configurer le bucket de stockage
- Accédez à Cloud Storage → Buckets et sélectionnez le bucket [project-name] .appspot.com .
- Sous AUTORISATIONS , cliquez sur ACCORDER L'ACCÈS .
- Ajoutez le principal allUsers et attribuez le rôle Storage Object Viewer .
- Cliquez sur ENREGISTRER et AUTORISER L'ACCÈS PUBLIC (ce compartiment sera utilisé pour stocker les avatars).
Créer le compte de service de build
- Accédez à IAM et administrateur → Comptes de service et cliquez sur CRÉER UN COMPTE DE SERVICE .
- Choisissez un nom unique et cliquez sur CRÉER ET CONTINUER .
- Sélectionnez le rôle Utilisateur du compte de service .
- Cliquez sur AJOUTER UN AUTRE RÔLE et sélectionnez App Engine Deployer .
- Cliquez sur AJOUTER UN AUTRE RÔLE et sélectionnez Agent de service pour l'environnement flexible App Engine .
- Cliquez sur AJOUTER UN AUTRE RÔLE et sélectionnez Administrateur du service App Engine .
- Cliquez sur AJOUTER UN AUTRE RÔLE et sélectionnez Compte de service Cloud Build .
- Cliquez sur AJOUTER UN AUTRE RÔLE et sélectionnez Administrateur d'index Cloud Datastore .
- Cliquez sur AJOUTER UN AUTRE RÔLE et sélectionnez Cloud Scheduler Admin .
- Cliquez sur CONTINUER et TERMINÉ .
[facultatif] Configurer un domaine personnalisé
- Accédez à App Engine → Paramètres .
- Sous DOMAINES PERSONNALISÉS, cliquez sur AJOUTER UN DOMAINE PERSONNALISÉ .
- Saisissez le domaine personnalisé et les sous-domaines que vous souhaitez utiliser (en suivant les instructions pour vérifier la propriété).
- Cliquez sur CONTINUER et TERMINÉ .
- Ajoutez les enregistrements affichés à la configuration DNS de votre fournisseur de domaine personnalisé.
[facultatif mais recommandé] Configurer l'authentification utilisateur Google OAuth
- Accédez à API et services → écran de consentement OAuth .
- Choisissez le type d'utilisateur Interne ou Externe en fonction de votre cas d'utilisation et cliquez sur CRÉER .
- Remplissez les champs obligatoires, cliquez sur ENREGISTRER ET CONTINUER , puis cliquez sur AJOUTER OU SUPPRIMER DES PORTÉES .
- Vérifiez la portée .../auth/userinfo.profile et .../auth/userinfo.email , puis cliquez sur UPDATE et SAVE AND CONTINUE .
- Si vous avez choisi le type d'utilisateur externe ci-dessus, vous pouvez ajouter des comptes de test (avant de publier l'application en production). Assurez-vous d'inclure l'adresse e-mail que vous souhaitez utiliser pour votre premier utilisateur administrateur. Notez que vous devrez également accorder à ces utilisateurs l'accès dans PlayFetch.
- Cliquez sur ENREGISTRER ET CONTINUER et RETOUR AU TABLEAU DE BORD .
- Sélectionnez Identifiants dans la barre latérale, puis cliquez sur CRÉER DES CRÉDENTIELS et ID client OAuth .
- Sélectionnez Application Web comme type d'application et choisissez un nom.
- Sous Origines JavaScript autorisées , ajoutez https:// [nom-du-projet] .appspot.com (et un domaine personnalisé si vous en avez un). Si vous souhaitez également utiliser l'authentification Google lors de l'exécution de l'application localement, ajoutez également http://localhost:3000 .
- Sous URI de redirection autorisés , ajoutez https:// [project-name] .appspot.com/api/auth/callback/google (et une URL similaire pour tout domaine personnalisé). Si vous souhaitez également utiliser l'authentification Google lors de l'exécution de l'application localement, ajoutez également http://localhost:3000/api/auth/callback/google .
- Cliquez sur CRÉER et copiez l'ID client et le secret client générés à utiliser dans la configuration du déclencheur de build ci-dessous.
Configurer la construction
- Accédez à Cloud Build → Déclencheurs et cliquez sur CONNECT REPOSITORY .
- Sélectionnez la source GitHub (application Cloud Build GitHub) et cliquez sur CONTINUER pour authentifier le compte GitHub sur lequel vous avez créé le référentiel (dans une fenêtre contextuelle).
- Sélectionnez le référentiel forké, cochez la case en dessous et cliquez sur CONNECT .
- Cliquez sur CRÉER UN DÉCLENCHEUR .
- Choisissez un nom pour votre build.
- Sous Configuration , sélectionnez Fichier de configuration Cloud Build (yaml ou json) .
- Pour une configuration minimale, vous devrez ajouter les variables de substitution suivantes à votre déclencheur de build (dans la section Avancé ) en cliquant sur AJOUTER UNE VARIABLE :
- _ENCRYPTION_KEY : chaîne aléatoire de 64 chiffres hexadécimaux .
- _NEXTAUTH_SECRET : chaîne aléatoire d'au moins 32 caractères.
- _NEXTAUTH_URL : URL publique de votre instance, soit un domaine personnalisé si vous en avez un, soit https:// [project-name] .appspot.com .
- _GCLOUD_STORAGE_BUCKET : le nom du bucket Cloud Storage auquel vous avez autorisé l'accès public, par exemple [project-name] .appspot.com .
- _NOREPLY_EMAIL_USER et _NOREPLY_EMAIL_PASSWORD : Compte Gmail à utiliser pour les emails transactionnels sortants. Il peut s'agir d'un compte dédié dans votre espace de travail Google (avec mot de passe standard) ou d'un compte Gmail distinct (avec mot de passe d'application). Consultez les instructions ci-dessous si vous devez utiliser un autre fournisseur de messagerie.
- Si vous avez configuré l'authentification Google ci-dessus, vous devez également ajouter les variables suivantes :
- _GOOGLE_CLIENT_ID et _GOOGLE_CLIENT_SECRET : les valeurs que vous avez copiées ci-dessus après avoir généré les informations d'identification OAuth.
- Sous Compte de service , sélectionnez le compte de service que vous avez créé ci-dessus.
- Cliquez sur CRÉER .
- Cliquez sur EXÉCUTER à côté de votre déclencheur nouvellement créé, puis cliquez sur EXÉCUTER LE DÉCLENCHEUR.
- Sélectionnez Historique dans la barre latérale et attendez de vérifier que votre build se termine avec succès (cela peut prendre 10 à 15 minutes).
Initialisez votre environnement PlayFetch
- Choisissez une adresse e-mail qui sera utilisée comme connexion pour l'utilisateur administrateur initial.
- Ouvrez un navigateur et accédez à https:// [project-name] .appspot.com/api/admin/init?admin= [[email protected]] (assurez-vous de spécifier l'adresse e-mail correcte dans la requête).
- Ce point de terminaison exécutera un script pour initialiser la banque de données (ce qui peut prendre une minute), mais vous ne pourrez l'exécuter qu'une seule fois (sauf si vous recréez la banque de données).
- Une fois le script terminé, copiez les valeurs de _PLAYFETCH_API_KEY et _PLAYFETCH_ENDPOINT_URL affichées dans la réponse.
- Accédez à Cloud Build → Triggers , cliquez sur le déclencheur que vous avez créé, ajoutez les deux variables de substitution supplémentaires de l'étape ci-dessus, puis cliquez sur SAVE .
- Exécutez à nouveau votre déclencheur de build avec les variables ajoutées. Cette version devra peut-être générer des index de banque de données manquants. Il est donc préférable d'attendre qu'elle se termine à nouveau.
Vous devriez maintenant pouvoir accéder à https:// [project-name] .appspot.com et vous connecter avec l'adresse e-mail que vous avez spécifiée pour votre premier utilisateur administrateur. Vous pouvez utiliser soit l'authentification Google (si configurée), soit des liens e-mail (à condition que les variables _NOREPLY_EMAIL soient correctement configurées). Des utilisateurs supplémentaires peuvent bénéficier d'un accès dans le panneau d'administration.
Exécuter PlayFetch localement
Si vous souhaitez contribuer à PlayFetch ou aux problèmes de débogage, vous pouvez suivre les instructions ci-dessous pour le faire fonctionner sur votre ordinateur local.
Installer le nœud et npm
Le moyen le plus simple d'installer la dernière version de node et npm consiste à exécuter le dernier programme d'installation.
Cloner le référentiel
Soit ouvrez avec GitHub Desktop et clonez dans un répertoire local, soit connectez-vous à GitHub avec SSH et exécutez git clone [email protected]:yello-xyz/playfetch.git
. Si vous avez déjà créé le référentiel, vous pouvez cloner celui-ci à la place.
Configurer l'environnement
Afin d'exécuter l'application localement, vous devrez ajouter les mêmes variables à votre fichier .env.local local (ce fichier est ignoré par le contrôle de code source pour éviter les fuites de clés). Il peut s'agir des mêmes valeurs que celles que vous avez spécifiées dans votre déclencheur de build Google Cloud pour votre instance de développement (en supposant que vous exécutez une instance distincte pour la production car vous ne voulez pas risquer de divulguer ces clés), à l'exception de _NEXTAUTH_URL où doit spécifier la valeur http://localhost:3000.
Vous pouvez accéder à la banque de données dans Google Cloud à partir de votre ordinateur local (en supposant encore une fois que vous exécutez une instance de développement distincte afin de ne pas corrompre ou divulguer accidentellement des données de production) en installant Google Cloud CLI et en l'initialisant comme expliqué ici (vous pouvez ignorer les autres étapes). Exécutez les commandes suivantes pour vous connecter avec votre compte Google :
-
gcloud auth login
-
gcloud init
-
gcloud auth application-default login
-
gcloud init
Construire et exécuter
Vous devriez maintenant pouvoir exécuter les commandes suivantes :
-
npm install
-
npm run build
-
npm run start
Alternativement, pendant le développement, vous pouvez simplement exécuter la commande suivante pour exécuter une version de débogage avec une actualisation rapide :
npm run dev
Pour exécuter tous les tests une fois :
npm run test
Pour surveiller les modifications et réexécuter automatiquement les suites de tests concernées :
npm run watch
Fonctionnalités optionnelles
Afin d'étendre la configuration minimale, vous pouvez configurer les variables d'environnement suivantes (soit dans votre déclencheur de build GCP, soit dans votre fichier .env.local local) pour activer certaines fonctionnalités supplémentaires.
Intégrations
- _GITHUB_CLIENT_ID , _GITHUB_CLIENT_SECRET : peuvent être utilisés pour configurer l'authentification GitHub OAuth (similaire à Google). Nécessite la configuration d'une application GitHub OAuth.
- _GITHUB_APP_CLIENT_ID , _GITHUB_APP_CLIENT_SECRET , _GITHUB_APP_ID , _GITHUB_APP_PRIVATE_KEY , _NEXT_PUBLIC_GITHUB_APP_INSTALL_LINK : peuvent être utilisés pour configurer l'intégration du contrôle de source. Nécessite la configuration d'une application GitHub.
- _LINEAR_APP_CLIENT_ID , _LINEAR_APP_CLIENT_SECRET , _LINEAR_APP_WEBHOOK_SECRET : peuvent être utilisés pour configurer l'intégration de la gestion des tâches. Nécessite également la configuration d’une application linéaire.
- _NOTION_TOKEN, _NOTION_ONBOARDING_PAGE_ID, _NOTION_WAITLIST_PAGE_ID : peuvent être utilisés pour synchroniser automatiquement les inscriptions sur la liste d'attente et les réponses aux enquêtes d'intégration sur Notion. Nécessite la configuration d'une application Notion.
Analytique
- _GOOGLE_ANALYTICS_API_SECRET , _GOOGLE_ANALYTICS_MEASUREMENT_ID : peuvent être utilisés pour configurer les analyses côté serveur (GA4).
- _NEXT_PUBLIC_GOOGLE_TAG_MANAGER_ID , _NEXT_PUBLIC_COOKIE_DOMAIN , _NEXT_PUBLIC_COOKIE_NAME : peuvent être utilisés pour configurer les cookies et les analyses côté client (Google Tag Manager).
Environnement
- _GOOGLE_ANALYTICS_DASHBOARD_URL , _GOOGLE_ANALYTICS_REPORTS_URL , _GOOGLE_SEARCH_CONSOLE_URL , _INTEGRATION_TEST_URL , _SERVER_LOGS_URL : peuvent être utilisés pour ajouter divers liens de diagnostic dans le panneau d'administration.
- _NEXT_PUBLIC_DOCS_URL , _NEXT_PUBLIC_SUPPORT_EMAIL : peuvent être utilisés pour générer les liens vers la documentation et le support dans l'espace de travail et les barres latérales du projet.
- _NOREPLY_EMAIL_HOST , _NOREPLY_EMAIL_PORT : peuvent être utilisés pour configurer un fournisseur de messagerie alternatif pour les e-mails transactionnels sortants.
- _API_URL : peut être utilisé pour répartir le trafic entre le site Web et l'API, par exemple si vous avez des sous-domaines distincts pointant vers votre instance.
Licence
PlayFetch est open source sous une licence permissive MIT.
Veuillez noter que PlayFetch utilise CodeMirror comme dépendance. Si vous utilisez CodeMirror à des fins commerciales, il existe une attente sociale (mais pas légale) selon laquelle vous contribuerez à financer sa maintenance.
Contribuer
PlayFetch est en cours de développement sur GitHub. Les contributions sont les bienvenues. N'hésitez pas à ouvrir des problèmes ou à ouvrir des demandes d'extraction lors de la correction de bugs ou de l'ajout de fonctionnalités. Pour commencer, vous trouverez de l'inspiration dans TODO.md.