curl --request POST \
--url https://api.galtea.ai/tests/generate-config \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"specificationIds": [
"spec_123",
"spec_456"
],
"automaticCreation": false,
"maxTestCases": 30,
"groundTruthUri": "<string>"
}
'import requests
url = "https://api.galtea.ai/tests/generate-config"
payload = {
"specificationIds": ["spec_123", "spec_456"],
"automaticCreation": False,
"maxTestCases": 30,
"groundTruthUri": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
specificationIds: ['spec_123', 'spec_456'],
automaticCreation: false,
maxTestCases: 30,
groundTruthUri: '<string>'
})
};
fetch('https://api.galtea.ai/tests/generate-config', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.galtea.ai/tests/generate-config",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'specificationIds' => [
'spec_123',
'spec_456'
],
'automaticCreation' => false,
'maxTestCases' => 30,
'groundTruthUri' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.galtea.ai/tests/generate-config"
payload := strings.NewReader("{\n \"specificationIds\": [\n \"spec_123\",\n \"spec_456\"\n ],\n \"automaticCreation\": false,\n \"maxTestCases\": 30,\n \"groundTruthUri\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.galtea.ai/tests/generate-config")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"specificationIds\": [\n \"spec_123\",\n \"spec_456\"\n ],\n \"automaticCreation\": false,\n \"maxTestCases\": 30,\n \"groundTruthUri\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.galtea.ai/tests/generate-config")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"specificationIds\": [\n \"spec_123\",\n \"spec_456\"\n ],\n \"automaticCreation\": false,\n \"maxTestCases\": 30,\n \"groundTruthUri\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"config": [
{
"name": "Scenarios for polite refusals",
"type": "SCENARIOS",
"specificationId": "spec_123",
"productId": "prod_123",
"maxTestCases": 30,
"variants": [
"custom"
],
"customVariantDescription": "<string>",
"strategies": [
"written"
]
}
],
"tests": [
{
"id": "test_123",
"productId": "prod_123",
"userId": "user_123",
"name": "Quality Test",
"type": "QUALITY",
"models": [
"gpt-4",
"claude-3"
],
"groundTruthUri": "s3://my-bucket/tests/test_123/ground-truth.csv",
"uri": "s3://my-bucket/tests/test_123/test.csv",
"error": "<string>",
"status": "SUCCESS",
"fewShot": "Example few-shot learning data",
"languageCode": "es-MX",
"backgroundNoiseProfile": "street",
"backgroundNoiseLevel": "medium",
"variants": [
"rag",
"summarization"
],
"customVariantDescription": "Custom variant description",
"strategies": [
"original"
],
"customUserPersona": "Business analyst",
"maxTestCases": 100,
"sourceTestId": "<string>",
"dataCatalogUri": "s3://my-bucket/tests/test_123/data-catalog.json",
"metadata": {
"key": "value"
},
"specificationId": "spec_123",
"isExtendable": true,
"createdAt": "2023-11-07T05:31:56Z",
"deletedAt": "2023-11-07T05:31:56Z"
}
]
}{
"error": "Error type",
"message": "Error message description"
}{
"error": "Error type",
"message": "Error message description"
}Generate dataset configuration from specifications
Derives dataset type, variant, and name from specifications (rule-based).
With automaticCreation: true this does more than return a suggestion: it creates the datasets and their test-case generation continues on the background worker, so each one comes back with status PENDING.
Accuracy (QUALITY) specifications need groundTruthUri, a knowledge base file uploaded beforehand, because an accuracy dataset grades answers against known-correct ones and a specification never states what the correct answer is.
See Datasets.
curl --request POST \
--url https://api.galtea.ai/tests/generate-config \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"specificationIds": [
"spec_123",
"spec_456"
],
"automaticCreation": false,
"maxTestCases": 30,
"groundTruthUri": "<string>"
}
'import requests
url = "https://api.galtea.ai/tests/generate-config"
payload = {
"specificationIds": ["spec_123", "spec_456"],
"automaticCreation": False,
"maxTestCases": 30,
"groundTruthUri": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
specificationIds: ['spec_123', 'spec_456'],
automaticCreation: false,
maxTestCases: 30,
groundTruthUri: '<string>'
})
};
fetch('https://api.galtea.ai/tests/generate-config', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.galtea.ai/tests/generate-config",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'specificationIds' => [
'spec_123',
'spec_456'
],
'automaticCreation' => false,
'maxTestCases' => 30,
'groundTruthUri' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.galtea.ai/tests/generate-config"
payload := strings.NewReader("{\n \"specificationIds\": [\n \"spec_123\",\n \"spec_456\"\n ],\n \"automaticCreation\": false,\n \"maxTestCases\": 30,\n \"groundTruthUri\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.galtea.ai/tests/generate-config")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"specificationIds\": [\n \"spec_123\",\n \"spec_456\"\n ],\n \"automaticCreation\": false,\n \"maxTestCases\": 30,\n \"groundTruthUri\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.galtea.ai/tests/generate-config")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"specificationIds\": [\n \"spec_123\",\n \"spec_456\"\n ],\n \"automaticCreation\": false,\n \"maxTestCases\": 30,\n \"groundTruthUri\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"config": [
{
"name": "Scenarios for polite refusals",
"type": "SCENARIOS",
"specificationId": "spec_123",
"productId": "prod_123",
"maxTestCases": 30,
"variants": [
"custom"
],
"customVariantDescription": "<string>",
"strategies": [
"written"
]
}
],
"tests": [
{
"id": "test_123",
"productId": "prod_123",
"userId": "user_123",
"name": "Quality Test",
"type": "QUALITY",
"models": [
"gpt-4",
"claude-3"
],
"groundTruthUri": "s3://my-bucket/tests/test_123/ground-truth.csv",
"uri": "s3://my-bucket/tests/test_123/test.csv",
"error": "<string>",
"status": "SUCCESS",
"fewShot": "Example few-shot learning data",
"languageCode": "es-MX",
"backgroundNoiseProfile": "street",
"backgroundNoiseLevel": "medium",
"variants": [
"rag",
"summarization"
],
"customVariantDescription": "Custom variant description",
"strategies": [
"original"
],
"customUserPersona": "Business analyst",
"maxTestCases": 100,
"sourceTestId": "<string>",
"dataCatalogUri": "s3://my-bucket/tests/test_123/data-catalog.json",
"metadata": {
"key": "value"
},
"specificationId": "spec_123",
"isExtendable": true,
"createdAt": "2023-11-07T05:31:56Z",
"deletedAt": "2023-11-07T05:31:56Z"
}
]
}{
"error": "Error type",
"message": "Error message description"
}{
"error": "Error type",
"message": "Error message description"
}Authorizations
API key authorization. Pass your API key in the Authorization header as a Bearer token. Both new (gsk_*) and legacy (gsk-) API keys are accepted, e.g. Authorization: Bearer gsk_... or Authorization: Bearer gsk-....
Body
IDs of the specifications to generate dataset configs for
1["spec_123", "spec_456"]
When true, creates the datasets from the generated config and starts their test-case generation on the background worker.
false
How many test cases to generate per dataset. Defaults to 3. The upper limit is per test type and deployment-configured, and is enforced when the dataset is created (automaticCreation: true).
x > 030
Presigned upload URL of the knowledge base file, uploaded beforehand. Required for accuracy (QUALITY) specifications, ignored for the other test types.
Response
Dataset configuration generated, and the datasets created when asked for