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
autopara 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).