Documentation Index
Fetch the complete documentation index at: https://docs.seersearch.com/llms.txt
Use this file to discover all available pages before exploring further.
Make your first Seer log and measure retrieval quality from unlabeled traffic.
Quick Start
Set your API key
Get an API key from the Seer Console and export it:export SEER_API_KEY="seer_live_your_key_here"
Create quickstart.py
from seer import SeerClient
client = SeerClient() # reads SEER_API_KEY from env
# Your retrieval step
def retrieve(query: str) -> list[dict]:
# Replace with your real retriever
return [
{"text": "Christopher Nolan directed Inception.", "score": 0.95},
{"text": "Nolan is British-American.", "score": 0.89}
]
query = "Who directed Inception and what is their nationality?"
context = retrieve(query)
client.log(
task=query, # the user query
context=context, # list of passage dicts
metadata={
"env": "prod", # environment tag
"feature_flag": "retrieval-v1", # for A/B testing
},
)
print("Logged to Seer!")
# Events are auto-flushed when the process exits
Set your API key
Get an API key from the Seer Console and export it:export SEER_API_KEY="seer_live_your_key_here"
Create quickstart.ts
import { SeerClient } from '@seer/sdk';
const client = new SeerClient(); // reads SEER_API_KEY from env
// Your retrieval step
function retrieve(query: string) {
// Replace with your real retriever
return [
{ text: "Christopher Nolan directed Inception.", score: 0.95 },
{ text: "Nolan is British-American.", score: 0.89 }
];
}
const query = "Who directed Inception and what is their nationality?";
const context = retrieve(query);
// No await needed! Fire-and-forget by default
client.log({
task: query, // the user query
context: context, // list of passage objects
metadata: {
env: "prod", // environment tag
feature_flag: "retrieval-v1", // for A/B testing
},
});
console.log("Logged to Seer!");
// Events are auto-flushed when the process exits
Run it
npx ts-node quickstart.ts
Set your API key
Get an API key from the Seer Console:export SEER_API_KEY="seer_live_your_key_here"
Send a log
curl -X POST "https://api.seersearch.com/v1/log" \
-H "Authorization: Bearer $SEER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"task": "Who directed Inception and what is their nationality?",
"context": [
{"text": "Christopher Nolan directed Inception.", "score": 0.95},
{"text": "Nolan is British-American.", "score": 0.89}
],
"metadata": {
"env": "prod",
"feature_flag": "retrieval-v1"
}
}'
What Happens Next
As logs arrive, Seer evaluates each retrieval and computes Recall, Precision, F1, and nDCG, all without labeled data. See Metrics for full definitions and worked examples.
By default, Seer evaluates ~10% of events (sample_rate defaults to server-side 10%). Set sample_rate=1.0 in your log() call to evaluate everything during testing. See Production Monitoring for recommended rates.
Use the Seer dashboard to:
- Compare variants (change testing): filter by
feature_flag to see A/B impacts.
- Monitor production: filter by
env or any metadata field.
If your app uses multiple retrieval steps (query decomposition, agent loops, parallel sources), the SDK auto-detects OTEL trace IDs to group related spans. See Multi-Hop Retrieval for patterns.
Next Steps