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
- Docs — guides, API reference, and examples
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.2.tar.gz
(32.6 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.2.tar.gz.
File metadata
- Download URL: projectkate-0.2.2.tar.gz
- Upload date:
- Size: 32.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7fe862277c83cf553ebe7727d6aeebccebc4df8b976a61f2dac485a379dedde5
|
|
| MD5 |
270b68d790ba6df90f584b593285b40c
|
|
| BLAKE2b-256 |
79576772de82b81ea04a56e2f8be33e351cff4e2d8822c4b3e9232f4acea76a9
|
File details
Details for the file projectkate-0.2.2-py3-none-any.whl.
File metadata
- Download URL: projectkate-0.2.2-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 |
4c959aa37b1c28c65630481eb489709a24738214b3eb8e2d7428ec2ba5289277
|
|
| MD5 |
e035bcee4011c93a3446bd6d2ddd2a37
|
|
| BLAKE2b-256 |
7c09a54a62b2067d11ae0c5c73b4a5254893ed5f82e3c9d0673d28499cf33ab6
|