LLM Flow est un outil Web conçu pour faciliter le processus de développement de l'IA, en commençant à définir des cas d'utilisation d'IA isolés (fonctions d'IA), en mettant en œuvre des invites, en évaluant et en améliorant la qualité des invites et en générant des API pour intégrer les fonctionnalités de l'IA dans vos propres applications.
Explorez les fonctionnalités »
(retour en haut)
(retour en haut)
Le projet est divisé en trois services qui doivent tous être configurés individuellement:
server : backend fastapipromptfoo-server : backend express.js qui exécute promptfooclient : Next.js Frontend(retour en haut)
Utilisez la configuration Docker si vous souhaitez simplement exécuter l'application sans trop d'effort. Pour le développement local, reportez-vous à la configuration locale.
Prérequis:
Comment configurer:
Pour le server et client créez un fichier .env.docker dans leurs dossiers racines respectifs en copie et en renommant le fichier .env.docker.template . Pour le promptfoo-server créez un fichier .env à partir du fichier .env.template . Remplacez les secrets des modèles par le vôtre.
Dans le dossier racine, exécutez ces deux commandes:
docker compose build
docker compose up -d
client : http: // localhost: 3000 /backend : http: // localhost: 4000 / docs(retour en haut)
Prérequis:
Vous pouvez également utiliser une version de nœud différente. Cependant, je n'ai testé la configuration qu'à l'aide du nœud 22.
Comment configurer:
Pour les trois services, créez un fichier .env dans leurs dossiers racines respectifs en copie et en renommant le fichier .env.template . Remplacez les secrets des modèles par les vôtres.
Dans le dossier racine Run:
docker compose up mongo -d
backend Pour exécuter le backend , vous pouvez utiliser le débogueur VS Code pour le démarrer ou exécuter ce qui suit dans le dossier backend :
pipenv install
pipenv run python3.12 wsgi.py
promptfoo-server Dans le dossier promptfoo-server :
npm install
npm run start
client : Dans le dossier client Run:
npm install
npm run dev
client : http: // localhost: 3000 /backend : http: // localhost: 4000 / docs(retour en haut)
Si vous souhaitez développer le projet, assurez-vous d'abord de parcourir la configuration locale.
Prérequis:
Voici quelques commandes utiles à utiliser pendant le développement:
pre-commit run --all-files
sh generate_client_bindings.sh
Dans le dossier client Run:
npm run lint
npm run pretty
(retour en haut)
Les fonctions d'IA représentent des contrats entre votre propre logique commerciale et un fournisseur LLM. Vous leur transmettez un ensemble de paramètres et ils renvoient une sortie structurée.
Dans l'interface Web, vous pouvez définir une fonction AI. Vous définissez son nom, donnez-lui une description, définissez les paramètres qu'il accepte et sélectionnez les fournisseurs qu'il peut utiliser:
Vous définissez également si la fonction renvoie une réponse de chaîne simple non structurée ou une réponse JSON structurée. Pour ce dernier, vous pouvez définir des objets JSON complexes à l'aide d'un éditeur de schéma JSON.
Dans le but d'évaluer la qualité des invites d'une fonction d'IA, vous pouvez définir des affirmations et des cas de test. Les affirmations sont utilisées pour comparer les valeurs ou les conditions attendues. Cette fonction utilise Promptfoo sous le capot. Il existe différents types d'assistance à choisir, allant des comparaisons simples aux modèles regex complexes, et même ceux qui utilisent un code Python ou JavaScript auto-défini, qui peut définir des logiques d'affirmation personnalisées et potentiellement complexes.
Les cas de test se réfèrent aux exemples de données pour les paramètres d'une fonction AI. Ils jouent un rôle essentiel dans l'affirmation de la qualité rapide. Après avoir défini une invite, il est évalué par rapport aux cas de test avec les affirmations définies dans la fonction AI. Vous pouvez également définir des affirmations qui ne sont appliquées qu'à un seul cas de test. Il y a même une fonctionnalité pour générer des cas de test d'IA basée sur les cas de test précédemment définis, ainsi que le nom et la description de la fonction d'IA.
Pour commencer, vous pouvez simplement créer une fonction IA à partir de l'un des exemples fournis:
(retour en haut)
Dans le LLM, les invites de flux sont définies dans le contexte des fonctions AI. Ils doivent inclure les paramètres de la fonction d'IA respectifs dans leur corps et sont évalués par rapport aux cas et aux affirmations de ses tests.
Les invites sont évaluées pour chaque fournisseur spécifié dans la fonction AI. Cela permet de comparer la qualité d'une invite entre différents fournisseurs. Trois mesures sont calculées lors de l'évaluation:
(retour en haut)
Les projets sont un moyen de créer une API à travers laquelle vous pouvez appeler diverses fonctions d'IA. Dans l'interface Web, un Doc Swagger personnalisé est généré pour chaque projet que vous pouvez utiliser pour tester l'API dans le client lui-même. Vous pouvez également exporter la spécification OpenAPI pour générer vos propres liaisons clients à l'aide de générateurs de code comme OpenAPI-Generator.
Les documents API sont automatiquement remplis du nom, de la description et des paramètres des fonctions AI sélectionnées et incluent l'un des cas de test définis comme exemple. Chaque fonction AI dans le projet se voit attribuer son propre point de terminaison.
De cette façon, vous pouvez intégrer les fonctions d'IA définies dans le flux LLM dans vos propres applications. Une fois un projet créé, vous n'avez pas nécessairement besoin d'exécuter le client pour appeler ses points de terminaison. Voici une démonstration sur la façon de créer et d'utiliser des projets:
(retour en haut)
Si vous avez une suggestion qui améliorerait cela, veuillez débarquer le dépôt et créer une demande de traction. Vous pouvez également ouvrir simplement un problème avec la balise "amélioration". N'oubliez pas de donner une étoile au projet! Merci encore!
git checkout -b feature/AmazingFeature )git commit -m 'Add some AmazingFeature' )git push origin feature/AmazingFeature )(retour en haut)
Distribué sous la licence du MIT. Voir LICENSE.txt pour plus d'informations.
(retour en haut)
Amir Mohammad - [email protected]
Lien du projet: https://github.com/amir-mo1999/llmflow
(retour en haut)