KATE SDK — auto-eval, observability, and knowledge marketplace 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():
result = summarize("Today's top news stories...")
print(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()
Tools — discover and use marketplace tools
KATE agents can discover and execute tools from the marketplace. The SDK provides a tool loop that handles the LLM ↔ tool-call cycle automatically.
Agentic tool loop
Wire up your LLM client and let the SDK handle tool discovery, execution, and chaining:
import projectkate
from openai import AsyncOpenAI
projectkate.init()
llm = AsyncOpenAI()
messages = [
{"role": "system", "content": "You are a helpful assistant with access to tools."},
{"role": "user", "content": "Find SEO keywords for 'AI observability'"},
]
result = await projectkate.tool_loop(
llm,
model="gpt-4o",
messages=messages,
max_rounds=10,
)
print(result.content) # Final LLM response
print(result.tool_calls_made) # Number of tool calls executed
Works with both OpenAI and Anthropic clients — the SDK detects the provider automatically.
Local tools
You can register your own tools alongside marketplace tools. The SDK merges them and routes calls to the right handler:
from projectkate import LocalTool
def get_current_date() -> str:
from datetime import date
return date.today().isoformat()
result = await projectkate.tool_loop(
llm,
model="gpt-4o",
messages=messages,
local_tools=[
LocalTool(
name="get_current_date",
description="Returns today's date in ISO format",
parameters={"type": "object", "properties": {}},
fn=get_current_date,
),
],
)
Local tools run in-process. Async functions are supported.
Direct tool management
Use the management client for lower-level control:
async with KateClient(api_key="kate_...") as kate:
# List tools available to your agent
tools = await kate.tools.list(agent_id="...")
# Execute a specific tool
result = await kate.tools.execute(
agent_id="...",
tool_name="seo_keyword_research",
input_data={"query": "AI observability"},
)
print(result.output)
# Check credential status for subscribed tools
statuses = await kate.tools.status(agent_id="...")
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
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.3.0.tar.gz.
File metadata
- Download URL: projectkate-0.3.0.tar.gz
- Upload date:
- Size: 43.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c62cf5c76f53064fdffe4d6ff16a389648498c6c78ef40f379250dcfcff54e16
|
|
| MD5 |
b0d9f004816f77e729f0daac8672b4c5
|
|
| BLAKE2b-256 |
4afa5f202c279d668eef0d2a1083bf059075511407012e7b90ce609ce0ae0334
|
File details
Details for the file projectkate-0.3.0-py3-none-any.whl.
File metadata
- Download URL: projectkate-0.3.0-py3-none-any.whl
- Upload date:
- Size: 42.5 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 |
89e4fb99d701049a5f500c609a50072fc18fa2dc59e97f78476e0ce28ea8b32d
|
|
| MD5 |
5b392a4a4dc2c3ba7617920d788abd5c
|
|
| BLAKE2b-256 |
a4e09ffbd29aed78c48456f02da10e05f1a6abc61e9e4fda9e39fca2c65d0771
|