GenderAPI.io V2: λειτουργίες AI και forceToGenderize
Στο GenderAPI.io V2 επιλέξτε μεταξύ μόνο συνόλου δεδομένων, κανονικής εφεδρικής χρήσης AI και μόνιμης χρήσης AI. Μάθετε για την ανάλυση ψευδωνύμων, τις προεπιλογές στις παρτίδες και το συνολικό κόστος σε πιστώσεις.
Λειτουργίες AI και forceToGenderize
Στο σώμα POST ορίστε options: {"ai_mode": "off"} (ή fallback / always). Στα URL GET χρησιμοποιήστε ai_mode=off. Τα στοιχεία μιας παρτίδας είναι από προεπιλογή off. Ενεργοποιήστε το fallback ξεχωριστά σε κάθε στοιχείο που το χρειάζεται.
Όταν το forceToGenderize είναι true, παραλείψτε το ai_mode ή χρησιμοποιήστε fallback. Ο συνδυασμός με off ή always επιστρέφει 422. Η κανονική πρόβλεψη του AI απαιτεί ένα αξιοποιήσιμο πραγματικό μικρό όνομα, ενώ η αναγκαστική ανάλυση μπορεί να χρησιμοποιήσει ένα ψευδώνυμο. Καμία από τις δύο λειτουργίες δεν εγγυάται φύλο διαφορετικό από null.
Ένα σφάλμα του συνόλου δεδομένων ή του παρόχου είναι αίτημα που απέτυχε, όχι έλλειψη αντιστοίχισης στο σύνολο δεδομένων. Οι πιστώσεις των προβλέψεων που απέτυχαν επιστρέφονται. Ελέγξτε το billing_status πριν δοκιμάσετε ξανά, αν το αποτέλεσμα της χρέωσης δεν μπορεί να επιβεβαιωθεί.
Λειτουργία
Συμπεριφορά
Συνολικές πιστώσεις ανά επιτυχές στοιχείο
Λειτουργίαoff
ΣυμπεριφοράΜόνο σύνολο δεδομένων, χωρίς κλήση στο AI.
Συνολικές πιστώσεις ανά επιτυχές στοιχείο1, και για άγνωστο αποτέλεσμα
Λειτουργίαfallback
ΣυμπεριφοράΠρώτα το σύνολο δεδομένων και έπειτα AI, αν δεν προσδιοριστεί φύλο. Προεπιλογή για τα μεμονωμένα αιτήματα.
Συνολικές πιστώσεις ανά επιτυχές στοιχείο1, μαζί με την εφεδρική χρήση AI
Λειτουργίαalways
ΣυμπεριφοράΠαραλείπει το σύνολο δεδομένων και χρησιμοποιεί απευθείας AI.
Συνολικές πιστώσεις ανά επιτυχές στοιχείο2
ΛειτουργίαforceToGenderize: true
ΣυμπεριφοράΠρώτα το σύνολο δεδομένων και έπειτα AI με ανάλυση ψευδωνύμων, αν δεν υπάρξει αποτέλεσμα. Λειτουργεί με ονόματα, διευθύνσεις email και ονόματα χρήστη.
Συνολικές πιστώσεις ανά επιτυχές στοιχείο1 για αποτέλεσμα από το σύνολο δεδομένων, 2 συνολικά αν χρησιμοποιηθεί AI
Ενεργοποίηση της ανάλυσης ψευδωνύμων
Το ίδιο προαιρετικό πεδίο forceToGenderize λειτουργεί με τα type name, email και username. Αυτό το παράδειγμα χρησιμοποιεί ένα ψευδώνυμο ως τιμή τύπου name. Χρησιμοποιήστε το υπάρχον κλειδί API σας στην κεφαλίδα Bearer. Τα άγνωστα αποτελέσματα παραμένουν έγκυρα αποτελέσματα.
Επιλέξτε γλώσσα προγραμματισμού.Ρυθμίστε το κλειδί API σας, και έπειτα εκτελέστε το παράδειγμα στον διακομιστή σας.
Κάθε αίτημα πρόβλεψης είναι μια νέα χρεώσιμη λειτουργία, ακόμη και όταν πρόκειται για νέα προσπάθεια. Αυτά τα παραδείγματα δεν επαναλαμβάνουν αυτόματα το αίτημα. Ελέγξτε την κατάσταση χρέωσης πριν στείλετε άλλο αίτημα.
Πριν από την εκτέλεση: πρόσβαση και χειρισμός σφαλμάτων
Εκτελέστε αυτά τα παραδείγματα στον διακομιστή σας. Ορίστε στο περιβάλλον της διεργασίας το GENDERAPI_API_KEY με το υπάρχον κλειδί API σας. Ελέγξτε ότι το meta.access.mode έχει την τιμή api_key, επειδή ένα κλειδί που δεν αναγνωρίζεται μπορεί να οδηγήσει στη δοκιμαστική πρόσβαση IP.
Στις αποκρίσεις JSON με HTTP 4xx και 5xx διατηρείται το σώμα του σφάλματος και το παράδειγμα τερματίζει με μη μηδενικό κωδικό εξόδου. Ελέγξτε τα code, action και meta.usage.billing_status πριν δοκιμάσετε ξανά.
import jsonimport osimport sysimport urllib.errorimport urllib.requestapi_key = os.environ.get("GENDERAPI_API_KEY")if not api_key: raise RuntimeError("Set GENDERAPI_API_KEY")body = json.loads("{\"type\":\"name\",\"value\":\"prenses\",\"country\":\"TR\",\"forceToGenderize\":true}")class NoRedirect(urllib.request.HTTPRedirectHandler): def redirect_request(self, req, fp, code, msg, headers, newurl): return Nonerequest = urllib.request.Request( "https://api.genderapi.io/api/v2/gender", method="POST", data=json.dumps(body).encode("utf-8"), headers={ "Authorization": "Bearer " + api_key, "Content-Type": "application/json", },)opener = urllib.request.build_opener(NoRedirect())try: response = opener.open(request, timeout=30)except urllib.error.HTTPError as error: response = error # Keep the Problem Details body on non-2xx responses.with response: status = response.status raw = response.read().decode("utf-8") if "json" not in response.headers.get("Content-Type", ""): raise RuntimeError(f"HTTP {status}: expected a JSON response") result = json.loads(raw)print(json.dumps(result, indent=2), file=sys.stderr if status >= 300 else sys.stdout)if not 200 <= status < 300: sys.exit(1) # Inspect code, action and billing before retrying.# For batches, inspect every item even when HTTP status is 200.
import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.nio.charset.StandardCharsets;import java.time.Duration;public class GenderApiExample { private static String requiredEnv(String name) { String value = System.getenv(name); if (value == null || value.isBlank()) throw new IllegalStateException("Set " + name); return value; } public static void main(String[] args) throws Exception { String apiKey = requiredEnv("GENDERAPI_API_KEY"); String body = "{\"type\":\"name\",\"value\":\"prenses\",\"country\":\"TR\",\"forceToGenderize\":true}"; HttpClient client = HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(10)) .followRedirects(HttpClient.Redirect.NEVER) .build(); HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.genderapi.io/api/v2/gender")) .timeout(Duration.ofSeconds(30)) .header("Authorization", "Bearer " + apiKey) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString(body, StandardCharsets.UTF_8)) .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8)); if (!response.headers().firstValue("content-type").orElse("").contains("json")) { throw new IllegalStateException("HTTP " + response.statusCode() + ": expected JSON"); } // JSON text; parse with your application's JSON library when integrating. if (response.statusCode() < 200 || response.statusCode() >= 300) { System.err.println(response.body()); // Includes Problem Details. System.exit(1); } System.out.println(response.body()); // For batches, inspect each item's data or error, including on HTTP 200. }}
Java 17+ με τον τυπικό πελάτη HTTP. Αποθηκεύστε ως GenderApiExample.java και εκτελέστε java GenderApiExample.java. Τεκμηρίωση του περιβάλλοντος εκτέλεσης
C# / .NET
using System;using System.Net.Http;using System.Net.Http.Headers;using System.Text;using System.Text.Json;string RequiredEnv(string name) => !string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable(name)) ? Environment.GetEnvironmentVariable(name)! : throw new InvalidOperationException($"Set {name}");var apiKey = RequiredEnv("GENDERAPI_API_KEY");using var handler = new HttpClientHandler { AllowAutoRedirect = false };using var client = new HttpClient(handler) { Timeout = TimeSpan.FromSeconds(30) };using var request = new HttpRequestMessage(HttpMethod.Post, "https://api.genderapi.io/api/v2/gender");request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);request.Content = new StringContent("{\"type\":\"name\",\"value\":\"prenses\",\"country\":\"TR\",\"forceToGenderize\":true}", Encoding.UTF8, "application/json");using var response = await client.SendAsync(request);var raw = await response.Content.ReadAsStringAsync();if (!(response.Content.Headers.ContentType?.MediaType?.Contains("json") ?? false)) throw new InvalidOperationException($"HTTP {(int)response.StatusCode}: expected JSON");using var result = JsonDocument.Parse(raw);if (!response.IsSuccessStatusCode){ Console.Error.WriteLine(result.RootElement); // Preserve Problem Details. Environment.ExitCode = 1;}else{ Console.WriteLine(result.RootElement); // For batches, inspect every item even on HTTP 200.}