GenderAPI V2 · Toteutusopas

GenderAPI.io V2:n käyttö JavaScriptillä ja Node.js:llä

Kutsu GenderAPI.io V2:ta Node.js:stä sisäänrakennetulla fetchillä. Lataa ES-moduuli yksittäisille pyynnöille ja sekalaisille eräpyynnöille, data- ja meta-vastauksille sekä krediitit huomioivalle virheenkäsittelylle.

JavaScript / Node.jsNode.js 22+Palvelinpuolen HTTP

GenderAPI.io Päivitetty:

Pidä integraatio Node.js-palvelimellasi

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ä Node.js:n versiota 22 tai uudempaa ja lataa genderapi-v2.mjs projektiisi. Tämä ES-moduuli käyttää sisäänrakennettuja fetch- ja AbortSignal.timeout-toimintoja; npm-pakettia ei tarvita. Tiedostopäätteen .mjs ansiosta voit tuoda moduulin toisesta ES-moduulista muuttamatta package.json-tiedostoa.

Aseta GENDERAPI_API_KEY palvelimen ympäristöön. Älä sisällytä avainta Reactiin, Vueen tai selaimessa suoritettavaan JavaScriptiin. Anna oman palvelimesi todentaa sovelluksen käyttäjät ja kutsua GenderAPI.io:ta. Alla olevan esimerkin YOUR_API_KEY ei ole kelvollinen avain. Moduulin tuominen tai sen suorittaminen ilman erikseen annettua suoritusasetusta ei lähetä pyyntöä.

Määritä Node.js-ympäristö
node --version
export GENDERAPI_API_KEY="YOUR_API_KEY"

Lähetä yksi JSON POST -pyyntö erikseen määritetyillä tekoälysäännöillä

Tallenna koodi nimellä single.mjs ladatun moduulin viereen ja suorita node single.mjs. Se lähettää V2:n kentät type ja value asetuksella options.ai_mode: off. Lue arvio kentästä response.data sekä pyynnön ja veloituksen tiedot kentästä response.meta.

Valmis haku maksaa 1 krediitin myös silloin, kun gender on null; esimerkkinimi ei takaa tiettyä tulosta.

Apumoduuli edellyttää erikseen määritettyä tekoälytilaa ja 24-merkkistä heksadesimaalista avainta ja tarkistaa sen jälkeen, että meta.access.mode on api_key. Kokeilun onnistunut vastaus aiheuttaa käyttöoikeustilan ristiriitaa koskevan virheen sen sijaan, että käsittely jatkuisi huomaamatta. Palvelin on voinut jo käyttää kokeilun krediitin ennen kuin apumoduuli havaitsee ristiriidan.

Yksittäinen haku Node.js:llä
import { predict, GenderAPIError } from "./genderapi-v2.mjs";

try {
  const response = await predict({
    type: "name", value: "Alice", options: { ai_mode: "off" },
  });
  const result = response.data;
  console.log(result.result_status, result.gender);
  console.log(result.confidence, result.confidence_kind);
  console.log(response.meta.usage);
} catch (error) {
  if (!(error instanceof GenderAPIError)) throw error;
  // Do not log error.body: it can include the submitted value.
  console.error("Request failed:", error.code, error.requestId);
  process.exitCode = 1;
}

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_statusKäytä arvoa male tai female vain, kun tulos on identified. Säilytä alkuperäinen JSON null -arvo, kun tulos on unknown.
data.name / data.matchTarkista palautettu nimi ja valittu ehdokas. Osuma merkkijonon osaan ei todista, että syöte kuuluu henkilölle, jolla on kyseinen etunimi.
data.confidence / data.confidence_kindLuottamusarvo 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_countErota arvot dataset, ai ja none. Tekoälytuloksilla ei ole tallennettua otoskokoa. Otoskoko ei ole mitattu tarkkuus.
meta.access.modeVarmista tilin integraatiossa, että arvo on api_key. Puuttuva tai tunnistamaton avain voi sen sijaan käyttää yhteistä IP-kokeilua.
meta.usageLue 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ä.

Eräpyyntö Node.js:llä
import { predictBatch, GenderAPIError } from "./genderapi-v2.mjs";

const items = [
  { id: "row-1", type: "name", value: "Alice", options: { ai_mode: "off" } },
  { id: "row-2", type: "email", value: "alex@example.com", options: { ai_mode: "off" } },
  { id: "row-3", type: "username", value: "sample_handle", options: { ai_mode: "off" } },
];
try {
  const response = await predictBatch(items);
  for (const item of response.data) {
    if (item.error) {
      console.log(item.id, "failed", item.error.code);
    } else {
      console.log(item.id, item.data.result_status, item.data.gender);
    }
  }
  console.log(response.meta.summary, response.meta.usage);
  if (response.meta.summary.failed > 0) process.exitCode = 2;
} catch (error) {
  if (!(error instanceof GenderAPIError)) throw error;
  // error.body can retain an all-failed batch and billing details.
  console.error("Batch needs review:", error.code, error.requestId);
  process.exitCode = 1;
}

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ä JavaScript-apumoduuli edellyttää aina options.ai_mode-arvoa. Lempinimipäättelyä varten lähetä forceToGenderize: true yhdessä asetuksen options: { ai_mode: 'fallback' } kanssa.

Pyynnön asetusToimintaKrediitit onnistuneesta hausta
options.ai_mode: offKäyttää vain tietoaineistoa.1, myös tuntemattomasta tuloksesta
options.ai_mode: fallbackHakee 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: alwaysKäyttää suoraan tekoälyä.2
forceToGenderize: trueHakee 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.

LopputulosPäätös sovelluksessa
Onnistunut tuntematon tulosSäilytä null, reason ja usage. Tämä on valmis, veloitettu tulos eikä epäonnistunut rivi, joka lähetetään automaattisesti uudelleen.
Validointivirhe 422Korjaa Problem Details -kenttien osoittamat syötteet ennen uuden pyynnön lähettämistä.
401 / 403Tarkista tilin käyttöoikeus tai käytettävissä olevat krediitit. Saman pyynnön lähettäminen toistuvasti ei ratkaise taustalla olevaa ongelmaa.
429Noudata 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 vastausKirjaa, 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: unconfirmedcharged_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äonnistuiTallenna 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ä fetch-kutsun aikakatkaisu ja vastauksen tarkistukset

Oletusaikakatkaisu on 10 000 millisekuntia AbortSignal.timeout-toiminnolla, ja se kattaa myös vastauksen rungon lukemisen. Se, että asiakasohjelma keskeyttää pyynnön, ei todista, että palvelimen käsittely tai veloitus pysähtyi. Moduuli poistaa uudelleenohjaukset käytöstä, erottaa HTTP-virheet lukukelvottomista vastauksista eikä koskaan yritä uudelleen automaattisesti.

Synteettisiä siirtovastauksia käyttävät testit kattavat onnistuneet vastaukset, tuntemattomat tulokset, osittain onnistuneet eräpyynnöt, tunnistetietojen varavaihtoehdot ja virheet. Testit eivät tarvitse todellisia ennusteita tai krediittejä kuluttavia toimintoja; ne eivät ole tuotannon saatavuuden tai tarkkuuden mittaus. Jokainen alla oleva valinnainen demokomento lähettää oman, veloitettavan pyyntönsä.

Valinnaiset Node.js-demot, jotka suoritetaan vain erikseen
node genderapi-v2.mjs --run-single
# Run separately to submit another billable sample batch:
node genderapi-v2.mjs --run-batch

Usein kysytyt kysymykset

Voinko liittää tämän koodin selaimessa suoritettavaan JavaScriptiin?

Pidä koodi palvelimellasi. Selaimelle tehty paketti paljastaa API-avaimen käyttäjille. Kutsu selaimesta omaa, todennusta käyttävää taustapalveluasi ja anna sen lähettää pyyntö GenderAPI.io:hon.

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.