รหัสสำหรับกระดาษ "Chameleon: การใช้เหตุผลเชิงองค์ประกอบแบบปลั๊กและเล่นด้วยโมเดลภาษาขนาดใหญ่"
- หากคุณมีคำถามหรือคำแนะนำใด ๆ โปรดอย่าลังเลที่จะแจ้งให้เราทราบ คุณสามารถส่งอีเมลถึง Pan Lu โดยตรงโดยใช้ที่อยู่อีเมล [email protected] แสดงความคิดเห็นบน Twitter หรือโพสต์ปัญหาเกี่ยวกับที่เก็บนี้
[หน้าโครงการ] [กระดาษ] [Twitter] [LinkedIn] [YouTube] [สไลด์]
โลโก้เบื้องต้นสำหรับ กิ้งก่า
Chameleon เป็นเฟรมเวิร์กการใช้เหตุผลเชิงองค์ประกอบแบบปลั๊กและเล่นที่เพิ่ม LLM ด้วยเครื่องมือประเภทต่าง ๆ Chameleon สังเคราะห์โปรแกรมเพื่อเขียนเครื่องมือต่าง ๆ รวมถึงโมเดล LLM รุ่นวิสัยทัศน์นอกชั้นวางเครื่องมือค้นหาเว็บฟังก์ชั่น Python และโมดูลตามกฎที่เหมาะกับความสนใจของผู้ใช้ สร้างขึ้นด้านบนของ LLM ในฐานะนักวางแผนภาษาธรรมชาติ Chameleon ทำให้เครื่องมือที่เหมาะสมในการเขียนและดำเนินการเพื่อสร้างการตอบสนองสุดท้าย

เราแสดงความสามารถในการปรับตัวและประสิทธิผลของ กิ้งก่า ในสองงาน: ScienceQa และ Tabmwp โดยเฉพาะอย่างยิ่ง กิ้งก่า กับ GPT-4 ได้รับความแม่นยำ 86.54% สำหรับ ScienceQa ซึ่งปรับปรุงอย่างมีนัยสำคัญเมื่อมีการตีพิมพ์แบบจำลองไม่กี่ครั้งที่ดีที่สุด 11.37%; การใช้ GPT-4 เป็น LLM พื้นฐาน กิ้งก่า จะเพิ่มขึ้น 17.0% ในรุ่นที่ทันสมัยซึ่งนำไปสู่ความแม่นยำโดยรวม 98.78% ใน TabMWP การศึกษาเพิ่มเติมชี้ให้เห็นว่าการใช้ GPT-4 เป็นนักวางแผนแสดงการเลือกเครื่องมือที่สอดคล้องและมีเหตุผลมากขึ้นและสามารถสรุปข้อ จำกัด ที่อาจเกิดขึ้นได้ตามคำแนะนำเมื่อเทียบกับ LLM อื่น ๆ เช่น ChatGPT
สำหรับรายละเอียดเพิ่มเติมคุณสามารถค้นหาหน้าโครงการของเราได้ที่นี่และกระดาษของเราที่นี่
เราขอแสดงความขอบคุณอย่างยิ่งต่อ Worldofai สำหรับการแสดงและแนะนำงานของเราบน YouTube!
ติดตั้งการพึ่งพา Python ที่จำเป็นทั้งหมด (สร้างโดย pipreqs ):
python==3.8.10
huggingface-hub
numpy==1.23.2
openai==0.23.0
pandas==1.4.3
transformers==4.21.1
requests==2.28.1
ติดตั้งการพึ่งพา python ที่จำเป็นทั้งหมด (คุณสามารถข้ามขั้นตอนนี้ได้หากคุณตั้งค่าการอ้างอิงก่อนและไม่จำเป็นต้องใช้เวอร์ชันอย่างเคร่งครัด):
pip install -r requirements.txt
รับคีย์ OpenAI API ของคุณจาก: https://platform.openai.com/account/api-keys
ในการใช้คีย์ OpenAI API สำหรับ Chameleon คุณ จะต้อง มีการตั้งค่าการเรียกเก็บเงิน (บัญชี AKA ที่ชำระเงิน)
คุณสามารถตั้งค่าบัญชีที่ชำระเงินได้ที่ https://platform.openai.com/account/billing/overview
รับคีย์ API Bing Search ของคุณจาก: https://www.microsoft.com/en-us/bing/apis/bing-web-search-api
คีย์ Bing Search API เป็น ทางเลือก ความล้มเหลวในการตั้งค่าคีย์นี้จะนำไปสู่การลดประสิทธิภาพเล็กน้อยในงาน ScienceQa
เครื่องมือประเภทต่าง ๆ ในสินค้าคงคลังโมดูลของเรา:

เครื่องมือที่ใช้กับ ScienceQA และ TabMWP ตามลำดับ เครื่องมือที่นำกลับมาใช้ใหม่ได้ในสองงานจะถูกเน้นเป็นสีเขียว:

การตอบคำถามวิทยาศาสตร์ (ScienceQA) เป็นมาตรฐานการตอบคำถามแบบหลายรูปแบบซึ่งครอบคลุมหัวข้อทางวิทยาศาสตร์ที่หลากหลายในบริบทที่หลากหลาย ชุดข้อมูล ScienceQa มีให้ใน data/scienceqa สำหรับรายละเอียดเพิ่มเติมคุณสามารถสำรวจชุดข้อมูลและตรวจสอบหน้าสำรวจและหน้าภาพ
สำหรับเวอร์ชันปัจจุบันผลลัพธ์สำหรับ Image Captioner และ Text Detector นั้นอยู่นอกชั้นวางและเก็บไว้ใน data/scienceqa/captions.json และ data/scienceqa/ocrs.json ตามลำดับ การโทรสดทั้งสองโมดูลนี้กำลังจะมาเร็ว ๆ นี้!
เพื่อเรียกใช้ กิ้งก่า (GPT-4):
cd run_scienceqa
python run.py
--model chameleon
--label chameleon_gpt4
--policy_engine gpt-4
--kr_engine gpt-4
--qg_engine gpt-4
--sg_engine gpt-4
--test_split test
--test_number -1 มันจะสร้างการคาดการณ์และบันทึกผลลัพธ์ที่ results/scienceqa/chameleon_gpt4_test.json results/scienceqa/chameleon_gpt4_test_cache.jsonl และ results/scienceqa/chameleon_gpt4_test_cache.json
เราสามารถรับตัวชี้วัดความแม่นยำโดยเฉลี่ยและข้ามคลาสคำถามที่แตกต่างกันโดยใช้งาน:
python evaluate.py
--data_file ../data/scienceqa/problems.json
--result_root ../results/scienceqa
--result_files chameleon_chatgpt_test_cache.jsonlเพื่อเรียกใช้ Chameleon (CHATGPT):
python run.py
--model chameleon
--label chameleon_gpt4
--policy_engine gpt-3.5-turbo
--kr_engine gpt-3.5-turbo
--qg_engine gpt-3.5-turbo
--sg_engine gpt-3.5-turbo
--test_split test
--test_number -1 กิ้งก่า ของเราเป็นรูปแบบทั่วไปของวิธี COT (Chain-of-Thought) ซึ่งโปรแกรมที่สร้างขึ้นเป็นลำดับของ Solution Generator และ Answer Generator เมื่อผ่าน --model เป็น cot modules จะถูกตั้งค่าเป็น ["solution_generator", "answer_generator"]
ในการเรียกใช้ COT (Chain-of-Thought ได้รับแจ้ง) GPT-4:
python run.py
--model cot
--label cot_gpt4
--sg_engine gpt-4
--test_split test
--test_number -1ในการเรียกใช้ COT (Chain-of-Thought Prompt) CHATGPT:
python run.py
--model cot
--label cot_chatgpt
--sg_engine gpt-4
--test_split test
--test_number -1 ชุดข้อมูล TABMWP มีปัญหาคำศัพท์ทางคณิตศาสตร์แบบตาราง 38,431 คำถามแต่ละข้อใน TabMWP นั้นสอดคล้องกับบริบทแบบตารางซึ่งนำเสนอเป็นภาพข้อความกึ่งโครงสร้างและตารางที่มีโครงสร้าง ชุดข้อมูล TABMWP มีให้ใน data/tabmwp สำหรับรายละเอียดเพิ่มเติมคุณสามารถสำรวจ DataTset และตรวจสอบหน้าสำรวจและหน้าภาพ
เพื่อเรียกใช้ กิ้งก่า (GPT-4):
cd run_tabmwp
python run.py
--model chameleon
--label chameleon_gpt4
--test_split test
--policy_engine gpt-4
--rl_engine gpt-4
--cl_engine gpt-4
--tv_engine gpt-4
--kr_engine gpt-4
--sg_engine gpt-4
--pg_engine gpt-4
--test_number -1
--rl_cell_threshold 18
--cl_cell_threshold 18 มันจะสร้างการคาดการณ์และบันทึกผลลัพธ์ที่ results/tabmwp/chameleon_gpt4_test.json results/tabmwp/chameleon_gpt4_test_cache.jsonl และ results/tabmwp/chameleon_gpt4_test_cache.json
เราสามารถรับตัวชี้วัดความแม่นยำโดยเฉลี่ยและข้ามคลาสคำถามที่แตกต่างกันโดยใช้งาน:
python evaluate.py
--data_file ../data/tabmwp/problems_test.json
--result_root ../results/tabmwp
--result_files chameleon_chatgpt_test_cache.jsonlเพื่อเรียกใช้ Chameleon (CHATGPT):
python run.py
--model chameleon
--label chameleon_chatgpt
--test_split test
--policy_engine gpt-3.5-turbo
--rl_engine gpt-3.5-turbo
--cl_engine gpt-3.5-turbo
--tv_engine gpt-3.5-turbo
--kr_engine gpt-3.5-turbo
--sg_engine gpt-3.5-turbo
--pg_engine gpt-3.5-turbo
--test_number -1
--rl_cell_threshold 18
--cl_cell_threshold 18ในการเรียกใช้ COT (Chain-of-Thought ได้รับแจ้ง) GPT-4:
python run.py
--model cot
--label cot_gpt4
--test_split test
--sg_engine gpt-4
--test_number -1ในการเรียกใช้ COT (Chain-of-Thought Prompt) CHATGPT:
python run.py
--model cot
--label cot_chatgpt
--test_split test
--sg_engine gpt-3.5-turbo
--test_number -1 Chameleon ของเราเป็นรูปแบบทั่วไปของวิธี POT (โปรแกรมที่ใช้ความคิด) ซึ่งโปรแกรมที่สร้างขึ้นเป็นลำดับของ Program Generator Program Executor และ Answer Generator เมื่อผ่าน --model เป็น pot modules จะถูกตั้งค่าเป็น ["program_generator", "program_executor", "answer_generator"]
ในการเรียกใช้หม้อ (โปรแกรมที่ได้รับแจ้งความคิด) GPT-4:
python run.py
--model pot
--label pot_gpt4
--test_split test
--pg_engine gpt-4
--test_number -1ในการเรียกใช้หม้อ (โปรแกรมที่ได้รับแจ้งความคิด) chatgpt:
python run.py
--model pot
--label pot_chatgpt
--test_split test
--pg_engine gpt-3.5-turbo
--test_number -1
Chameleon (GPT-4) สามารถปรับให้เข้ากับการสืบค้นอินพุตที่แตกต่างกันได้โดยการสร้างโปรแกรมที่ประกอบด้วยเครื่องมือต่าง ๆ และดำเนินการตามลำดับเพื่อให้ได้คำตอบที่ถูกต้อง
ตัวอย่างเช่นคำถามด้านบนถามว่า“ ผิวของสัตว์ชนิดใดถูกดัดแปลงเพื่อความอยู่รอดในสถานที่เย็น?” ซึ่งเกี่ยวข้องกับคำศัพท์ทางวิทยาศาสตร์ที่เกี่ยวข้องกับการอยู่รอดของสัตว์ ดังนั้นผู้วางแผนตัดสินใจที่จะพึ่งพาเครื่องมือ ค้นหา Bing สำหรับความรู้เฉพาะโดเมนซึ่งได้รับประโยชน์จากแหล่งข้อมูลออนไลน์มากมายที่มีอยู่

ความสามารถในการปรับตัวและความสามารถรอบตัวของ กิ้งก่า ของเราสำหรับการสืบค้นต่าง ๆ จะถูกสังเกตใน TabMWP ดังที่แสดงในตัวอย่างในรูปด้านบน
ตัวอย่างแรกเกี่ยวข้องกับการใช้เหตุผลทางคณิตศาสตร์ในแบบฟอร์มภาษี Chameleon (1) เรียกรูปแบบการดึงความรู้เพื่อระลึกถึงความรู้พื้นฐานที่ช่วยในการทำความเข้าใจตารางเฉพาะโดเมนดังกล่าว (2) อธิบายตารางในรูปแบบภาษาธรรมชาติที่อ่านได้มากขึ้นและ (3) ในที่สุดก็ขึ้นอยู่กับเครื่องมือช่วยโปรแกรมเพื่อดำเนินการ การคำนวณที่แม่นยำ
ในตัวอย่างที่สองระบบจะสร้างรหัส Python ที่สอดคล้องกับความรู้พื้นฐานที่จัดทำโดยแบบจำลองการดึงความรู้
ตัวอย่างที่สามต้องการระบบเพื่อค้นหาเซลล์ในบริบทตารางขนาดใหญ่ที่ได้รับการสืบค้นอินพุต Chameleon เรียกรูปแบบการค้นหาแถวเพื่อช่วยค้นหาแถวที่เกี่ยวข้องอย่างถูกต้องและสร้างโซลูชันภาษาผ่านแบบจำลอง LLM แทนที่จะใช้เครื่องมือที่ใช้โปรแกรม
มีการปรับปรุงการปรับปรุงที่สำคัญสำหรับ กิ้งก่า ทั้งรุ่นที่ปรับแต่งและไม่กี่ครั้งที่ได้รับการกระตุ้นให้ GPT-4/CHATGPT:

ในการแสดงภาพการคาดการณ์ที่ทำโดย Chameleon เพียงดำเนินการสมุดบันทึก Jupyter ที่สอดคล้องกับงานเฉพาะของคุณ: notebooks/results_viewer_[TASK].ipynb สิ่งนี้จะเป็นวิธีการโต้ตอบและเป็นมิตรกับผู้ใช้ในการสำรวจผลลัพธ์ที่สร้างขึ้นโดยโมเดล หรือสำรวจหน้าโครงการของเราสำหรับข้อมูลและตัวเลือกเพิ่มเติม
เครื่องมือที่เรียกว่าในโปรแกรมที่สร้างขึ้นจาก Chameleon (CHATGPT) และ Chameleon (GPT-4) บน ScienceQa:

เครื่องมือที่เรียกว่าในโปรแกรมที่สร้างขึ้นจาก Chameleon (CHATGPT) และ Chameleon (GPT-4) บน TabMWP:

ดำเนินการ notebooks/transition_[TASK]_[Model]_Engine.ipynb เพื่อให้เห็นภาพกราฟการเปลี่ยนโมดูลสำหรับโปรแกรมที่สร้างขึ้นในชุดทดสอบ
การเปลี่ยนระหว่างโมดูลในโปรแกรมที่สร้างโดย Chameleon (GPT-4) บน ScienceQa การเริ่มต้นคือสัญลักษณ์เริ่มต้นสิ้นสุดเป็นสัญลักษณ์เทอร์มินัลและอื่น ๆ เป็นสัญลักษณ์ที่ไม่ใช่เทอร์มินัล

การเปลี่ยนระหว่างโมดูลในโปรแกรมที่สร้างโดย Chameleon (GPT-4) บน TabMWPQA การเริ่มต้นคือสัญลักษณ์เริ่มต้นสิ้นสุดเป็นสัญลักษณ์เทอร์มินัลและอื่น ๆ เป็นสัญลักษณ์ที่ไม่ใช่เทอร์มินัล

demos กำหนดอินพุตการดำเนินการและเอาต์พุตสำหรับแต่ละโมดูลใน model.pymodel.py ในการแก้ไขวิธีการประเมินให้อัปเดตส่วนที่เกี่ยวข้องใน main.pyมหัศจรรย์! ฉันมักจะเปิดให้มีการสนทนาการทำงานร่วมกันหรือแม้แต่การแบ่งปันกาแฟเสมือนจริง หากต้องการติดต่อโปรดไปที่หน้าแรกของ Pan Lu สำหรับข้อมูลการติดต่อ
หากคุณพบว่า กิ้งก่า มีประโยชน์สำหรับการวิจัยและแอปพลิเคชันของคุณโปรดกรุณาอ้างอิงการใช้ bibtex นี้:
@article{lu2023chameleon,
title={Chameleon: Plug-and-Play Compositional Reasoning with Large Language Models},
author={Lu, Pan and Peng, Baolin and Cheng, Hao and Galley, Michel and Chang, Kai-Wei and Wu, Ying Nian and Zhu, Song-Chun and Gao, Jianfeng},
journal={arXiv preprint arXiv:2304.09842},
year={2023}
}