Use la aplicación

Para consultar Reasoning Engine, primero necesitas una instancia de Reasoning Engine. Puedes crear una instancia nueva o, incluso, obtener una instancia existente de Reasoning Engine. En el resto de esta sección, se supone que tienes una instancia como remote_app.

Con el siguiente comando, se proporciona una lista de esquemas en formato JSON que corresponden a las operaciones del objeto remote_app:

remote_app.operation_schemas()

El siguiente es un ejemplo de una lista de esquemas:

[
    {
        'description': 'Retrieves the exchange rate between two currencies on a specified date.\n'
        '\n'
        'Uses the Frankfurter API (https://api.frankfurter.app/) to obtain exchange rate data.\n'
        '\n'
        'Args:\n'
        '    currency_from: The base currency (3-letter currency code).\n'
        '        Defaults to "USD" (US Dollar).\n'
        '    currency_to: The target currency (3-letter currency code).\n'
        '        Defaults to "EUR" (Euro).\n'
        '    currency_date: The date for which to retrieve the exchange rate.\n'
        '        Defaults to "latest" for the most recent exchange rate data.\n'
        '        Can be specified in YYYY-MM-DD format for historical rates.\n'
        '\n'
        'Returns:\n'
        '    dict: A dictionary containing the exchange rate information.\n'
        '        Example: {"amount": 1.0, "base": "USD", "date": "2023-11-24",\n'
        '            "rates": {"EUR": 0.95534}}',
        'name': 'query',
        'parameters': {
            'type': 'object',
            'properties': {
                'currency_from': {'type': 'string'},
                'currency_to': {'type': 'string'},
                'currency_date': {'type': 'string'},
            },
            'required': [],
        },
        'api_mode': '',
    },
    {
        'description': 'Retrieves the exchange rate between two currencies on a specified date.\n'
        '\n'
        'Uses the Frankfurter API (https://api.frankfurter.app/) to obtain exchange rate data.\n'
        '\n'
        'Args:\n'
        '    currency_from: The base currency (3-letter currency code).\n'
        '        Defaults to "USD" (US Dollar).\n'
        '    currency_to: The target currency (3-letter currency code).\n'
        '        Defaults to "EUR" (Euro).\n'
        '    currency_date: The date for which the exchange rate is retrieved.\n'
        '        Defaults to "latest" for the most recent exchange rate data.\n'
        '        Can be specified in YYYY-MM-DD format for historical rates.\n'
        '\n'
        'Returns:\n'
        '    generator: A generator yielding dictionaries representing intermediate steps and the final result.\n'
        '        Intermediate steps examples:\n'
        '            {'
        '                "actions": ['
        '                    {'
        '                        "tool": "get_exchange_rate",'
        '                        "tool_input": {'
        '                            "currency_from": "USD",'
        '                            "currency_to": "SEK"'
        '                        },'
        '                        "tool_output": ...'
        '                    }'
        '                ]'
        '            }\n'
        '            {'
        '                "steps": ['
        '                    {'
        '                        "action": {'
        '                            "tool": "get_exchange_rate",'
        '                            "tool_input": {'
        '                                "currency_from": "USD",'
        '                                "currency_to": "SEK"'
        '                            },'
        '                            "tool_output": ...'
        '                        },'
        '                        "observation": ...'
        '                    }'
        '                ]'
        '            }\n'
        '            {'
        '                "output": "The exchange rate from US dollars to Swedish currency (SEK) is ...",'
        '                "messages": [...]'
        '            }\n',
        'name': 'stream_query',
        'parameters': {
            'type': 'object',
            'properties': {
                'currency_from': {'type': 'string'},
                'currency_to': {'type': 'string'},
                'currency_date': {'type': 'string'},
            },
            'required': [],
        },
        'api_mode': 'stream',
    }
]

Para consultar el Reasoning Engine, usa el método .query(). Para evitar la ambigüedad, especifica cada argumento por su nombre.

SDK de Vertex AI para Python

El siguiente comando es un ejemplo de una consulta de Reasoning Engine:

remote_app = reasoning_engines.ReasoningEngine("projects/PROJECT_ID/locations/LOCATION/reasoningEngines/REASONING_ENGINE_ID")

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

REST

El siguiente comando es un ejemplo de una consulta de Reasoning Engine:

curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/REASONING_ENGINE_ID:query -d '{
  "input": {
    "input": "What is the exchange rate from US dollars to Swedish currency?"
  }
}'

La respuesta de la consulta es una cadena similar al resultado de una prueba de aplicación local:

{"input": "What is the exchange rate from US dollars to Swedish currency?",
 # ...
 "output": "For 1 US dollar you will get 10.7345 Swedish Krona."}

Para transmitir respuestas de Reasoning Engine, usa el método .stream_query(). Para evitar la ambigüedad, especifica cada argumento por su nombre.

SDK de Vertex AI para Python

El siguiente comando es un ejemplo de un stream_query de Reasoning Engine:

remote_app = reasoning_engines.ReasoningEngine("projects/PROJECT_ID/locations/LOCATION/reasoningEngines/REASONING_ENGINE_ID")

stream_response = remote_app.stream_query(input="What is the exchange rate from US dollars to Swedish currency?")

REST

El siguiente comando es un ejemplo de un stream_query de Reasoning Engine:

curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/REASONING_ENGINE_ID:streamQuery?alt=sse -d '{
  "input": {
    "input": "What is the exchange rate from US dollars to Swedish currency?"
  }
}'

Reasoning Engine transmite respuestas como una secuencia de objetos generados de forma iterativa. Por ejemplo, un conjunto de tres respuestas podría verse de la siguiente manera:

{'actions': [{'tool': 'get_exchange_rate', ...}]}  # first response
{'steps': [{'action': {'tool': 'get_exchange_rate', ...}}]}  # second response
{'output': 'The exchange rate is 11.0117 SEK per USD as of 2024-12-03.'}  # final response

¿Qué sigue?