LangChain callback handler for automatic usage tracking and billing with AgentBill
Project description
AgentBill LangChain Integration
Automatic usage tracking and billing for LangChain applications.
Installation
Install via pip:
pip install agentbill-langchain
With OpenAI support:
pip install agentbill-langchain[openai]
With Anthropic support:
pip install agentbill-langchain[anthropic]
Quick Start
from agentbill_langchain import AgentBillCallback
from langchain_openai import ChatOpenAI
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
# 1. Initialize AgentBill callback
callback = AgentBillCallback(
api_key="agb_your_api_key_here", # Get from AgentBill dashboard
base_url="https://api.agentbill.io",
customer_id="customer-123",
debug=True
)
# 2. Create LangChain chain with callback
llm = ChatOpenAI(model="gpt-4o-mini")
prompt = PromptTemplate.from_template("Tell me a joke about {topic}")
chain = LLMChain(llm=llm, prompt=prompt)
# 3. Run - everything is auto-tracked!
result = chain.invoke(
{"topic": "programming"},
config={"callbacks": [callback]}
)
print(result["text"])
# ✅ Automatically captured:
# - Prompt text (hashed for privacy)
# - Model name (gpt-4o-mini)
# - Provider (openai)
# - Token usage (prompt + completion)
# - Latency (ms)
# - Costs (calculated automatically)
Features
- ✅ Zero-config instrumentation - Just add the callback
- ✅ Automatic token tracking - Captures all LLM calls
- ✅ Multi-provider support - OpenAI, Anthropic, any LangChain LLM
- ✅ Chain tracking - Tracks entire chain executions
- ✅ Cost calculation - Auto-calculates costs per model
- ✅ Prompt profitability - Compare costs vs revenue
- ✅ OpenTelemetry compatible - Standard observability
Advanced Usage
Track Custom Revenue
# Track revenue for profitability analysis
callback.track_revenue(
event_name="chat_completion",
revenue=0.50, # What you charged the customer
metadata={"subscription_tier": "pro"}
)
Use with Agents
from langchain.agents import initialize_agent, load_tools
tools = load_tools(["serpapi", "llm-math"], llm=llm)
agent = initialize_agent(
tools,
llm,
agent="zero-shot-react-description",
callbacks=[callback] # Add callback here
)
# All agent steps auto-tracked!
response = agent.run("What is 25% of 300?")
Use with Sequential Chains
from langchain.chains import SimpleSequentialChain
# All chain steps tracked automatically
overall_chain = SimpleSequentialChain(
chains=[chain1, chain2, chain3],
callbacks=[callback]
)
result = overall_chain.run(input_text)
Configuration
callback = AgentBillCallback(
api_key="agb_...", # Required - get from dashboard
base_url="https://...", # Required - your AgentBill instance
customer_id="customer-123", # Optional - for multi-tenant apps
account_id="account-456", # Optional - for account-level tracking
debug=True, # Optional - enable debug logging
batch_size=10, # Optional - batch signals before sending
flush_interval=5.0 # Optional - flush interval in seconds
)
How It Works
The callback hooks into LangChain's lifecycle:
- on_llm_start - Captures prompt, model, provider
- on_llm_end - Captures tokens, latency, response
- on_llm_error - Captures errors and retries
- on_chain_start - Tracks chain execution start
- on_chain_end - Tracks chain completion
All data is sent to AgentBill via the unified OTEL pipeline (otel-collector endpoint) with proper authentication.
Supported Models
Auto-cost calculation for:
- OpenAI: GPT-4, GPT-4o, GPT-3.5-turbo, etc.
- Anthropic: Claude 3.5 Sonnet, Claude 3 Opus, etc.
- Any LangChain-compatible LLM
Troubleshooting
Not seeing data in dashboard?
- Check API key is correct
- Enable
debug=Trueto see logs - Verify
base_urlmatches your instance - Check network connectivity to AgentBill
Token counts are zero?
- Some LLMs don't return token usage
- Callback will estimate based on response length
- OpenAI/Anthropic provide accurate counts
License
MIT
Project details
Release history Release notifications | RSS feed
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 agentbill_py_langchain-10.0.0.tar.gz.
File metadata
- Download URL: agentbill_py_langchain-10.0.0.tar.gz
- Upload date:
- Size: 23.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
add459c08437b36bafd5e567185e55ec16ac74caf5a01201676af07ca5a70c39
|
|
| MD5 |
50061ecb9b2b21dee60b19a5b2b469e2
|
|
| BLAKE2b-256 |
fdf9a3bbdfcbbca1bdde0feea882c91e23a3f91d467ae7dd9abe347ca7b410c4
|
File details
Details for the file agentbill_py_langchain-10.0.0-py3-none-any.whl.
File metadata
- Download URL: agentbill_py_langchain-10.0.0-py3-none-any.whl
- Upload date:
- Size: 24.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
39ea728144a8b6b8a3e59199e5c8f36bfff6dc2815c9d7635a22b4e6db4d6585
|
|
| MD5 |
1f784efc802360181f3b4ad16dd7ab24
|
|
| BLAKE2b-256 |
a0ffb51c69a261257d362e30b0e1b836ea26ff2e8f1fe2f0e776822fd4216e75
|