

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Creazione di agenti IA
<a name="building-ai-agents"></a>

I modelli Amazon Nova sono ottimizzati per la creazione di agenti di intelligenza artificiale con Amazon Nova Act. I modelli offrono un migliore utilizzo degli strumenti, un migliore ragionamento per le attività in più fasi, una maggiore capacità di mantenere il contesto tra flussi di lavoro complessi con agenti e il supporto per strumenti MCP remoti.

## Creazione di un agente
<a name="create-agent"></a>

Gli agenti di intelligenza artificiale creati con Nova possono orchestrare più chiamate agli strumenti, mantenere il contesto durante le interazioni estese e correggere la rotta quando necessario. Il pensiero esteso trasforma i flussi di lavoro agentici abilitando un ragionamento sistematico attraverso obiettivi complessi. Prendi in considerazione l'utilizzo di un framework di pianificazione SDK come Strands Agents per rendere più robusto il processo di pianificazione ed esecuzione dei tuoi sistemi di agenti.

### Modelli di progettazione degli agenti
<a name="agent-design-patterns"></a>

Quando si progettano agenti con Nova:
+ Abilita il ragionamento a medio o alto per ottenere i migliori risultati per flussi di lavoro complessi in più fasi che richiedono pianificazione e verifica
+ `auto`Implementa la scelta degli strumenti per consentire una selezione flessibile degli strumenti tra le interazioni tra gli agenti
+ Gestione degli errori di progettazione che consenta agli agenti di ripristinare e riprovare con approcci modificati
+ Conserva la cronologia delle conversazioni per preservare il contesto tra le interazioni con gli agenti
+ Implementa solidi meccanismi di filtraggio e moderazione dei contenuti sui contenuti non controllati utilizzati dal tuo sistema di agenti. Ad esempio, Amazon offre Amazon Bedrock Guardrails, una funzionalità progettata per applicare misure di protezione a più modelli di base, knowledge base e agenti. Questi guardrail possono filtrare i contenuti dannosi, bloccare gli argomenti negati e oscurare informazioni sensibili come le informazioni di identificazione personale.

### Esempio di agente multiutensile
<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" 
        } 
    } 
)
```

## Invocazione di un agente
<a name="invoke-agent"></a>

La chiamata all'agente implica la gestione del flusso di conversazione, l'elaborazione delle chiamate agli strumenti e il mantenimento dello stato durante più interazioni.

### Streaming delle risposte degli agenti
<a name="stream-agent-responses"></a>

Trasmetti le risposte per fornire visibilità in tempo reale sul ragionamento e sulle azioni dell'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)
```

### Gestione dello stato dell'agente
<a name="manage-agent-state"></a>

Conserva la cronologia delle conversazioni e i risultati degli strumenti per preservare il contesto; l'esempio seguente lo dimostra per un singolo turno, ma lo sviluppatore può determinare come orchestrare il sistema generale degli agenti in base ai requisiti del flusso di lavoro. Inoltre, gli strumenti di Amazon Web Services come Strands gestiscono il contesto dell'agente e lo stato dello strumento per conto dello sviluppatore.

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

### Best practice per gli agenti
<a name="agent-best-practices"></a>

Per ulteriori informazioni sulle best practice degli agenti, vedere[Best practice generali](prompting-best-practices.md).

Per indicazioni sullo sviluppo di agenti di intelligenza artificiale conversazionale, consulta. [Speech-to-Speech (Amazon Nova 2 Sonic)](using-conversational-speech.md)