Quickstart
1. Create the function
Go to the Nyckel console and sign in. Click New function.
- Input type: Text
- Function type: Classification
- Name:
sms-spam-classifier
Click Create. Your function is live immediately.
2. Add labels — then test right away
Open the Labels tab. Add two labels:
SpamNot spam
That’s all you need to start. You do not have to upload training data before testing.
Nyckel uses GPT to power an out-of-the-box zero-shot classifier. “Zero-shot” means the model has not seen any of your examples yet — it uses general language understanding to make predictions based on the label names alone. For many use cases, this is good enough accuracy and acceptable latency and cost to go straight into production.
3. Test it in the UI
Open the Invoke tab. Paste a message and click Invoke.
Try these one at a time — click Copy to paste into the Invoke tab:
After each prediction, you’ll see a result like this:
"confidence": 0.96,
"sampleId": "smp_abc123"
This is exactly what your application uses to make decisions — read labelName to route the message and confidence to decide whether to act automatically or hold it for human review.
4. Review predictions as they come in
In the Test or Review tab, confirm if the predicted label is correct, or change it if it’s wrong.
Once you have 2 confirmed examples of each label, Nyckel automatically begins building a private model trained on your data. You’ll see a training indicator appear in the console. The zero-shot classifier continues serving predictions while your private model trains in the background — the endpoint stays live throughout.
When the private model is ready, Nyckel benchmarks it against the zero-shot baseline. If it performs better, the endpoint automatically switches to it. You don’t trigger this manually — it just happens.
5. Call it from the API
Open your function in the Nyckel console and click the Integrate tab. It shows your exact endpoint URL, a ready-to-copy access token, and code snippets for calling the function — no manual setup needed.
The request looks like this:
POST https://www.nyckel.com/v1/functions/{functionId}/invoke
Authorization: Bearer {your_access_token}
Content-Type: application/json
{
"data": "Your number has been selected for a free cruise. Call 0800-123-456 to claim your prize."
}
And the response:
{
"labelName": "Spam",
"confidence": 0.94,
"sampleId": "smp_xyz789"
}
Your application reads labelName to make a decision and confidence to decide whether to act automatically or hold for review. The function is callable from any language or platform that can send HTTP requests.
As your application invokes the endpoint, each prediction appears in the Review tab. The more you review and annotate, the better your model becomes — every confirmed or corrected prediction feeds directly into the training pipeline.
What you just did
| Step | What happened |
|---|---|
| Created a function | A live endpoint was provisioned with zero-shot classification powered by GPT |
| Tested in the UI | Got real predictions immediately — no training data required |
| Reviewed predictions | Confirmed and corrected results became labeled training samples |
| Triggered private training | Nyckel automatically built a custom model once you had 2 examples per label |
| Called the API | Invoked the function from outside the console |
Next: Create your own function to build a function from scratch with your own data, or go to the Developer Platform to see how to integrate the invoke-annotate loop into a production application.