Wauldo Python SDK
Verified AI answers from your documents. Every response includes source citations, confidence scores, and an audit trail — or we don't answer at all.
Official Python SDK for the Wauldo API — the AI inference layer with smart model routing and zero hallucinations.
Why Wauldo?
- Zero hallucinations — every answer is verified against source documents
- Smart model routing — auto-selects the cheapest model that meets quality (save 40-80% on AI costs)
- One API, 7+ providers — OpenAI, Anthropic, Google, Qwen, Meta, Mistral, DeepSeek with automatic fallback
- OpenAI-compatible — swap your
base_url, keep your existing code - Full audit trail — confidence score, grounded status, model used, latency on every response
Quick Start
from wauldo import HttpClient
client = HttpClient(base_url="https://api.wauldo.com", api_key="YOUR_API_KEY")
reply = client.chat_simple("auto", "What is Python?")
print(reply)
Installation
pip install wauldo
Requirements: Python 3.9+
Features
Chat Completions
from wauldo import HttpClient, ChatRequest, HttpChatMessage
client = HttpClient(base_url="https://api.wauldo.com", api_key="YOUR_API_KEY")
request = ChatRequest(
model="auto",
messages=[
HttpChatMessage.system("You are a helpful assistant."),
HttpChatMessage.user("Explain Python decorators"),
],
)
response = client.chat(request)
print(response.choices[0].message.content)
RAG — Upload & Query
# Upload a document
upload = client.rag_upload(content="Contract text here...", filename="contract.txt")
print(f"Indexed {upload.chunks_count} chunks")
# Query with verified answer
result = client.rag_query("What are the payment terms?")
print(f"Answer: {result.answer}")
print(f"Confidence: {result.get_confidence():.0%}")
print(f"Grounded: {result.audit.grounded}")
for source in result.sources:
print(f" Source ({source.score:.0%}): {source.content[:80]}")
Guard — Fact-Check Any Text
# Verify a response against ground-truth sources
result = client.fact_check(
text="Returns are accepted within 60 days.",
source_context="Our return policy: 14 days.",
)
print(result.verdict) # rejected
print(result.action) # block
# Optional: score relevance to the original question (decoupled from factuality)
result = client.fact_check(
text="Rust was first released in 2010 by Mozilla Research.",
source_context="Rust is a systems language released in 2010 by Mozilla Research.",
query="What year was Rust released?",
)
print(result.verdict) # verified
if result.relevance: # None when relevance could not be computed (see relevance_warning)
print(result.relevance.verdict) # relevant | partial | off_topic
print(result.relevance.score) # cosine similarity — interpret through verdict, not absolute value
A response can be fully verified against sources and still off-topic
for the question asked — the relevance block never influences the factual
verdict. Currently only relevance_mode="fast" (embedding cosine) is supported.
Streaming (SSE)
from wauldo import ChatRequest, HttpChatMessage
request = ChatRequest(model="auto", messages=[HttpChatMessage.user("Hello!")])
for chunk in client.chat_stream(request):
print(chunk, end="", flush=True)
Conversation Helper
conv = client.conversation(system="You are an expert on Python.", model="auto")
reply = conv.say("What are list comprehensions?")
follow_up = conv.say("Give me a nested example")
Error Handling
from wauldo import WauldoError, ServerError, AgentTimeoutError
try:
response = client.chat(ChatRequest.quick("auto", "Hello"))
except ServerError as e:
print(f"Server error: {e}")
except AgentTimeoutError:
print("Request timed out")
except WauldoError as e:
print(f"SDK error: {e}")
RapidAPI
client = HttpClient(
base_url="https://api.wauldo.com",
headers={
"X-RapidAPI-Key": "YOUR_RAPIDAPI_KEY",
"X-RapidAPI-Host": "smart-rag-api.p.rapidapi.com",
},
)
Get your free API key (300 req/month): RapidAPI
Links
Contributing
Found a bug? Have a feature request? Open an issue.
License
MIT — see LICENSE
Metadata
Release files for wauldo 0.20.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| wauldo-0.20.0.tar.gz | 67.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| wauldo-0.20.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 126.9 kB
Release files / wauldo-0.20.0.tar.gz
| Download URL | wauldo-0.20.0.tar.gz |
|---|---|
| Size | 67.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fde71fb40c3fd30ffba9989ef4427b48e1cc92c28e9e129013c6babff88917f7
|
|
BLAKE2b-256 checksum How to use checksums |
a51959ed2990d0acb2fc3a664db09fa5c7ccb0c3b749524102a0c2845e2a05b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / wauldo-0.20.0-py3-none-any.whl
| Download URL | wauldo-0.20.0-py3-none-any.whl |
|---|---|
| Size | 59.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c6e88514b95c960af9dcc2fa35026499ccfdb279e63544a2b85149c6b387d803
|
|
BLAKE2b-256 checksum How to use checksums |
6da3018c53cbe0c2fc27043dd890723665161e76d1ecdc21fb9c545e9aedd8bb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Security for wauldo 0.20.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.