GenderAPI V2 · Implementeringsguide

Använd GenderAPI.io V2 med Python

Anropa GenderAPI.io V2 från Python med ett exempel som bygger på standardbiblioteket. Skicka namn, e-postadresser och användarnamn, bearbeta blandade batchar och läs fälten data/meta.

PythonPython 3.10+HTTP på serversidan

GenderAPI.io Uppdaterad:

Förbered ett Python-projekt på serversidan

Den här guiden anropar GenderAPI.io V2-slutpunkten https://api.genderapi.io/api/v2/gender med API-nyckeln i Bearer-rubriken. Använd Python 3.10 eller senare och ladda ned genderapi_v2.py till ditt projekt. Exemplet använder urllib.request och json från Pythons standardbibliotek; det kräver inget pip-paket.

Sätt GENDERAPI_API_KEY i serverns miljö. YOUR_API_KEY i exemplet nedan är ingen giltig nyckel. Lägg inte riktiga inloggningsuppgifter i versionshanterade filer, delade notebooks eller applikationer på klientsidan. Att importera modulen eller köra den utan demoalternativ skickar ingen förfrågan.

Konfigurera Python-miljön
python3 --version
export GENDERAPI_API_KEY="YOUR_API_KEY"

Skicka en uttrycklig förfrågan som bara använder datamängden

Spara koden nedan som single.py bredvid den nedladdade filen och kör sedan python3 single.py. Hjälpmodulen skickar type: name, value: Alice och options.ai_mode: off i JSON. Prediktionen läser du i data och uppgifterna om förfrågan och debiteringen i meta.

Ett lyckat anrop kostar 1 kredit, även vid ett okänt resultat; exempelnamnet garanterar ingen prediktion. make_item tar emot name, email eller username och kräver ett uttryckligt AI-läge. Lägg bara till country när du har en passande kontext.

Innan något skickas kräver hjälpmodulen en hexadecimal API-nyckel med 24 tecken. Det kontrollerar nyckelns format, inte att den finns. Dessutom avvisar modulen lyckade svar från IP-provperioden som ett avvikande åtkomstläge; kontrollen görs efter att svaret har tagits emot och kan inte ångra en provkredit som redan har förbrukats.

Enskild sökning i Python
from genderapi_v2 import GenderAPIError, make_item, predict

try:
    response = predict(make_item("name", "Alice", ai_mode="off"))
except GenderAPIError as error:
    # Record a reference; do not log the whole error response.
    print("Request failed:", error.request_id)
    raise SystemExit(1)
else:
    result = response["data"]
    print(result["result_status"], result["gender"])
    print(result["confidence"], result["confidence_kind"])
    print(response["meta"]["usage"])

Spara resultatet tillsammans med underlaget

En härledd koppling är inte det kön som en person själv uppger. Spara ursprungliga indata, det returnerade underlaget och det personen själv har angett separat. Ett okänt resultat är ett giltigt resultat och bör inte bli en gissad kategori i din applikation.

FältAnvändning
data.gender / data.result_statusAnvänd male eller female bara vid identified. Behåll det inbyggda JSON-värdet null vid ett okänt resultat.
data.name / data.matchGranska det returnerade namnet och den valda kandidaten. En träff på en delsträng visar inte att indata tillhör en person med det förnamnet.
data.confidence / data.confidence_kindKonfidensen ligger på en skala från 0 till 1 eller är null. observed_frequency bygger på lagrade frekvenser; model_reported är ett AI-värde. Utvärdera tröskelvärden separat för varje typ.
data.source / data.sample_countSkilj mellan dataset, ai och none. AI-resultat har ingen lagrad urvalsstorlek. En urvalsstorlek är inget uppmätt noggrannhetsvärde.
meta.access.modeKontrollera att api_key rapporteras i en kontointegration. Nycklar som saknas eller inte känns igen kan i stället använda den delade IP-provperioden.
meta.usageLäs charged_credits och billing_status. Ett lyckat okänt resultat debiteras. Ett förlorat svar visar inte att förfrågan var kostnadsfri.

Bearbeta en blandad batch och behåll varje rads id

GenderAPI.io V2 bearbetar blandade batchar via POST https://api.genderapi.io/api/v2/gender/batch: upp till 50 poster med en kontonyckel eller 10 med IP-provperioden. De här exemplen kräver en kontonyckel. Ge varje post ett stabilt, unikt id och ett uttryckligt AI-läge. En batch kan kombinera namn, e-postadresser och användarnamn, och varje post kan ha en valfri kontext i country.

Läs varje post i data och sammanfattningen meta.summary. Ett svar med HTTP 200 kan innehålla fel i enskilda poster; en batch där alla poster misslyckades kan ge ett problemsvar på toppnivå med resultaten. Lyckade okända resultat räknas i succeeded. Med index och id kopplar du varje resultat till rätt källrad.

Dela upp indata i stora jobb i grupper om högst 50 poster och skicka dem till att börja med en i taget. Spara varje svar och dess användning innan du går vidare till nästa grupp. Stoppa vid ett transportfel, ett fel i kontoåtkomsten eller en obekräftad debitering och klarlägg läget för den aktuella gruppen. Inför parallella sändningar först när du har kontrollerat ditt kontos gränser; den största batchstorleken garanterar ingen genomströmning.

Batchsökning i Python
from genderapi_v2 import GenderAPIError, make_item, predict_batch

items = [
    make_item("name", "Alice", ai_mode="off", item_id="row-1"),
    make_item("email", "alex@example.com", ai_mode="off", item_id="row-2"),
    make_item("username", "sample_handle", ai_mode="off", item_id="row-3"),
]
try:
    response = predict_batch(items)
except GenderAPIError as error:
    # Retained error.response can include batch results and billing.
    print("Batch needs review:", error.request_id)
    raise SystemExit(1)
else:
    for item in response["data"]:
        if "error" in item:
            print(item["id"], "failed", item["error"]["code"])
        else:
            result = item["data"]
            print(item["id"], result["result_status"], result["gender"])
    print(response["meta"]["summary"])
    print(response["meta"]["usage"])
    if response["meta"]["summary"]["failed"]:
        raise SystemExit(2)

Bestäm när AI ska användas

forceToGenderize är valfritt för namn, e-postadresser och användarnamn. När det är aktiverat utelämnar du ai_mode eller använder fallback; off och always kan inte kombineras med det och ger 422. Ett positivt startsaldo räcker för att starta en förfrågan, även om den slutliga debiteringen gör saldot negativt.

Smeknamnsläget kan returnera ett kön tillsammans med name: null. Det kan också ge ett okänt resultat. Varken vanlig AI-reserv eller tolkning av smeknamn garanterar ett korrekt svar eller ett värde som inte är null.

Hjälpmodulen för Python kräver alltid ai_mode. För tolkning av smeknamn använder du make_item('username', 'prenses', ai_mode='fallback', force_to_genderize=True). Modulen omvandlar force_to_genderize till JSON-fältet forceToGenderize.

Alternativ i förfråganBeteendeKrediter för en lyckad sökning
options.ai_mode: offAnvänd bara datamängden.1, även för ett okänt resultat
options.ai_mode: fallbackKontrollera datamängden först och använd sedan vanlig AI om inget kön returneras. Detta är standard för enskilda förfrågningar.Totalt 1, inklusive AI-reserv
options.ai_mode: alwaysAnvänd AI direkt.2
forceToGenderize: trueKontrollera datamängden först och låt sedan AI tolka ett personligt smeknamn eller alias, även utan ett riktigt förnamn.1 för ett resultat som fastställs i datamängden; totalt 2 om AI används

Bestäm vad som händer efter ett fel

Exemplen skickar varje åtgärd bara en gång. De upprepar den aldrig automatiskt: att skicka igen är en ny åtgärd som debiteras. En överskriden tidsgräns eller ett anslutningsfel betyder att klienten inte fick något fullständigt svar; det visar varken att servern avbröt bearbetningen eller att inga krediter drogs.

Spara det returnerade request_id och debiteringsstatusen tillsammans med posten för ditt jobb. Felobjektet behåller svaret för en kontrollerad analys men kan innehålla de ursprungliga indata: skriv varken hela objektet, svaret eller API-nyckeln till vanliga loggar.

SituationApplikationens beslut
Lyckat okänt resultatBehåll null, reason och usage. Det är ett avslutat resultat som debiteras och ingen misslyckad rad för ett automatiskt nytt försök.
Valideringsfel 422Rätta de indata som anges i fälten i Problem Details innan du skickar en ny förfrågan.
401 / 403Kontrollera kontoåtkomsten eller det tillgängliga saldot. Att skicka samma förfrågan igen åtgärdar inte orsaken.
429Respektera rubriken Retry-After om den finns. Kontrollera felet och debiteringsstatusen och planera sedan nästa försök medvetet.
Nätverksfel, överskriden tidsgräns eller oläsbart svarRegistrera att resultatet och debiteringen är obekräftade. Klarlägg läget innan du skickar igen; klienten kan inte ångra en bearbetning som redan har slutförts på servern.
billing_status: unconfirmedcharged_credits och remaining_credits kan vara null. Kontakta supporten med request_id innan du gör ett nytt försök; ersätt inte null med noll krediter.
Fel i vissa poster i en batchSpara de slutförda posterna först. Granska de misslyckade posterna och deras debitering; skicka bara om de felen, inte hela batchen.

Känn till exemplets nätverksbeteende

Tidsgränsen på 10 sekunder i urllib gäller blockerande socketåtgärder; den är ingen garanterad gräns för förfrågans totala tid. Exemplet stänger av HTTP-omdirigeringar, tolkar lyckade JSON-svar och behåller HTTP-problemsvar. Det gör aldrig om förfrågningar automatiskt.

Lokala tester använder simulerade transportsvar för lyckade anrop, okända resultat, delvis lyckade batchar, kontoåtkomst och fel. De kontrollerar exemplets styrlogik; de mäter varken API:ets tillgänglighet i produktion, inferensens noggrannhet eller svarstider. Varje uttryckligt demokommando nedan skickar en egen förfrågan som debiteras.

Valfria uttryckliga demor i Python
python3 genderapi_v2.py --demo single
# Run separately to submit another billable sample batch:
python3 genderapi_v2.py --demo batch

Vanliga frågor

Varför visar Python None i stället för null?

Pythons JSON-avkodare omvandlar null till None. Behåll det okända värdet: ersätt det varken med ett standardkön eller med konfidensen noll när du sparar eller exporterar resultatet.

Förbrukar ett okänt resultat krediter?

Ja. En lyckad vanlig sökning kostar 1 kredit, även när gender är null. Den vanliga AI-reserven ingår i den krediten. Läget always kostar 2 krediter; forceToGenderize kostar 1 kredit om datamängden ger resultatet, eller 2 om AI används.

Gör exemplet om en misslyckad förfrågan?

Nej. Varje ny förfrågan är en egen åtgärd. Granska felet, resultaten för de enskilda posterna och debiteringsstatusen innan du bestämmer dig för att skicka igen. Ett uteblivet svar visar inte att det tidigare försöket var kostnadsfritt.

Måste jag installera ett paket?

Nej. Ladda ned exemplet direkt från den här guiden hos GenderAPI.io. Det har inga körberoenden till externa paket och är inget separat SDK som publiceras i pip eller npm. Granska det och anpassa det till din applikation; för API-kontraktet gäller dokumentationen för GenderAPI.io V2.

Källor

API-dokumentationen definierar förfrågningar och svar. Körmiljöns dokumentation beskriver de HTTP-verktyg som används.