View a markdown version of this page

Criar agentes de IA - Amazon Nova

Criar agentes de IA

Os modelos do Amazon Nova são otimizados para criar agentes de IA com o Amazon Nova Act. Os modelos oferecem um uso aprimorado das ferramentas, melhor raciocínio para tarefas de várias etapas, maior capacidade de manter o contexto em fluxos de trabalho complexos de agentes e compatibilidade com ferramentas MCP remotas.

Crie um agente

Agentes de IA criados com o Nova podem orquestrar várias chamadas de ferramentas, manter o contexto em interações estendidas e corrigir o curso quando necessário. O pensamento estendido transforma os fluxos de trabalho agênticos, permitindo o raciocínio sistemático por meio de metas complexas. Considere usar um SDK de framework de planejamento, como o Strands Agents, para tornar o processo de planejamento e execução de seus sistemas de agentes mais robusto.

Padrões de design do agente

Ao projetar agentes com o Nova:

  • Habilite o raciocínio médio ou alto para obter melhores resultados em fluxos de trabalho complexos de várias etapas que exigem planejamento e verificação

  • Implemente a opção de ferramentas auto para permitir a seleção flexível de ferramentas em todas as interações do agente

  • Desenvolva um tratamento de erros que permita que os agentes se recuperem e tentem novamente com abordagens modificadas

  • Mantenha o histórico de conversas para preservar o contexto entre as interações dos agentes

  • Implemente mecanismos robustos de filtragem e moderação de conteúdo em todo o conteúdo não controlado que seu sistema de agentes consome. Por exemplo, a Amazon oferece as Barreiras de Proteção para Amazon Bedrock, um recurso projetado para aplicar proteções em vários modelos de base, bases de conhecimentos e agentes. Essas barreiras de proteção podem filtrar conteúdo prejudicial, bloquear tópicos proibidos e ocultar informações confidenciais, como informações de identificação pessoal.

Exemplo de agente de várias ferramentas

tool_config = {     "tools": [         {             "toolSpec": {                 "name": "calculator",                 "description": "Perform mathematical calculations",                 "inputSchema": {                     "json": {                         "type": "object",                         "properties": {                             "expression": {                                 "type": "string",                                 "description": "Mathematical expression to evaluate"                             }                         },                         "required": ["expression"]                     }                 }             }         },         {             "toolSpec": {                 "name": "database_query",                 "description": "Query financial database for historical data",                 "inputSchema": {                     "json": {                         "type": "object",                         "properties": {                             "query": {                                 "type": "string",                                 "description": "SQL query to execute"                             }                         },                         "required": ["query"]                     }                 }             }         }     ] } response = client.converse(     modelId=" us.amazon.nova-2-lite-v1:0",     messages=[{         "role": "user",         "content": [{             "text": "Analyze our Q3 financial performance across all business units, calculate year-over-year growth rates with statistical significance testing, and recommend budget allocation strategies for Q4."         }]     }],     toolConfig=tool_config,     inferenceConfig={"maxTokens": 10000, "temperature": 1, “topP”: 0.9},     additionalModelRequestFields={         "reasoningConfig": {             "type": "enabled",             "maxReasoningEffort": "low"         }     } )

Invocar um agente

A invocação do agente envolve o gerenciamento do fluxo de conversação, o processamento de chamadas de ferramentas e a manutenção do estado em várias interações.

Respostas do agente via streaming

Transmita respostas via streaming para fornecer visibilidade em tempo real do raciocínio e das ações do agente:

import boto3 response = client.converse_stream(     modelId=" us.amazon.nova-2-lite-v1:0",     messages=[{         "role": "user",         "content": [{             "text": "Design a scalable microservices architecture for an e-commerce platform handling 1M+ daily transactions. Consider data consistency, fault tolerance, performance, security, and cost optimization."         }]     }],     inferenceConfig={"maxTokens": 10000, "temperature": 10},     additionalModelRequestFields={         "reasoningConfig": {             "type": "enabled",             "maxReasoningEffort": "low"         }     } ) # Process the streaming response reasoning_complete = False for event in response["stream"]:     if "contentBlockDelta" in event:         delta = event["contentBlockDelta"]["delta"]                  if "reasoningContent" in delta:             reasoning_text = delta["reasoningContent"]["reasoningText"]["text"]             print(f"{reasoning_text}", end="", flush=True)         elif "text" in delta:             if not reasoning_complete:                 print(f" Final Architecture Design: ")                 reasoning_complete = True             print(f"{delta['text']}", end="", flush=True)

Gerenciamento de estados do agente

Mantenha o histórico de conversas e os resultados da ferramenta para preservar o contexto; o exemplo abaixo demonstra isso em um único turno, mas o desenvolvedor pode determinar como orquestrar o sistema geral do agente com base nos requisitos do fluxo de trabalho. Além disso, as ferramentas da Amazon Web Services, como o Strands, gerenciam o contexto do agente e o estado da ferramenta em nome do desenvolvedor.

messages = [] messages = [] # Initial user query messages.append({     "role": "user",     "content": [{"text": user_query}] }) # Get agent response response = client.converse(     modelId=" us.amazon.nova-2-lite-v1:0",     messages=messages,     toolConfig=tool_config,     inferenceConfig=inf_params ) # Add assistant response to history messages.append(response["output"]["message"]) # Process tool calls and add results if response["stopReason"] == "tool_use":     tool = next(         block["toolUse"]         for block in response["output"]["message"]["content"]         if "toolUse" in block     )          # Execute tool     result = execute_tool(tool["name"], tool["input"])          # Add tool result to conversation     messages.append({         "role": "user",         "content": [{             "toolResult": {                 "toolUseId": tool["toolUseId"],                 "content": [{"json": result}],                 "status": "success"             }         }]     })          # Continue conversation     response = client.converse(         modelId=" us.amazon.nova-2-lite-v1:0",         messages=messages,         toolConfig=tool_config,         inferenceConfig=inf_params     )

Práticas recomendadas de agentes

Para obter mais informações sobre as práticas recomendadas de agentes, consulte Práticas recomendadas gerais.

Para obter orientação sobre o desenvolvimento de agentes de IA conversacional, consulte Conversão de fala em fala (Amazon Nova 2 Sonic).