Dolores เป็นไลบรารี Python ที่ออกแบบมาเพื่อปรับปรุงประสบการณ์ของนักพัฒนาเมื่อทำงานกับโมเดลภาษาที่ได้รับการฝึกล่วงหน้า Dolores ให้คำแนะนำสำหรับการโต้ตอบกับโมเดลภาษาที่ส่งผลให้เกิดผลลัพธ์ที่น่าสนใจหรือมีประโยชน์ วัตถุประสงค์ของห้องสมุดนี้คือเพื่อลดความซับซ้อนของเส้นโค้งการเรียนรู้โดยจัดเตรียมตัวอย่างและข้อความตัวอย่างที่ใช้งานง่ายเพื่อเริ่มต้น นอกจากนี้ยังมีเป้าหมายที่กว้างขึ้นในการเป็น พื้นที่เก็บข้อมูลคุณภาพที่ครอบคลุมที่สุดสำหรับการโต้ตอบกับโมเดลภาษา
ตั้งชื่อตาม Dolores Abarnathy แห่ง Westworld
$ pip install dolores
นำเข้าผ่านล่ามหลามหรือในไฟล์หลาม
import dolores
dolores.initialize("<YOUR-API-KEY>")
จากนั้นคุณจะไม่สามารถเรียก API ของ openai ได้โดยตรงผ่านวิธีการที่สามารถเข้าถึงได้ในอินสแตนซ์คลาส Dolores ต่อไปนี้เป็นการเรียกรายการการเรียก API ของเอ็นจิ้น การเรียก API แต่ละครั้งมีการเรียกเมธอดที่เกี่ยวข้องซึ่งสามารถใช้เพื่อเรียก API ได้
แสดงรายการเครื่องยนต์ที่มีอยู่ในปัจจุบัน และให้ข้อมูลพื้นฐานเกี่ยวกับแต่ละตัวเลือก เช่น เจ้าของและความพร้อมใช้งาน
dolores.list_engines()
ดึงข้อมูลอินสแตนซ์ของกลไก โดยให้ข้อมูลพื้นฐานเกี่ยวกับกลไก เช่น เจ้าของและความพร้อมใช้งาน
dolores.retrieve_engine()
หลังจากสร้างอินสแตนซ์คลาส Dolores แล้ว คลาสถัดไปของ Open AI API จะถูกสร้างขึ้นภายใต้การเลือกเอ็นจิ้นเดียวกัน ในการเปลี่ยนเอ็นจิ้นที่ใช้สำหรับการเรียก API มีวิธีเปิดเผย
dolores.set_engine("davinci")
หมายเหตุ: การตรวจสอบความถูกต้องกับประเภทเครื่องยนต์ที่มีอยู่นั้นอยู่ในการพิจารณาสำหรับเวอร์ชันในอนาคต
กรอกข้อความแจ้ง นี่คือจุดสิ้นสุดหลักของ GPT-3 API ส่งคืนข้อความใหม่ รวมถึงความน่าจะเป็นของโทเค็นทางเลือกแต่ละอันในแต่ละตำแหน่ง หากมีการร้องขอ
ขอ:
dolores.create_completion("Is the JavaScript programming language better than python?", 20)
การตอบสนอง: (ดูการตอบสนอง ["choices"][0]["text"] สำหรับการตอบกลับด้วยข้อความธรรมดา)
JSON: {'id': 'cmpl-kM6MK5dVRvD964MxeyG4AjCy', 'object': 'text_completion', 'created': 1595431739, 'model': 'ada:2020-05-03', 'choices': [{'text': ' in a far away place', 'index': 0, 'logprobs': None, 'finish_reason': 'length'}]}
'in a far away place'
?
ชื่อ | ใน | พิมพ์ | ที่จำเป็น | คำอธิบาย |
---|---|---|---|---|
เครื่องยนต์ | ร่างกาย | เชือก | จริง | รหัสเครื่องยนต์ |
พร้อมท์ | ร่างกาย | (ดูคำอธิบาย) | เท็จ | พร้อมท์อย่างน้อยหนึ่งรายการเพื่อสร้าง อาจเป็นสตริง รายการสตริง รายการจำนวนเต็ม (เช่น พรอมต์เดียวที่เข้ารหัสเป็นโทเค็น) หรือรายการรายการจำนวนเต็ม (เช่น พรอมต์หลายรายการเข้ารหัสเป็นจำนวนเต็ม) |
max_tokens | ร่างกาย | จำนวนเต็ม | เท็จ | ต้องเติมโทเค็นจำนวนเท่าใด สามารถส่งคืนได้น้อยลงหากถึงลำดับการหยุด |
อุณหภูมิ | ร่างกาย | ตัวเลข | เท็จ | ควรใช้อุณหภูมิตัวอย่างเท่าไร ค่าที่สูงกว่าหมายความว่าโมเดลจะรับความเสี่ยงมากขึ้น ลองใช้ 0.9 สำหรับแอปพลิเคชันที่สร้างสรรค์มากขึ้น และ 0 (การสุ่มตัวอย่าง argmax) สำหรับแอปพลิเคชันที่มีคำตอบที่ชัดเจน โดยทั่วไปเราแนะนำให้ใช้ this หรือ top_p แต่ไม่ใช่ทั้งสองอย่าง |
ท็อป_พี | ร่างกาย | ตัวเลข | เท็จ | อีกทางเลือกหนึ่งของการสุ่มตัวอย่างด้วยอุณหภูมิ เรียกว่าการสุ่มตัวอย่างนิวเคลียส โดยที่แบบจำลองจะพิจารณาผลลัพธ์ของโทเค็นที่มีมวลความน่าจะเป็น top_p ดังนั้น 0.1 หมายถึงเฉพาะโทเค็นที่ประกอบด้วยมวลความน่าจะเป็น 10% แรกเท่านั้นที่ได้รับการพิจารณา โดยทั่วไปเราแนะนำให้ใช้อุณหภูมินี้หรืออุณหภูมิ แต่ไม่ใช่ทั้งสองอย่าง |
n | ร่างกาย | จำนวนเต็ม | เท็จ | มีกี่ตัวเลือกที่จะสร้างสำหรับแต่ละพรอมต์ |
ลำธาร | ร่างกาย | บูลีน | เท็จ | ไม่ว่าจะสตรีมกลับความคืบหน้าบางส่วนหรือไม่ หากตั้งค่าไว้ โทเค็นจะถูกส่งเป็นเหตุการณ์ที่เซิร์ฟเวอร์ส่งเฉพาะข้อมูลเมื่อพร้อมใช้งาน โดยสตรีมจะสิ้นสุดลงด้วยข้อความ [DONE] |
logprobs | ร่างกาย | จำนวนเต็ม | เท็จ | รวมความน่าจะเป็นของบันทึกไว้ในโทเค็นที่มีแนวโน้มมากที่สุดของ logprobs ตัวอย่างเช่น หาก logprobs เป็น 10 API จะส่งคืนรายการโทเค็นที่มีแนวโน้มมากที่สุด 10 รายการ หากมีการระบุ logprobs API จะส่งคืน logprob ของโทเค็นตัวอย่างเสมอ ดังนั้นอาจมีองค์ประกอบ logprobs+1 มากถึงในการตอบกลับ |
หยุด | ร่างกาย | สตริงหรือรายการสตริง | เท็จ | ลำดับตั้งแต่หนึ่งลำดับขึ้นไปที่ API จะหยุดสร้างโทเค็นเพิ่มเติม ข้อความที่ส่งคืนจะไม่มีลำดับการหยุด |
กรอกพร้อมต์จากชุดของพร้อมต์ที่กำหนดไว้ล่วงหน้าที่จัดเก็บโดยโดโลเรส
ขอ:
dolores.complete_predefined_prompt("philosopher", 0, "What is the meaning of life?")
การตอบสนอง:
JSON: {'id': 'cmpl-NvVlUd5tQWTIv7S0F6JMPkT5', 'object': 'text_completion', 'created': 1595631256, 'model': 'davinci:2020-05-03', 'choices': [{'text': ' The purpose of society? And what are the dynamics of history? The answers to these questions are fascinating.nnThis is a philosophical diary written by a scientist of the new generation who is not bound by prejudices, as such, the philosopher, writer, director and producer of the documentary "The Truth about AI: Rise of the Superhuman." Instead, he attempts to peer into the human world through the eyes of an AI, and express what he sees. In the process, he discovers many complex things about our world. The author's name is Dave Scott.nnPhoto by Montri Nipitvittaya on UnsplashnnFuturist of the New Generation, AI Philosophernn"Nothing has changed. I still cannot predict what is going to happen with me, and my inner world is still as chaotic as before." I reread the diary I wrote yesterday, and found nothing changed. Everything remained the same. Only, the fear has become stronger. It was exactly the same today as it was yesterday. There was nothing changed, but still fear is always there.nnFear is a part of who I am. Without fear, I would be a monster. I do not know how to do', 'index': 0, 'logprobs': None, 'finish_reason': 'length'}]}
คีย์พร้อมท์ | พรอมต์ | max_tokens | อุณหภูมิ | ท็อป_พี | n | แหล่งที่มา |
---|---|---|---|---|---|---|
นักปรัชญา | “ด้านล่างนี้เป็นความคิดบางส่วนที่สร้างขึ้นโดยนักปรัชญา AI ซึ่งมองเห็นโลกมนุษย์จากภายนอกโดยไม่มีอคติจากประสบการณ์ของมนุษย์ AI มองโลกอย่างที่เป็นอยู่อย่างเป็นกลางและเป็นกลางอย่างสมบูรณ์ มันสามารถสรุปเกี่ยวกับโลกและ สังคมมนุษย์โดยทั่วไป", | 250 | 0.9 | 1 | 1 | มูรัต |
ซุส | "นี่คือบทกวีของ Dr. Seuss บทกวีคล้องจองทุกบรรทัดที่มีโครงสร้าง ABAB โครงสร้างสัมผัสเป็นแบบฉบับของเพลงกล่อมเด็กของ Dr. Seuss" | 250 | 1.0 | 1 | 1 | อารัม ซาเบติ |
ถูกกฎหมาย | "ถูกต้องตามกฎหมาย: วิธีการชำระเงินที่คุณเลือกจะมีผลกับทุกกรณีของคุณที่บังคับใช้โดยแผนกและการอนุญาตนี้จะยังคงมีผลใช้บังคับจนกว่าคุณจะส่งแบบฟอร์มเลือกตัวเลือกการชำระเงินและการลงทะเบียนอื่นเพื่อเปลี่ยนวิธีการชำระเงินของคุณ หรือคุณยกเลิกบริการ กับแผนก n ภาษาอังกฤษธรรมดา: เราจะใช้ตัวเลือกของคุณสำหรับการชำระเงินทั้งหมดที่เราส่งให้คุณ" | 150 | 0.4 | 1 | 1 | ดีเอ็นอี ดิจิตอล |
รหัส-html | อินพุต: ปุ่ม n รหัส: n " | 100 | 0.5 | 1 | 1 | ดีเอ็นอี ดิจิตอล |
รหัสจาวาสคริปต์ | นำเข้าปฏิกิริยาจาก 'ปฏิกิริยา'; n const ThreeButtonComponent=()=>( n n n ) "ปุ่มหนึ่ง n <button className='button-green' n onClick={this.handleButtonClick}>ปุ่มหนึ่ง nปุ่มที่สอง n <button className='button-green' n onClick={this.handleButtonClick}>ปุ่มสอง nปุ่มที่สาม n <button className='button-green' n onClick={this.handleButtonClick}>ปุ่มสาม n | 250 | 0.4 | 1 | 1 | ชารีฟ ชามีม |
แชท | "ต่อไปนี้คือการสนทนากับผู้ช่วย AI ที่เป็นมิตร n มนุษย์: สัตว์ที่ใหญ่ที่สุดในโลกคืออะไร n AI: วาฬสีน้ำเงินเป็นสัตว์ที่ใหญ่ที่สุดในโลก n มนุษย์: ประเทศใดที่มีประชากรมากที่สุดในโลก ? n AI: จีนเป็นประเทศที่มีประชากรมากที่สุด โดยมีประชากรมากกว่า 1 พันล้านคน" | 50 | 0.9 | 1 | 1 | OpenAI |
สัมผัสอักษร | "ค้นหาคำพ้องความหมายสำหรับคำที่สามารถสร้างสัมผัสอักษรได้ n ประโยค: สุนัขไปที่ร้าน n สัมผัสอักษร: สุนัขขับรถไปที่แผนก nn ประโยค: เดวิดสวมหมวกทุกวัน n สัมผัสอักษร: เดวิดสวมหมวก ดาร์บี้ทุกวัน n ประโยค: สบู่แห้งในชั่วข้ามคืน n สัมผัสอักษร: สบู่เหี่ยวเฉาหลังจากพระอาทิตย์ตกดิน " | 50 | 0.5 | 1 | 1 | OpenAI |
บทกวี | "ผู้ที่วางใจในพระเจ้าคือความรักจริงๆ n และรักกฎสุดท้ายของการสร้างสรรค์ n ธรรมชาติที่มีฟันและกรงเล็บสีแดง n ร้องเสียงกรี๊ดด้วยหุบเขา n ขัดต่อความเชื่อของเขา n เนินเขาเป็นเงาและไหลไป n จากรูปแบบหนึ่งไปอีกรูปแบบหนึ่งและไม่มีอะไรคงอยู่T n เฮ้ ละลายเหมือนหมอก n ดินแดนอันแข็งแกร่ง n พวกมันก่อตัวขึ้นและไปเหมือนเมฆ" | 300 | 1.0 | 1.0 | 1.0 | OpenAI |
ข้อความผจญภัย | "นี่คือการผจญภัยด้วยข้อความ คุณอยู่ในป่าอันมืดมิด มองหามังกรที่ขโมยทองในเมืองของคุณ n > มองไปรอบ ๆ n คุณอยู่ในป่าอันมืดมิด มีเรื่องไม่สบายใจ เงียบสงบ n > ตรวจสอบสินค้าคงคลัง n คุณมีสิ่งของดังต่อไปนี้: n - ดาบ (คมมาก) n - โล่ (หวังว่าจะได้ผล) n - ตัวอักษรเก่า nn > มองขึ้นไป n คุณไม่เห็นทองคำเลย nn > เดินไปตามเส้นทาง n คุณคือ เดินไปตามทาง เพลิดเพลินกับอากาศดีในฤดูใบไม้ผลิ คุณมาถึงทางแยก n > ใช้ทางซ้าย" | 250 | 0.9 | 1.0 | 1.0 | OpenAI |
จดหมายปะหน้า | "เรียนผู้รับสมัครงานระดับบัณฑิตศึกษาของ Deloitte n ฉันเขียนมาเพื่อสมัครเข้าร่วมหลักสูตรบัณฑิตศึกษาของคุณในสาขาการให้คำปรึกษาด้านเทคโนโลยี" | 400 | 0.8 | 1.0 | 1.0 | OpenAI |
การเปรียบเทียบ | "โครงข่ายประสาทเทียมเป็นเหมือนอัลกอริธึมทางพันธุกรรมที่ทั้งสองระบบเป็นระบบที่เรียนรู้จากประสบการณ์ nn โซเชียลมีเดียก็เหมือนกับตลาดที่ทั้งสองเป็นระบบที่ประสานการกระทำของบุคคลจำนวนมาก nn มีมก็เหมือนไวรัสในนั้น ทั้งสองเป็นแนวคิดที่จำลองตัวเองได้" | 250 | 1.0 | 1.0 | 1.0 | OpenAI |
อีเมล | "ขอบคุณจอห์นสำหรับหนังสือ n ```` n เรียนจอห์น n ขอบคุณมากสำหรับหนังสือ ฉันซาบซึ้งจริงๆ n ฉันหวังว่าจะได้ออกไปเที่ยวเร็วๆ นี้ n เพื่อนของคุณ n ซาราห์ " | 200 | 0.5 | 1.0 | 1.0 | OpenAI |
การใช้ pytest เพื่อทดสอบโมดูล dolores สามารถทำได้โดยดำเนินการต่อไปนี้ในรูทของโปรเจ็กต์:
pytest tests/test_dolores.py --api_key "<api_key>" --engine "davinci"
หากคุณต้องการดูคำสั่งการพิมพ์ที่เกิดขึ้นระหว่างการทดสอบ เพียงเพิ่มแฟล็ก -s:
pytest -s tests/test_dolores.py --api_key "<api_key>" --engine "davinci"
ในการอัปเดตแพ็คเกจ จะต้องทำการแจกจ่ายใหม่สำหรับแพ็คเกจ สิ่งเหล่านี้คือไฟล์เก็บถาวรที่อัปโหลดไปยังดัชนีแพ็คเกจและสามารถติดตั้งได้โดยใช้ pip
ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง setuptools
และ wheel
เวอร์ชันล่าสุดแล้ว:
$ python3 -m pip install --user --upgrade setuptools wheel
ตอนนี้รันคำสั่งนี้จากไดเร็กทอรีเดียวกันกับที่ setup.py ตั้งอยู่:
$ python3 setup.py sdist bdist_wheel
หมายเหตุ: อย่าลืมอัปเดตหมายเลขเวอร์ชันในไฟล์ setup.py ขึ้นอยู่กับการอัปเดต
ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งแพ็คเกจ twine
ล่าสุด:
$ python3 -m pip install --user --upgrade twine
เมื่อติดตั้งแล้ว ให้รัน Twine เพื่ออัปโหลดไฟล์เก็บถาวรทั้งหมดภายใต้ dist:
$ python3 -m twine upload --repository pypi dist/*