GenderAPI V2 · Οδηγός υλοποίησης

Χρήση του GenderAPI.io V2 με Python

Καλέστε το GenderAPI.io V2 από την Python με ένα παράδειγμα βασισμένο στην τυπική βιβλιοθήκη. Στείλτε ονόματα, διευθύνσεις email και ονόματα χρήστη, επεξεργαστείτε μικτές παρτίδες και διαβάστε τα πεδία data/meta.

PythonPython 3.10+HTTP στον διακομιστή

GenderAPI.io Ενημέρωση:

Προετοιμασία ενός έργου Python στον διακομιστή

Αυτός ο οδηγός καλεί το endpoint του GenderAPI.io V2 https://api.genderapi.io/api/v2/gender με το κλειδί API στην κεφαλίδα Bearer. Χρησιμοποιήστε Python 3.10 ή νεότερη έκδοση και κατεβάστε το genderapi_v2.py στο έργο σας. Το παράδειγμα χρησιμοποιεί τα urllib.request και json της τυπικής βιβλιοθήκης της Python και δεν απαιτεί κανένα πακέτο pip.

Ορίστε το GENDERAPI_API_KEY στο περιβάλλον του διακομιστή. Το YOUR_API_KEY στο παρακάτω παράδειγμα δεν είναι έγκυρο κλειδί. Μην τοποθετείτε πραγματικά διαπιστευτήρια σε αρχεία υπό έλεγχο εκδόσεων, σε κοινόχρηστα notebooks ή σε εφαρμογές που εκτελούνται στον client. Η εισαγωγή του module ή η εκτέλεσή του χωρίς επιλογές επίδειξης δεν στέλνει κανένα αίτημα.

Ρύθμιση του περιβάλλοντος Python
python3 --version
export GENDERAPI_API_KEY="YOUR_API_KEY"

Αποστολή ρητού αιτήματος μόνο με το σύνολο δεδομένων

Αποθηκεύστε τον παρακάτω κώδικα ως single.py δίπλα στο αρχείο που κατεβάσατε και εκτελέστε python3 single.py. Το βοηθητικό module στέλνει type: name, value: Alice και options.ai_mode: off σε JSON. Η πρόβλεψη βρίσκεται στο data, ενώ οι πληροφορίες για το αίτημα και τη χρέωση βρίσκονται στο meta.

Μια επιτυχής κλήση κοστίζει 1 πίστωση, ακόμη και για άγνωστο αποτέλεσμα. Το όνομα του παραδείγματος δεν εγγυάται πρόβλεψη. Το make_item δέχεται name, email ή username και απαιτεί ρητή λειτουργία AI. Προσθέστε country μόνο όταν διαθέτετε σχετικό πλαίσιο.

Πριν στείλει οτιδήποτε, το βοηθητικό module απαιτεί ένα δεκαεξαδικό κλειδί API 24 χαρακτήρων. Αυτό ελέγχει τη μορφή του κλειδιού και όχι την ύπαρξή του. Το module απορρίπτει επίσης τις επιτυχείς αποκρίσεις της δοκιμαστικής πρόσβασης IP ως μη αναμενόμενο τρόπο πρόσβασης. Ο έλεγχος γίνεται μετά τη λήψη της απόκρισης και δεν μπορεί να ακυρώσει μια δοκιμαστική πίστωση που έχει ήδη καταναλωθεί.

Μεμονωμένη αναζήτηση σε 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"])

Αποθήκευση του αποτελέσματος μαζί με τα τεκμήρια

Μια συσχέτιση που συνάγεται δεν είναι το φύλο που δηλώνει ένα άτομο. Αποθηκεύστε χωριστά την αρχική είσοδο, τα τεκμήρια που επιστράφηκαν και ό,τι έχει δηλώσει το ίδιο το άτομο. Ένα άγνωστο αποτέλεσμα είναι έγκυρο αποτέλεσμα και δεν πρέπει να γίνει μια μαντεμένη κατηγορία στην εφαρμογή σας.

ΠεδίοΧρήση
data.gender / data.result_statusΧρησιμοποιήστε male ή female μόνο μαζί με identified. Σε άγνωστο αποτέλεσμα διατηρήστε την εγγενή τιμή JSON null.
data.name / data.matchΕλέγξτε το όνομα που επιστράφηκε και τον υποψήφιο που επιλέχθηκε. Μια αντιστοίχιση σε υποσυμβολοσειρά δεν αποδεικνύει ότι η είσοδος ανήκει σε άτομο με αυτό το όνομα.
data.confidence / data.confidence_kindΟ βαθμός βεβαιότητας εκφράζεται σε κλίμακα από 0 έως 1 ή είναι null. Το observed_frequency βασίζεται σε αποθηκευμένες συχνότητες, ενώ το model_reported είναι τιμή που αναφέρει το AI. Αξιολογήστε τα όρια χωριστά για κάθε τύπο.
data.source / data.sample_countΔιακρίνετε τα dataset, ai και none. Τα αποτελέσματα του AI δεν έχουν αποθηκευμένο μέγεθος δείγματος. Ένα μέγεθος δείγματος δεν είναι μετρημένη ακρίβεια.
meta.access.modeΣε μια ενσωμάτωση με λογαριασμό ελέγξτε ότι επιστρέφεται api_key. Τα κλειδιά που λείπουν ή δεν αναγνωρίζονται μπορεί αντί γι' αυτό να χρησιμοποιήσουν την κοινόχρηστη δοκιμαστική πρόσβαση IP.
meta.usageΔιαβάστε τα charged_credits και billing_status. Ένα επιτυχές άγνωστο αποτέλεσμα χρεώνεται. Μια απόκριση που χάθηκε δεν αποδεικνύει ότι το αίτημα ήταν δωρεάν.

Επεξεργασία μιας μικτής παρτίδας με διατήρηση του id κάθε γραμμής

Το GenderAPI.io V2 επεξεργάζεται μικτές παρτίδες μέσω POST https://api.genderapi.io/api/v2/gender/batch: έως 50 στοιχεία με κλειδί λογαριασμού ή έως 10 με τη δοκιμαστική πρόσβαση IP. Αυτά τα παραδείγματα απαιτούν κλειδί λογαριασμού. Δώστε σε κάθε στοιχείο ένα σταθερό και μοναδικό id και μια ρητή λειτουργία AI. Μια παρτίδα μπορεί να συνδυάζει ονόματα, διευθύνσεις email και ονόματα χρήστη, και κάθε στοιχείο μπορεί να έχει προαιρετικό πλαίσιο country.

Διαβάστε κάθε στοιχείο στο data και τη σύνοψη στο meta.summary. Μια απόκριση HTTP 200 μπορεί να περιέχει σφάλματα μεμονωμένων στοιχείων. Μια παρτίδα στην οποία απέτυχαν όλα τα στοιχεία μπορεί να επιστρέψει μια απόκριση Problem ανώτατου επιπέδου με τα αποτελέσματα. Τα επιτυχή άγνωστα αποτελέσματα μετρώνται στο succeeded. Με τα index και id συνδέετε κάθε αποτέλεσμα με τη σωστή αρχική γραμμή.

Για μεγαλύτερες εργασίες χωρίστε την είσοδο σε ομάδες των 50 στοιχείων το πολύ και στείλτε τις αρχικά μία κάθε φορά. Αποθηκεύστε κάθε απόκριση και τη σχετική χρήση πριν προχωρήσετε στην επόμενη ομάδα. Σταματήστε σε περίπτωση σφάλματος μεταφοράς, σφάλματος πρόσβασης στον λογαριασμό ή μη επιβεβαιωμένης χρέωσης και διευκρινίστε την κατάσταση της τρέχουσας ομάδας. Εισαγάγετε παράλληλες αποστολές μόνο αφού ελέγξετε τα όρια του λογαριασμού σας. Το μέγιστο μέγεθος παρτίδας δεν εγγυάται συγκεκριμένη ικανότητα επεξεργασίας.

Αναζήτηση σε παρτίδα σε 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)

Πότε να χρησιμοποιείται AI

Το forceToGenderize είναι προαιρετικό για ονόματα, διευθύνσεις email και ονόματα χρήστη. Όταν είναι ενεργό, παραλείψτε το ai_mode ή χρησιμοποιήστε fallback. Τα off και always δεν συνδυάζονται με αυτή την επιλογή και επιστρέφουν 422. Ένα θετικό αρχικό υπόλοιπο αρκεί για να ξεκινήσει ένα αίτημα, ακόμη κι αν η τελική χρέωση κάνει το υπόλοιπο αρνητικό.

Η λειτουργία ψευδωνύμων μπορεί να επιστρέψει φύλο μαζί με name: null. Μπορεί επίσης να δώσει άγνωστο αποτέλεσμα. Ούτε η κανονική εφεδρική χρήση AI ούτε η ανάλυση ψευδωνύμων εγγυώνται σωστή απάντηση ή τιμή διαφορετική από null.

Το βοηθητικό module για Python απαιτεί πάντα ai_mode. Για την ανάλυση ψευδωνύμων χρησιμοποιήστε make_item('username', 'prenses', ai_mode='fallback', force_to_genderize=True). Το module μετατρέπει το force_to_genderize στο πεδίο JSON forceToGenderize.

Επιλογή αιτήματοςΣυμπεριφοράΠιστώσεις για επιτυχή αναζήτηση
options.ai_mode: offΧρησιμοποιεί μόνο το σύνολο δεδομένων.1, και για άγνωστο αποτέλεσμα
options.ai_mode: fallbackΕλέγχει πρώτα το σύνολο δεδομένων και έπειτα χρησιμοποιεί κανονικό AI, αν δεν επιστραφεί φύλο. Είναι η προεπιλογή για τα μεμονωμένα αιτήματα.1 συνολικά, μαζί με την εφεδρική χρήση AI
options.ai_mode: alwaysΧρησιμοποιεί απευθείας AI.2
forceToGenderize: trueΕλέγχει πρώτα το σύνολο δεδομένων και έπειτα αφήνει το AI να ερμηνεύσει ένα προσωπικό ψευδώνυμο ή ένα alias, ακόμη και χωρίς πραγματικό μικρό όνομα.1 για αποτέλεσμα από το σύνολο δεδομένων, 2 συνολικά αν χρησιμοποιηθεί AI

Απόφαση για το τι θα κάνετε μετά από σφάλμα

Τα παραδείγματα στέλνουν κάθε λειτουργία μόνο μία φορά. Δεν την επαναλαμβάνουν ποτέ αυτόματα: μια νέα αποστολή είναι νέα λειτουργία που χρεώνεται. Μια λήξη χρονικού ορίου ή ένα σφάλμα σύνδεσης σημαίνει ότι ο client δεν έλαβε πλήρη απόκριση. Δεν αποδεικνύει ότι ο διακομιστής διέκοψε την επεξεργασία ούτε ότι δεν χρεώθηκαν πιστώσεις.

Αποθηκεύστε το request_id που επιστράφηκε και την κατάσταση της χρέωσης μαζί με την εγγραφή της εργασίας σας. Το σφάλμα που δημιουργεί το παράδειγμα διατηρεί την απόκριση για ελεγχόμενη ανάλυση, αλλά μπορεί να περιέχει την αρχική είσοδο: μη γράφετε στα συνήθη αρχεία καταγραφής ούτε ολόκληρο το σφάλμα ούτε την απόκριση ούτε το κλειδί API.

ΚατάστασηΑπόφαση της εφαρμογής
Επιτυχές άγνωστο αποτέλεσμαΔιατηρήστε τα null, reason και usage. Είναι ολοκληρωμένο αποτέλεσμα που χρεώθηκε και όχι αποτυχημένη γραμμή για αυτόματη επανάληψη.
Σφάλμα επικύρωσης 422Διορθώστε την είσοδο που αναφέρεται στα πεδία του Problem Details πριν στείλετε νέο αίτημα.
401 / 403Ελέγξτε την πρόσβαση στον λογαριασμό ή το διαθέσιμο υπόλοιπο. Η εκ νέου αποστολή του ίδιου αιτήματος δεν λύνει την αιτία.
429Τηρήστε την κεφαλίδα Retry-After, αν υπάρχει. Ελέγξτε το σφάλμα και την κατάσταση της χρέωσης και έπειτα προγραμματίστε συνειδητά την επόμενη προσπάθεια.
Σφάλμα δικτύου, λήξη χρονικού ορίου ή μη αναγνώσιμη απόκρισηΚαταγράψτε ότι το αποτέλεσμα και η χρέωση δεν έχουν επιβεβαιωθεί. Διευκρινίστε την κατάσταση πριν στείλετε ξανά. Ο client δεν μπορεί να ακυρώσει μια επεξεργασία που έχει ήδη ολοκληρωθεί στον διακομιστή.
billing_status: unconfirmedΤα charged_credits και remaining_credits μπορεί να είναι null. Επικοινωνήστε με την υποστήριξη αναφέροντας το request_id πριν από νέα προσπάθεια. Μην αντικαθιστάτε το null με μηδέν πιστώσεις.
Σφάλματα σε ορισμένα στοιχεία μιας παρτίδαςΑποθηκεύστε πρώτα τα στοιχεία που ολοκληρώθηκαν. Ελέγξτε τα στοιχεία που απέτυχαν και τη σχετική χρέωση. Στείλτε ξανά μόνο τα επιλέξιμα σφάλματα και όχι ολόκληρη την παρτίδα.

Η συμπεριφορά δικτύου του παραδείγματος

Το χρονικό όριο των 10 δευτερολέπτων του urllib ισχύει για τις λειτουργίες αναμονής στα sockets. Δεν είναι εγγυημένο όριο για τη συνολική διάρκεια του αιτήματος. Το παράδειγμα απενεργοποιεί τις ανακατευθύνσεις HTTP, αναλύει τις επιτυχείς αποκρίσεις JSON και διατηρεί τις αποκρίσεις Problem του HTTP. Δεν επαναλαμβάνει ποτέ αυτόματα τα αιτήματα.

Οι τοπικοί έλεγχοι χρησιμοποιούν προσομοιωμένες αποκρίσεις μεταφοράς για επιτυχείς κλήσεις, άγνωστα αποτελέσματα, μερικώς επιτυχείς παρτίδες, πρόσβαση με λογαριασμό και σφάλματα. Επαληθεύουν τη λογική ελέγχου του παραδείγματος. Δεν μετρούν τη διαθεσιμότητα του API στην παραγωγή, την ακρίβεια του συμπερασμού ή τους χρόνους απόκρισης. Κάθε ρητή εντολή επίδειξης παρακάτω στέλνει δικό της αίτημα που χρεώνεται.

Προαιρετικές ρητές επιδείξεις σε Python
python3 genderapi_v2.py --demo single
# Run separately to submit another billable sample batch:
python3 genderapi_v2.py --demo batch

Συχνές ερωτήσεις

Γιατί η Python εμφανίζει None αντί για null;

Ο αποκωδικοποιητής JSON της Python μετατρέπει το null σε None. Διατηρήστε την άγνωστη τιμή: μην την αντικαθιστάτε με προεπιλεγμένο φύλο ούτε με μηδενικό βαθμό βεβαιότητας όταν αποθηκεύετε ή εξάγετε το αποτέλεσμα.

Καταναλώνει πιστώσεις ένα άγνωστο αποτέλεσμα;

Ναι. Μια κανονική επιτυχής αναζήτηση κοστίζει 1 πίστωση, ακόμη κι όταν το gender είναι null. Η κανονική εφεδρική χρήση AI περιλαμβάνεται σε αυτή την πίστωση. Η λειτουργία always κοστίζει 2 πιστώσεις. Το forceToGenderize κοστίζει 1 πίστωση αν το αποτέλεσμα προέρχεται από το σύνολο δεδομένων ή 2 αν χρησιμοποιηθεί AI.

Επαναλαμβάνει το παράδειγμα ένα αίτημα που απέτυχε;

Όχι. Κάθε νέο αίτημα είναι ξεχωριστή λειτουργία. Ελέγξτε το σφάλμα, τα αποτελέσματα των μεμονωμένων στοιχείων και την κατάσταση της χρέωσης πριν αποφασίσετε αν θα στείλετε ξανά. Μια απόκριση που λείπει δεν αποδεικνύει ότι η προηγούμενη προσπάθεια ήταν δωρεάν.

Πρέπει να εγκαταστήσω κάποιο πακέτο;

Όχι. Κατεβάστε το παράδειγμα απευθείας από αυτόν τον οδηγό του GenderAPI.io. Δεν έχει εξαρτήσεις εκτέλεσης από εξωτερικά πακέτα και δεν είναι ξεχωριστό SDK δημοσιευμένο στο pip ή στο npm. Ελέγξτε το και προσαρμόστε το στην εφαρμογή σας. Για τη σύμβαση του API ισχύει η τεκμηρίωση του GenderAPI.io V2.

Πηγές

Η τεκμηρίωση του API ορίζει τα αιτήματα και τις αποκρίσεις. Η τεκμηρίωση του περιβάλλοντος εκτέλεσης περιγράφει τα εργαλεία HTTP που χρησιμοποιούνται.