Nodi, archi e stato
Definisca uno stato TypedDict, scriva funzioni nodo che lo modifichino e le colleghi con archi diretti.
Nodi, archi e stato è una lezione AI Agents gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AI Agents, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AI Agents include 4 lezioni in totale.
Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.
L'oggetto stato
Ogni agente LangGraph ha uno stato tipizzato, solitamente un TypedDict:
from typing import TypedDict
from typing_extensions import Annotated
import operator
class AgentState(TypedDict):
messages: Annotated[list, operator.add] # appends instead of replaces
plan: str
answer: strCome funzionano gli aggiornamenti dello stato
Ogni nodo restituisce un dict parziale. LangGraph:
- Legge lo stato corrente
- Chiama il nodo passandogli lo stato
- Unisce nuovamente allo stato il dict parziale restituito
Per i campi lista con operator.add, i nuovi elementi vengono aggiunti invece di sovrascrivere quelli esistenti.
Defining a Node
def planner(state: AgentState) -> dict:
prompt = f'User wants: {state["messages"][-1].content}'
plan = llm.invoke(prompt).content
return {'plan': plan}Registering the Node
from langgraph.graph import StateGraph, END
graph = StateGraph(AgentState)
graph.add_node('planner', planner)Definizione degli archi
Gli archi statici vengono attivati incondizionatamente:
graph.set_entry_point('planner')
graph.add_edge('planner', 'researcher')
graph.add_edge('researcher', 'writer')
graph.add_edge('writer', END)Archi condizionali
Per creare una diramazione, registra una funzione che seleziona il nodo successivo:
def route(state: AgentState) -> str:
if state['needs_research']:
return 'researcher'
return 'writer'
graph.add_conditional_edges(
'planner',
route,
{'researcher': 'researcher', 'writer': 'writer'}
)END è speciale
END è il nodo terminale. Qualsiasi arco che porta a END termina il grafo e restituisce lo stato corrente.
Compiling the Graph
app = graph.compile()
result = app.invoke({'messages': [...]})
print(result['answer'])Streaming degli aggiornamenti dello stato
Osserva lo stato cambiare in tempo reale:
for event in app.stream({'messages': [...]}):
print(event)
# Each event is the state diff from the just-completed node.Funzioni reducer
Per unire stati complessi, usa un reducer personalizzato:
def merge_facts(old, new):
return {**old, **new}
class State(TypedDict):
facts: Annotated[dict, merge_facts]Sottografi
Un nodo può essere a sua volta un altro grafo compilato, utile per gli agenti gerarchici:
subgraph = StateGraph(SubState).compile()
graph.add_node('subprocess', subgraph)Nodi asincroni
I nodi possono essere funzioni asincrone:
async def fetch_node(state):
data = await fetch_async(state['url'])
return {'data': data}
result = await app.ainvoke({...})Errori nei nodi
Se un nodo genera un'eccezione, LangGraph propaga l'errore e si arresta. Cattura l'errore nel nodo se vuoi gestirlo senza interrompere il flusso:
def safe_search(state):
try:
return {'results': search(state['query'])}
except Exception as e:
return {'error': str(e), 'results': []}Aggiornamenti dello stato
Che cosa succede quando un nodo restituisce {'plan': '...'} come dict?
Riepilogo
Definisci uno stato TypedDict, scrivi funzioni che restituiscono aggiornamenti parziali, aggiungi nodi e archi, compila ed esegui. Questo è LangGraph.
Domande Frequenti
La lezione «Nodi, archi e stato» è gratuita?
Sì — il testo completo di «Nodi, archi e stato» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AI Agents, passa a CoddyKit PRO. Il corso AI Agents include 4 lezioni in totale.
Cosa imparerò in «Nodi, archi e stato»?
Definisca uno stato TypedDict, scriva funzioni nodo che lo modifichino e le colleghi con archi diretti. Eserciti AI Agents con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare AI Agents?
Non è richiesta alcuna esperienza precedente. AI Agents su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Nodi, archi e stato»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione AI Agents?
Sì. Ogni lezione AI Agents include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Perché i grafi superano le chain lineari
- Nodi, archi e stato
- Routing condizionale e branching
- Persistenza dello stato del grafo (checkpoint)