Przewiduj na podstawie nazw użytkowników i pseudonimów za pomocą GenderAPI v2. Dowiedz się o forceToGenderize, wyszukiwaniu pierwszego zestawu danych, polach odpowiedzi AI i taryfie 1 lub 2 kredytów.
Przed wysłaniem zapytania
Wyślij JSON do POST https://api.genderapi.io/api/v2/gender. Użyj istniejącego klucza API w Authorization: Bearer YOUR_API_KEY i Content-Type: application/json. Każde żądanie jest przetwarzane niezależnie.
Wybierz język w przykładowym kodzie. Przed uruchomieniem ustaw GENDERAPI_API_KEY w środowisku procesowym. Brakujące lub nierozpoznane klucze mogą skorzystać z udostępnionej wersji próbnej IP, więc podczas integracji konta potwierdź, że meta.access.mode to api_key.
Płeć na podstawie nazwy użytkownika lub pseudonimu
Użyj type: username jako nazwy użytkownika lub pseudonimu. Ustaw forceToGenderize na true, aby wywnioskować płeć na podstawie znaczenia aliasu, takiego jak prenses, nawet jeśli nie można wyodrębnić prawdziwego imienia. Najpierw sprawdzany jest zbiór danych. Podpowiedź pseudonimu może zwrócić płeć nawet wtedy, gdy name: null.
Wybierz język programowania.Skonfiguruj klucz API, następnie uruchom przykład na swoim serwerze.
Każde żądanie prognozy jest nową płatną operacją, włączając ponowne próby. W tych przykładach nie następuje automatycznie ponowna próba. Sprawdź status płatności przed wysłaniem kolejnej prośby.
Zanim uruchomisz: dostęp i obsługa błędów
Uruchom te przykłady na swoim serwerze. Ustaw GENDERAPI_API_KEY w środowisku procesowym na istniejący klucz API. Potwierdź, że meta.access.mode to api_key: nierozpoznany klucz może wrócić do wersji próbnej IP.
Odpowiedzi HTTP 4xx i 5xx JSON zachowują treść błędu i zwracają niezerowy status wyjścia. Przed ponowną próbą sprawdź code, action i 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\":\"username\",\"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.
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\":\"username\",\"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.}
Ta syntetyczna odpowiedź ilustruje kształt JSON, a nie zmierzoną dokładność lub gwarantowany wynik na żywo. Pokazuje dostęp próbny IP; uwierzytelniona operacja zgłasza meta.access.mode: api_key i null pola przydziałów tylko w wersji próbnej. Odczytaj dane w celu wnioskowania i meta.usage w celu uzyskania wyniku rozliczeń operacji.
W tym przykładzie zastosowano forceToGenderize: true. Jeśli zbiór danych identyfikuje płeć, koszt wynosi 1 kredyt. W przeciwnym razie sztuczna inteligencja interpretuje pseudonim, a wypełniona prośba kosztuje w sumie 2 kredyty, nawet jeśli płeć pozostaje nieznana. Pomiń ai_mode lub ustaw go na fallback. Użycie off lub always razem z forceToGenderize zwraca HTTP 422.
W trybie pseudonimu dozwolone jest przewidywanie płci za pomocą name: null. Oznacza to, że nie wyodrębniono żadnego prawdziwego imienia, a nie, że analiza nie powiodła się. Jeśli AI zwróci płeć, zwracane są sample_count: null i confidence_kind: model_reported. Wynik nie jest skalibrowanym prawdopodobieństwem i nie weryfikuje tożsamości osobistej.
Bez forceToGenderize, wyszukiwanie pojedynczej nazwy użytkownika nadal domyślnie będzie oznaczać zwykłe AI fallback za 1 kredyt, ale wymaga użycia prawdziwego imienia. Użyj options.ai_mode: off do przetwarzania wyłącznie zestawu danych.