Performance Tuning¶
ASHA v0.4.2
Trade-offs¶
| Priority | Settings |
|---|---|
| Speed | mode="lite" or mode="off", pii_mode="rule" |
| Security | mode="strict", PolicyConfig(pii_mode="hybrid") |
| Token savings | mode="strict", lower token_budget |
| Semantic fidelity | PolicyConfig(preserve_intent=True) |
Fastest path¶
from asha import process
result = process(prompt, mode="lite")
# or
result = process(prompt, mode="off")
Avoid in hot paths: trace=True, debug=True, pii_mode="hybrid" (ML load).
Maximum security¶
from asha import process
from asha.core.policy_config import PolicyConfig
result = process(
prompt,
mode="strict",
policy=PolicyConfig(pii_mode="hybrid", security_level="high"),
)
Async batching¶
import asyncio
from asha.utils.dropin import process_async
async def batch(prompts):
return await asyncio.gather(
*[process_async(p, mode="lite") for p in prompts]
)
Tunable parameters¶
All per-call on process() - no global config.
| Parameter | Effect |
|---|---|
mode |
Policy preset |
policy |
pii_mode, security_level, preserve_intent, etc. |
token_budget |
Optimization target (default 1200) |
timeout_seconds |
Abort after N seconds |
max_retries |
Retry transient failures |
Agent¶
Agent(privacy=True) uses strict internal preprocessing. Tune via token_budget or preprocess with process() yourself.
from asha import Agent
agent = Agent(model="mock", privacy=True, token_budget=800)
Measuring¶
import time
from asha import process
start = time.perf_counter()
result = process("prompt", mode="balanced")
print(f"Wall: {(time.perf_counter()-start)*1000:.1f} ms")
print(f"Reported: {result.metrics.processing_time_ms} ms")
python benchmarks/run_benchmarks.py --save
See benchmarks.md.
Production checklist¶
- Default
mode="balanced" - No
trace/debugon every request pii_mode="rule"unless ML neededmode="strict"for regulated paths- Monitor
result.degradedin logs - Pin
asha==0.4.2