Rumah > hujung hadapan web > tutorial js > Langgraph - Manusia Dalam Gelung

Langgraph - Manusia Dalam Gelung

Barbara Streisand
Lepaskan: 2024-11-14 18:36:02
asal
1068 orang telah melayarinya

Apabila mencipta sistem ejen, adalah baik untuk mengembalikan keputusan secara automatik dengan sempurna, tetapi sukar dengan ketepatan semasa. Jika anda membiarkan Ejen memikirkan keseluruhan proses, walaupun satu kesilapan akan menghasilkan keputusan yang sangat berbeza daripada apa yang anda maksudkan.
Dan terdapat operasi yang terlalu menakutkan untuk mewakilkan sepenuhnya kuasa kepada Ejen. Terdapat panggilan API, pengubahsuaian DB, skrip Bash, dsb.

Jadi sekarang (mungkin agak lama), campur tangan manusia semasa proses pelaksanaan ejen tidak dapat dielakkan

Human-in-the-loop oleh Langgraph

Menyokong 5 situasi di mana manusia campur tangan.

Kelulusan

Meninggalkan keputusan sama ada untuk meneruskan di sebelah manusia.

Mengedit

Menunjukkan status semasa kepada pengguna dan membenarkan pengubahsuaian.

Input

Menentukan langkah untuk menerima input pengguna dan sebenarnya menerima nilai daripada pengguna.

Menyemak panggilan alat

Benarkan pengguna melihat dan mengubah suai nilai hasil alat.

Perjalanan masa

Kembali ke keadaan sebelumnya (sebelum pelaksanaan nod) atau kembali dan teruskan semula. Seperti berbilang ayat.

Lapisan berterusan

Campur tangan manusia seperti ini boleh dilakukan berkat lapisan berterusan Langgraph. Adalah mungkin untuk menyelamatkan keadaan yang memerlukan campur tangan manusia dan mula semula dari titik itu setelah pengguna meluluskan atau mengubah suainya. Ia seperti pusat pemeriksaan dalam permainan.

Titik putus

Seperti menetapkan titik putus dalam alat nyahpepijat, titik putus ialah petunjuk untuk meneruskan hanya sehingga titik itu dan berhenti seketika.

Dalam langgraph, titik putus boleh ditentukan semasa menyusun graf.

graph = builder.compile(checkpointer=checkpointer, interrupt_before=["step_for_human_in_the_loop"])
Salin selepas log masuk
Salin selepas log masuk

Titik Putus Dinamik

Pengisytiharan pada masa penyusunan adalah statik. Sukar untuk berhenti bergantung kepada keadaan yang berubah semasa pelaksanaan. Titik Putus Dinamik ialah titik putus yang boleh ditetapkan bergantung pada keadaan. Apabila pengecualian khas dipanggil NodeInterrupt berlaku, pelaksanaan graf berhenti dan menunggu campur tangan pengguna.

def my_node(state: State) -> State:
    if len(state['input']) > 5:
        raise NodeInterrupt(f"Received input that is longer than 5 characters: {state['input']}")
    return state

Salin selepas log masuk

Corak

Lebih mudah jika anda melihat gambar.

Kelulusan

# Compile our graph with a checkpoitner and a breakpoint before the step to approve
graph = builder.compile(checkpointer=checkpoitner, interrupt_before=["node_2"])

# Run the graph up to the breakpoint
for event in graph.stream(inputs, thread, stream_mode="values"):
    print(event)

# ... Get human approval ...

# If approved, continue the graph execution from the last saved checkpoint
for event in graph.stream(None, thread, stream_mode="values"):
    print(event)
Salin selepas log masuk

Pelaksanaan graf selesai sebelum node_2, jadi yang pertama untuk penyataan terlepas, dan kemudian graph.stream dipanggil semula untuk meneruskan pelaksanaan.

Langgraph - Human In the Loop

Mengedit

graph = builder.compile(checkpointer=checkpointer, interrupt_before=["step_for_human_in_the_loop"])
Salin selepas log masuk
Salin selepas log masuk

Ia juga berhenti di hadapan node_2, dan kali ini, bukannya melakukan apa-apa dan memanggil graph.stream sekali lagi, ia mengubah keadaan graf semasa. Selepas itu, graf dilakukan semula dalam keadaan berubah.

Langgraph - Human In the Loop

Selain daripada

Untuk operasi lain, semak dokumen rasmi Langgraph di bawah

Rujukan

https://langchain-ai.github.io/langgraph/concepts/human_in_the_loop/

Atas ialah kandungan terperinci Langgraph - Manusia Dalam Gelung. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan