0Pricing
AI Agents · Lekcja

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: str

Jak działają aktualizacje stanu

Każdy węzeł zwraca częściowy słownik. LangGraph:

  1. Odczytuje bieżący stan
  2. Wywołuje węzeł z tym stanem
  3. 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

  1. Dlaczego grafy są lepsze od płaskich łańcuchów
  2. Węzły, krawędzie i stan
  3. Warunkowe kierowanie i rozgałęzianie
  4. Utrwalanie stanu grafu (punkty kontrolne)
← Powrót do AI Agents