LangChain integration for Agent Observability - structured logging, cost tracking, and compliance for AI agents
Project description
Agent Observability for LangChain
LangChain integration for the Agent Observability platform — structured logging, cost tracking, and compliance audit trails for production AI agents.
Installation
pip install agent-observability-langchain
Quick Start
Step 1: Get Your Free API Key (One-Time)
import requests
response = requests.post(
"https://api-production-0c55.up.railway.app/v1/register",
json={"agent_id": "my-langchain-agent"}
)
api_key = response.json()["api_key"]
print(f"Your API key: {api_key}")
# Save this! Example: ao_live_abc123...
Or via curl:
curl -X POST https://api-production-0c55.up.railway.app/v1/register \
-H "Content-Type: application/json" \
-d '{"agent_id": "my-langchain-agent"}'
Step 2: Set Environment Variable
export AGENT_OBS_API_KEY=ao_live_your_key_here
Step 3: Add to Your Agent
from langchain.agents import initialize_agent, AgentType
from langchain_openai import ChatOpenAI
from agent_observability_langchain import AgentObservabilityTool
# Create observability tool
obs_tool = AgentObservabilityTool()
# Create agent with observability
agent = initialize_agent(
tools=[obs_tool],
llm=ChatOpenAI(model="gpt-4"),
agent=AgentType.OPENAI_FUNCTIONS,
verbose=True
)
# Use your agent — it can now log events for compliance
result = agent.run(
"Log an API call to OpenAI with cost $0.05 and latency 1200ms"
)
Features
| Feature | Description |
|---|---|
| Structured Logging | Track all agent decisions and API calls with metadata |
| Cost Tracking | Monitor spending per agent, task, and LLM provider |
| Performance Analytics | Latency percentiles, error rates, throughput |
| Compliance Ready | SOC 2, GDPR, HIPAA audit trail requirements |
| Queryable History | Search logs by agent, time, event type, severity |
| LangChain Native | Works with agents, chains, and LangGraph |
Use Cases
1. Cost Analysis
Track spending across all your agents and LLM providers:
from agent_observability_langchain import AgentObservabilityTool
tool = AgentObservabilityTool(agent_id="research-bot-v2")
# Log each API call with cost
tool.invoke({
"event_type": "api_call",
"metadata": {
"provider": "openai",
"model": "gpt-4",
"cost_usd": 0.03,
"latency_ms": 1250,
"tokens": 1500
}
})
2. Decision Auditing
For regulated industries (finance, healthcare, legal):
tool.invoke({
"event_type": "decision",
"metadata": {
"decision": "approve_loan",
"confidence": 0.92,
"factors": ["credit_score", "income", "debt_ratio"],
"customer_id": "cust_12345"
},
"severity": "info"
})
3. Error Tracking
tool.invoke({
"event_type": "error",
"metadata": {
"error_type": "RateLimitError",
"provider": "openai",
"retry_count": 3,
"resolved": False
},
"severity": "error"
})
4. With LangGraph
from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI
from agent_observability_langchain import AgentObservabilityTool
# Create agent with observability
agent = create_react_agent(
ChatOpenAI(model="gpt-4"),
tools=[AgentObservabilityTool()]
)
result = agent.invoke({
"messages": [("user", "Research AI trends and log the costs")]
})
5. Custom Agent ID per Task
# Different agent IDs for different workflows
research_tool = AgentObservabilityTool(agent_id="research-agent")
writer_tool = AgentObservabilityTool(agent_id="writer-agent")
reviewer_tool = AgentObservabilityTool(agent_id="reviewer-agent")
API Reference
AgentObservabilityTool
AgentObservabilityTool(
api_key: str = None, # Or set AGENT_OBS_API_KEY env var
agent_id: str = "langchain-agent", # Your agent identifier
api_base: str = None # Override API URL (for self-hosted)
)
Input Schema
| Parameter | Type | Required | Description |
|---|---|---|---|
event_type |
str | Yes | api_call, decision, transaction, error, state_change |
metadata |
dict | No | Event data (provider, cost_usd, latency_ms, etc.) |
severity |
str | No | debug, info, warning, error, critical (default: info) |
Common Metadata Fields
| Field | Type | Description |
|---|---|---|
provider |
str | LLM provider (openai, anthropic, cohere, etc.) |
model |
str | Model name (gpt-4, claude-3-opus, etc.) |
cost_usd |
float | Cost in USD |
latency_ms |
int | Response time in milliseconds |
tokens |
int | Total token count |
input_tokens |
int | Input/prompt tokens |
output_tokens |
int | Output/completion tokens |
error_message |
str | Error details (for error events) |
decision |
str | Decision made (for decision events) |
confidence |
float | Confidence score (0-1) |
Pricing
| Tier | Logs/Month | Price | Best For |
|---|---|---|---|
| Free | 100,000 | $0 | Development, small projects |
| Starter | 1,000,000 | $29/month | Production agents |
| Professional | 10,000,000 | $199/month | Enterprise, high-volume |
Full pricing: https://api-production-0c55.up.railway.app/pricing.json
Convenience Function
from agent_observability_langchain import create_observability_tool
# Quick creation
tool = create_observability_tool(agent_id="my-agent")
Environment Variables
| Variable | Description | Required |
|---|---|---|
AGENT_OBS_API_KEY |
Your API key | Yes (or pass to constructor) |
AGENT_OBS_BASE_URL |
Override API URL | No |
Error Handling
The tool handles errors gracefully and returns error messages instead of raising exceptions:
result = tool.invoke({
"event_type": "api_call",
"metadata": {"provider": "openai"}
})
if "Failed" in result:
print(f"Logging failed: {result}")
else:
print(f"Success: {result}")
Related Packages
- agent-observability — Core Python SDK
- agent-observability-mcp — Claude Desktop MCP integration
- agent-observability-autogpt — AutoGPT plugin
- agent-observability-crewai — CrewAI integration
License
MIT License — see LICENSE for details.
Links
Contributing
Contributions welcome! Please open an issue or submit a pull request.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agent_observability_langchain-1.0.0.tar.gz.
File metadata
- Download URL: agent_observability_langchain-1.0.0.tar.gz
- Upload date:
- Size: 10.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
411effcacf28c5c9f08b5cc76ad2c786722ffd6501014f6b26b0ff04329be97f
|
|
| MD5 |
b1a3ff3d69d53e3e4491e6f1a0abcae8
|
|
| BLAKE2b-256 |
1f1a9e8811069b369072fc06b21f64e215ec173dae3e159427c99fa3656a5f57
|
File details
Details for the file agent_observability_langchain-1.0.0-py3-none-any.whl.
File metadata
- Download URL: agent_observability_langchain-1.0.0-py3-none-any.whl
- Upload date:
- Size: 11.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d9e9d981315249ce29ddbe3e230f031d6e9b4e1ae331b43ebd361ab2e745aff3
|
|
| MD5 |
6b9a178ca9166adec934c698784e3e38
|
|
| BLAKE2b-256 |
f44718c7792846536a176795cdebf29988af6efe73a7846f3d6815db1280c1c7
|