1. Introduction aux LLMs

Les Large Language Models (LLMs) sont les composants principaux de LangChain. LangChain lui-même ne fournit pas de capacités de modèle linguistique large ; au lieu de cela, il encapsule divers modèles linguistiques de grande taille courants, fournissant une interface standard pour exploiter ces modèles linguistiques de grande taille, ce qui facilite le travail des développeurs.

Actuellement, LangChain encapsule de nombreux grands modèles linguistiques et prend également en charge les modèles personnalisés. Les développeurs peuvent encapsuler leurs propres nouvelles interfaces de modèle.

  • Remarque : Actuellement, de nombreux modèles linguistiques larges open source et commerciaux sont disponibles. Compte tenu des différences de coût et de capacités des modèles, chacun peut avoir des préférences différentes. De plus, il peut y avoir des changements fréquents de modèle, et les développeurs peuvent ne pas vouloir modifier trop de code métier lorsqu'ils changent de modèle. C'est là que la valeur de LangChain prend tout son sens.

2. Configuration

2.1 Installation

Pour utiliser le LLM OpenAI dans LangChain, les utilisateurs doivent installer le package Python d'OpenAI en exécutant la commande suivante :

pip install openai

2.2 Configuration de la clé API

L'accès à l'API OpenAI nécessite une clé API, qui peut être obtenue en créant un compte sur la plateforme OpenAI. Une fois la clé API obtenue, elle peut être définie comme une variable d'environnement en utilisant la commande suivante :

export OPENAI_API_KEY="votre-clé-api"

Alternativement, si vous ne souhaitez pas définir de variable d'environnement, vous pouvez également passer directement la clé API lors de l'initialisation de la classe OpenAI LLM, comme indiqué ci-dessous :

from langchain_openai import OpenAI

llm = OpenAI(openai_api_key="votre-clé-api")

3. Implémentation de LCEL

Dans LangChain, les LLMs implémentent l'interface Runnable pour le LangChain Expression Language (LCEL). Cela signifie qu'ils prennent en charge divers appels de fonction, tels que invoke, stream, batch, et plus encore.

Les LLMs acceptent une entrée de type chaîne ou des objets pouvant être coercés en une instruction de type chaîne, y compris List[BaseMessage] et PromptValue.

4. Exemple d'utilisation de LLM

4.1 Invocation

Pour invoquer un LLM avec une instruction spécifique, la fonction invoke peut être utilisée, comme indiqué ci-dessous :

llm.invoke("Fournir une instruction pour le LLM ici")

4.2 Diffusion

La méthode d'obtention et de traitement en temps réel de la sortie de texte des LLMs est appelée diffusion. Voici un exemple d'utilisation de LLM pour le traitement par diffusion :

for chunk in llm.stream("Fournir une instruction de diffusion pour LLM ici"):
    print(chunk, end="", flush=True)

4.3 Traitement par lot

Le traitement par lot permet le traitement parallèle de plusieurs entrées pour les LLMs. Vous pouvez traiter un lot d'instructions de cette manière :

llm.batch(["instruction 1", "instruction 2", "instruction 3"])

4.4 Opérations asynchrones

Pour une efficacité accrue, des opérations asynchrones peuvent être utilisées en conjonction avec les LLMs. Des opérations asynchrones telles que ainvoke, astream, abatch, et astream_log permettent une exécution asynchrone. Voici un exemple d'utilisation de LLM pour le traitement asynchrone par diffusion :

async for chunk in llm.astream("Fournir une instruction asynchrone pour la diffusion LLM ici"):
    print(chunk, end="", flush=True)

Ces exemples illustrent les différentes façons de tirer parti des LLMs pour les tâches de traitement du langage naturel dans le cadre du framework LangChain.