VeroQ Python SDK — the verified intelligence layer for AI agents.
Project description
veroq
Verified AI. One function call. Stop shipping hallucinations.
Official Python SDK for VeroQ. shield() any LLM output — every claim fact-checked with evidence chains, confidence scores, and verification receipts.
Migrating from
polaris-news? Drop-in replacement — just change your import.
Prompt Shield — One Line to Verify Any LLM
from veroq import shield
result = shield("NVIDIA reported $22B in Q4 revenue")
print(result.trust_score) # 0.73
print(result.is_trusted) # False — claims contradicted
print(result.corrections) # [{"claim": "...", "correction": "actual revenue was $68B"}]
print(result.verified_text) # text with corrections inline
print(result.receipt_ids) # ["vr_abc123"] — permanent proof
Works with any LLM. One function. Every claim fact-checked.
Installation
pip install veroq
Quick Start
from veroq import VeroqClient
client = VeroqClient() # uses VEROQ_API_KEY env var
# Ask anything — routes to 41 intents automatically
answer = client.ask("How is NVDA doing?")
print(answer["summary"])
print(answer["trade_signal"]) # { action: "hold", score: 55 }
# Verify any claim — evidence chains + confidence breakdown
result = client.verify("NVIDIA beat Q4 earnings by 20%")
print(result["verdict"]) # "supported"
print(result["confidence"]) # 0.92
print(result["evidence_chain"]) # [{ source: "Reuters", ... }]
# Stream in real-time
for event in client.ask_stream("AAPL price and technicals"):
if event["type"] == "summary_token":
print(event["data"]["token"], end="", flush=True)
Multi-Agent Workflows
# Verified Swarm — 5 agents with automatic verification
swarm = client.create_verified_swarm(
"Analyze NVDA for a long position",
roles=["planner", "researcher", "verifier", "critic", "synthesizer"],
escalation_threshold=75,
credit_budget=30,
)
print(swarm["synthesis"]["summary"])
print(swarm["budget"]) # { spent: 12, remaining: 18 }
print(swarm["verification_summary"]) # { avg_confidence: 82 }
# Domain-specific runtime
legal = client.create_runtime(
"GDPR data retention requirements",
vertical="legal",
cost_mode="premium",
)
External Tool Calls
result = client.call_external_tool("alphavantage", "get_quote", {"symbol": "NVDA"})
# Permission engine → rate limiter → cache → execution → audit
Self-Improvement Feedback
client.submit_feedback(
session_id=swarm["session_id"],
query="NVDA analysis",
reason="data_gap",
detail="Missing Q4 insider trading data",
)
Enterprise Features
client.configure_enterprise({
"enterprise_id": "acme-capital",
"escalation_threshold": 80,
"escalation_pauses": True,
"session_id": "trading-session-001",
})
lineage = client.get_decision_lineage("ask", {"question": "Should I buy NVDA?"})
print(lineage["decision"]) # "review" — high-stakes detected
trail = client.get_audit_trail(session_id="trading-session-001")
Why VeroQ?
| What you get | |
|---|---|
| Trust | Evidence chains and confidence breakdowns on every response |
| Safety | Permission engine, decision lineage, human-in-the-loop escalation |
| Cost control | 3 cost modes, per-step budgets, credit transparency |
| Continuous improvement | Feedback loop with web search fallback fills data gaps over time |
| Multi-domain | Finance (flagship), legal, research, compliance, custom verticals |
Cached Shield — High-Volume Pipelines
from veroq import CachedShield
cached = CachedShield(max_cache=1000, ttl_seconds=3600)
result = cached("NVIDIA reported $22B in Q4 revenue") # API call
result = cached("NVIDIA reported $22B in Q4 revenue") # instant, 0 credits
print(cached.stats()) # {'hits': 1, 'misses': 1, 'hit_rate': 0.5, 'size': 1}
Agent Monitoring
# Set up autonomous monitoring
client.agent_auto_monitor("my-bot", trust_threshold=0.7, check_interval_hours=6)
# Manual health check
health = client.agent_health_check("my-bot")
print(health["health"]["status"]) # "healthy" or "degraded"
print(health["health"]["trust_trend"]) # "improving" / "declining" / "stable"
All Methods
| Method | Description |
|---|---|
shield(text) |
Verify any LLM output (module-level) |
CachedShield(...) |
Local LRU cache for high-volume shield calls |
ask(question) |
Ask any financial question |
ask_stream(question) |
Stream via SSE |
verify(claim) |
Fact-check with evidence chain |
verify_output(text) |
Extract + verify claims from any text |
create_verified_swarm(query, ...) |
Multi-agent verified pipeline |
create_runtime(query, ...) |
Domain-specific runtime |
call_external_tool(server_id, tool, params) |
Secure external tool proxy |
submit_feedback(...) |
Self-improvement feedback |
memory_store(agent_id, key, value) |
Store agent memory |
memory_recall(agent_id) |
Recall agent memories |
memory_list(agent_id) |
List all agent memories |
agent_auto_monitor(agent_id) |
Configure autonomous monitoring |
agent_health_check(agent_id) |
Trigger health check |
watch(tickers) |
Real-time SSE verification stream |
configure_enterprise(config) |
Enterprise governance |
get_decision_lineage(tool, input, output) |
Decision audit |
get_audit_trail(session_id?) |
Audit trail |
feed() / brief(id) / search(query) |
Intelligence briefs |
stream(categories?) |
Stream briefs via SSE |
Error Handling
from veroq import AuthenticationError, RateLimitError, NotFoundError
try:
client.ask("NVDA analysis")
except RateLimitError as e:
print(f"Retry after: {e.retry_after}s")
Backward Compatibility
PolarisClient aliased to VeroqClient. Both VEROQ_API_KEY and POLARIS_API_KEY supported.
Links
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 veroq-2.2.0.tar.gz.
File metadata
- Download URL: veroq-2.2.0.tar.gz
- Upload date:
- Size: 29.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f9aa9bd8e07ec69f64ad78903c5ac8de6cdcb2b34e27bff2e0c0b508bd946719
|
|
| MD5 |
1724c6a7154b03a9549e776f72b27bd8
|
|
| BLAKE2b-256 |
6c2c4e4823fb6bc4ecd27983b0e09e4d84235fcf24ec3f5e75ff434a05e0df95
|
File details
Details for the file veroq-2.2.0-py3-none-any.whl.
File metadata
- Download URL: veroq-2.2.0-py3-none-any.whl
- Upload date:
- Size: 35.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
020f984976ed6c61a8eafb4c2d66ecdf573176dca787867713883a6c24e4c033
|
|
| MD5 |
e145f66e08ca49c9a9a6b22d7004924f
|
|
| BLAKE2b-256 |
9e69138b40a8368f3bf7b6c28bdf32f53e06c576c68e619a2db15348a34351c9
|