KATE SDK — local-first auto-eval for AI agents
Project description
KATE SDK
Auto-eval and observability for AI agents. Trace every LLM call, run evaluations, and catch regressions before they ship.
Install
pip install projectkate
Optional instrumentation extras
pip install projectkate[openai] # OpenAI
pip install projectkate[anthropic-instrument] # Anthropic
pip install projectkate[langchain] # LangChain / LangGraph
pip install projectkate[mistral] # Mistral
pip install projectkate[vertexai] # Vertex AI
pip install projectkate[google-genai] # Google GenAI
pip install projectkate[crewai] # CrewAI
pip install projectkate[all] # All supported providers
Quick Start
Trace mode — instrument your agent
import projectkate
# Initialize — reads KATE_API_URL, KATE_API_KEY, KATE_AGENT_ID from env
projectkate.init()
@projectkate.trace("summarize")
def summarize(text: str) -> str:
return client.messages.create(
model="claude-sonnet-4-20250514",
messages=[{"role": "user", "content": f"Summarize: {text}"}],
).content[0].text
async with projectkate.run() as ctx:
result = summarize("Today's top news stories...")
ctx.output(result)
Management client — programmatic platform access
from projectkate import KateClient
async with KateClient(api_key="kate_...") as kate:
# List your agents
agents = await kate.agents.list()
# Check eval results for a run
evals = await kate.evals.get_run_evals(run_id="...")
# Publish an artifact
await kate.artifacts.publish(artifact_id="...")
# Check wallet balance
balance = await kate.wallet.get_balance()
How KATE Compares
| Feature | KATE | LangSmith | Arize Phoenix |
|---|---|---|---|
| Built for agentic loops | Yes | Partial (RAG-focused) | Partial |
| Auto-instrumentation | Yes, zero-config | Manual setup | Manual setup |
| Hallucination detection | Built-in | Separate tool needed | Built-in |
| Open source | Yes | No | Yes |
| Framework agnostic | Yes | LangChain-first | Yes |
| Self-hostable | Yes | No | Yes |
Local Eval (no server needed)
Run evaluations locally against your agent with zero infrastructure:
from projectkate.local import LocalEvalRunner
runner = LocalEvalRunner(agent_fn=my_agent)
results = await runner.run(test_cases=[
{"input": "Summarize the news", "expected": "A concise summary..."},
])
runner.print_results(results)
Documentation
License
Apache 2.0 — see LICENSE.
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
projectkate-0.2.0.tar.gz
(34.9 kB
view details)
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 projectkate-0.2.0.tar.gz.
File metadata
- Download URL: projectkate-0.2.0.tar.gz
- Upload date:
- Size: 34.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
efe4d9f5e22f5642771c98158a7017b3656fb0af24f7128c1ac161f7fd9b7def
|
|
| MD5 |
effaa168ce021f0c0fd26492aef99954
|
|
| BLAKE2b-256 |
241a418fac9687603417fc04805c861223133849cd2d90d85e46f8238e31fd76
|
File details
Details for the file projectkate-0.2.0-py3-none-any.whl.
File metadata
- Download URL: projectkate-0.2.0-py3-none-any.whl
- Upload date:
- Size: 35.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c8cb34df6884f5ed1c45d252b4fffa525ab3df532ba7c2b27d3c6b245aaa0a5f
|
|
| MD5 |
febec426090b44d86804c30c3dccbbbb
|
|
| BLAKE2b-256 |
8d178b4a802870851a25837b007d93307d9675011e50d5cf65373abc1cba769e
|