from langchain.callbacks.base import BaseCallbackHandler
from treeship_sdk import Treeship
ts = Treeship()
class TreeshipCallback(BaseCallbackHandler):
def __init__(self, agent_name: str = "langchain-agent"):
self.agent_name = agent_name
def on_llm_end(self, response, **kwargs):
ts.attest(
agent=self.agent_name,
action=f"LLM response generated",
inputs_hash=ts.hash({"response_id": response.llm_output.get("id")})
)
def on_tool_end(self, output, **kwargs):
ts.attest(
agent=self.agent_name,
action=f"Tool executed: {kwargs.get('name', 'unknown')}",
inputs_hash=ts.hash({"output": str(output)[:200]})
)
# Use the callback
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-4",
callbacks=[TreeshipCallback("my-agent")]
)