GenderAPI.io V2 · Kullanım rehberi

Çince isimlerden cinsiyet tahmini

GenderAPI.io V2 ile Çince isimleri sorgulayın. Kısa ad bileşenlerinin, tam adın ayrıştırılmasının, özgün karakterlerin ve CN bağlamının veri kümesi ile yapay zekâ sonuçlarına etkisini inceleyin.

Son inceleme:

V2 API’yi deneyin

İsim sorgulayın

Veri kümesi + yapay zekâ

Bir değer gönderin; tahmin bulunamayan sonuçlar ve kredi kullanımı dahil yanıtın tamamını inceleyin.

Bu araçta Çin (CN) sabit ülke bağlamıdır. Yalnızca bir ülke örneğidir; bu dildeki her isme uygulanacak varsayılan değildir. Ülke bağlamı uyruk doğrulamaz.

Standart sorgu: yapay zekâ yedeklemesi veya unknown sonuç dahil 1 kredi. Rumuz analizi açıkken veri kümesinde tahmin bulunursa 1, yapay zekâ kullanılırsa unknown dahil toplam 2 kredi.

Gönderdiğiniz isim GenderAPI.io’ya iletilir; yedekleme gerekirse yapılandırılmış yapay zekâ servisine de gönderilebilir. Veri işleme ayrıntıları.

Kayıtlı API anahtarı yok. Kredi kaldığı sürece ortak IP denemesi kullanılabilir.

Aşağıdaki yanıt temsilidir. Canlı sorgu için Sorgula düğmesine basın.

Temsili V2 yanıtı · canlı sonuç değildir
İsim—
CinsiyetBilinmiyor
Güven—
KaynakYapay zekâ modeli
Kullanılan kredi1

Örnekteki sayılar, skorlar ve bakiyeler yanıt biçimini gösterir. Canlı değerler farklı olabilir. Tahmin, doğrulanmış kimlik bilgisi değildir.

Unicode desteğini ad ve soyadı ayırma yeteneğinden ayırın

Çince ismi Latin harflerine dönüştürmeden Unicode metin olarak gönderebilirsiniz. Mevcut veri kümesi sorgusu normalleştirilmiş ad bileşenlerini arar; bitişik yazılmış Çince tam adı otomatik olarak ad ve soyada ayırmaz. Bu nedenle 王静怡 tek adaydır; 静怡 bölümünün ayrıca sorgulanacağı garanti edilmez.

Buradaki yaygın Çince karakterlerle yazılmış bir veya iki karakterlik bileşenler mevcut aday uzunluğu filtresinde elenir. Kısa bir ön ad geçerli girdi olsa bile veri kümesi adayı oluşturmayabilir. Standart yapay zekâ yedeklemesi özgün gönderilen değeri yine değerlendirebilir. Yalnızca veri kümesi modu ise unknown sonucunu korur.

Unicode NFKC normalleştirmesi, Basitleştirilmiş ve Geleneksel Çince arasında genel bir dönüşüm sağlamaz; Latin harfli yazımı da tek bir özgün Çince adla eşleştirmez. Gönderilen yazımı koruyup dönen eşleşmeyi inceleyin. Yalnızca soyadının konumundan, yazı sisteminden veya Latin harfli yazımdan kişinin cinsiyetini ya da ülkesini çıkarmayın.

Örnek girdiNe gösteriyor?Kontrol edilecek bilgi
王静怡Bitişik yazılmış tam adTek veri kümesi adayıdır. Mevcut ayrıştırıcı soyadını ayırmaz.
静怡İki karakterlik ön adVeri kümesinin aday uzunluğu filtresinde elenir. Yapay zekâ yedeklemesi özgün değeri deneyebilir.
王 静怡Ayrı yazılmış kısa bileşenlerBoşluk eklemek uzunluk filtresini aşmaz. Bu örnekteki iki bileşen de veri kümesi sorgusu için fazla kısadır.
Wang JingyiLatin harfli girdiKendi bileşenlerine ayrılan ayrı bir girdidir. Özgün karakterlerle veya aynı kayıtla eşleşmesi garanti edilmez.

CN ülke bağlamını bilinçli kullanın

Canlı demo country: CN (Çin) gönderir. API bu ülkeyi ismin yazı sisteminden seçmez. Entegrasyonunuzda bilinen ve ilgili ülke bağlamını kullanın veya country alanını göndermeyin. Bu örnek değeri bütün kayıtların varsayılanı yapmayın.

Veri kümesi sorgusu her aday için varsa ülkeye özel kaydı, yoksa genel kaydı değerlendirir. Ardından mevcut adaylar arasından kayıt toplamı en yüksek olanı seçer. Gerçek eşleşme kapsamını data.match.scope ve data.match.country ile inceleyin. Ülkeye özel kayıtta sayılar eşitse genel kayda otomatik geçilmez; açık olan fallback bunun yerine yapay zekâyı kullanabilir.

data.input.country istekteki ülke bağlamıdır. data.country ve data.country_source ise yanıttaki ülke ilişkisini ve kaynağını açıklar. Bunlar farklı alanlardır; vatandaşlık, etnik köken veya ikamet doğrulamaz.

Uygulamanızdan V2 isim sorgusu gönderin

GENDERAPI_API_KEY ortam değişkenini mevcut anahtarınıza ayarlayıp örneği sunucunuzda çalıştırın. Örnek standart yapay zekâ yedeklemesini açıkça etkinleştirir. Ölçülmüş tahmin başarısı veya veri kapsamı değil, istek biçimi gösterir. Yalnızca veri kümesi için options.ai_mode: off kullanın.

Programlama dilinizi seçin. API anahtarınızı ayarlayın, ardından örneği sunucunuzda çalıştırın.

Yeniden denemeler dahil her tahmin isteği yeni ve ücretlendirilebilir bir işlemdir. Örnekler otomatik yeniden deneme yapmaz. Yeni istekten önce ücretlendirme durumunu kontrol edin.

Çalıştırmadan önce: erişim ve hata yönetimi

Örnekleri sunucunuzda çalıştırın. İşlem ortamındaki GENDERAPI_API_KEY değişkenini mevcut anahtarınıza ayarlayın. Tanınmayan anahtar IP denemesine yönlenebildiğinden meta.access.mode değerinin api_key olduğunu doğrulayın.

HTTP 4xx ve 5xx JSON yanıtlarında hata gövdesi korunur ve program sıfırdan farklı çıkış koduyla sonlanır. Yeniden denemeden önce code, action ve meta.usage.billing_status alanlarını kontrol edin.

Hata ve yeniden deneme rehberi →
cURL
curl --silent --show-error --fail-with-body --max-time 30 \
  --request POST 'https://api.genderapi.io/api/v2/gender' \
  --header "Authorization: Bearer ${GENDERAPI_API_KEY:?Set GENDERAPI_API_KEY}" \
  --header 'Content-Type: application/json' \
  --data '{
  "type": "name",
  "value": "王静怡",
  "country": "CN",
  "options": {
    "ai_mode": "fallback"
  }
}'

POSIX kabuğunda cURL 7.76+. Terminalinizde çalıştırın. Çalıştırma ortamı dokümantasyonu

JavaScript / Node.js
// Server-side Node.js. Save as example.mjs.
const apiKey = process.env.GENDERAPI_API_KEY;
if (!apiKey) throw new Error("Set GENDERAPI_API_KEY");
const body = {
  "type": "name",
  "value": "王静怡",
  "country": "CN",
  "options": {
    "ai_mode": "fallback"
  }
};

const response = await fetch("https://api.genderapi.io/api/v2/gender", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify(body),
  signal: AbortSignal.timeout(30_000),
  redirect: "error",
});
const raw = await response.text();
if (!(response.headers.get("content-type") ?? "").includes("json")) {
  throw new Error(`HTTP ${response.status}: expected JSON; request ID ${response.headers.get("x-request-id")}`);
}
const result = JSON.parse(raw); // Also accepts application/problem+json.
if (!response.ok) {
  console.error(`HTTP ${response.status}`, result);
  process.exitCode = 1; // A retry is a new operation; inspect billing first.
} else {
  console.log(JSON.stringify(result, null, 2));
  // For batches, inspect every item: HTTP 200 may contain item errors.
}

Node.js 22+; yerleşik fetch. example.mjs olarak kaydedin ve node example.mjs çalıştırın. Çalıştırma ortamı dokümantasyonu

Python
import json
import os
import sys
import urllib.error
import urllib.request

api_key = os.environ.get("GENDERAPI_API_KEY")
if not api_key:
    raise RuntimeError("Set GENDERAPI_API_KEY")
body = json.loads("{\"type\":\"name\",\"value\":\"王静怡\",\"country\":\"CN\",\"options\":{\"ai_mode\":\"fallback\"}}")

class NoRedirect(urllib.request.HTTPRedirectHandler):
    def redirect_request(self, req, fp, code, msg, headers, newurl):
        return None

request = 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.

Python 3.10+; standart kütüphane. example.py olarak kaydedin ve python3 example.py çalıştırın. Çalıştırma ortamı dokümantasyonu

PHP
<?php
$apiKey = getenv('GENDERAPI_API_KEY');
if (!$apiKey) {
    throw new RuntimeException('Set GENDERAPI_API_KEY');
}
$body = json_decode('{"type":"name","value":"王静怡","country":"CN","options":{"ai_mode":"fallback"}}', true, 512, JSON_THROW_ON_ERROR);

$ch = curl_init('https://api.genderapi.io/api/v2/gender');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_FOLLOWLOCATION => false,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode($body, JSON_THROW_ON_ERROR),
]);
$raw = curl_exec($ch);
if ($raw === false) {
    throw new RuntimeException(curl_error($ch));
}
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE) ?: '';
curl_close($ch);
if (strpos($contentType, 'json') === false) {
    throw new RuntimeException("HTTP $status: expected a JSON response");
}
$result = json_decode($raw, true, 512, JSON_THROW_ON_ERROR);
$output = json_encode($result, JSON_PRETTY_PRINT | JSON_THROW_ON_ERROR) . PHP_EOL;
if ($status < 200 || $status >= 300) {
    fwrite(STDERR, $output); // Preserve the Problem Details body.
    exit(1);
}
echo $output;
// For batches, inspect every item; HTTP 200 can contain item errors.

cURL uzantılı PHP 8+. example.php olarak kaydedin ve php example.php çalıştırın. Çalıştırma ortamı dokümantasyonu

Java
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\":\"王静怡\",\"country\":\"CN\",\"options\":{\"ai_mode\":\"fallback\"}}";
        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+; standart HTTP istemcisi. GenderApiExample.java olarak kaydedin ve java GenderApiExample.java çalıştırın. Çalıştırma ortamı dokümantasyonu

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\":\"王静怡\",\"country\":\"CN\",\"options\":{\"ai_mode\":\"fallback\"}}", 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.
}

.NET 8+ konsol uygulaması. Konsol projesinde Program.cs olarak kullanın, ardından dotnet run çalıştırın. Çalıştırma ortamı dokümantasyonu

Go
package main

import (
    "encoding/json"
    "fmt"
    "io"
    "net/http"
    "os"
    "strings"
    "time"
)

func requiredEnv(name string) string {
    value := os.Getenv(name)
    if value == "" { panic("Set " + name) }
    return value
}

func run() error {
    apiKey := requiredEnv("GENDERAPI_API_KEY")
    body := "{\"type\":\"name\",\"value\":\"王静怡\",\"country\":\"CN\",\"options\":{\"ai_mode\":\"fallback\"}}"
    request, err := http.NewRequest("POST", "https://api.genderapi.io/api/v2/gender", strings.NewReader(body))
    if err != nil { return err }
    request.Header.Set("Authorization", "Bearer " + apiKey)
    request.Header.Set("Content-Type", "application/json")
    client := &http.Client{
        Timeout: 30 * time.Second,
        CheckRedirect: func(req *http.Request, via []*http.Request) error {
            return http.ErrUseLastResponse
        },
    }
    response, err := client.Do(request)
    if err != nil { return err }
    defer response.Body.Close()
    raw, err := io.ReadAll(response.Body)
    if err != nil { return err }
    if !strings.Contains(response.Header.Get("Content-Type"), "json") || !json.Valid(raw) {
        return fmt.Errorf("HTTP %d: expected a JSON response", response.StatusCode)
    }
    if response.StatusCode < 200 || response.StatusCode >= 300 {
        return fmt.Errorf("HTTP %d: %s", response.StatusCode, raw)
    }
    fmt.Println(string(raw))
    // For batches, inspect every item even on HTTP 200.
    return nil
}

func main() {
    if err := run(); err != nil {
        fmt.Fprintln(os.Stderr, err) // Keep Problem Details for error handling.
        os.Exit(1)
    }
}

Go 1.22+; standart kütüphane. main.go olarak kaydedin ve go run main.go çalıştırın. Çalıştırma ortamı dokümantasyonu

Tahmini dayandığı bilgilerle birlikte değerlendirin

API’nin çıkardığı ilişki, kişinin kendi belirttiği cinsiyet değildir. Özgün girdiyi, yanıttaki kanıtları ve kişinin verdiği bilgileri ayrı saklayın. Tahmin bulunamaması geçerli bir sonuçtur; uygulamanızda bunu zorunlu bir cinsiyet kategorisine dönüştürmeyin.

AlanNasıl kullanılmalı?
data.gender / data.result_statusmale veya female değerini yalnızca identified sonucunda kullanın. unknown sonucunda gerçek JSON null değerini koruyun.
data.name / data.matchDönen adı ve seçilen adayı inceleyin. Alt metin eşleşmesi, girdinin o ön ada sahip bir kişiye ait olduğunu kanıtlamaz.
data.confidence / data.confidence_kindGüven skoru 0–1 aralığında veya null olur. observed_frequency kayıtlı sayımlardan, model_reported yapay zekânın bildirdiği skordan gelir. Eşikleri her tür için ayrı değerlendirin.
data.source / data.sample_countdataset, ai ve none kaynaklarını ayırın. Yapay zekâ sonucunda kayıtlı örnek sayısı yoktur. Örnek sayısı, ölçülmüş doğruluk oranı değildir.
meta.access.modeHesap entegrasyonunda api_key değerini doğrulayın. Anahtar eksik veya tanınmıyorsa ortak IP denemesi kullanılabilir.
meta.usagecharged_credits ve billing_status alanlarını okuyun. Başarıyla tamamlanan unknown sonucu ücretlidir. Yanıtın ulaşmaması, işlemin ücretsiz olduğunu göstermez.

Yapay zekânın ne zaman kullanılacağını seçin

forceToGenderize; isim, e-posta ve kullanıcı adı girdilerinde isteğe bağlıdır. Açıkken ai_mode alanını göndermeyin veya fallback kullanın. off ve always ile birlikte kullanılması 422 hatası verir. İsteğe başlamak için pozitif bakiye yeterlidir; son ücret bakiyeyi sıfırın altına düşürebilir.

Rumuz analizinde name: null iken cinsiyet tahmini dönebilir. Sonuç unknown da olabilir. Standart yedekleme veya rumuz analizi, doğru ya da dolu bir sonuç garantisi vermez.

İstek seçeneğiDavranışTamamlanan sorgunun maliyeti
options.ai_mode: offYalnızca veri kümesini sorgular.unknown dahil 1 kredi
options.ai_mode: fallbackÖnce veri kümesini, cinsiyet tahmini bulunamazsa standart yapay zekâyı kullanır. Tekli sorguların varsayılanıdır.Yapay zekâ yedeklemesi dahil toplam 1 kredi
options.ai_mode: alwaysDoğrudan yapay zekâya sorar.2 kredi
forceToGenderize: trueÖnce veri kümesine bakar; tahmin bulunamazsa gerçek ön ad içermeyen kişisel rumuzların anlamını da yapay zekâyla yorumlayabilir.Veri kümesinde tahmin bulunursa 1, yapay zekâ kullanılırsa toplam 2 kredi

İsim listesini bağlamını kaybetmeden işleyin

POST /api/v2/gender/batch ile hesap anahtarında en fazla 50, IP denemesinde 10 öğe gönderin. Öğelere benzersiz id değerleri verin ve her satırın özgün girdisini saklayın. Her öğenin ülke ve yapay zekâ seçenekleri ayrı olabilir. Ülke bilinmiyorsa göndermeyin.

Tekli sorguların fallback varsayılanından farklı olarak toplu öğelerde varsayılan yalnızca veri kümesidir. Yapay zekâ gereken her öğede options.ai_mode: fallback seçin. HTTP 200 olsa bile her sonucu kontrol edin ve unknown değerlerini koruyun. Yeniden gönderimden önce öğe hatasını ve ücretlendirmeyi inceleyin. Başarıyla tamamlanan her standart öğe 1 kredidir; bir toplu HTTP isteği tek tahmin kredisi değildir.

Gönderdiğiniz verinin nasıl işlendiğini bilin

Canlı araç, girdiğiniz değeri yalnızca sorguyu gönderdiğinizde GenderAPI.io’ya iletir. Yapay zekâ devreye girerse gönderilen type, value ve ülke bağlamı yapılandırılmış tahmin servisine iletilir. Entegrasyonunuzda yalnızca veri kümesini kullanmak için forceToGenderize olmadan options.ai_mode: off gönderin.

Yayımlanmış veri işleme koşulları Gizlilik Politikası, Veri İşleme Anlaşması ve alt işleyiciler listesinde açıklanır. Tahmin, girdiden çıkarılan bir ilişkidir; kişinin kendi verdiği bilgiye öncelik tanıyın. Sonucu bir kişi hakkında önemli kararların dayanağı olarak kullanmayın.

Çince isim sorgulama hakkında sorular

İki karakterlik Çince isim neden yalnızca veri kümesi modunda unknown olabilir?

Mevcut aday filtresi JavaScript metin uzunluğu iki veya daha az olan bileşenleri eler. Burada gösterilen Çince karakterlerde iki karakterlik isim geçerli girdidir, ancak veri kümesi adayı olmaz. Yapay zekâ yedeklemesi özgün girdiyi değerlendirebilir.

V2 Çince soyadını ön addan otomatik ayırır mı?

Veri kümesi sorgusu, bitişik yazılmış Çince tam adı ad ve soyada ayırmaz. Yapay zekâ tam değerden bir ad çıkarabilir, ancak hiçbir yol amaçlanan ön adın seçileceğini garanti etmez. source ve match alanlarını kontrol edin.

Bu isim grubu için bağımsız doğruluk ölçümü yayımlanıyor mu?

Bu sayfada böyle bir ölçüm yayımlanmıyor. Girdinin kabul edilmesi, kayıtlı sayılar ve güven skoru bağımsız doğruluk testi değildir. Mevcut kanıtları ve henüz yayımlanmamış ölçümleri metodoloji sayfasından inceleyin.

Tahmin bulunamazsa kredi kullanılır mı?

Başarıyla tamamlanan unknown sonucu ücretlidir. Standart veri kümesi veya fallback modu toplam 1 kredidir. forceToGenderize açıkken veri kümesinde tahmin bulunursa 1, yapay zekâ kullanılırsa unknown dahil toplam 2 kredi düşülür. Hataların ücretlendirme kuralları ayrıdır; meta.usage alanını inceleyin.

Teste devam edin

GenderAPI anahtarınızı kullanın

Aynı IP adresi için paylaşılan 24 saatlik deneme kredileri bittiğinde teste devam etmek için GenderAPI hesabınızdaki API anahtarını girin. Anahtarı kaydetmek sorgu göndermez; hazır olduğunuzda sorguyu yeniden gönderin.

Yalnızca bu tarayıcı sekmesinde saklanır ve sekme kapatıldığında silinir.