Grazier est une bibliothèque Python permettant d'appeler facilement de grands modèles de langage à partir d'une API unifiée.
Depuis OpenAI :
De Anthropique :
Depuis Google/GCP :
De Huggingface
Depuis Facebook (via Huggingface)
De Stanford (via Huggingface)
De Berkeley (via Huggingface)
De StabilityAI (via Huggingface)
De AllenAI (via Huggingface)
De AI21
Modèles d'image/langue :
Grazier peut facilement être installé en utilisant pip :
pip install grazier
Chacun des LLM peut nécessiter une configuration supplémentaire, que vous pouvez trouver dans la section de configuration du moteur ci-dessous.
Pour les moteurs de complétion, c'est aussi simple que :
import grazier
grazier . list_models ()
[ 'gptj-6B' , 'gpt2' , 'gpt2-med' , 'gpt2-lg' , 'gpt2-xl' , 'distilgpt2' , 'gptneo-125M' , 'gptneo-1.3B' , 'gptneo-2.7B' , 'stablelm-3B' , 'stablelm-7B' , 'opt-125M' , 'opt-350M' , 'opt-1.3b' , 'opt-2.7b' , 'opt-6.7b' , 'opt-13b' , 'opt-30b' , 'opt-66b' , 'llama-7B' , 'llama-13B' , 'llama-30B' , 'llama-65B' , 'gpt3-davinci3' , 'gpt3-davinci2' , 'gpt3-curie' , 'gpt3-babbage' , 'gpt3-ada' , 'palm' ]
gpt2 = grazier . get ( "gpt2" )
completion = gpt2 ( "I enjoy walking with my cute dog, but sometimes he gets scared and" )
print ( completion )
Pour les moteurs de chat, il suffit d'ajouter le paramètre type="chat"
:
from grazier import Conversation , Speaker , get , list_models
conversation = Conversation ()
conversation . add_turn ( "You are a funny person." , speaker = Speaker . SYSTEM )
conversation . add_turn ( "Hi, how are you?" , speaker = Speaker . USER )
conversation . add_turn ( "I am doing well, how about you?" , speaker = Speaker . AI )
conversation . add_turn ( "What are you planning to do today?" , speaker = Speaker . USER )
list_models ( type = "chat" )
[ 'claude' , 'claude-100k' , 'claude-instant' , 'claude-instant-100k' , 'bard' , 'koala-7b' , 'koala-13b-v1' , 'koala-13b-v2' , 'vicuna-7b' , 'vicuna-13b' , 'alpaca-13b' , 'chat-gpt' , 'gpt4' , 'gpt4-32k' , 'stablelm-3b' , 'stablelm-7b' , 'palm' ]
gpt4 = get ( "gpt4" , type = "chat" )
next_turn = gpt4 ( conversation )
print ( next_turn )
Pour les moteurs (d'image) à vision augmentée, utilisez type="image"
import grazier
from PIL import Image
grazier . list_models ( type = "image" )
[ 'blip2-opt-2.7b' , 'blip2-opt-6.7b' , 'blip2-opt-2.7b-coco' , 'blip2-opt-6.7b-coco' , 'blip2-flan-t5-xl' , 'blip2-flan-t5-xxl' , 'blip2-flan-t5-xl-coco' , 'openflamingo-3b-vitl-mpt1b' , 'openflamingo-3b-vitl-mpt1b-dolly' , 'openflamingo-9b-vitl-mpt7b' , 'openflamingo-4b-vitl-rpj3b' ]
blip2 = grazier . get ( "blip2-opt-2.7b" , type = "image" )
image = Image . open ( 'test_data/dog.jpg' )
completion = blip2 ( image , "A photo of" )
print ( completion )
Chaque moteur peut nécessiter la transmission de certains détails spécifiques. Par exemple, les moteurs OpenAI nécessitent une clé API. Ces détails sont généralement configurés avec des variables d'environnement.
Pour les moteurs OpenAI, vous devrez définir les variables d'environnement OPENAI_API_KEY
et OPENAI_API_ORG
. Vous pouvez trouver votre clé API et votre identifiant d'organisation sur le tableau de bord OpenAI. Vous pouvez définir ces variables d'environnement dans votre shell ou dans un fichier .env
à la racine de votre projet. Par exemple, dans un fichier .env
, vous auriez :
OPENAI_API_KEY= < your key >
OPENAI_API_ORG= < your org id >
ou en ligne de commande :
export OPENAI_API_KEY= < your key >
export OPENAI_API_ORG= < your org id >
Pour les moteurs Anthropic, vous devrez définir la variable d'environnement ANTHROPIC_API_KEY
. Vous pouvez trouver votre clé API sur le tableau de bord Anthropic. Vous pouvez définir cette variable d'environnement dans votre shell ou dans un fichier .env
à la racine de votre projet. Par exemple, dans un fichier .env
, vous auriez :
ANTHROPIC_API_KEY= < your key >
ou en ligne de commande :
export ANTHROPIC_API_KEY= < your key >
Pour les moteurs Google, nous utilisons l'API Vertex cloud, qui nécessite un projet Google Cloud Platform (GCP). Vous pouvez créer un projet GCP sur la console GCP. Vous devrez également activer l'API Vertex AI pour votre projet, configurer un compte de services et télécharger les informations d'identification JSON du compte. Vous pouvez trouver des instructions pour cela en suivant les étapes 1 à 6 du didacticiel ici. Enfin, vous devrez définir la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS
sur le chemin du fichier JSON. Vous pouvez définir cette variable d'environnement dans votre shell ou dans un fichier .env
à la racine de votre projet. Par exemple, dans un fichier .env
, vous auriez :
GOOGLE_APPLICATION_CREDENTIALS= < path to your JSON file >
ou en ligne de commande :
export GOOGLE_APPLICATION_CREDENTIALS= < path to your JSON file >
Pour le moteur Bard, vous devrez obtenir vos jetons Bard __Secure-1PSID et __Secure-1PSIDTS. Obtenez la valeur de cette variable en allant d'abord sur https://bard.google.com/, puis connectez-vous, appuyez sur F12 pour la console, et allez dans l'onglet "Application", puis "Cookies", puis copiez la valeur du Cookies « __Secure-1PSID » et « __Secure-1PSIDTS ». Vous pouvez ensuite définir les variables d'environnement :
BARD__Secure_1PSID= < your session id >
BARD__Secure_1PSIDTS= < your session id timestamp >
La plupart des moteurs Huggingface ne nécessitent aucune configuration supplémentaire, cependant, certains des modèles les plus grands nécessitent un GPU pour fonctionner avec n'importe quel type d'efficacité (et certains nécessitent plusieurs GPU avec de grandes quantités de mémoire). Vous pouvez trouver plus de détails sur les exigences pour chaque modèle sur le hub des modèles Huggingface.
Pour ces moteurs, vous devrez obtenir et post-traiter les pondérations vous-même (en raison de la licence de Facebook). Vous trouverez les instructions pour ce faire sur chaque page de modèle :
Une fois les poids téléchargés et traités, vous pouvez définir les variables d'environnement suivantes dans le répertoire racine contenant un dossier pour chaque variante (le format est {root_dir}/{model-prefix}/weights.bin
, le répertoire racine serait root_dir
, et le préfixe du modèle est le nom du modèle, par exemple tulu-65b
) :
LLAMA_WEIGHTS_ROOT= < path to the llama weights >
ALPACA_WEIGHTS_ROOT= < path to the alpaca weights >
KOALA_WEIGHTS_ROOT= < path to the koala weights >
VICUNA_WEIGHTS_ROOT= < path to the vicuna weights >
ALLENAI_WEIGHTS_ROOT= < path to the allenai weights >
Pour les modèles AI21, vous devrez définir la variable d'environnement AI21_API_KEY
. Vous pouvez trouver votre clé API sur le tableau de bord AI21 Studio. Vous pouvez définir cette variable d'environnement dans votre shell ou dans un fichier .env
à la racine de votre projet. Par exemple, dans un fichier .env
, vous auriez :
AI21_API_KEY= < your key >
ou en ligne de commande :
export AI21_API_KEY= < your key >
Si vous utilisez grazier dans votre travail, veuillez citer :
@misc{grazier,
author = {David Chan},
title = {grazier: Easily call Large Language Models from a unified API},
year = {2023},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {url{
https://github.com/DavidMChan/grazier
}}
}
grazier est licencié selon les termes de la licence MIT. Voir LICENCE pour plus d’informations.