GenderAPI V2 · Implementeringsguide

Brug GenderAPI.io V2 med Python

Kald GenderAPI.io V2 fra Python med et eksempel baseret på standardbiblioteket. Send navne, e-mailadresser og brugernavne, behandl blandede batches, og læs felterne data/meta.

PythonPython 3.10+HTTP på serversiden

GenderAPI.io Opdateret:

Forbered et Python-projekt på serversiden

Denne guide kalder endpointet i GenderAPI.io V2 https://api.genderapi.io/api/v2/gender med API-nøglen i Bearer-headeren. Brug Python 3.10 eller nyere, og download genderapi_v2.py til dit projekt. Eksemplet bruger urllib.request og json fra Pythons standardbibliotek; der kræves ingen pip-pakke.

Angiv GENDERAPI_API_KEY i serverens miljø. YOUR_API_KEY i det følgende eksempel er ikke en gyldig nøgle. Læg ikke rigtige loginoplysninger i filer under versionsstyring, delte notebooks eller applikationer på klientsiden. At importere modulet eller køre det uden demo-indstillinger sender ingen forespørgsel.

Konfigurér Python-miljøet
python3 --version
export GENDERAPI_API_KEY="YOUR_API_KEY"

Send en eksplicit forespørgsel, der kun bruger datasættet

Gem følgende kode som single.py ved siden af den downloadede fil, og kør python3 single.py. Hjælpemodulet sender type: name, value: Alice og options.ai_mode: off som JSON. Forudsigelsen står i data, mens oplysningerne om forespørgslen og opkrævningen står i meta.

Et gennemført kald koster 1 kredit, også ved et ukendt resultat, og eksempelnavnet garanterer ikke en forudsigelse. make_item accepterer name, email eller username og kræver en eksplicit AI-tilstand. Tilføj kun country, hvis du har en relevant kontekst.

Før noget sendes, kræver hjælpemodulet en hexadecimal API-nøgle på 24 tegn. Det kontrollerer nøglens format, ikke om nøglen findes. Modulet afviser desuden gennemførte svar fra IP-prøveadgangen som en uventet adgangstilstand. Den kontrol sker, efter at svaret er modtaget, og kan ikke tilbageføre en kredit fra prøveadgangen, der allerede er brugt.

Enkeltopslag 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"])

Gem resultatet sammen med evidensen

En udledt sammenhæng er ikke det køn, en person selv har oplyst. Gem det oprindelige input, den returnerede evidens og det, personen selv har oplyst, hver for sig. Et ukendt resultat er et gyldigt resultat og bør ikke blive til en gættet kategori i din applikation.

FeltSådan bruger du det
data.gender / data.result_statusBrug kun male eller female, når status er identified. Bevar den native JSON-værdi null, når resultatet er ukendt.
data.name / data.matchKontrollér det returnerede navn og den valgte kandidat. Et match på en delstreng beviser ikke, at inputtet tilhører en person med det navn.
data.confidence / data.confidence_kindKonfidensen ligger på en skala fra 0 til 1 eller er null. observed_frequency bygger på lagrede frekvenser, mens model_reported er en værdi angivet af AI. Vurdér tærskelværdier separat for hver type.
data.source / data.sample_countSkeln mellem dataset, ai og none. AI-resultater har ingen lagret stikprøvestørrelse. En stikprøvestørrelse er ikke en målt nøjagtighed.
meta.access.modeKontrollér i en integration med konto, at api_key returneres. Manglende eller ukendte nøgler kan i stedet bruge den delte IP-prøveadgang.
meta.usageLæs charged_credits og billing_status. Et gennemført ukendt resultat koster kreditter. Et mistet svar beviser ikke, at forespørgslen var gratis.

Behandl en blandet batch, og bevar id'et for hver række

GenderAPI.io V2 behandler blandede batches via POST https://api.genderapi.io/api/v2/gender/batch: op til 50 elementer med en kontonøgle eller 10 med IP-prøveadgangen. Disse eksempler kræver en kontonøgle. Giv hvert element et stabilt, unikt id og en eksplicit AI-tilstand. En batch kan kombinere navne, e-mailadresser og brugernavne, og hvert element kan have en valgfri country-kontekst.

Læs hvert element i data og oversigten i meta.summary. Et HTTP 200-svar kan indeholde fejl i enkelte elementer, og en batch, hvor alle elementer er mislykkedes, kan returnere et Problem-svar på øverste niveau med resultaterne. Gennemførte ukendte resultater tælles med i succeeded. Med index og id knytter du hvert resultat til den rigtige oprindelige række.

Del større opgaver op i grupper på højst 50 elementer, og send dem i begyndelsen én ad gangen. Gem hvert svar og det tilhørende forbrug, før du går videre til næste gruppe. Stop ved en transportfejl, en fejl i adgangen til kontoen eller en ubekræftet opkrævning, og find først ud af, hvad der skete med den aktuelle gruppe. Send først parallelt, når du har kontrolleret din kontos grænser. Den maksimale batchstørrelse garanterer ikke en bestemt behandlingskapacitet.

Batchopslag 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)

Beslut, hvornår AI skal bruges

forceToGenderize er valgfrit for navne, e-mailadresser og brugernavne. Når det er slået til, skal du udelade ai_mode eller bruge fallback. off og always kan ikke kombineres med denne indstilling og returnerer 422. En positiv startsaldo er nok til at starte en forespørgsel, også selvom den endelige opkrævning gør saldoen negativ.

Kaldenavnstilstanden kan returnere et køn sammen med name: null. Den kan også give et ukendt resultat. Hverken den almindelige automatiske AI-fallback eller fortolkningen af kaldenavne garanterer et korrekt svar eller en værdi, der ikke er null.

Hjælpemodulet til Python kræver altid ai_mode. Brug make_item('username', 'prenses', ai_mode='fallback', force_to_genderize=True) til fortolkning af kaldenavne. Modulet omsætter force_to_genderize til JSON-feltet forceToGenderize.

Indstilling i forespørgslenAdfærdKreditter for en gennemført forespørgsel
options.ai_mode: offBruger kun datasættet.1, også for et ukendt resultat
options.ai_mode: fallbackSlår først op i datasættet og bruger derefter almindelig AI, hvis der ikke returneres et køn. Det er standarden for enkeltforespørgsler.1 i alt, inklusive automatisk AI-fallback
options.ai_mode: alwaysBruger AI direkte.2
forceToGenderize: trueSlår først op i datasættet og lader derefter AI fortolke et personligt kaldenavn eller alias, også uden et egentligt fornavn.1 for et resultat fra datasættet, 2 i alt, hvis AI bruges

Beslut, hvad du gør efter en fejl

Eksemplerne sender hver handling én gang. De gentager den aldrig automatisk: At sende igen er en ny handling, som kan blive opkrævet. En timeout eller en forbindelsesfejl betyder, at klienten ikke har modtaget et fuldstændigt svar. Det beviser ikke, at serveren har stoppet behandlingen, eller at der ikke er opkrævet kreditter.

Gem det returnerede request_id og opkrævningens status sammen med posten for din opgave. Fejlobjektet bevarer svaret til kontrolleret analyse, men kan indeholde det oprindelige input: Skriv ikke hele objektet, svaret og API-nøglen i almindelige logfiler.

SituationBeslutning i applikationen
Gennemført ukendt resultatBevar null, reason og usage. Det er et afsluttet og opkrævet resultat, ikke en mislykket række, der automatisk skal forsøges igen.
Valideringsfejl 422Ret det input, der nævnes i felterne i Problem Details, før du sender en ny forespørgsel.
401 / 403Kontrollér adgangen til kontoen eller den tilgængelige saldo. At sende den samme forespørgsel igen løser ikke årsagen.
429Respektér headeren Retry-After, hvis den findes. Kontrollér fejlen og opkrævningens status, og planlæg derefter det næste forsøg bevidst.
Netværksfejl, timeout eller ulæseligt svarRegistrér, at resultatet og opkrævningen ikke er bekræftet. Undersøg situationen, før du sender igen. Klienten kan ikke fortryde en behandling, som serveren allerede har afsluttet.
billing_status: unconfirmedcharged_credits og remaining_credits kan være null. Kontakt support før et nyt forsøg, og oplys request_id. Erstat ikke null med nul kreditter.
Fejl i nogle elementer i en batchGem først de afsluttede elementer. Kontrollér de mislykkede elementer og den tilhørende opkrævning, og send kun de fejl igen, der er egnede til det, ikke hele batchen.

Kend eksemplets netværksadfærd

urllibs timeout på 10 sekunder gælder for blokerende socket-handlinger og er ikke en garanteret grænse for forespørgslens samlede varighed. Eksemplet slår HTTP-omdirigeringer fra, behandler gennemførte JSON-svar og bevarer HTTP Problem-svar. Det gentager aldrig forespørgsler automatisk.

De lokale test bruger simulerede transportsvar for gennemførte kald, ukendte resultater, delvist gennemførte batches, adgang til kontoen og fejl. De kontrollerer eksemplets logik, men måler ikke API'ets tilgængelighed i produktion, forudsigelsens nøjagtighed eller svartiderne. Hver eksplicit demokommando nedenfor sender sin egen forespørgsel, som bliver opkrævet.

Valgfrie eksplicitte demoer i Python
python3 genderapi_v2.py --demo single
# Run separately to submit another billable sample batch:
python3 genderapi_v2.py --demo batch

Ofte stillede spørgsmål

Hvorfor viser Python None i stedet for null?

Pythons JSON-dekoder omsætter null til None. Bevar den ukendte værdi, og erstat den ikke med et standardkøn eller en konfidensværdi på nul, når du gemmer eller eksporterer resultatet.

Koster et ukendt resultat kreditter?

Ja. Et almindeligt gennemført opslag koster 1 kredit, også når gender er null. Den almindelige automatiske AI-fallback er inkluderet i den kredit. Tilstanden always koster 2 kreditter, og forceToGenderize koster 1 kredit, hvis resultatet kommer fra datasættet, eller 2, hvis AI bruges.

Gentager eksemplet en mislykket forespørgsel?

Nej. Hver ny forespørgsel er en separat handling. Kontrollér fejlen, resultaterne for de enkelte elementer og opkrævningens status, før du beslutter at sende igen. Et manglende svar beviser ikke, at det forrige forsøg var gratis.

Skal jeg installere en pakke?

Nej. Download eksemplet direkte fra denne guide hos GenderAPI.io. Det har ingen runtime-afhængigheder af eksterne pakker og er ikke et separat SDK udgivet via pip eller npm. Gennemgå det, og tilpas det til din applikation. For API'ets kontrakt er dokumentationen til GenderAPI.io V2 gældende.

Kilder

API-dokumentationen definerer forespørgsler og svar. Runtimens dokumentation beskriver de anvendte HTTP-værktøjer.