

# Creación de agentes de IA
<a name="building-ai-agents"></a>

Los modelos de Amazon Nova están optimizados para crear agentes de IA con Amazon Nova Act. Los modelos proporcionan un mejor uso de las herramientas, un mejor razonamiento para tareas de varios pasos, una capacidad mejorada para mantener el contexto en los flujos de trabajo complejos de los agentes y compatibilidad con herramientas MCP remotas.

## Creación de un agente
<a name="create-agent"></a>

Los agentes de IA creados con Nova pueden orquestar varias llamadas a herramientas, mantener el contexto durante interacciones prolongadas y corregir el rumbo cuando sea necesario. El pensamiento extendido transforma los flujos de trabajo de los agentes al permitir el razonamiento sistemático a través de objetivos complejos. Considere la posibilidad de utilizar un SDK de marco de planificación, como Strands Agents, para reforzar el proceso de planificación y ejecución de los sistemas de agentes.

### Patrones de diseño de agentes
<a name="agent-design-patterns"></a>

Al diseñar agentes con Nova:
+ Habilite el razonamiento medio o alto para obtener los mejores resultados en flujos de trabajo complejos de varios pasos que requieran planificación y verificación.
+ Implemente una elección de herramientas `auto` para permitir una selección flexible de herramientas en todas las interacciones entre los agentes.
+ Diseñe una gestión de errores que permita a los agentes recuperarse y volver a intentarlo con enfoques modificados.
+ Mantenga el historial de conversaciones para conservar el contexto en todas las interacciones entre los agentes.
+ Implemente mecanismos sólidos de filtrado y moderación del contenido en contenido no controlado que consume el sistema de agentes. Por ejemplo, Amazon ofrece Barreras de protección para Amazon Bedrock, una característica diseñada para aplicar barreras de protección en varios modelos fundacionales, bases de conocimiento y agentes. Estas barreras de protección pueden filtrar el contenido dañino, bloquear temas denegados y ocultar información confidencial, como la información de identificación personal.

### Ejemplo de agente multiherramienta
<a name="multi-tool-agent-example"></a>

```
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" 
        } 
    } 
)
```

## Invocación de un agente
<a name="invoke-agent"></a>

La invocación de un agente implica administrar el flujo de la conversación, procesar las llamadas a herramientas y mantener el estado en varias interacciones.

### Transmisión de respuestas del agente
<a name="stream-agent-responses"></a>

Transmita las respuestas para proporcionar visibilidad en tiempo real del razonamiento y las acciones del 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)
```

### Administración del estado del agente
<a name="manage-agent-state"></a>

Mantenga el historial de conversaciones y los resultados de la herramienta para preservar el contexto. En el siguiente ejemplo, se muestra para un solo turno, pero el desarrollador puede determinar cómo orquestar el sistema de agentes general en función de los requisitos del flujo de trabajo. Además, las herramientas de Amazon Web Services, como Strands, administran el contexto del agente y el estado de la herramienta en nombre del desarrollador.

```
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ácticas recomendadas para agentes
<a name="agent-best-practices"></a>

Para obtener más información sobre las prácticas recomendadas para agentes, consulte [Prácticas recomendadas generales](prompting-best-practices.md).

Para obtener orientación sobre el desarrollo de agentes de IA conversacional, consulte [Voz a voz (Amazon Nova 2 Sonic)](using-conversational-speech.md).