Utiliser un agent LangChain

En plus des instructions générales pour utiliser un agent, cette page décrit les fonctionnalités spécifiques à LangchainAgent.

Avant de commencer

Ce tutoriel suppose que vous avez lu et suivi les instructions de :

Opérations compatibles

Les opérations suivantes sont acceptées pour LangchainAgent :

  • query : pour obtenir une réponse à une requête de manière synchrone.
  • stream_query : pour diffuser une réponse à une requête.

Les méthodes query et stream_query acceptent le même type d'arguments :

  • input : messages à envoyer à l'agent.
  • config : configuration (le cas échéant) pour le contexte de la requête.

Interroger l'agent

La commande

agent.query(input="What is the exchange rate from US dollars to SEK today?")

équivaut à ce qui suit (sous forme complète) :

agent.query(input={
    "input": [ # The input is represented as a list of messages (each message as a dict)
        {
            # The role (e.g. "system", "user", "assistant", "tool")
            "role": "user",
            # The type (e.g. "text", "tool_use", "image_url", "media")
            "type": "text",
            # The rest of the message (this varies based on the type)
            "text": "What is the exchange rate from US dollars to Swedish currency?",
        },
    ]
})

Les rôles aident le modèle à distinguer les différents types de messages lors de la réponse. Lorsque role est omis dans l'entrée, la valeur par défaut est "user".

Rôle Description
system Utilisé pour indiquer au modèle de chat comment se comporter et fournir un contexte supplémentaire. Non pris en charge par tous les fournisseurs de modèles de chat.
user Représente l'entrée d'un utilisateur interagissant avec le modèle, généralement sous la forme de texte ou d'une autre entrée interactive.
assistant Représente une réponse du modèle, qui peut inclure du texte ou une demande d'appel d'outils.
tool Message utilisé pour renvoyer les résultats d'un appel d'outil au modèle après récupération de données ou traitement externes.

Le type du message détermine également la façon dont le reste du message est interprété (voir Gérer le contenu multimodal).

Interroger l'agent avec du contenu multimodal

Nous allons utiliser l'agent suivant (qui transmet l'entrée au modèle et n'utilise aucun outil) pour illustrer comment transmettre des entrées multimodales à un agent :

agent = agent_engines.LangchainAgent(
    model="gemini-2.0-flash",
    runnable_builder=lambda model, **kwargs: model,
)

Les messages multimodaux sont représentés par des blocs de contenu qui spécifient un type et les données correspondantes. En général, pour le contenu multimodal, vous devez spécifier type sur "media", file_uri pour pointer vers un URI Cloud Storage et mime_type pour interpréter le fichier.

Image

agent.query(input={"input": [
    {"type": "text", "text": "Describe the attached media in 5 words!"},
    {"type": "media", "mime_type": "image/jpeg", "file_uri": "gs://cloud-samples-data/generative-ai/image/cricket.jpeg"},
]})

Vidéo

agent.query(input={"input": [
    {"type": "text", "text": "Describe the attached media in 5 words!"},
    {"type": "media", "mime_type": "video/mp4", "file_uri": "gs://cloud-samples-data/generative-ai/video/pixel8.mp4"},
]})

Audio

agent.query(input={"input": [
    {"type": "text", "text": "Describe the attached media in 5 words!"},
    {"type": "media", "mime_type": "audio/mp3", "file_uri": "gs://cloud-samples-data/generative-ai/audio/pixel.mp3"},
]})

Pour obtenir la liste des types MIME compatibles avec Gemini, consultez la documentation sur :

Interroger l'agent avec une configuration exécutable

Lorsque vous interrogez l'agent, vous pouvez également spécifier un config pour l'agent (qui suit le schéma d'un RunnableConfig). Voici deux scénarios courants :

À titre d'exemple :

import uuid

run_id = uuid.uuid4()  # Generate an ID for tracking the run later.

response = agent.query(
    input="What is the exchange rate from US dollars to Swedish currency?",
    config={  # Specify the RunnableConfig here.
        "run_id": run_id                               # Optional.
        "tags": ["config-tag"],                        # Optional.
        "metadata": {"config-key": "config-value"},    # Optional.
        "configurable": {"session_id": "SESSION_ID"}   # Optional.
    },
)

print(response)

Étapes suivantes