En plus des instructions générales sur l'utilisation d'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 des articles suivants:
- Développer un agent LangChain: pour développer
agent
en tant qu'instance deLangchainAgent
. - Authentification de l'utilisateur pour vous authentifier en tant qu'utilisateur afin d'interroger l'agent.
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) du contexte de la requête.
Interroger l'agent
La commande
agent.query(input="What is the exchange rate from US dollars to Swedish currency?")
est équivalent à la forme complète suivante :
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 permettent au modèle de distinguer les différents types de messages lors de ses réponses. Lorsque role
est omis dans l'entrée, la valeur par défaut est "user"
.
Rôle | Description |
---|---|
system |
Permet d'indiquer au modèle de chat comment se comporter et de fournir un contexte supplémentaire. Non compatible avec tous les fournisseurs de modèles de chat. |
user |
Représente l'entrée d'un utilisateur qui interagit avec le modèle, généralement sous 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 requête d'appel d'outils. |
tool |
Message utilisé pour renvoyer les résultats d'une invocation d'outil au modèle après la récupération de données ou de traitement externes. |
Le type
du message détermine également l'interprétation du reste du message (voir Gérer le contenu multimodal).
Interroger l'agent avec du contenu multimodal
Nous allons utiliser l'agent suivant (qui transfère 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-1.5-pro-preview-0409",
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 règle générale, pour le contenu multimodal, vous devez spécifier "media"
pour type
, 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:
- Paramètres de configuration par défaut :
run_id
/run_name
: identifiant de l'exécution.tags
/metadata
: classifieur de l'exécution lors du traçage avec OpenTelemetry.
- Paramètres de configuration personnalisés (via
configurable
) :session_id
: session au cours de laquelle l'exécution se produit (voir Historique des discussions du store).thread_id
: thread sous lequel l'exécution se produit (voir Stocker des points de contrôle).
À 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)