Ejen AI · Pelajaran

Nod, Sisi dan Keadaan

Takrifkan keadaan TypedDict, tulis fungsi nod yang mengubahnya dan sambungkan nod dengan sisi berarah.

Pelajaran 2 daripada 415 langkah

Nod, Sisi dan Keadaan ialah pelajaran Ejen AI percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Ejen AI, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Ejen AI merangkumi sejumlah 4 pelajaran.

Sebahagian daripada pelajaran ini belum diterjemahkan dan dipaparkan dalam bahasa Inggeris.

Objek Keadaan

Setiap ejen LangGraph mempunyai keadaan bertype — biasanya 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

Cara Kemas Kini Keadaan Berfungsi

Setiap nod mengembalikan kamus separa. LangGraph:

  1. Membaca keadaan semasa
  2. Memanggil nod dengan keadaan itu
  3. Menggabungkan semula kamus separa yang dikembalikan

Bagi medan senarai dengan operator.add, item baharu ditambahkan dan bukannya menimpa item lama.

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)

Mentakrifkan Sisi

Sisi statik dicetuskan tanpa syarat:

graph.set_entry_point('planner')
graph.add_edge('planner', 'researcher')
graph.add_edge('researcher', 'writer')
graph.add_edge('writer', END)

Sisi Bersyarat

Untuk percabangan, daftarkan fungsi yang memilih nod seterusnya:

def route(state: AgentState) -> str:
    if state['needs_research']:
        return 'researcher'
    return 'writer'

graph.add_conditional_edges(
    'planner',
    route,
    {'researcher': 'researcher', 'writer': 'writer'}
)

END Adalah Istimewa

END ialah nod penamat. Sebarang sisi ke END menamatkan graf dan mengembalikan keadaan semasa.

Compiling the Graph

app = graph.compile()
result = app.invoke({'messages': [...]})
print(result['answer'])

Menstrim Kemas Kini Keadaan

Perhatikan perubahan keadaan dalam masa nyata:

for event in app.stream({'messages': [...]}):
    print(event)
# Each event is the state diff from the just-completed node.

Fungsi Pengurang

Untuk gabungan keadaan yang kompleks, gunakan pengurang tersuai:

def merge_facts(old, new):
    return {**old, **new}

class State(TypedDict):
    facts: Annotated[dict, merge_facts]

Subgraf

Sesuatu nod itu sendiri boleh menjadi graf lain yang telah disusun — berguna untuk ejen berhierarki:

subgraph = StateGraph(SubState).compile()
graph.add_node('subprocess', subgraph)

Nod Tak Segerak

Nod boleh menjadi fungsi tak segerak:

async def fetch_node(state):
    data = await fetch_async(state['url'])
    return {'data': data}

result = await app.ainvoke({...})

Ralat dalam Nod

Jika nod membangkitkan ralat, LangGraph menyebarkan ralat itu dan berhenti. Tangkap ralat dalam nod jika anda mahukan pengendalian yang lancar:

def safe_search(state):
    try:
        return {'results': search(state['query'])}
    except Exception as e:
        return {'error': str(e), 'results': []}

Kemas Kini Keadaan

Apakah yang berlaku apabila nod mengembalikan {'plan': '...'} sebagai kamus?

Imbas Kembali

Takrifkan keadaan TypedDict, tulis fungsi yang mengembalikan kemas kini separa, tambahkan nod dan sisi, susun, kemudian jalankan. Itulah LangGraph.

Percuma untuk bermula

Pelajari Ejen AI dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
60
Pelajaran
239

Soalan Lazim

Adakah pelajaran “Nod, Sisi dan Keadaan” percuma?

Ya — teks penuh “Nod, Sisi dan Keadaan” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Ejen AI, tingkat taraf kepada CoddyKit PRO. Kursus Ejen AI merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Nod, Sisi dan Keadaan”?

Takrifkan keadaan TypedDict, tulis fungsi nod yang mengubahnya dan sambungkan nod dengan sisi berarah. Anda berlatih Ejen AI menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Ejen AI?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Ejen AI di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.

Berapa lamakah pelajaran “Nod, Sisi dan Keadaan” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Ejen AI ini?

Ya. Setiap pelajaran Ejen AI menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Sebab Graf Mengatasi Rantaian Rata
  2. Nod, Sisi dan Keadaan
  3. Penghalaan Bersyarat dan Percabangan
  4. Mengekalkan Keadaan Graf (Titik Semak)
← Kembali ke Ejen AI