mirror of
https://github.com/hanzoai/insights-python.git
synced 2026-10-30 18:33:17 +00:00
- Remove Posthog = Insights alias from __init__.py - Remove PosthogContextMiddleware alias from django.py - Remove PostHogTracingProcessor alias from processor.py - Change $lib from "posthog-python" to "insights-python" - Change ingestion URLs from posthog.com to insights.hanzo.ai - Rename all posthog_* kwargs to insights_* across AI wrappers - Rename __posthog_exception_captured to __insights_exception_captured - Rename posthog_context_stack contextvar to insights_context_stack - Rename posthog🎏 Redis prefix to insights🎏 - Rename $$_posthog_redacted_* sentinels to $$_insights_redacted_* - Remove POSTHOG_MW_* Django settings fallback, X-POSTHOG-* headers - Rename Prompts(posthog=) param to Prompts(client=) - Update APP_ENDPOINT to us.insights.hanzo.ai - Update all tests, examples, docs, mypy config
77 lines
2.5 KiB
Python
77 lines
2.5 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import TYPE_CHECKING, Any, Callable, Dict, Optional, Union
|
|
|
|
if TYPE_CHECKING:
|
|
from agents.tracing import Trace
|
|
|
|
from hanzo_insights.client import Client
|
|
|
|
try:
|
|
import agents # noqa: F401
|
|
except ImportError:
|
|
raise ModuleNotFoundError(
|
|
"Please install the OpenAI Agents SDK to use this feature: 'pip install openai-agents'"
|
|
)
|
|
|
|
from hanzo_insights.ai.openai_agents.processor import InsightsTracingProcessor
|
|
|
|
__all__ = ["InsightsTracingProcessor", "instrument"]
|
|
|
|
|
|
def instrument(
|
|
client: Optional[Client] = None,
|
|
distinct_id: Optional[Union[str, Callable[[Trace], Optional[str]]]] = None,
|
|
privacy_mode: bool = False,
|
|
groups: Optional[Dict[str, Any]] = None,
|
|
properties: Optional[Dict[str, Any]] = None,
|
|
) -> InsightsTracingProcessor:
|
|
"""
|
|
One-liner to instrument OpenAI Agents SDK with Hanzo Insights tracing.
|
|
|
|
This registers an InsightsTracingProcessor with the OpenAI Agents SDK,
|
|
automatically capturing traces, spans, and LLM generations.
|
|
|
|
Args:
|
|
client: Optional Insights client instance. If not provided, uses the default client.
|
|
distinct_id: Optional distinct ID to associate with all traces.
|
|
Can also be a callable that takes a trace and returns a distinct ID.
|
|
privacy_mode: If True, redacts input/output content from events.
|
|
groups: Optional Insights groups to associate with events.
|
|
properties: Optional additional properties to include with all events.
|
|
|
|
Returns:
|
|
InsightsTracingProcessor: The registered processor instance.
|
|
|
|
Example:
|
|
```python
|
|
from hanzo_insights.ai.openai_agents import instrument
|
|
|
|
# Simple setup
|
|
instrument(distinct_id="[email protected]")
|
|
|
|
# With custom properties
|
|
instrument(
|
|
distinct_id="[email protected]",
|
|
privacy_mode=True,
|
|
properties={"environment": "production"}
|
|
)
|
|
|
|
# Now run agents as normal - traces automatically sent to Insights
|
|
from agents import Agent, Runner
|
|
agent = Agent(name="Assistant", instructions="You are helpful.")
|
|
result = Runner.run_sync(agent, "Hello!")
|
|
```
|
|
"""
|
|
from agents.tracing import add_trace_processor
|
|
|
|
processor = InsightsTracingProcessor(
|
|
client=client,
|
|
distinct_id=distinct_id,
|
|
privacy_mode=privacy_mode,
|
|
groups=groups,
|
|
properties=properties,
|
|
)
|
|
add_trace_processor(processor)
|
|
return processor
|