Definir uma ferramenta - Amazon Nova

Definir uma ferramenta

Uma etapa crítica no fluxo de trabalho de chamada de ferramentas é definir a ferramenta. A definição da ferramenta deve incluir todo o contexto necessário para orientar o modelo sobre quando é apropriado invocar a ferramenta.

Para definir uma ferramenta, crie uma configuração de ferramenta e passe essa configuração com a mensagem do usuário para a API. O esquema de configuração da ferramenta espera uma matriz de ferramentas e, opcionalmente, um parâmetro de escolha de ferramenta.

nota

O Amazon Nova é compatível com as opções auto, any e tool para toolChoice. Para obter mais informações, consulte ToolChoice na documentação da API do Amazon Bedrock e Use uma ferramenta para completar uma resposta do modelo Amazon Bedrock.

Confira abaixo um exemplo de como definir uma ferramenta:

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

O nome, a descrição e o esquema de entrada devem ser explícitos com a funcionalidade exata da ferramenta. Certifique-se de que todos os principais diferenciais para quando usar a ferramenta estejam refletidos na configuração da ferramenta.

nota

Atualmente, os modelos de compreensão do Amazon Nova são compatíveis apenas com um subconjunto da funcionalidade JsonSchema quando usados para definir o ToolInputSchema na API Converse.

  • O esquema de nível superior deve ser do tipo Object.

  • Somente três campos são compatíveis no Objeto de nível superior: type (deve ser definido como “object”), properties e required.

Para chamadas de ferramentas, os parâmetros de inferência devem ser definidos como inf_params = {"topP": 1, "temperature": 1} e additionalModelRequestFields= {"inferenceConfig": {"topK":1}}. Isso ocorre porque incentivamos parâmetros de decodificação Greedy para a chamada de ferramentas do Amazon Nova.

Confira abaixo um exemplo de chamada de ferramenta com a API 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)