Definición de una herramienta - Amazon Nova

Definición de una herramienta

Un paso fundamental en el flujo de trabajo de llamada a la herramienta es definir la herramienta. La definición de la herramienta debe incluir todo el contexto necesario para guiar al modelo sobre cuándo es apropiado invocar la herramienta.

Para definir una herramienta, cree una configuración de herramienta y pásela a la API junto con el mensaje del usuario. El esquema de configuración de la herramienta espera una matriz de herramientas y, opcionalmente, un parámetro de elección de herramientas.

nota

Amazon Nova es compatible con las opciones auto, any y tool para toolChoice. Para obtener más información, consulte Elección de herramienta en la documentación de la API de Amazon Bedrock y Usar una herramienta para completar una respuesta del modelo de Amazon Bedrock.

A continuación, se muestra un ejemplo de cómo definir una herramienta:

tool_config = { "tools": [ { "toolSpec": { "name": "top_song", "description": "Get the most popular song played on a radio station.", "inputSchema": { "json": { "type": "object", "properties": { "sign": { "type": "string", "description": "The call sign for the radio station for which you want the most popular song. Example calls signs are WZPZ, and WKRP." } }, "required": [ "sign" ] } } } } ], }

El nombre, la descripción y el esquema de entrada deben ser explícitos con la funcionalidad exacta de la herramienta. Asegúrese de que los diferenciadores clave sobre cuándo utilizar la herramienta se reflejen en la configuración de la herramienta.

nota

Actualmente, los modelos de comprensión de Amazon Nova solo admiten un subconjunto de la funcionalidad de JsonSchema cuando se utilizan para definir el ToolInputSchema en la API de Converse.

  • El esquema de nivel superior debe ser del tipo Object.

  • Solo se admiten tres campos en el Object de nivel superior: type (debe estar configurado como “object”), properties y required.

Para llamar herramientas, los parámetros de inferencia se deben establecer como inf_params = {"topP": 1, "temperature": 1} y additionalModelRequestFields= {"inferenceConfig": {"topK":1}}. Esto se debe a que fomentamos parámetros de decodificación codiciosos para las llamadas a las herramientas de Amazon Nova.

A continuación, se muestra un ejemplo de llamada a una herramienta con la API de Converse:

import json import boto3 client = boto3.client("bedrock-runtime", region_name="us-east-1") input_text = "What is the most popular song on WZPZ?" messages = [{ "role": "user", "content": [{"text": input_text}] }] inf_params = {"maxTokens": 1000, "topP": 1, "temperature": 1} response = client.converse( modelId="us.amazon.nova-lite-v1:0", messages=messages, toolConfig=tool_config, inferenceConfig=inf_params, additionalModelRequestFields= {"inferenceConfig": {"topK":1}} ) messages.append(response["output"]["message"]) # Pretty print the response JSON. print("[Full Response]") print(json.dumps(response, indent=2)) # Print the tool content for easy readability. tool = next( block["toolUse"] for block in response["output"]["message"]["content"] if "toolUse" in block ) print("\n[Tool Response]") print(tool)