Release history for the PandaProbe Python SDK. Current version:Documentation Index
Fetch the complete documentation index at: https://docs.pandaprobe.com/llms.txt
Use this file to discover all available pages before exploring further.
v0.4.0
Mistral AI and AWS Bedrock wrappers
- Added
pandaprobe.wrappers.wrap_mistralfor the officialmistralai>=1.0.0client. Instrumentschat.complete/chat.complete_async(blocking) andchat.stream/chat.stream_async(streaming) — every call automatically produces an LLM span with input, output, model, model parameters, and token usage. Mistral’s nativeprompt_tokens/completion_tokens/total_tokensmap directly onto PandaProbe’s canonical names;UNSETsentinel kwargs are stripped before logging. - Added
pandaprobe.wrappers.wrap_bedrock(beta) for the AWSbedrock-runtimeclient (boto3andaioboto3). Instruments the recommended Converse API (converse,converse_stream) end-to-end — system blocks are hoisted into the universal-schema messages list, text-onlycontentblocks are flattened, the streaming response dict ({"stream": ..., "ResponseMetadata": ...}) shape is preserved with only the inner iterator wrapped, time-to-first-token is captured on the firstcontentBlockDelta, and final usage (inputTokens/outputTokens/totalTokensand cache-read / cache-write counts) is read from the trailingmetadataevent. - Bedrock legacy InvokeModel path is also instrumented (
invoke_model,invoke_model_with_response_stream) with best-effort body parsing across Anthropic-on-Bedrock, Mistral, Llama, Titan, and Cohere body shapes. - Async support for Bedrock is opportunistic —
aioboto3is detected at runtime viainspect.iscoroutinefunctionplus client-class-module heuristics, so you can use it without listing it as a dependency. - New optional dependencies:
pip install "pandaprobe[mistral]"andpip install "pandaprobe[bedrock]". - New examples in
examples/mistral/(chat completion, streaming, multi-turn with sessions) andexamples/bedrock/(Converse, Converse streaming, legacy InvokeModel with the Anthropic Claude body shape).
wrap_bedrock ships as beta.DeepAgents integration
- Added
pandaprobe.integrations.deepagents.DeepAgentsCallbackHandlerfor tracing deep agents built withcreate_deep_agent. A single handler captures the parent agent and every sub-agent dispatched via the built-intasktool — sub-agent invocations forwardcallbacks/tags/configurableautomatically, so the entire nested run is one trace. - Span tree faithfully records the
task (TOOL) → <subagent> (AGENT)nesting, preserving the LangChain universal schema across the dispatcher boundary. - Trace name remap: DeepAgents wraps a LangGraph compiled graph (root reports
name="LangGraph"); rewritten to"DeepAgents"while custom user-given graph names pass through. - New optional dependency:
pip install "pandaprobe[deepagents]"(requires Python ≥3.11). - New examples in
examples/deepagents/: simple agent, sub-agent dispatch via thetasktool, and multi-turn with sessions.
Test infrastructure
- Test suite is now hermetic: a session-level fixture in
tests/conftest.pypinsPANDAPROBE_ENDPOINTto a fake host and clears everyPANDAPROBE_*config var, so developer-machine env exports cannot leak into tests or accidentally hit production. Pinned by a regression-test class.
LangChain integration
- Added
pandaprobe.integrations.langchain.LangChainCallbackHandlerfor tracing LangChain agents built withlangchain.agents.create_agentand plain LCEL pipelines (prompt | model | parser). - Refactored shared callback logic into a private
pandaprobe.integrations._langchain_corepackage.LangGraphCallbackHandleris now a thin subclass — behavior is unchanged for existing users; future LangChain-family integrations share the same base. - Trace name remap:
create_agent’s root reportsname="LangGraph", LCEL chains reportname="RunnableSequence"— both rewritten to"LangChain"while custom user-given names pass through. - Improved
safe_outputto faithfully serialize@dataclassinstances (e.g. LangGraphCommandobjects) into structured JSON instead ofrepr()strings, preserving routing fields. - Diagnostic-label fix: error logs in
_finalize_tracenow correctly reflect the active integration’s name (PandaProbe LangChain callback failed…vsPandaProbe LangGraph callback failed…). - New optional dependency:
pip install "pandaprobe[langchain]". - New examples in
examples/langchain/: simple agent, LCEL chain, multi-turn with sessions.
- Fixed installation of optional dependency extras (e.g.
pandaprobe[openai],pandaprobe[gemini]) by quoting glob-pattern extras to avoid shell unmatched-glob errors on common shells. - Minor example and documentation corrections.
- Documentation polish: page titles and copy fixes across the SDK reference.
- Updated and expanded Python SDK documentation.
Initial public release of the Python SDK
- Tracing core:
pandaprobe.init,pandaprobe.trace,pandaprobe.spandecorators,TraceContext/SpanContextcontext managers, background-batched transport with retry/backoff and atexit flushing. - Provider wrappers: OpenAI, Anthropic, and Google Gemini — automatic LLM span capture without code changes.
- Framework integrations: LangGraph, Google ADK, Claude Agent SDK, CrewAI, and OpenAI Agents SDK.
- Session and user context:
pandaprobe.session(...)/pandaprobe.user(...)ContextVar-based propagation across decorators, wrappers, and integrations. - Programmatic scoring:
Client.score(trace_id, name, value, ...)for trace-level evaluation signals. - Auto-init from environment:
PANDAPROBE_API_KEY+PANDAPROBE_PROJECT_NAMEenv vars trigger lazy client creation;PANDAPROBE_ENABLED=falsedisables silently.

