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