Węzły, krawędzie i stan
Zdefiniuj stan typu TypedDict, napisz funkcje węzłów, które go modyfikują, i połącz je skierowanymi krawędziami.
Węzły, krawędzie i stan to bezpłatna lekcja AI Agents na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Agents, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Agents zawiera 4 lekcji w sumie.
Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.
Obiekt stanu
Każdy agent LangGraph ma typowany stan — zwykle jest to 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: strJak działają aktualizacje stanu
Każdy węzeł zwraca częściowy słownik. LangGraph:
- Odczytuje bieżący stan
- Wywołuje węzeł z tym stanem
- Scala zwrócony częściowy słownik ze stanem
W przypadku pól listowych z użyciem operator.add nowe elementy są dopisywane zamiast zastępować poprzednie.
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)Definiowanie krawędzi
Krawędzie statyczne są uruchamiane bezwarunkowo:
graph.set_entry_point('planner')
graph.add_edge('planner', 'researcher')
graph.add_edge('researcher', 'writer')
graph.add_edge('writer', END)Krawędzie warunkowe
W przypadku rozgałęzień zarejestruj funkcję wybierającą następny węzeł:
def route(state: AgentState) -> str:
if state['needs_research']:
return 'researcher'
return 'writer'
graph.add_conditional_edges(
'planner',
route,
{'researcher': 'researcher', 'writer': 'writer'}
)END jest wyjątkowy
END to węzeł końcowy. Każda krawędź prowadząca do END kończy graf i zwraca bieżący stan.
Compiling the Graph
app = graph.compile()
result = app.invoke({'messages': [...]})
print(result['answer'])Strumieniowanie aktualizacji stanu
Obserwuj zmiany stanu w czasie rzeczywistym:
for event in app.stream({'messages': [...]}):
print(event)
# Each event is the state diff from the just-completed node.Funkcje redukujące
W przypadku złożonego scalania stanu użyj własnej funkcji redukującej:
def merge_facts(old, new):
return {**old, **new}
class State(TypedDict):
facts: Annotated[dict, merge_facts]Podgrafy
Węzeł może sam być innym skompilowanym grafem — przydaje się to w przypadku agentów hierarchicznych:
subgraph = StateGraph(SubState).compile()
graph.add_node('subprocess', subgraph)Węzły asynchroniczne
Węzły mogą być funkcjami asynchronicznymi:
async def fetch_node(state):
data = await fetch_async(state['url'])
return {'data': data}
result = await app.ainvoke({...})Błędy w węzłach
Jeśli węzeł zgłosi wyjątek, LangGraph propaguje błąd i zatrzymuje działanie. Jeśli potrzebna jest łagodna obsługa błędów, należy przechwycić wyjątek w węźle:
def safe_search(state):
try:
return {'results': search(state['query'])}
except Exception as e:
return {'error': str(e), 'results': []}Aktualizacje stanu
Co się dzieje, gdy węzeł zwraca słownik {'plan': '...'}?
Podsumowanie
Zdefiniuj stan TypedDict, napisz funkcje zwracające częściowe aktualizacje, dodaj węzły i krawędzie, skompiluj graf i uruchom go. Na tym polega LangGraph.
Często zadawane pytania
Czy lekcja „Węzły, krawędzie i stan” jest bezpłatna?
Tak — pełny tekst „Węzły, krawędzie i stan” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Agents, przejdź na CoddyKit PRO. Kurs AI Agents zawiera 4 lekcji w sumie.
Co nauczysz się w „Węzły, krawędzie i stan”?
Zdefiniuj stan typu TypedDict, napisz funkcje węzłów, które go modyfikują, i połącz je skierowanymi krawędziami. Ćwiczysz AI Agents z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć AI Agents?
Nie wymagamy żadnego doświadczenia. AI Agents w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Węzły, krawędzie i stan”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji AI Agents?
Tak. Każda lekcja AI Agents zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Dlaczego grafy są lepsze od płaskich łańcuchów
- Węzły, krawędzie i stan
- Warunkowe kierowanie i rozgałęzianie
- Utrwalanie stanu grafu (punkty kontrolne)