Määritä palvelinpuolen Python-projekti
Tämä opas kutsuu GenderAPI.io V2:n päätepistettä https://api.genderapi.io/api/v2/gender käyttäen API-avainta Bearer-tunnisteena. Käytä Pythonin versiota 3.10 tai uudempaa ja lataa genderapi_v2.py projektiisi. Esimerkki käyttää Pythonin standardikirjaston moduuleja urllib.request ja json; pip-pakettia ei tarvita.
Aseta GENDERAPI_API_KEY palvelimen ympäristöön. Alla olevan esimerkin YOUR_API_KEY ei ole kelvollinen avain. Pidä todelliset tunnistetiedot poissa versionhallintaan lisättävistä tiedostoista, jaettavista muistikirjoista ja asiakaspuolen sovelluksista. Moduulin tuominen tai sen suorittaminen ilman demoasetusta ei lähetä pyyntöä.
python3 --version
export GENDERAPI_API_KEY="YOUR_API_KEY"Lähetä yksi erikseen määritetty pyyntö, joka käyttää vain tietoaineistoa
Tallenna alla oleva koodi nimellä single.py ladatun tiedoston viereen ja suorita python3 single.py. Apumoduuli lähettää JSON-muodossa arvot type: name, value: Alice ja options.ai_mode: off. Lue arvio kentästä data sekä pyynnön ja veloituksen tiedot kentästä meta.
Onnistunut kutsu käyttää 1 krediitin myös tuntemattoman tuloksen kohdalla; esimerkkinimi ei takaa ennustetta. make_item hyväksyy arvot name, email tai username ja edellyttää erikseen määritettyä tekoälytilaa. Lisää country vain, kun sinulla on asiaankuuluva konteksti.
Ennen lähettämistä apumoduuli edellyttää 24-merkkistä heksadesimaalista API-avainta. Tämä tarkistaa muodon, ei sitä, onko avain olemassa. Moduuli hylkää myös IP-kokeilun onnistuneet vastaukset, koska käyttöoikeustila ei täsmää; tämä tarkistus tehdään vastauksen jälkeen, eikä se voi perua kokeilun veloitusta.
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"])Säilytä tulos ja sen perusteet yhdessä
Päätelty yhteys ei ole henkilön itse ilmoittama sukupuoli. Säilytä alkuperäinen syöte, palautetut perusteet ja henkilön itse antamat tiedot erillään. Tuntematon tulos on kelvollinen tulos, eikä siitä pidä tehdä sovelluksessasi arvattua luokkaa.
| Kenttä | Miten sitä käytetään |
|---|---|
data.gender / data.result_status | Käytä arvoa male tai female vain, kun tulos on identified. Säilytä alkuperäinen JSON null -arvo, kun tulos on unknown. |
data.name / data.match | Tarkista palautettu nimi ja valittu ehdokas. Osuma merkkijonon osaan ei todista, että syöte kuuluu henkilölle, jolla on kyseinen etunimi. |
data.confidence / data.confidence_kind | Luottamusarvo on väliltä 0–1 tai null. observed_frequency perustuu tallennettuihin määriin; model_reported on tekoälyn pistemäärä. Arvioi kynnysarvot kummallekin tyypille erikseen. |
data.source / data.sample_count | Erota arvot dataset, ai ja none. Tekoälytuloksilla ei ole tallennettua otoskokoa. Otoskoko ei ole mitattu tarkkuus. |
meta.access.mode | Varmista tilin integraatiossa, että arvo on api_key. Puuttuva tai tunnistamaton avain voi sen sijaan käyttää yhteistä IP-kokeilua. |
meta.usage | Lue charged_credits ja billing_status. Onnistunut tuntematon tulos veloitetaan. Kadonnut vastaus ei osoita, että pyyntö oli maksuton. |
Käsittele sekalainen eräpyyntö ja säilytä kunkin rivin id
GenderAPI.io V2 käyttää sekalaisiin eräpyyntöihin päätepistettä POST https://api.genderapi.io/api/v2/gender/batch: enintään 50 kohdetta tilin avaimella tai 10 IP-kokeilussa. Nämä esimerkit edellyttävät tilin avainta. Anna jokaiselle kohteelle pysyvä, yksilöllinen id ja erikseen määritetty tekoälytila. Eräpyyntö voi yhdistää nimiä, sähköpostiosoitteita ja käyttäjänimiä, ja jokaisella kohteella voi olla valinnainen maakonteksti.
Lue jokainen data-kentän kohde ja yhteenveto kentästä meta.summary. HTTP 200 -vastaus voi sisältää kohdekohtaisia virheitä; eräpyyntö, jonka kaikki kohteet epäonnistuivat, voi palauttaa ylätason Problem-vastauksen, joka sisältää tulokset. Onnistuneet tuntemattomat tulokset lasketaan arvoon succeeded. Alkuperäisten index- ja id-arvojen avulla voit liittää jokaisen lopputuloksen oikeaan lähderiviin.
Jaa suuremmissa töissä syötteet enintään 50 kohteen ryhmiin ja lähetä ne aluksi peräkkäin. Tallenna jokainen vastaus ja sen käyttötiedot ennen kuin jatkat. Pysähdy siirtovirheisiin, tiliin liittyviin virheisiin tai vahvistamattomaan veloitukseen ja täsmäytä nykyinen ryhmä. Lisää rinnakkaisia pyyntöjä vasta, kun olet tarkistanut tilisi rajat; suurin sallittu eräpyynnön koko ei takaa läpäisykykyä.
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)Päätä, milloin tekoälyä käytetään
forceToGenderize on valinnainen nimille, sähköpostiosoitteille ja käyttäjänimille. Kun se on käytössä, jätä ai_mode pois tai käytä arvoa fallback; off ja always ovat ristiriidassa sen kanssa ja palauttavat 422-virheen. Positiivinen alkusaldo riittää pyynnön aloittamiseen, vaikka lopullinen veloitus painaisi saldon negatiiviseksi.
Lempinimitila voi palauttaa sukupuolen, vaikka tuloksessa on name: null. Se voi myös palauttaa tuntemattoman tuloksen. Tavallinen tekoäly varalla ja lempinimipäättely eivät takaa oikeaa vastausta eivätkä muuta kuin null-arvoista vastausta.
Tämä Python-apumoduuli edellyttää aina ai_mode-arvoa. Jos haluat sallia lempinimipäättelyn, käytä kutsua make_item('username', 'prenses', ai_mode='fallback', force_to_genderize=True). Apumoduuli muuntaa force_to_genderize-arvon JSON-kentäksi forceToGenderize.
| Pyynnön asetus | Toiminta | Krediitit onnistuneesta hausta |
|---|---|---|
| options.ai_mode: off | Käyttää vain tietoaineistoa. | 1, myös tuntemattomasta tuloksesta |
| options.ai_mode: fallback | Hakee ensin tietoaineistosta ja käyttää tavallista tekoälyä, jos sukupuolta ei saada. Tämä on yksittäisen pyynnön oletus. | Yhteensä 1, tekoäly varalla mukaan lukien |
| options.ai_mode: always | Käyttää suoraan tekoälyä. | 2 |
| forceToGenderize: true | Hakee ensin tietoaineistosta ja sallii sitten tekoälyn tulkita henkilökohtaisen lempinimen tai aliaksen myös ilman todellista etunimeä. | 1 tietoaineistosta ratkaistusta tuloksesta; yhteensä 2, jos tekoälyä käytetään |
Päätä, mitä teet virheen jälkeen
Esimerkit lähettävät jokaisen toiminnon kerran. Ne eivät yritä uudelleen automaattisesti: uusi lähetys on uusi veloitettava toiminto. Aikakatkaisu tai yhteysvirhe tarkoittaa, että asiakasohjelma ei saanut täydellistä vastausta; se ei todista, että palvelin lopetti käsittelyn tai että krediittejä ei veloitettu.
Tallenna palautettu pyynnön tunniste ja veloituksen tila työn tietueen yhteyteen. Virheobjekti säilyttää vastauksen hallittua tarkastelua varten, mutta se voi sisältää alkuperäisen syötteen; älä kirjoita koko objektia, vastausta tai API-avainta tavallisiin lokeihin.
| Lopputulos | Päätös sovelluksessa |
|---|---|
| Onnistunut tuntematon tulos | Säilytä null, reason ja usage. Tämä on valmis, veloitettu tulos eikä epäonnistunut rivi, joka lähetetään automaattisesti uudelleen. |
| Validointivirhe 422 | Korjaa Problem Details -kenttien osoittamat syötteet ennen uuden pyynnön lähettämistä. |
| 401 / 403 | Tarkista tilin käyttöoikeus tai käytettävissä olevat krediitit. Saman pyynnön lähettäminen toistuvasti ei ratkaise taustalla olevaa ongelmaa. |
| 429 | Noudata Retry-After-otsaketta, kun se on mukana. Vahvista virhe ja veloituksen tila ja ajoita sitten harkittu uusi yritys myöhemmäksi. |
| Verkkovirhe, aikakatkaisu tai lukukelvoton vastaus | Kirjaa, että tulosta ja veloitusta ei ole vahvistettu. Täsmäytä ennen uutta lähetystä; asiakasohjelma ei voi perua palvelimen jo valmiiksi tekemää työtä. |
| billing_status: unconfirmed | charged_credits ja remaining_credits voivat olla null. Ota yhteyttä tukeen ja ilmoita request_id ennen uutta yritystä; älä korvaa null-arvoa nollalla. |
| Osa eräpyynnön kohteista epäonnistui | Tallenna valmiit kohteet ensin. Käy epäonnistuneet kohteet ja niiden veloitus läpi; lähetä uudelleen vain soveltuvat virheet, ei koko eräpyyntöä. |
Ymmärrä, miten esimerkki käsittelee tiedonsiirron
urllibin 10 sekunnin aikakatkaisu koskee estäviä socket-toimintoja eikä ole taattu takaraja koko pyynnön kokonaiskestolle. Esimerkki poistaa HTTP-uudelleenohjaukset käytöstä, jäsentää onnistuneet JSON-vastaukset ja säilyttää Problem-tyyppiset HTTP-vastaukset. Se ei koskaan yritä uudelleen automaattisesti.
Paikalliset testit käyttävät synteettisiä siirtovastauksia onnistuneille kutsuille, tuntemattomille tuloksille, osittain onnistuneille eräpyynnöille, tilin käyttöoikeudelle ja virheille. Ne tarkistavat esimerkin ohjauslogiikan; ne eivät mittaa tuotannossa olevan API:n saatavuutta, ennusteiden tarkkuutta eikä vasteaikoja tuotannossa. Jokainen alla oleva valinnainen demokomento lähettää oman, veloitettavan pyyntönsä.
python3 genderapi_v2.py --demo single
# Run separately to submit another billable sample batch:
python3 genderapi_v2.py --demo batchUsein kysytyt kysymykset
Miksi Python tulostaa None eikä null?
Pythonin JSON-dekooderi muuntaa JSON-arvon null arvoksi None. Säilytä tämä tuntematon arvo. Älä muuta sitä oletussukupuoleksi tai luottamusarvoksi 0, kun tallennat tai viet tuloksen.
Kuluttaako tuntematon tulos krediittejä?
Kyllä. Onnistunut tavallinen haku maksaa 1 krediitin myös silloin, kun gender on null. Tavallinen tekoäly varalla sisältyy tähän krediittiin. Tila always maksaa 2; forceToGenderize maksaa 1 tietoaineistosta ratkaistusta tuloksesta tai 2, kun tekoälyä käytetään.
Yrittääkö esimerkki epäonnistunutta pyyntöä uudelleen?
Ei. Jokainen uusi pyyntö on itsenäinen toiminto. Tarkista virhe, kohdekohtaiset tulokset ja veloituksen tila ennen kuin päätät lähettää uudelleen. Puuttuva vastaus ei todista, että edellinen yritys oli maksuton.
Onko tämä paketti, joka minun on asennettava?
Ei. Lataa esimerkki suoraan tästä GenderAPI.io-oppaasta. Se ei ole suoritusaikana riippuvainen kolmannen osapuolen paketeista, eikä se ole erikseen julkaistu SDK. Jos haluat käyttää ylläpidettyä pakettia, GenderAPI.io:n viralliset SDK:t kutsuvat samaa API V2:ta: pip install genderapi Pythonille tai npm install genderapi JavaScriptille. Tarkista ja mukauta esimerkki sovellukseesi; GenderAPI.io V2:n dokumentaatio on edelleen API-määrittely.
Lähteet
API-dokumentaatio määrittelee pyynnöt ja vastaukset. Suoritusympäristön dokumentaatio kuvaa käytetyt HTTP-työkalut.