[{"data":1,"prerenderedAt":368},["ShallowReactive",2],{"docs:\u002Fdocs\u002Fintegrations\u002Flangchain-python":3},{"id":4,"title":5,"body":6,"description":358,"extension":359,"meta":360,"navigation":361,"path":364,"seo":365,"stem":366,"__hash__":367},"docs\u002Fdocs\u002Fintegrations\u002Flangchain-python.md","LangChain & LangGraph (Python)",{"type":7,"value":8,"toc":352},"minimark",[9,18,23,55,59,183,187,308,315,319,348],[10,11,12,13,17],"p",{},"LangChain-Py and LangGraph-Py share the same callback API (",[14,15,16],"code",{},"langchain_core.callbacks.BaseCallbackHandler","), so a single handler covers both.",[19,20,22],"h2",{"id":21},"install","Install",[24,25,30],"pre",{"className":26,"code":27,"language":28,"meta":29,"style":29},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pip install \"iqrar-agent[langchain]\"\n","bash","",[14,31,32],{"__ignoreMap":29},[33,34,37,41,45,49,52],"span",{"class":35,"line":36},"line",1,[33,38,40],{"class":39},"sBMFI","pip",[33,42,44],{"class":43},"sfazB"," install",[33,46,48],{"class":47},"sMK4o"," \"",[33,50,51],{"class":43},"iqrar-agent[langchain]",[33,53,54],{"class":47},"\"\n",[19,56,58],{"id":57},"wire-it-in","Wire it in",[24,60,64],{"className":61,"code":62,"language":63,"meta":29,"style":29},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","from iqrar import Iqrar\nfrom iqrar.adapters.langchain import IqrarCallbackHandler\n\niqrar = Iqrar(\n    org=\"acme\",\n    jurisdiction=\"EU\",\n    endpoint=\"https:\u002F\u002Fapi.your-deploy.workers.dev\",\n    capabilities=[\"consumer_chatbot\"],\n)\nhandler = IqrarCallbackHandler(iqrar)\n\n# LangChain\nresult = chain.invoke(input, config={\"callbacks\": [handler]})\n\n# LangGraph — same handler\nresult = graph.invoke(input, config={\"callbacks\": [handler]})\n\n# Or globally\nfrom langchain.callbacks.manager import set_default_callbacks\nset_default_callbacks([handler])\n","python",[14,65,66,71,77,84,90,96,102,108,114,120,126,131,137,143,148,154,160,165,171,177],{"__ignoreMap":29},[33,67,68],{"class":35,"line":36},[33,69,70],{},"from iqrar import Iqrar\n",[33,72,74],{"class":35,"line":73},2,[33,75,76],{},"from iqrar.adapters.langchain import IqrarCallbackHandler\n",[33,78,80],{"class":35,"line":79},3,[33,81,83],{"emptyLinePlaceholder":82},true,"\n",[33,85,87],{"class":35,"line":86},4,[33,88,89],{},"iqrar = Iqrar(\n",[33,91,93],{"class":35,"line":92},5,[33,94,95],{},"    org=\"acme\",\n",[33,97,99],{"class":35,"line":98},6,[33,100,101],{},"    jurisdiction=\"EU\",\n",[33,103,105],{"class":35,"line":104},7,[33,106,107],{},"    endpoint=\"https:\u002F\u002Fapi.your-deploy.workers.dev\",\n",[33,109,111],{"class":35,"line":110},8,[33,112,113],{},"    capabilities=[\"consumer_chatbot\"],\n",[33,115,117],{"class":35,"line":116},9,[33,118,119],{},")\n",[33,121,123],{"class":35,"line":122},10,[33,124,125],{},"handler = IqrarCallbackHandler(iqrar)\n",[33,127,129],{"class":35,"line":128},11,[33,130,83],{"emptyLinePlaceholder":82},[33,132,134],{"class":35,"line":133},12,[33,135,136],{},"# LangChain\n",[33,138,140],{"class":35,"line":139},13,[33,141,142],{},"result = chain.invoke(input, config={\"callbacks\": [handler]})\n",[33,144,146],{"class":35,"line":145},14,[33,147,83],{"emptyLinePlaceholder":82},[33,149,151],{"class":35,"line":150},15,[33,152,153],{},"# LangGraph — same handler\n",[33,155,157],{"class":35,"line":156},16,[33,158,159],{},"result = graph.invoke(input, config={\"callbacks\": [handler]})\n",[33,161,163],{"class":35,"line":162},17,[33,164,83],{"emptyLinePlaceholder":82},[33,166,168],{"class":35,"line":167},18,[33,169,170],{},"# Or globally\n",[33,172,174],{"class":35,"line":173},19,[33,175,176],{},"from langchain.callbacks.manager import set_default_callbacks\n",[33,178,180],{"class":35,"line":179},20,[33,181,182],{},"set_default_callbacks([handler])\n",[19,184,186],{"id":185},"what-gets-instrumented","What gets instrumented",[188,189,190,203],"table",{},[191,192,193],"thead",{},[194,195,196,200],"tr",{},[197,198,199],"th",{},"LangChain hook",[197,201,202],{},"Iqrar event",[204,205,206,223,236,248,260,272,284,296],"tbody",{},[194,207,208,218],{},[209,210,211,214,215],"td",{},[14,212,213],{},"on_llm_start"," \u002F ",[14,216,217],{},"on_chat_model_start",[209,219,220],{},[14,221,222],{},"agent.invocation.start",[194,224,225,230],{},[209,226,227],{},[14,228,229],{},"on_llm_end",[209,231,232,235],{},[14,233,234],{},"agent.invocation.end"," (with token usage)",[194,237,238,243],{},[209,239,240],{},[14,241,242],{},"on_llm_error",[209,244,245],{},[14,246,247],{},"agent.invocation.error",[194,249,250,255],{},[209,251,252],{},[14,253,254],{},"on_tool_start",[209,256,257],{},[14,258,259],{},"agent.tool.start",[194,261,262,267],{},[209,263,264],{},[14,265,266],{},"on_tool_end",[209,268,269],{},[14,270,271],{},"agent.tool.end",[194,273,274,279],{},[209,275,276],{},[14,277,278],{},"on_tool_error",[209,280,281],{},[14,282,283],{},"agent.tool.error",[194,285,286,291],{},[209,287,288],{},[14,289,290],{},"on_agent_action",[209,292,293],{},[14,294,295],{},"agent.step",[194,297,298,303],{},[209,299,300],{},[14,301,302],{},"on_agent_finish",[209,304,305],{},[14,306,307],{},"agent.finish",[10,309,310,311,314],{},"Token usage is extracted from ",[14,312,313],{},"response.llm_output.token_usage"," when the underlying LLM provides it (OpenAI, Anthropic, most provider integrations).",[19,316,318],{"id":317},"see-also","See also",[320,321,322,339],"ul",{},[323,324,325,330,331,330,335],"li",{},[326,327,329],"a",{"href":328},"\u002Fdocs\u002Fintegrations\u002Fcrewai","CrewAI"," · ",[326,332,334],{"href":333},"\u002Fdocs\u002Fintegrations\u002Fopenai-agents-python","OpenAI Agents SDK",[326,336,338],{"href":337},"\u002Fdocs\u002Fintegrations\u002Fautogen","AutoGen",[323,340,341,342],{},"The TS equivalent: ",[326,343,345],{"href":344},"\u002Fdocs\u002Fintegrations\u002Flangchain",[14,346,347],{},"@iqrar\u002Fagent\u002Flangchain",[349,350,351],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}",{"title":29,"searchDepth":73,"depth":73,"links":353},[354,355,356,357],{"id":21,"depth":73,"text":22},{"id":57,"depth":73,"text":58},{"id":185,"depth":73,"text":186},{"id":317,"depth":73,"text":318},"Forward LangChain and LangGraph events to Iqrar via a single BaseCallbackHandler subclass — covers LLM lifecycle, tool calls, agent actions, and chain runs.","md",{},{"title":362,"order":363},"LangChain (Python)",31,"\u002Fdocs\u002Fintegrations\u002Flangchain-python",{"title":5,"description":358},"docs\u002Fintegrations\u002Flangchain-python","-L3PDqbb3riK3d7pk3ee8RDE25BU0ATBZQ4yn3aNFWY",1778064965624]