Usa un agente de canalización de consultas de LlamaIndex

Antes de comenzar

En este instructivo, se supone que leíste y seguiste las instrucciones que se indican en los siguientes documentos:

Obtén una instancia de un agente

Para consultar un LlamaIndexQueryPipelineAgent, primero debes crear una instancia nueva o obtener una instancia existente.

Para obtener el objeto LlamaIndexQueryPipelineAgent correspondiente a un ID de recurso específico, haz lo siguiente:

SDK de Vertex AI para Python

Ejecuta el siguiente código:

import vertexai

client = vertexai.Client(  # For service interactions via client.agent_engines
    project="PROJECT_ID",
    location="LOCATION",
)

agent = client.agent_engines.get(name="projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID")

print(agent)

donde

Biblioteca de solicitudes de Python

Ejecuta el siguiente código:

from google import auth as google_auth
from google.auth.transport import requests as google_requests
import requests

def get_identity_token():
    credentials, _ = google_auth.default()
    auth_request = google_requests.Request()
    credentials.refresh(auth_request)
    return credentials.token

response = requests.get(
f"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID",
    headers={
        "Content-Type": "application/json; charset=utf-8",
        "Authorization": f"Bearer {get_identity_token()}",
    },
)

API de REST

curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID

Cuando se usa el SDK de Vertex AI para Python, el objeto agent corresponde a una clase AgentEngine que contiene lo siguiente:

  • Un agent.api_resource con información sobre el agente implementado. También puedes llamar a agent.operation_schemas() para devolver la lista de operaciones que admite el agente. Consulta Operaciones admitidas para obtener más detalles.
  • un agent.api_client que permite interacciones de servicio síncronas
  • un agent.async_api_client que permite interacciones de servicio asíncronas

En el resto de esta sección, se supone que tienes una instancia de AgentEngine, llamada agent.

Operaciones admitidas

Se admiten las siguientes operaciones para LlamaIndexQueryPipelineAgent:

  • query: Para obtener una respuesta a una búsqueda de forma síncrona

El método query admite el siguiente tipo de argumento:

  • input: Son los mensajes que se enviarán al agente.

Consulta al agente

El comando anterior realiza lo siguiente:

agent.query(input="What is Paul Graham's life in college?")

es equivalente a lo siguiente (en forma completa):

agent.query(input={"input": "What is Paul Graham's life in college?"})

Para personalizar el diccionario de entrada, consulta Personaliza la plantilla de instrucciones.

También puedes personalizar el comportamiento del agente más allá de input pasando argumentos de palabras clave adicionales a query().

response = agent.query(
    input={
      "input" = [
        "What is Paul Graham's life in college?",
        "How did Paul Graham's college experience shape his career?",
        "How did Paul Graham's college experience shape his entrepreneurial mindset?",
      ],
    },
    batch=True  # run the pipeline in batch mode and pass a list of inputs.
)
print(response)

Consulta el código de QueryPipeline.run para obtener una lista completa de los parámetros disponibles.

¿Qué sigue?