क्राउडसोर्सिंग एकीकरण
Potato स्टडी को Prolific, SONA, CloudResearch Connect या प्रतिभागी ID पास करने वाले किसी भी पैनल पर चलाएं, URL लॉगिन, समापन कोड और ध्यान जांच के साथ।
Potato क्राउडसोर्स किए गए एनोटेशन इस तरह एकत्र करता है कि प्लेटफॉर्म लोगों को जिस URL पर भेजता है उसमें से प्रतिभागी ID पढ़ता है, और अंत में एक समापन कोड दिखाता है। Prolific, SONA सब्जेक्ट पूल, CloudResearch Connect, Clickworker और Microworkers, हर एक का अपना प्रोवाइडर है, और generic प्रोवाइडर उसी तरह काम करने वाले किसी भी अन्य पैनल को कवर करता है। Amazon Mechanical Turk 30 सितंबर 2026 को बंद हो गया, इसलिए वहाँ चलने वाली स्टडी को इनमें से किसी प्लेटफॉर्म पर ले जाना होगा, और नीचे "किसी स्टडी को MTurk से हटाना" खंड इसके चरण बताता है।
खुले पोर्ट पर चलाना
क्राउड वर्कर को सर्वर तक पहुँचना होता है, इसलिए इसे इंटरनेट के लिए खुले पोर्ट पर चलाएं:
potato start your-project -p 8080इसके बाद वर्कर्स https://your-server:8080/ पर पहुँचते हैं। TLS के लिए इसके आगे एक रिवर्स प्रॉक्सी लगाएं, जैसा कि प्रोडक्शन सेटअप में बताया गया है।
क्राउड प्रोवाइडर
crowdsourcing ब्लॉक प्लेटफॉर्म का नाम बताता है। Prolific, SONA, Connect, Clickworker और Microworkers के अपने प्रोवाइडर हैं, और generic किसी भी ऐसे पैनल को संभालता है जो URL में ID पास करता है और समापन कोड स्वीकार करता है, जैसे Besample, Positly, User Interviews, Testable Minds या Cint:
login:
type: url_direct
url_argument: response_id # must match id_param below
crowdsourcing:
provider: generic # or prolific, sona, connect, clickworker, microworkers
generic:
platform_label: "Besample" # shown on the done-page return button
id_param: response_id # URL parameter carrying the participant ID
capture_params: [study] # extra URL params to record
completion:
code: "BSMP-4432"
redirect_url: "https://besample.app/complete?rid={worker_id}&code={code}"
failed_code: "BSMP-FAIL" # optional, for blocked participantsredirect_url प्लेसहोल्डर {code}, {worker_id}, {session_id}, {study_id} और capture_params में सूचीबद्ध कोई भी नाम स्वीकार करता है।
हर प्रोवाइडर प्रतिभागी ID को उस URL पैरामीटर से पढ़ता है जिसका नाम login.url_argument देता है, इसलिए crowdsourcing ब्लॉक के साथ login.type: url_direct रखें और url_argument को प्रोवाइडर के id_param पर सेट करें। पासवर्ड प्रॉम्प्ट को भी url_direct लॉगिन ही बंद करता है। बिना crowdsourcing ब्लॉक वाला कॉन्फ़िग पुराना व्यवहार बनाए रखता है, जिसमें अकेला लॉगिन ही ID पढ़ता है, और नीचे दिया गया Prolific का न्यूनतम सेटअप इसी का उपयोग करता है।
Prolific
न्यूनतम सेटअप
Prolific स्टडी चलाने के लिए दो सेटिंग्स काफी हैं:
login:
type: url_direct
url_argument: PROLIFIC_PID # the default
completion_code: "YOUR-PROLIFIC-CODE"Prolific से आने वाले वर्कर्स बिना पासवर्ड पूछे अपने PROLIFIC_PID के तहत लॉग इन हो जाते हैं। काम पूरा करने पर उन्हें समापन कोड और Prolific पर वापस जाने का एक बटन दिखता है।
Prolific प्रोवाइडर
prolific प्रोवाइडर उन प्रतिभागियों के लिए एक दूसरा कोड जोड़ता है जो टास्क पूरा नहीं करते। जो प्रतिभागी ध्यान जांच की वजह से ब्लॉक हो जाता है, या ट्रेनिंग फ़ेज़ में असफल होता है, उसे समापन कोड के बजाय failed_code मिलता है:
login:
type: url_direct
url_argument: PROLIFIC_PID
crowdsourcing:
provider: prolific
prolific:
completion:
code: "C1ABCDEF" # defaults to the top-level completion_code
failed_code: "C1FAILED" # optionalस्टडी URL
अपनी Prolific स्टडी सेटिंग्स में URL को इस पर सेट करें:
https://your-server:8080/?PROLIFIC_PID={{%PROLIFIC_PID%}}&SESSION_ID={{%SESSION_ID%}}&STUDY_ID={{%STUDY_ID%}}
Prolific असली मान भर देता है। Potato प्रतिभागी ID के साथ SESSION_ID और STUDY_ID भी रिकॉर्ड करता है।
समापन पर रीडायरेक्ट करना
completion_code: "YOUR-PROLIFIC-CODE"
auto_redirect_on_completion: true
auto_redirect_delay: 5000 # millisecondsरीडायरेक्ट के बिना, अंतिम पेज कोड को क्लिक-टू-कॉपी के साथ और एक वापसी बटन दिखाता है। जब आप चाहते हैं कि वर्कर्स कोड का रिकॉर्ड अपने पास रखें, तो यही सुरक्षित डिफ़ॉल्ट है।
Prolific API एकीकरण
बड़ी स्टडी के लिए Potato, Prolific API से बात कर सकता है। इससे वह लौटाए गए या टाइम-आउट हुए वर्कर्स के पास अटकी जगहें खाली कर सकता है और सर्वर व्यस्त होने पर स्टडी रोक सकता है। क्रेडेंशियल्स को उनकी अपनी फ़ाइल में रखें:
# configs/prolific_config.yaml
token: "your-prolific-api-token"
study_id: "your-study-id"
max_concurrent_sessions: 30
workload_checker: true
workload_checker_period: 300फिर मुख्य कॉन्फ़िग को उस फ़ाइल की ओर इंगित करें:
login:
type: prolific
prolific:
config_file_path: configs/prolific_config.yaml
completion_code: "YOUR-PROLIFIC-CODE"workload_checker तब तक बंद रहता है जब तक आप उसे चालू न करें। चालू होने पर, सक्रिय वर्कर्स की संख्या max_concurrent_sessions से अधिक होते ही Potato स्टडी रोक देता है और संख्या उसके 20% तक गिरने पर फिर शुरू करता है, लेकिन केवल तभी जब स्टडी को मॉनिटर ने ही रोका हो। जो स्टडी आपने खुद रोकी है, उसे Potato आपके लिए कभी फिर से शुरू नहीं करता।
छोड़े गए काम को वापस लेना
जब कोई सबमिशन RETURNED, TIMED-OUT या REJECTED स्थिति के साथ लौटता है, तो Potato उस वर्कर को सौंपे गए लेकिन बिना एनोटेट किए आइटम खाली कर देता है ताकि कोई और उन्हें ले सके। उसके पूरे किए हुए एनोटेशन रखे जाते हैं। instance_reclaim इस व्यवहार को हर स्थिति के लिए अलग से बदलता है:
instance_reclaim:
enabled: true
prolific:
preserve_completed_annotations: true
status_policies:
TIMED-OUT:
preserve_completed_annotations: true
REJECTED:
preserve_completed_annotations: falseSONA सब्जेक्ट पूल
SONA Systems वे प्रतिभागी पूल चलाता है जिनका उपयोग कई विश्वविद्यालय कोर्स क्रेडिट के लिए करते हैं। SONA हर प्रतिभागी के लिए एक अनोखा कोड स्टडी URL में डालता है, और Potato उसी कोड को प्रतिभागी की ID के रूप में इस्तेमाल करता है:
login:
type: url_direct
url_argument: sona_code
crowdsourcing:
provider: sona
sona:
hostname: yourdept.sona-systems.com
experiment_id: 123
credit_token: your-credit-token # both from the client-side completion URL on SONA's study information page
id_param: sona_code # the default; must match login.url_argumentSONA में स्टडी URL को https://your-server.com/?sona_code=%SURVEY_CODE% पर सेट करें। जब कोई प्रतिभागी काम पूरा करता है, तो Potato SONA की सर्वर-साइड क्रेडिट कॉल के ज़रिए खुद क्रेडिट दे देता है, इसलिए प्रतिभागी को SONA पर वापस जाने वाला कोई लिंक नहीं खोलना पड़ता। अगर वह कॉल विफल हो जाती है, तो अंतिम पेज उसकी जगह SONA का क्लाइंट-साइड क्रेडिट लिंक दिखाता है। हर क्रेडिट प्रतिभागी की स्टेट में दर्ज होता है, इसलिए अंतिम पेज को दोबारा लोड करने से क्रेडिट कभी दो बार नहीं मिलता।
CloudResearch Connect
Connect प्रतिभागियों को अपने Project Link के ज़रिए किसी बाहरी स्टडी पर भेजता है, जिसमें प्रतिभागी की ID participantId में होती है और वैकल्पिक रूप से assignmentId और projectId भी होते हैं। Potato तीनों को रिकॉर्ड करता है। समापन एक निश्चित कोड से होता है, या Connect प्रोजेक्ट की सेटिंग्स में दिखाए गए समापन URL पर रीडायरेक्ट से:
login:
type: url_direct
url_argument: participantId
crowdsourcing:
provider: connect
connect:
completion:
code: "ABC123"
# or: redirect_url: "https://connect.cloudresearch.com/participant/project/<id>/complete"Potato, Connect की REST API को कॉल नहीं करता, इसलिए स्वीकृतियाँ और बोनस Connect में ही दिए जाते हैं।
Clickworker
Clickworker के एक्सटर्नल-सर्वे ऑर्डर वर्कर्स को उनकी ID के साथ आपके URL पर भेजते हैं, और समापन की जांच उस कोड से होती है जिसे आप Clickworker पर अपलोड करते हैं:
login:
type: url_direct
url_argument: worker_id
crowdsourcing:
provider: clickworker
clickworker:
id_param: worker_id # the default
completion:
code: "CW-DONE-01"प्रोवाइडर एक समापन सूचना भी भेज सकता है जो Clickworker की मार्केटप्लेस API के ज़रिए भुगतान शुरू करती है। यह पोस्टबैक प्रायोगिक है, क्योंकि इसके कॉन्ट्रैक्ट को सार्वजनिक दस्तावेज़ों से जांचा नहीं जा सका, और यह तब तक बंद रहता है जब तक कॉन्फ़िग postback_url के साथ experimental: true सेट न करे।
Microworkers
Microworkers कैंपेन हर वर्कर से कहते हैं कि वह काम पूरा करने के सबूत के तौर पर एक सत्यापन कोड वापस चिपकाए, जिसे VCODE कहा जाता है। Potato हर वर्कर का VCODE वर्कर ID और कैंपेन ID पर बने HMAC से निकालता है, इसलिए एक ही वर्कर को हमेशा एक ही कोड मिलता है, सीक्रेट के बिना कोई कोड का अनुमान नहीं लगा सकता, और प्रोवाइडर का verify_vcode मेथड किसी सबमिशन की जांच के लिए कोड की फिर से गणना करता है:
login:
type: url_direct
url_argument: mw_id
crowdsourcing:
provider: microworkers
microworkers:
id_param: mw_id # matches {{MW_ID}} in the campaign URL
capture_params: [campaign_id, slot_id]
vcode_secret: "keep-this-private"
vcode_prefix: "mw-" # optionalMicroworkers पर कैंपेन URL को https://your-server.com/?mw_id={{MW_ID}}&campaign_id={{CAMP_ID}}&slot_id={{SLOT_ID}} पर सेट करें। Microworkers एक खुली माइक्रो-टास्क क्राउड है, इसलिए इसे नीचे दी गई ध्यान जांच और गोल्ड स्टैंडर्ड के साथ इस्तेमाल करें।
Amazon Mechanical Turk (बंद)
Amazon Mechanical Turk 30 सितंबर 2026 को स्थायी रूप से बंद हो गया, और अब यह न HIT स्वीकार करता है, न वर्कर्स भेजता है। Potato का mturk प्रोवाइडर और workerId लॉगिन अब भी लोड होते हैं, इसलिए आर्काइव किया गया MTurk कॉन्फ़िग शुरू हो जाता है, पर कोई वर्कर उस तक नहीं पहुँच सकता। MTurk एकीकरण पेज पुरानी स्टडी का कॉन्फ़िग पढ़ने वालों के लिए विवरण संभालकर रखता है।
किसी स्टडी को MTurk से हटाना
MTurk स्टडी का ज़्यादातर कॉन्फ़िग बिना बदलाव के काम आता है, क्योंकि ध्यान जांच, गोल्ड स्टैंडर्ड, ट्रेनिंग, असाइनमेंट और कोटा हर प्लेटफॉर्म पर एक जैसे काम करते हैं। इसे पाँच चरणों में ले जाया जाता है:
- एक प्लेटफॉर्म चुनें। Prolific और CloudResearch Connect सामान्य शोध आबादी से भर्ती करते हैं, SONA किसी विश्वविद्यालय के अपने पूल के लिए है, और Clickworker और Microworkers खुली माइक्रो-टास्क क्राउड हैं जिन्हें ज़्यादा सख्त गुणवत्ता नियंत्रण चाहिए।
- लॉगिन बदलें।
login.type: url_directरखें, औरlogin.url_argumentकोworkerIdसे बदलकर नए प्लेटफॉर्म का ID पैरामीटर (PROLIFIC_PID,sona_code,participantId,worker_idयाmw_id) करें। - प्लेटफॉर्म ब्लॉक बदलें।
mturkब्लॉक हटा दें, क्योंकि जब तक वह ब्लॉक मौजूद है Potato अब भी अपना MTurk API क्लाइंट शुरू करता है, और इस पेज से नए प्लेटफॉर्म काcrowdsourcingब्लॉक जोड़ें। - HIT को बदलें। नए प्लेटफॉर्म पर स्टडी या प्रोजेक्ट बनाएं, उसका बाहरी URL लिंक में प्लेटफॉर्म के ID प्लेसहोल्डर के साथ अपने सर्वर की ओर इंगित करें, और प्लेटफॉर्म जो समापन कोड या रीडायरेक्ट देता है उसे सेट करें।
- गुणवत्ता नियंत्रण बनाए रखें।
attention_checks,gold_standardsऔर ट्रेनिंग फ़ेज़ को वैसा ही रहने दें, ताकि परिणाम MTurk डेटा से तुलनीय बने रहें।
गुणवत्ता नियंत्रण
ध्यान जांच
पहले से ज्ञात उत्तरों वाले आइटम, जो कतार में मिला दिए जाते हैं:
attention_checks:
enabled: true
items_file: data/attention_checks.json
frequency: 10
min_response_time: 3.0
failure_handling:
warn_threshold: 2
warn_message: "Please read items carefully before answering."
block_threshold: 5
block_message: "You have been blocked due to too many incorrect responses."min_response_time उस विफलता को पकड़ता है जिसका क्राउडसोर्सिंग में सबसे ज़्यादा खतरा होता है, यानी इतनी तेज़ी से क्लिक करते जाना जितनी तेज़ी से कोई आइटम पढ़ ही नहीं सकता।
गोल्ड स्टैंडर्ड
विशेषज्ञों द्वारा लेबल किए गए आइटम ध्यान के बजाय सटीकता मापते हैं, और डिफ़ॉल्ट रूप से चुप रहते हैं ताकि वर्कर्स को ऐसा कोई फ़ीडबैक न मिले जिससे वे उत्तर सीख लें:
gold_standards:
enabled: true
items_file: data/gold_standards.json
mode: mixed
frequency: 20
accuracy:
min_threshold: 0.7
evaluation_count: 5आइटम फ़ॉर्मेट और दोनों की रिपोर्टिंग के लिए गुणवत्ता नियंत्रण देखें।
कस्टम समापन पेज
बिल्ट-इन समापन पेज एक कोड और एक वापसी बटन संभालता है। जब आपको इससे ज़्यादा चाहिए, तो स्टडी को इसके बजाय एक surveyflow पेज से समाप्त करें:
surveyflow:
on: true
order:
- pre_annotation
- post_annotation
pre_annotation:
- surveyflow/consent.jsonl
post_annotation:
- surveyflow/end.jsonlअंतिम पेज एक pure_display आइटम है, जिसमें आपकी ज़रूरत का कोई भी लिंक या टेक्स्ट हो सकता है:
{"id":"1","text":"Thanks for participating. Click below to complete the study.","schema":"pure_display","choices":["<a href=\"https://app.prolific.com/submissions/complete?cc=YOUR-CODE\" target=\"_blank\">Complete Study on Prolific</a>"]}पूर्ण उदाहरण: Prolific स्टडी
annotation_task_name: "Sentiment Analysis Study"
task_dir: .
login:
type: url_direct
url_argument: PROLIFIC_PID
completion_code: "SENT2024"
auto_redirect_on_completion: false
hide_navbar: true
jumping_to_id_disabled: true
user_config:
allow_all_users: true
assignment_strategy: random
max_annotations_per_user: 50
num_annotators_per_item: 3
phases:
order:
- consent
- instructions
- annotation
consent:
file: data/consent.html
instructions:
file: data/instructions.html
annotation:
type: annotation
attention_checks:
enabled: true
items_file: data/attention_checks.json
frequency: 10
failure_handling:
warn_threshold: 2
block_threshold: 5
data_files:
- data/main.json
item_properties:
id_key: id
text_key: text
annotation_schemes:
- annotation_type: radio
name: sentiment
description: "What is the sentiment of this text?"
labels:
- Positive
- Negative
- Neutral
sequential_key_binding: true
output_annotation_dir: annotation_output/
export_annotation_format: jsonlस्टडी की निगरानी
स्टडी चलते समय /admin पर एडमिन डैशबोर्ड समापन दर, प्रति इंस्टेंस समय और ध्यान जांच के परिणाम दिखाता है। वहाँ पहुँचने के लिए या तो साझा admin_api_key चाहिए या view_admin_dashboard वाली कोई भूमिका:
admin_api_key: "your-shared-key"
rbac:
enabled: true
user_role_assignments:
researcher@university.edu: adminएकत्र किए गए एनोटेशन को export CLI से निर्यात करें:
python -m potato.export -c config.yaml -f csv -o ./export/सर्वोत्तम अभ्यास
- पहले पायलट चलाएं: बड़े पैमाने पर शुरू करने से पहले कुछ वर्कर्स के साथ चलाकर देखें
- उचित भुगतान करें: टास्क का समय खुद मापें और असली अवधि के हिसाब से कीमत तय करें
- स्पष्ट निर्देश लिखें: उदाहरण और अपेक्षित सीमावर्ती मामले शामिल करें
- ध्यान जांच का उपयोग करें: बिना पढ़े क्लिक करने को विश्लेषण के समय नहीं, शुरू में ही पकड़ें
- गोल्ड स्टैंडर्ड जोड़ें: ध्यान और सटीकता अलग-अलग माप हैं
- डैशबोर्ड पर नज़र रखें: समस्याएं पहले दिन ठीक करना सस्ता है और पाँचवें दिन महंगा
- अस्वीकृति के मानदंड पहले से तय करें: शुरू करने से पहले वर्कर्स को मानक पता होना चाहिए
- नियमित रूप से निर्यात करें: स्टडी बंद होने तक प्रतीक्षा न करें
आगे पढ़ें
- क्राउडसोर्स्ड स्टडी चलाना: भर्ती, भुगतान और गुणवत्ता नियंत्रण
- MTurk एकीकरण: MTurk बंद होने पर क्या बदला
- पासवर्ड-रहित लॉगिन: URL-आधारित प्रमाणीकरण
- गुणवत्ता नियंत्रण: ध्यान जांच और गोल्ड स्टैंडर्ड
- उपयोगकर्ता प्रबंधन: एक्सेस सूचियाँ, भूमिकाएँ और कोटा
कार्यान्वयन विवरण के लिए स्रोत दस्तावेज़ीकरण, Prolific संदर्भ और प्लेटफॉर्म सर्वे देखें।