Modèles de discussion
Les modèles de discussion sont une variante des modèles linguistiques. Bien que les modèles de discussion utilisent des modèles linguistiques (LLM) au niveau sous-jacent, leurs interfaces publiques sont quelque peu différentes. Au lieu d'exposer une API pour "entrée de texte, sortie de texte", ils utilisent une interface qui prend des "messages de discussion" en tant qu'entrée et sortie. Tout le processus d'interaction des modèles de discussion est similaire au processus d'échange de messages de discussion.
Premiers pas avec les modèles de discussion
Ce chapitre est basé sur le modèle OpenAI.
Configuration
Par défaut, LangChain n'a pas les dépendances du modèle installées. Tout d'abord, installez le package Python OpenAI :
pip install langchain-openai
L'accès à l'API nécessite une clé API, qui peut être configurée via des variables d'environnement. L'exemple suivant montre comment le configurer dans un environnement Linux :
export OPENAI_API_KEY="..."
Si vous préférez ne pas définir de variables d'environnement, vous pouvez passer directement la clé via le paramètre nommé openai_api_key
lors de l'initialisation de la classe OpenAI LLM :
from langchain_openai import ChatOpenAI
chat = ChatOpenAI(openai_api_key="...")
Alternativement, vous pouvez l'initialiser sans aucun paramètre :
from langchain_openai import ChatOpenAI
chat = ChatOpenAI()
Messages
L'interface du modèle de discussion est basée sur des messages plutôt que sur du texte brut. Les types de messages pris en charge par LangChain incluent actuellement AIMessage
, HumanMessage
, SystemMessage
, FunctionMessage
, et ChatMessage
, où ChatMessage
nécessite un paramètre de rôle arbitraire. Dans la plupart des cas, vous traiterez uniquement avec HumanMessage
, AIMessage
et SystemMessage
.
LCEL
Le modèle de discussion implémente l'interface Runnable
, prenant en charge des méthodes telles que invoke
, ainvoke
, stream
, astream
, batch
, abatch
, astream_log
, ainsi le modèle de discussion peut également être utilisé pour les expressions de langage d'expression LangChain (LCEL).
Le modèle de discussion accepte une List[BaseMessage]
en tant qu'entrée, ou peut accepter des objets qui peuvent être coercés en messages, y compris str
(converti en HumanMessage
) et PromptValue
.
from langchain_core.messages import HumanMessage, SystemMessage
messages = [
SystemMessage(content="Vous êtes un assistant utile"),
HumanMessage(content="Quel est le but de la régularisation du modèle?"),
]
Appeler le modèle avec un tableau de messages :
chat.invoke(messages)
Exemple du message retourné :
AIMessage(content="Le contenu de la réponse de l'IA...détails omis...")
Diffusion de la sortie de la réponse de l'IA :
for chunk in chat.stream(messages):
print(chunk.content, end="", flush=True)