Usar um agente LangChain

Além das instruções gerais para usar um agente, esta página descreve os recursos específicos do LangchainAgent.

Antes de começar

Este tutorial pressupõe que você leu e seguiu as instruções em:

Operações suportadas

As seguintes operações são compatíveis com LangchainAgent:

  • query: para receber uma resposta a uma consulta de forma síncrona.
  • stream_query: para streaming de uma resposta a uma consulta.

Os métodos query e stream_query aceitam o mesmo tipo de argumentos:

  • input: as mensagens que serão enviadas ao agente.
  • config: a configuração (se aplicável) para o contexto da consulta.

Consultar o agente

O comando:

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

é equivalente ao seguinte (na forma completa):

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?",
        },
    ]
})

As funções são usadas para ajudar o modelo a distinguir entre diferentes tipos de mensagens ao responder. Quando o role é omitido na entrada, o padrão é "user".

Papel Descrição
system Usado para informar ao modelo de chat como se comportar e fornecer mais contexto. Não é compatível com todos os provedores de modelos de chat.
user Representa a entrada de um usuário que interage com o modelo, geralmente na forma de texto ou outra entrada interativa.
assistant Representa uma resposta do modelo, que pode incluir texto ou uma solicitação para invocar ferramentas.
tool Uma mensagem usada para transmitir os resultados de uma invocação de ferramenta de volta ao modelo depois que os dados externos ou o processamento foram recuperados.

O type da mensagem também determina como o restante dela é interpretado. Consulte Processar conteúdo multimodal.

Consultar o agente com conteúdo multimodal

Usaremos o agente a seguir (que encaminha a entrada para o modelo e não usa ferramentas) para ilustrar como transmitir entradas multimodais a um agente:

agent = agent_engines.LangchainAgent(
    model="gemini-1.5-pro-preview-0409",
    runnable_builder=lambda model, **kwargs: model,
)

As mensagens multimodais são representadas por blocos de conteúdo que especificam um type e os dados correspondentes. Em geral, para conteúdo multimodal, você especifica type como "media", file_uri para apontar para um URI do Cloud Storage e mime_type para interpretar o arquivo.

Imagem

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"},
]})

Vídeo

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"},
]})

Áudio

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"},
]})

Para conferir a lista de tipos MIME aceitos pelo Gemini, acesse a documentação em:

Consultar o agente com uma configuração executável

Ao consultar o agente, também é possível especificar um config para ele, que segue o esquema de um RunnableConfig. Dois cenários comuns são:

  • Parâmetros de configuração padrão:
  • Parâmetros de configuração personalizados (usando configurable):

Como exemplo:

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)

A seguir