LangChain (Python)

Trace LangChain runs via callbacks and optionally enforce at tool boundaries.

Install

pip install njiraai njiraai-langchain

Tracing via callback handler

from langchain_openai import ChatOpenAI
from njiraai import NjiraAI
from njiraai_langchain import NjiraCallbackHandler

njira = NjiraAI(api_key="...", project_id="...", mode="shadow")
handler = NjiraCallbackHandler(njira)

llm = ChatOpenAI()
llm.invoke("Hello", config={"callbacks": [handler]})

Tool-boundary enforcement (v0)

Use wrap_tool() for tool input/output enforcement without deep LangChain internals:

from njiraai_langchain import wrap_tool

async def my_tool(x: str) -> str:
    return x.upper()

safe_tool = wrap_tool(my_tool, njira, tool_name="my_tool")
out = await safe_tool("hello")

Notes / limitations

  • v0 enforcement is tool-boundary only (recommended)
  • Streaming support depends on your LangChain execution path