Machine Learning

Ukwakha Ukugeleza Kokusebenza Komuntu-In-The-Loop Agetic | Mayelana neSayensi Yedatha

njenge-OpenAI's GPT-5.4 kanye ne-Anthropic's Opus 4.6 zibonise amakhono avelele ekwenzeni imisebenzi ye-ejenti ethathe isikhathi eside.

Ngenxa yalokho, sibona ukwanda kokusetshenziswa kwe Ama-LLM agents kuzo zonke izilungiselelo zomuntu ngamunye nezebhizinisi ukuze kufezwe imisebenzi eyinkimbinkimbi, njengokusebenzisa ukuhlaziya imali, ukwakha izinhlelo zokusebenza, kanye nokwenza ucwaningo olunzulu.

Lawa ma-ejenti, kungakhathaliseki ukuthi ayingxenye yokusetha okuzimele kakhulu noma ukuhamba komsebenzi okuchazwe ngaphambilini, angenza imisebenzi enezinyathelo eziningi esebenzisa amathuluzi ukuze afinyelele imigomo ukubhekwa komuntu okuncane.

Kodwa-ke, 'okuncane' akusho ukuqaphela komuntu.

Ngokuphambene, ukubuyekezwa komuntu kuhlala kubalulekile ngenxa yemvelo ye-LLM engokwemvelo enokwenzeka kanye nethuba lamaphutha.

Lawa maphutha angabhebhetheka futhi ahlanganiswe ekuhambeni komsebenzi, ikakhulukazi uma sihlanganisa izingxenye eziningi ze-ejenti ndawonye.

Ubungeke uqaphele inqubekelaphambili emangazayo enziwe ngabasebenzeli esizindeni sokubhala amakhodi. Isizathu siwukuthi ikhodi kulula ukuyiqinisekisa (okungukuthi, iyasebenza noma iyehluleka, futhi impendulo ibonakala ngokushesha).

Kodwa ezindaweni ezifana nokudalwa kokuqukethwe, ucwaningo, noma ukwenza izinqumo, ukunemba kuvame ukucabangela futhi kunzima ukukuhlola ngokuzenzakalelayo.

Yingakho umuntu-in-the-loop (HITL) umklamo uhlala ubalulekile.

Kulesi sihloko, sizohamba ngendlela yokusebenzisa i-LangGraph ukusetha i-a umuntu-e-loop ukuhamba komsebenzi kwe-agent yokukhiqiza okuqukethwe nokushicilelwa ku-Bluesky.

Okuqukethwe

(1) Ukuqala ku-LangGraph
(2) Isibonelo sokuhamba komsebenzi
(3) Imiqondo Eyinhloko
(4) Ikhodi Ukuhamba
(5) Imikhuba Engcono Kakhulu Yokuphazamisa

Ungathola okuhambisanayo GitHub repo lapha.


(1) I-Primer ku-LangGraph

I-LangGraph (ingxenye ye-ecosystem ye-LangChain) iwuhlaka lwe-orchestration ye-ejenti esezingeni eliphansi kanye nesikhathi sokusebenza sokwakha ukuhamba komsebenzi kwe-ejenti.

Kuwuhlaka lwami lokuya kulo uma kubhekwa izinga eliphezulu lokulawula nokwenza ngokwezifiso, okubalulekile ezisombululweni zebanga lokukhiqiza.

Nakuba i-LangChain ihlinzeka ngento ephakathi nendawo (HumanInTheLoopMiddleware) ukuze iqalise kalula ngokugada komuntu ezicingweni zama-ejenti, yenziwa ngezinga eliphezulu lokukhipha elivala izinsimbi ezicashile.

I-LangGraph, ngokuphambene, ayikukhiphi ukwaziswa noma izakhiwo, ngaleyo ndlela isinika izinga elingcono lokulawula esilidingayo. Kusivumela ngokusobala ukuthi sichaze:

  • Indlela idatha egeleza ngayo phakathi kwezinyathelo
  • Lapho izinqumo kanye nokwenziwa kwekhodi kwenzeka
  • Lapho kudingeka khona ukungenelela komuntu

Ngakho-ke, sizosebenzisa I-LangGraph ukukhombisa umqondo we-HITL ngaphakathi kwe- ukuhamba komsebenzi we-agent.

Kuyasiza futhi ukuhlukanisa phakathi ukugeleza komsebenzi we-agent futhi ama-autonomous AI agents.

Ukugeleza komsebenzi we-Agent anemizila enqunywe kusengaphambili futhi yakhelwe ukwenza ngokulandelana okuchaziwe, ngama-LLM kanye/noma ama-ejenti ahlanganiswe engxenyeni eyodwa noma ngaphezulu. Ngokolunye uhlangothi, Amanxusa e-AI hlela ngokuzenzakalelayo, sebenzisa, futhi uphindaphinde uqonde umgomo.

Kulesi sihloko, sigxile ukugeleza komsebenzi we-agentlapho sifaka khona izindawo zokuhlola abantu ngamabomu ekuhambeni okuchazwe ngaphambilini.

Ukuqhathanisa ukuhamba komsebenzi kwe-ejenti nama-ejenti we-LLM | Isithombe esisetshenziswe ngaphansi kwelayisensi

(2) Isibonelo sokuhamba komsebenzi

Isibonelo sethu, sizokwakha ukuhamba komsebenzi kokukhiqiza okuqukethwe kwenkundla yezokuxhumana kanje:

Ukugeleza komsebenzi wokukhiqiza okuqukethwe | Isithombe ngumbhali
  1. Umsebenzisi ufaka isihloko athakaselayo (isb, “izindaba zakamuva mayelana ne-Anthropic”).
  2. I indawo yokusesha iwebhu isebenzisa ithuluzi le-Tavily ukusesha ku-inthanethi ama-athikili afana naphezulu.
  3. Umphumela wosesho ophezulu uyakhethwa bese ufakwa ku-LLM ku- indawo yokudala okuqukethwe ukwenza okuthunyelwe kwenkundla yezokuxhumana.
  4. Kwe i-node yokubuyekezakunezindawo ezimbili zokuhlola abantu:
    (i) Phrezenta okuqukethwe okukhiqizwa manje ukuze abantu bakugunyaze, bakunqabele, noma bakuhlele;
    (ii) Ngemva kokugunyazwa, ukuhamba komsebenzi kubangela i-Bluesky API ithuluzi futhi icela ukuqinisekiswa kokugcina ngaphambi kokuyithumela ku-inthanethi.

Nakhu ukuthi kubukeka kanjani uma ugijima usuka kutheminali:

Ukuhamba komsebenzi ku-terminal | Isithombe ngumbhali

Futhi nakhu okuthunyelwe bukhoma kuphrofayela yami ye-Bluesky:

Okuthunyelwe kwe-Bluesky social media okukhiqizwa kusuka ekuhambeni komsebenzi | Isithombe ngumbhali

I-Bluesky iyinkundla yezokuxhumana efana ne-Twitter (X), futhi ikhethwa kule demo ngoba i-API yayo kulula kakhulu ukuyifinyelela futhi isebenzise.


(3) Imiqondo Eyinhloko

Indlela ewumgogodla ngemuva kokusetha kwe-HITL ku-LangGraph umqondo wokuthi kuphazamisa.

Iyaphazamisa (esebenzisa interrupt() futhi Command in LangGraph) isenze sikwazi misa isikhashana ukwenza igrafu ezindaweni ezithile, isibonisi ulwazi oluthile kumuntu, futhi linda imibono yabo ngaphambi kokuqalisa kabusha ukuhamba komsebenzi.

Umyalo uyinto eguquguqukayo esivumela ukuthi sibuyekeze isimo segrafu (update), cacisa inodi elandelayo ozoyikhipha (goto), noma thwebula inani ozoqalisa ngalo ukusebenzisa igrafu ngalo (resume).

Nakhu ukuthi ukugeleza kubukeka kanjani:

(1) Ekufikeni kwe interrupt() umsebenzi, ukumisa okwesikhashana, futhi umthwalo okhokhelwayo odluliselwe kuwo uboniswa kumsebenzisi. Iholo lidlulile interrupt ngokuvamile kufanele kube ifomethi ye-JSON noma iyunithi yezinhlamvu, isb,

decision = interrupt("Should we get KFC for lunch?") # String shown to user

(2) Ngemva kokuba umsebenzisi ephendule, sidlulisela amanani empendulo kugrafu ukuze siqalise kabusha ukwenza. Kubandakanya ukusebenzisa Command futhi yayo resume ipharamitha njengengxenye yokuphinda usebenzise igrafu:

if human_response == "yes":
    return graph.invoke(Command(resume="KFC"))
else:
    return graph.invoke(Command(resume="McDonalds"))

(3) Inani lempendulo ku resume ibuyiselwa ku decision okuguquguqukayo, okuzosetshenziswa i-node kuyo yonke enye indawo yokusebenza nokugeleza kwegrafu okulandelayo:

if decision == "KFC":
    return Command(goto="kfc_order_node", update={"lunch_choice": "KFC")
else:
    return Command(goto="mcd_order_node", update={"lunch_choice": "McDonalds")

Iziphazamiso ziyashintshashintsha futhi zingabekwa noma yikuphi kukhodi, ngokungafani nezindawo zokunqamuka ezimile, ezilungiswa ngaphambi noma ngemva kwamanodi athile.

Sesishilo lokho, sivamise ukubeka iziphazamiso phakathi kwamanodi noma ngaphakathi kwamathuluzi abizwa ngesikhathi sokukhishwa kwegrafu.


Ekugcineni, ake sikhulume izindawo zokuhlola. Uma ukugeleza komsebenzi kuma ngesikhathi sokuphazamiseka, sidinga indlela yokwenza kanjalo londoloza isimo sayo samanje ngakho-ke ingaqalisa futhi kamuva.

Ngakho-ke sidinga indawo yokuhlola ukuze siphikelele umbuso ukuze isimo singalahleki ngesikhathi sokuphumula kokuphazamiseka. Cabanga ngendawo yokuhlola njenge isifinyezo sesimo segrafu ngesikhathi esithile.

Ukuze kuthuthukiswe, kwamukelekile ukulondoloza isimo kumemori nge- InMemorySaver isikhombi sokuhlola.

Ukuze ukhiqize, kungcono ukusebenzisa izitolo ezifana ne-Postgres noma i-Redis. Ngalokho engqondweni, sizosebenzisa i- I-SQLite indawo yokuhlola kulesi sibonelo esikhundleni se-in-memory store.

Ukuqinisekisa igrafu iqala kabusha ngqo endaweni lapho kwenzeke khona ukuphazamiseka, sidinga ukudlula futhi sisebenzise okufanayo i-ID yochungechunge.

Cabanga ngochungechunge njengeseshini eyodwa yokwenza (njengengxoxo yomuntu ngamunye) lapho ngayinye inomazisi ohlukile, futhi igcina isimo sayo nomlando.

I-ID yochungechunge idluliselwa kuyo config kusicelo segrafu ngasinye ukuze i-LangGraph yazi ukuthi isiphi isimo okufanele siqalise kabusha kuso ngemva kokuphazamiseka.

Manje njengoba sesihlanganise imiqondo yokuphazamiseka, Commandizindawo zokuhlola, nochungechunge, masingene endleleni yekhodi.


Njengoba kuzogxilwa kumakhenikha we-human-in-the-loop, ngeke sihlanganise ukusethwa kwekhodi okuphelele. Vakashela i-repo ye-GitHub ukuze usebenzise ngokugcwele.

(4) Ikhodi Ukuhamba

(4.1) Ukusethwa Kwasekuqaleni

Siqala ngokufaka ukuncika okudingekayo futhi sikhiqize okhiye be-API beBluesky, OpenAI, LangChain, LangGraph, neTavily.

# requirements.txt
langchain-openai>=1.1.9
langgraph>=1.0.8
langgraph-checkpoint-sqlite>=3.0.3
openai>=2.20.0
tavily-python>=0.7.21
# env.example
export OPENAI_API_KEY=your_openai_api_key
export TAVILY_API_KEY=your_tavily_api_key
export BLUESKY_HANDLE=yourname.bsky.social
export BLUESKY_APP_PASSWORD=your_bluesky_app_password

(4.2) Chaza isimo

Samisa i- Stateokuyindawo yedatha eyabiwe, ehlelekile esebenza njengenkumbulo emaphakathi yegrafu. Kubandakanya izinkambu ezithwebula ulwazi olubalulekile, njengokuqukethwe kokuthunyelwe nesimo sokugunyazwa.

I post_data ukhiye yilapho okuqukethwe okukhiqiziwe kuzogcinwa khona.


(4.3) Phakamisa ezingeni le-node

Sishilo ngaphambilini ukuthi ukuphazamiseka kungenzeka ezingeni le-node noma ngaphakathi kwezingcingo zamathuluzi. Ake sibone ukuthi owokuqala usebenza kanjani ngokusetha indawo yokubuyekezwa komuntu.

Injongo yenodi yokubuyekeza iwukumisa ukusebenza futhi wethule okuqukethwe okusalungiswa kumsebenzisi ukuze kubuyekezwe.

Lapha sibona interrupt() esenzweni (umugqa wesi-8 kuye kowe-13), lapho ukusetshenziswa kwegrafu kuma kancane esigabeni sokuqala somsebenzi wenodi.

I details kungene ukhiye interrupt() iqukethe okuqukethwe okukhiqizwa, kuyilapho i action ukhiye ucupha umsebenzi wesibambi (handle_content_interrupt()) ukusekela isibuyekezo:

Okuqukethwe okukhiqiziwe kuphrintwa kutheminali ukuze umsebenzisi akubuke, futhi angakwazi ukukugunyaza njengoba kunjalo, akwenqabe ngokuqondile, noma akuhlele ngokuqondile kutheminali ngaphambi kokukugunyaza.

Ngokusekelwe esinqumweni, umsebenzi wesibambi ubuyisela inani elilodwa kwamathathu:

  • True (kuvunyelwe),
  • False (yenqatshiwe), noma
  • Inani leyunithi yezinhlamvu elihambisana nokuqukethwe okuhlelwe ngumsebenzisi (edited).

Leli nani lokubuyisela lidluliselwa emuva endaweni yokubuyekeza kusetshenziswa graph.invoke(Command=resume…)eqalisa kabusha ukwenza kusuka lapho interrupt() ibizwe (umugqa we-15) futhi inquma ukuthi iyiphi indawo okufanele ihambe ngokulandelayo: vumela, nqaba, noma hlela okuqukethwe futhi uqhubeke ukugunyaza.


(4.4) Ukuphazamisa ezingeni leThuluzi

Iziphazamiso zingachazwa futhi ezingeni lekholi lamathuluzi. Lokhu kuboniswa endaweni yokuhlola yokubuyekezwa komuntu elandelayo ku vumela i-node ngaphambi kokuthi okuqukethwe kushicilelwe ku-inthanethi ku-Bluesky.

Esikhundleni sokubeka interrupt() ngaphakathi kwe-node, siyibeka ngaphakathi kwe- publish_post ithuluzi elidala okuthunyelwe nge-Bluesky API:

Njengalokho esikubonile ezingeni le-node, sibiza umsebenzi wokubamba (handle_publish_interrupt) ukuthatha isinqumo somuntu:

Inani lokubuyisela elisuka kulesi sinyathelo sokubuyekeza kungaba:

  • {"action": "confirm"}noma
  • {"action": "cancel} ,

Ingxenye yokugcina yekhodi (okungukuthi, kusukela kulayini we-19) ku- publish_post ithuluzi lisebenzisa leli nani lokubuyisela ukuze linqume ukuthi uqhubeke nokushicilelwa kokuthunyelwe ku-Bluesky noma cha.


(4.5) Setha igrafu nge-Checkpointer

Okulandelayo, sixhuma ama-node kugrafu ukuze ahlanganiswe bese sethula isikhombi sokuhlola se-SQLite ukuze sithwebule izifinyezo zezwe ngesikhathi sokuphazamiseka ngakunye.

I-SQLite ngokuzenzakalelayo ivumela kuphela intambo edale uxhumano lwesizindalwazi ukuze iyisebenzise. Njengoba i-LangGraph isebenzisa i-thread pool ukuze ibhale indawo yokuhlola, sidinga ukusetha check_same_thread=False ukuvumela lezo zintambo ukuthi zifinyelele ukuxhumana futhi.


(4.6) Setha Ukugeleza Kokusebenza Okugcwele nge-Config

Njengoba igrafu isilungile, manje sesiyibeka ekuhambeni komsebenzi okuqalisa ipayipi lokukhiqiza okuqukethwe.

Lokhu kugeleza komsebenzi kuhlanganisa ukumisa i-ID yochungechunge, edluliselwa kumuntu ngamunyegraph.invoke(). Le ID isixhumanisi esihlanganisa ukucela ndawonye, ​​ukuze igrafu ime lapho kuphazamiseka futhi iqale lapho igcine khona.

Kungenzeka ukuthi uyibonile __interrupt__ ukhiye kukhodi engenhla. Kumane kuwukhiye okhethekile i-LangGraph eyengeza kumphumela noma nini lapho i- interrupt() iyashaywa.

Ngamanye amazwi, yi- isignali eyinhloko ebonisa ukuthi ukusetshenziswa kwegrafu kumisiwe okwesikhashana futhi ilindele ukufakwa komuntu ngaphambi kokuqhubeka.

Ngokubeka __interrupt__ njengengxenye ye while iluphu, kusho ukuthi iluphu ilokhu ihlola ukuthi ingabe ukuphazamisa kusaqhubeka. Uma ukuphazamiseka sekuxazululiwe, ukhiye uyanyamalala, futhi iluphu yesikhathi iyaphuma.

Lapho umsebenzi usuphelile, singawuqhuba kanje:

run_hitl_workflow(query="latest news about Anthropic")

(5) Imikhuba Engcono Kakhulu Yokuphazamisa

Nakuba iziphazamiso zinamandla ekuvumela ukugeleza komsebenzi kwe-HITL, zingaphazamisa uma zisetshenziswe ngokungalungile.

Kanjalo, ngincoma ukufunda le mibhalo ye-LangGraph. Nansi eminye imithetho esebenzayo okufanele uyikhumbule:

  • Ungasondeli izingcingo eziphazamisayo ngokuzama/ngaphandle kwamabhulokhi, noma ngeke zime isikhashana ukwenza kahle
  • Gcina izingcingo eziphazamisayo zilandelana ngendlela efanayo ngaso sonke isikhathi futhi ungazeqi noma uzihlele kabusha
  • Dlulisa kuphela amanani aphephile e-JSON kuziphazamiso futhi ugweme izinto eziyinkimbinkimbi
  • Qiniseka ukuthi noma iyiphi ikhodi ngaphambi kokuphazamiseka ingaqalisa ngokuphephile izikhathi eziningi (okungukuthi, ukungabi namandla) noma ukuyihambisa ngemva kokuphazamiseka.

Isibonelo, ngibhekane nenkinga endaweni yokusesha iwebhu lapho ngibeke khona ukuphazamiseka ngemva nje kosesho lwe-Tavily. Inhloso bekuwukumisa okwesikhashana futhi kuvunyelwe abasebenzisi ukuthi babuyekeze imiphumela yosesho ukuze kwenziwe okuqukethwe.

Kodwa ngenxa yokuthi kuphazamisa umsebenzi ngokuqalisa kabusha amanodi ababizwe kuwo, i-node ivele iphinde isebenzise usesho lwewebhu futhi yadlulisela isethi ehlukile yemiphumela yosesho kunaleyo engiyigunyaze ngaphambilini.

Ngakho-ke, ukuphazamisa kusebenza kangcono njengesango ngaphambi kwesenzo, kodwa uma sikusebenzisa ngemva kwesinyathelo esinganqunyelwe (njengosesho), sidinga ukuphikelela ngomphumela noma engozini yokuthola okuthile okuhlukile uma siqalisa kabusha.


Eyisonga

Ukubuyekezwa komuntu kungase kubonakale kuwumthwalo wemfanelo emisebenzini ye-ejenti, kodwa kuhlala kubucayi, ikakhulukazi ezizindeni lapho imiphumela incike noma okunzima ukuyiqinisekisa.

I-LangGraph ikwenza kucace ukuthi kwakhiwe ukugeleza komsebenzi kwe-HITL ngeziphazamiso nokukhomba.

Ngakho-ke, inselele iwukunquma ukuthi lawo maphuzu ezinqumo zomuntu angawabeka kuphi ukuze kube nokulinganisela okuhle phakathi kokwengamela nokusebenza kahle.

Source link

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button