Konfigurer et Python-prosjekt på serversiden
Denne veiledningen kaller endepunktet https://api.genderapi.io/api/v2/gender i GenderAPI.io V2 med en API-nøkkel som Bearer-token. Bruk Python 3.10 eller nyere, og last ned genderapi_v2.py til prosjektet ditt. Eksemplet bruker urllib.request og json fra standardbiblioteket i Python; ingen pip-pakke er nødvendig.
Angi GENDERAPI_API_KEY i miljøet på serveren. YOUR_API_KEY i eksemplet nedenfor er ikke en gyldig nøkkel. Hold ekte påloggingsopplysninger utenfor filer som legges inn i versjonskontroll, notatbøker du deler, og applikasjoner på klientsiden. Å importere modulen eller kjøre den uten et demoalternativ sender ingen forespørsel.
python3 --version
export GENDERAPI_API_KEY="YOUR_API_KEY"Send én eksplisitt forespørsel som bare bruker datasettet
Lagre koden nedenfor som single.py ved siden av den nedlastede filen, og kjør python3 single.py. Hjelpemodulen sender type: name, value: Alice og options.ai_mode: off som JSON. Les estimatet i data og opplysningene om forespørselen og belastningen i meta.
Et vellykket kall bruker 1 kreditt, også ved et ukjent resultat; eksempelnavnet garanterer ikke en prediksjon. make_item godtar name, email eller username og krever en eksplisitt KI-modus. Legg bare til country når du har relevant kontekst.
Før noe sendes, krever hjelpemodulen en heksadesimal API-nøkkel på 24 tegn. Dette kontrollerer formatet, ikke om nøkkelen finnes. Modulen avviser også vellykkede svar fra IP-prøveperioden fordi tilgangsmodusen ikke stemmer; denne kontrollen skjer etter svaret og kan ikke gjøre om en belastning i prøveperioden.
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"])Lagre resultatet sammen med grunnlaget
En utledet tilknytning er ikke det kjønnet en person selv har oppgitt. Lagre de opprinnelige inndataene, grunnlaget som ble returnert, og det personen selv har oppgitt, hver for seg. Et ukjent resultat er et gyldig resultat og bør ikke bli en gjettet kategori i applikasjonen din.
| Felt | Bruk |
|---|---|
data.gender / data.result_status | Bruk male eller female bare sammen med identified. Ved et ukjent resultat beholder du den opprinnelige JSON-verdien null. |
data.name / data.match | Kontroller det returnerte navnet og den valgte kandidaten. Et treff på en delstreng beviser ikke at inndataene tilhører en person med dette navnet. |
data.confidence / data.confidence_kind | Konfidensen er en verdi fra 0 til 1 eller null. observed_frequency bygger på lagrede frekvenser; model_reported er en verdi fra KI. Evaluer tersklene separat for hver type. |
data.source / data.sample_count | Skill mellom dataset, ai og none. KI-resultater har ingen lagret utvalgsstørrelse. En utvalgsstørrelse er ikke en målt nøyaktighet. |
meta.access.mode | Kontroller at api_key rapporteres i en integrasjon med konto. Nøkler som mangler eller ikke gjenkjennes, kan i stedet bruke den delte IP-prøveperioden. |
meta.usage | Les charged_credits og billing_status. Et vellykket ukjent resultat belastes. Et tapt svar beviser ikke at forespørselen var gratis. |
Behandle en blandet samleforespørsel og behold id-en for hver rad
GenderAPI.io V2 bruker POST https://api.genderapi.io/api/v2/gender/batch for blandede samleforespørsler: høyst 50 elementer med en kontonøkkel eller 10 i IP-prøveperioden. Disse eksemplene krever en kontonøkkel. Gi hvert element en stabil, unik id og en eksplisitt KI-modus. En samleforespørsel kan kombinere navn, e-postadresser og brukernavn, og hvert element kan ha en valgfri landkontekst.
Les hvert element i data og sammendraget i meta.summary. Et HTTP 200-svar kan inneholde feil for enkeltelementer; en samleforespørsel der alle elementene mislyktes, kan gi et Problem-svar på øverste nivå som inneholder resultatene. Vellykkede ukjente resultater telles som succeeded. Med den opprinnelige index og id kan du knytte hvert utfall til riktig kilderad.
Ved større jobber deler du inndataene i grupper på høyst 50 og sender dem først etter hverandre. Lagre hvert svar og forbruket før du går videre. Stopp ved feil i overføringen, feil med kontoen eller en belastning som ikke er bekreftet, og stem av den gjeldende gruppen. Legg bare til parallelle forespørsler etter at du har kontrollert grensene for kontoen din; den største tillatte samleforespørselen er ingen garanti for kapasitet.
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)Bestem når KI skal brukes
forceToGenderize er valgfritt for navn, e-postadresser og brukernavn. Når det er aktivert, utelater du ai_mode eller bruker fallback; off og always kan ikke kombineres med dette alternativet og gir 422. En positiv startsaldo er nok til å starte en forespørsel, selv om den endelige belastningen gjør saldoen negativ.
Kallenavnmodus kan returnere et kjønn sammen med name: null. Den kan også gi et ukjent resultat. Verken vanlig KI-reserve eller tolkning av kallenavn garanterer et riktig svar eller en verdi som ikke er null.
Denne hjelpemodulen for Python krever alltid ai_mode. For å tillate tolkning av kallenavn bruker du make_item('username', 'prenses', ai_mode='fallback', force_to_genderize=True). Hjelpemodulen gjør force_to_genderize om til JSON-feltet forceToGenderize.
| Alternativ i forespørselen | Virkemåte | Kreditter for et vellykket oppslag |
|---|---|---|
| options.ai_mode: off | Bruker bare datasettet. | 1, også for et ukjent resultat |
| options.ai_mode: fallback | Søker først i datasettet og bruker deretter vanlig KI hvis det ikke returneres et kjønn. Dette er standard for enkeltforespørsler. | 1 totalt, inkludert KI-reserve |
| options.ai_mode: always | Bruker KI direkte. | 2 |
| forceToGenderize: true | Søker først i datasettet og lar deretter KI tolke et personlig kallenavn eller alias, selv uten et ekte fornavn. | 1 for et resultat fra datasettet; 2 totalt hvis KI brukes |
Bestem hva du gjør etter en feil
Eksemplene sender hver operasjon én gang. De prøver ikke på nytt automatisk: En ny innsending er en ny operasjon som belastes. Et tidsavbrudd eller en tilkoblingsfeil betyr at klienten ikke fikk et fullstendig svar; det beviser ikke at serveren stoppet, eller at ingen kreditter ble belastet.
Lagre forespørsels-ID-en og belastningsstatusen som returneres, sammen med posten for jobben. Feilobjektet beholder svaret slik at det kan undersøkes kontrollert, men det kan inneholde de opprinnelige inndataene; ikke skriv hele objektet, svaret eller API-nøkkelen til vanlige logger.
| Utfall | Beslutning i applikasjonen |
|---|---|
| Vellykket ukjent resultat | Behold null, reason og usage. Dette er et fullført resultat som er belastet, ikke en mislykket rad som skal sendes automatisk på nytt. |
| Valideringsfeil 422 | Rett inndataene som feltene i Problem Details peker på, før du sender en ny forespørsel. |
| 401 / 403 | Kontroller tilgangen til kontoen eller de tilgjengelige kredittene. Å sende den samme forespørselen gjentatte ganger løser ikke det underliggende problemet. |
| 429 | Følg Retry-After når den finnes. Bekreft feilen og belastningsstatusen, og planlegg deretter et bevisst nytt forsøk senere. |
| Nettverksfeil, tidsavbrudd eller svar som ikke kan leses | Registrer at resultatet og belastningen ikke er bekreftet. Stem av før du sender på nytt; klienten kan ikke avbryte arbeid som serveren allerede har fullført. |
| billing_status: unconfirmed | charged_credits og remaining_credits kan være null. Kontakt kundestøtte med request_id før et nytt forsøk; ikke erstatt null med 0. |
| Noen elementer i samleforespørselen mislyktes | Lagre de fullførte elementene først. Gå gjennom de mislykkede elementene og belastningen for dem; send bare de egnede feilene på nytt, ikke hele samleforespørselen. |
Forstå hvordan eksemplet håndterer overføringen
Tidsavbruddet på 10 sekunder i urllib gjelder blokkerende socket-operasjoner og er ingen garantert frist for den totale varigheten av hele forespørselen. Eksemplet slår av HTTP-omdirigeringer, tolker vellykkede JSON-svar og beholder HTTP-svar av typen Problem. Det prøver aldri på nytt automatisk.
Lokale tester bruker syntetiske overføringssvar for vellykkede kall, ukjente resultater, delvis vellykkede samleforespørsler, kontotilgang og feil. De kontrollerer logikken i eksemplet; de måler ikke tilgjengeligheten til API-et i drift, nøyaktigheten til prediksjonene eller svartidene i produksjon. Hver valgfri demokommando nedenfor sender sin egen forespørsel, som belastes.
python3 genderapi_v2.py --demo single
# Run separately to submit another billable sample batch:
python3 genderapi_v2.py --demo batchOfte stilte spørsmål
Hvorfor skriver Python ut None i stedet for null?
JSON-dekoderen i Python gjør JSON-verdien null om til None. Behold denne ukjente verdien. Ikke gjør den om til et standardkjønn eller til konfidensen 0 når du lagrer eller eksporterer et resultat.
Belastes et ukjent resultat med kreditter?
Ja. Et vellykket vanlig oppslag koster 1 kreditt også når gender er null. Vanlig KI-reserve er inkludert i denne kreditten. Modusen always koster 2; forceToGenderize koster 1 for et resultat fra datasettet eller 2 når KI brukes.
Prøver eksemplet en mislykket forespørsel på nytt?
Nei. Hver nye forespørsel er en selvstendig operasjon. Kontroller feilen, resultatene for hvert element og belastningsstatusen før du bestemmer deg for å sende på nytt. Et manglende svar beviser ikke at det forrige forsøket var gratis.
Er dette en pakke jeg må installere?
Nei. Last ned eksemplet direkte fra denne veiledningen hos GenderAPI.io. Det er ikke avhengig av tredjepartspakker når det kjøres, og det er ikke et separat publisert SDK. Hvis du foretrekker en vedlikeholdt pakke, kaller de offisielle SDK-ene fra GenderAPI.io det samme V2-API-et: pip install genderapi for Python eller npm install genderapi for JavaScript. Gå gjennom og tilpass eksemplet til applikasjonen din; dokumentasjonen for GenderAPI.io V2 er fortsatt API-kontrakten.
Kilder
API-dokumentasjonen definerer forespørsler og svar. Dokumentasjonen for kjøremiljøet beskriver HTTP-verktøyene som brukes.