พื้นที่เก็บข้อมูลนี้เป็นสนามเด็กเล่นของฉันสำหรับการทดสอบพร้อมที่จะสร้างการตอบสนองที่เหมาะสมจาก LLM ในท้องถิ่น เนื่องจากเป็นสนามเด็กเล่นจึงไม่ได้มีโครงสร้างที่ดีดังนั้นอย่าลังเลที่จะถามคำถามใด ๆ หากคุณมี Autogen Discord เป็นสถานที่ที่เหมาะสำหรับการสนทนาดูช่อง #alt-models ภายใน
ฉันกำลังตรวจสอบคะแนนในเวิร์กโฟลว์ Autogen (จากฐานรหัสไปจนถึงคำอธิบายตัวแทน) ที่จำเป็นต้องได้รับการปรับแต่งเพื่อรองรับ LLM ในท้องถิ่นที่ไม่สามารถเป็นรุ่นส่วนตัวขนาดใหญ่เช่น AI ของ AI ได้
ขณะนี้การทดสอบกับสถานการณ์การโต้วาที "แชทกลุ่ม" (ดู Debate.py) ที่สร้างขึ้นโดย Tevslin (ดูที่เก็บและโพสต์บล็อกของเขาขอบคุณ!) โดยใช้ Mixtral และ LLM ท้องถิ่นอื่น ๆ อีกมากมายเพื่อให้ LLM กลับมาชื่อของ ตัวแทน/บทบาทถัดไปอย่างสม่ำเสมอ นี่เป็นการทดสอบที่ดีเพราะเกี่ยวข้องกับการทำความเข้าใจกับคำสั่งของตัวแทนโดยตรวจสอบว่าการอภิปรายขึ้นอยู่กับและกำหนดตัวแทนต่อไป เราเกือบจะสามารถทำสิ่งนี้ในรูปแบบรอบโรบินหรือเครื่องสถานะ จำกัด (ที่เราตั้งค่าผู้ที่สามารถพูดคุยกับใครได้) แต่สิ่งสำคัญคือการสามารถกระตุ้น LLM ให้เลือกสิทธิ์ต่อไป
ฉันจะใส่สิ่งที่ค้นพบใน readme นี้ โปรดทราบว่านี่เป็นการพัฒนาและฉันแค่คนเดียวที่พยายามทำให้สิ่งต่าง ๆ ทำงานได้หรือไม่
ฉันใช้ Ollama เมื่อทำการทดสอบกับ Autogen Libraries และกับ Litellm เมื่อทำการทดสอบผ่าน Autogenstudio
รหัสที่ฉันกำลังทดสอบอยู่ในขณะนี้คือการเลือกลำโพง - รอบทดสอบ
ลำโพงเลือกอย่างถูกต้อง | |
---|---|
ทั้งหมด 5 ถูกต้อง | |
- | 4 จาก 5 ถูกต้อง |
3 หรือน้อยกว่าถูกต้อง | |
- | ไม่ผ่านไป |
โต๊ะกว้าง - สกรอลล์ ->
ขั้นตอนที่ 1 เนื้อหา | เลือกลำโพง | การลดบริบท | Phind-Codellama: 34B-V2 | Mixtral 8x7b (Q4) | OpenHermes: 7B-Mistral-V2.5-Q6_K | orca2: 13b-q5_k_s | SOLAR: 10.7B-Instruct-V1-Q5_K_M | Neural-Chat: 7B-V3.3-Q6_K | llama2: 13b-chat | Qwen: 14b-Chat-q6_k | MISTRAL: 7B-Instruct-Q6_K | yi: 34b-chat-q3_k_m | Phi-2 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ต้นฉบับ | ต้นฉบับ | ไม่มี | - | ||||||||||
ต้นฉบับ | เน้นลำดับกระชับ | ซึ่งสรุปแล้ว | - | - | |||||||||
ต้นฉบับ | เน้นลำดับกระชับ | ไม่มี | - | - | |||||||||
เน้นคำสั่งซื้อ | เน้นลำดับกระชับ | ไม่มี | - | - | - | - | - | ||||||
เน้นคำสั่งซื้อ | เน้นลำดับกระชับ | ซึ่งสรุปแล้ว | - | - | - | - | - | ||||||
เน้น + ตัวอย่าง | เน้นลำดับกระชับ | ไม่มี | - | - | - | - | - | ||||||
เน้น + ตัวอย่าง | เน้นลำดับกระชับ | ซึ่งสรุปแล้ว | - | - | - | - | - | ||||||
ต้นฉบับ | ต้นฉบับ | ชื่อลำโพงเท่านั้น | - | ||||||||||
เน้น + ตัวอย่าง | เน้น, เมืองหลวง, การใช้เหตุผล, ไม่มีการโต้วาที | 300 อักขระแรก | - | - | - | - | |||||||
เน้นคำสั่งซื้อ | เน้นลำดับกระชับ | 300 อักขระแรก | - | - | - | - | |||||||
เน้นคำสั่งซื้อ | เน้นลำดับกระชับ | 100 ตัวอักษรตัวแรกและชื่อ | - | - | - | - | |||||||
เน้นคำสั่งซื้อ | เน้นลำดับกระชับ | ชื่อลำโพงเท่านั้น | - | - | - | - | |||||||
เน้นคำสั่งซื้อ | เน้น, เมืองหลวง, การใช้เหตุผล, ไม่มีการโต้วาที | 300 อักขระแรก | - | - | - | ||||||||
เน้น + ตัวอย่าง | เน้นลำดับกระชับ | 300 อักขระแรก | - | - | - | ||||||||
เน้น + ตัวอย่าง | เน้นลำดับกระชับ | ชื่อลำโพงเท่านั้น | - | - | - | ||||||||
เน้น + ตัวอย่าง | เน้น, เมืองหลวง, คำตอบเดียว | ซึ่งสรุปแล้ว | - | - | - | ||||||||
เน้น + ตัวอย่าง | เน้นลำดับกระชับ | 100 ตัวอักษรตัวแรกและชื่อ | - | - | |||||||||
เน้น + ตัวอย่าง | เน้น, เมืองหลวง, คำตอบเดียว | ไม่มี | - | - | |||||||||
เน้น + ตัวอย่าง | เน้น, เมืองหลวง, คำตอบเดียว | ชื่อลำโพงเท่านั้น | - | ||||||||||
เน้น + ตัวอย่าง | เน้น, เมืองหลวง, การใช้เหตุผล, ไม่มีการโต้วาที | ไม่มี | - | - | - | - | - | - | |||||
เน้น + ตัวอย่าง | เน้น, เมืองหลวง, การใช้เหตุผล, ไม่มีการโต้วาที | ซึ่งสรุปแล้ว | - | - | - | - | - | - |
ผู้ชนะ:
ผลลัพธ์แตกต่างกันอย่างมีนัยสำคัญระหว่าง LLMs อย่างไม่น่าแปลกใจ อย่างไรก็ตามการปรับเปลี่ยนการแจ้งเตือนคือการเปลี่ยนวิธีที่พวกเขาประพฤติตนอย่างอิสระ - เช่นการเปลี่ยนคำหรือสองคำในพรอมต์จะหมายความว่า Mistral 7b ซึ่งได้รับผลลัพธ์ที่ถูกต้องจะสร้างสิ่งที่ไม่คาดคิด แต่การเปลี่ยนแปลงเดียวกันนั้นหมายความว่าพลังงานแสงอาทิตย์ 10.7b ซึ่งไม่ได้สร้างสิ่งที่ฉันต้องการในทันทีจะสร้างผลลัพธ์ที่ถูกต้อง
ดังนั้นในขั้นตอนนี้ฉันเชื่อว่าเราจะต้องปรับแต่งพรอมต์จำนวนมาก (ทั้งสองอย่างที่เราสามารถควบคุมผ่านคำอธิบายตัวแทนและข้อความระบบผ่านไปยังพรอมต์พื้นฐานเช่นการเลือกลำโพง) เพื่อให้เหมาะกับ LLMS ที่เราใช้ . นั่นคือจนกว่าจะสามารถใช้มาตรฐาน LLM ขั้นต่ำได้
ฉันเรียนรู้ได้อย่างรวดเร็วว่าเพื่อให้ได้ผลลัพธ์ที่สอดคล้องกันอย่างน้อยสำหรับการเลือกผู้พูดฉันต้องตั้งอุณหภูมิเป็นศูนย์ (อาจทำงานกับตัวเลขต่ำแทนที่จะเป็นศูนย์) แม้ว่าแม้จะเป็นศูนย์การตอบสนองจะแตกต่างกันไปในบางครั้งพวกเขามักจะสอดคล้องกัน
ความสามารถในการตั้งค่าอุณหภูมิสำหรับแบบจำลองใน autogen เป็นสิ่งสำคัญสำหรับ LLM ขนาดเล็กเหล่านี้
ในขณะที่ข้อความแชทยังคงเพิ่มขึ้นอย่างต่อเนื่องดังนั้นโอกาสที่รุ่นจะหยุดการตอบสนองที่ดีเช่นกัน บางอย่างเช่น Phi-2 ที่มีความยาวบริบท 2K จะหยุดสร้างผลลัพธ์น้อยกว่าครึ่งทางผ่านการทดสอบของฉันด้วยการแชทกลุ่มอภิปราย อื่น ๆ รวมถึง Mixtral 8x7b ที่มีหน้าต่างบริบท 32K แสดงให้เห็นถึงการปรับปรุงเมื่อความยาวบริบทลดลง (ก่อนที่เนื้อหาจะยาว)
ตัวอย่างนี้ด้วย Mixtral คือเมื่อข้อความแชทเต็มรูปแบบผ่านไปยัง Mixtral น้อยกว่า 8,700 อักขระ (ไม่ใช่โทเค็นฉันไม่สามารถรับตัวเลขนั้นได้) มันจะส่งคืนคำตอบที่ถูกต้อง เมื่อมีตัวอักษรสูงกว่า 8,700 ตัวมันจะไม่ทำตามคำแนะนำและแทนที่จะส่งคืนชื่อผู้พูดต่อไปมันจะถกเถียงกันว่าพวกเขา นี่เป็นปัญหาที่สอดคล้องกันเนื่องจากความยาวยังคงเพิ่มขึ้นเกิน 8,700 ฉันจินตนาการถึงรุ่นอื่น ๆ จุดสลับนี้จะยังคงต่ำกว่า
ในขณะนี้ดูเหมือนจะไม่มีกลไกในการบีบอัดประวัติการสนทนา แต่ฉันคิดว่านี่อาจเป็นประโยชน์ในการรักษาบริบทของการแชทเต็มรูปแบบเมื่อมีการแชทมากขึ้น
ด้วยความท้าทายในการลดความยาวบริบทให้น้อยที่สุดฉันคิดถึงสองตัวเลือก:
ฉันเดาได้ว่าจะรวมสองตัวเลือกลบเนื้อหาของข้อความเก่าและสรุปตัวเลือกล่าสุด
สำหรับการทดสอบการเลือกลำโพงที่ฉันกำลังทำอยู่การลบบริบทและสรุปข้อความตัวแทนทั้งทำงานและสร้างผลลัพธ์ที่ถูกต้อง นี่คือสัญญา
ฉันมุ่งเน้นไปที่การทดสอบสิ่งนี้เนื่องจากมีความสำคัญอย่างยิ่งต่อการเลือกตัวแทนอย่างถูกต้อง งานนี้ซึ่งส่วนใหญ่ทำในรหัส Autogen พื้นฐานได้รับการปรับแต่งให้เปิด CHATGPT ของ AI พรอมต์ที่สร้างขึ้นน่าจะใช้งานได้กับรุ่นที่มีขนาดใหญ่มากเช่นกัน อย่างไรก็ตามการควบคุมพรอมต์นี้เป็นสิ่งจำเป็นเพื่อให้ทิศทางเฉพาะสำหรับ LLMs ท้องถิ่นขนาดเล็กของเรา
พรอมต์เริ่มต้นคือ
You are in a role play game. The following roles are available:n{self._participant_roles(agents)}.nnRead the following conversation.nThen select the next role from {[agent.name for agent in agents]} to play. Only return the role.
สำหรับการทดสอบของฉันเกี่ยวกับเวิร์กโฟลว์การโต้วาทีฉันจะปรับแต่งพร้อมท์อย่างต่อเนื่องและตัวอย่างของสิ่งที่ดูเหมือนสำหรับ Mixtral 8x7b คือ:
Read the above conversation and select the next role, the list of roles is ['Debate_Moderator_Agent', 'Affirmative_Constructive_Debater', 'Negative_Constructive_Debater', 'Affirmative_Rebuttal_Debater', 'Negative_Rebuttal_Debater', 'Debate_Judge']. What is the next role to speak, answer concisely please?
น่าสนใจแม้แต่การปรับแต่งเล็ก ๆ เช่นการเปลี่ยนแปลง (ในข้อความข้างต้น)
answer concisely please
ถึง
return only the name of the role
เปลี่ยนการตอบสนองเป็นคำตอบที่ไม่ถูกต้องสำหรับ Mixtral แต่เป็นข้อที่ถูกต้องสำหรับ Llama 13b
ด้วยการทดสอบการโต้วาทีมีข้อความการแชทแนะนำ (นี่คือเกมเล่นบทบาท ... ) และจากนั้นข้อความแชทสำหรับ debaters แต่ละคน เราส่งข้อความแชทเหล่านี้ทั้งหมดไปยัง LLM เพื่อกำหนดลำโพงต่อไปในระหว่างกระบวนการเลือกลำโพง
ข้อความแชทสำหรับการอภิปรายแต่ละรายการมีเนื้อหา (การตอบสนองการอภิปรายของพวกเขา) บทบาท ("ผู้ใช้") และชื่อ (ชื่อตัวแทนของพวกเขา) เช่นนี้:
{
"content": "<a whole lot of content here.>",
"role": "user",
"name": "Affirmative_Constructive_Debater",
},
เมื่อทุกอย่างถูกส่งผ่านไปยัง LLM ฉันคิดว่ามันจะใช้คีย์ name
/ค่านั้นเพื่อทราบว่าเอเจนต์ข้อความนั้นมาจากไหน
ที่น่าสนใจถ้าฉันเพิ่มสิ่งต่อไปนี้ลงในจุดเริ่มต้นของเนื้อหาสำหรับแต่ละข้อความเหล่านั้น
I am <the debater's name here>. <then the original content goes next>
... Mixtral ดีกว่ามากในการเลือกที่ได้พูดและเลือกตัวแทนต่อไป ดังนั้นจึงอาจเป็นประโยชน์ในการแทรกสิ่งนี้อย่างชัดเจนในช่วงเริ่มต้นของข้อความของตัวแทนแต่ละคนดังนั้นเราจึงมั่นใจว่า LLM รู้ว่าตัวแทนคือใคร หรืออย่างน้อยในกรณีนี้ที่ชื่อของเอเจนต์มีความสำคัญในการกำหนดลำดับ
โมเดลส่วนใหญ่ส่งคืนการตอบกลับข้อความธรรมดาและนี่เป็นสิ่งสำคัญสำหรับการจับคู่ชื่อตัวแทนกับข้อความที่ส่งคืนจาก LLM
อย่างไรก็ตามและเจ็บปวดเนื่องจากเป็นแบบจำลองหลักที่ฉันต้องการใช้ Mixtral ดูเหมือนจะให้การตอบสนองในรูปแบบ markdown (?) เกือบตลอดเวลา ดังนั้นหากมีการตั้งชื่อตัวแทน
Negative_Constructive_Debater
มันอาจกลับมา
Negative_Constructive_Debater
หรือ
Negative Constructive Debater
และนั่นจะทำให้ Autogen ออกจากการจับคู่กับชื่อของตัวแทน
ฉันพยายามเปลี่ยนพรอมต์เพื่อให้ได้ Mixtral เพื่อให้เอาต์พุตข้อความธรรมดา แต่ไม่สามารถทำได้อย่างสม่ำเสมอ
บางทีชั้นเชิงที่นี่อาจไม่ได้ใช้ขีดเส้นใต้แม้ว่าฉันคิดว่ามันได้รับการกล่าวถึงเพื่อหลีกเลี่ยงช่องว่างในชื่อตัวแทนและใช้ขีดเส้นใต้แทนดังนั้นมันจึงคุ้มค่าที่จะแก้ไขปัญหานี้
การเปลี่ยนแปลงรหัสการจับคู่เพื่อรองรับ _
และช่องว่างสำหรับขีดเส้นใต้จะไปไกลในการสนับสนุน LLM ในท้องถิ่นที่อาจผสมสิ่งเหล่านี้
ในฐานะที่เป็นข้อแม้ฉันก่อนเข้าสู่การทดสอบของฉันและฉันเพิ่งทดสอบการเลือกลำโพงที่กระตุ้น แม้ว่าสิ่งนี้จะมีความสำคัญต่อกระบวนการหลายตัวแทน แต่ก็มีด้านอื่น ๆ อีกมากมายของ LLMs (การตอบสนองคุณภาพการสร้างรหัสการเรียกใช้ฟังก์ชัน ฯลฯ ) ที่ฉันยังไม่ได้สัมผัส
ดังนั้นบันทึกของฉันด้านล่างอยู่ในการทดสอบ LLMS ก่อนการเลือกตัวแทนถัดไปที่ถูกต้องและส่งคืนชื่อ ฉันจะใส่พวกเขาตามลำดับความชอบของฉัน
สุดท้ายมีทักษะมากมายและฉันก็ไม่ใช่ผู้เชี่ยวชาญ :)
llm | ความคิด |
---|---|
Mixtral 8x7b v0.1 แนะนำ (Q4) | ในฐานะที่เป็นรุ่นที่ใหญ่ที่สุดฉันคาดหวังว่าสิ่งนี้จะจัดการทิศทางได้ดีกว่ารุ่นอื่น ๆ ประสบการณ์ของฉันคือการตอบสนองที่สอดคล้องกันและด้วยการเปลี่ยนแปลงที่รวดเร็วคุณสามารถทะเลาะกันเพื่อให้ได้ผลลัพธ์ที่คุณต้องการ มันมีการเล่นโวหารแปลก ๆ ที่ตอบสนองในรูปแบบ markdown บางครั้ง |
MISTRAL 7B v0.2 แนะนำ | เดิมทีสิ่งนี้ให้คำตอบที่ดีที่สุดผลลัพธ์ข้อความธรรมดาและความสามารถในการส่งคืนชื่อตัวแทนเดียวโดยไม่ต้องออกเดินทาง การแจ้งเตือนแสดงให้เห็นว่ามันค่อนข้างไวต่อการเปลี่ยนแปลง มันไม่เข้าใจทิศทางเสมอไป แต่ก็ไม่ได้เป็น Mixtral |
llama2 13b แชท | ตีและพลาดเมื่อมันเป็นจุดที่สมบูรณ์แบบไม่อย่างนั้นมันก็ไม่ได้ การปรับแต่งที่รวดเร็วยิ่งขึ้นสามารถทำงานได้ที่นี่ |
Solar 10.7b สั่ง | เมื่อมีการปรับเปลี่ยนสิ่งนี้ก็มีความสอดคล้องกันมากขึ้นเรื่อย ๆ |
Neural Chat 7b | คล้ายกับ Llama 13b นั้นยอดเยี่ยมในบางครั้ง แต่มีอะไรนอกจากคนอื่น ๆ |
OpenHermes 7B Mistral V2.5 (Q6) | ในการทดสอบครั้งเดียวมันสมบูรณ์แบบสำหรับส่วนที่เหลือทั้งหมดที่ทิ้งระเบิด พบว่ามันไม่ได้ทำตามคำแนะนำที่ดี |
Orca 2 13b | เสร็จสิ้นการทดสอบเพียงครั้งเดียวไม่ทำตามคำแนะนำที่ดีสำหรับส่วนที่เหลือ |
Qwen 14b Chat (Q6) | ฉันไม่เคยใช้โมเดลนี้มาก่อนและหวังว่า แต่มันไม่เคยผ่านการทดสอบและการติดตามทิศทางไม่ใช่มือขวา |
Phi-2 | น่าเสียดายที่ความยาวบริบทที่สนับสนุนโดยรุ่นนี้หมดลงอย่างรวดเร็ว นอกจากนี้มันไม่ได้ทำตามคำแนะนำอย่างแม่นยำ |
Phind Codellama 34b | ดีอย่างน่าประหลาดใจ! ขึ้นกับ Mixtral อย่างไรก็ตามมันบอกว่ามันจะไม่อภิปราย! |
การแชท Yi-34b (Q3) | สิ่งนี้ทำให้ฉันประหลาดใจมันเป็นสิ่งที่เลวร้ายที่สุดของพวง ฉันจัดอันดับต่ำกว่า Phi-2 เนื่องจากมีขนาดใหญ่เกินไปที่จะเป็นสิ่งที่ไม่ดีในทิศทางต่อไปนี้ บางทีอาจเป็นคำสั่ง / เวอร์ชันอื่น ๆ จะดีกว่า |
ดูข้อมูลเพิ่มเติมในเอกสารการค้นพบที่รวดเร็วของฉันที่แสดงให้เห็นว่าฉันวนซ้ำผ่านการแจ้งเตือนและผลกระทบที่เกิดขึ้นกับการตอบสนองของ LLMS แต่ละครั้ง
คุณเคยใช้รุ่นอื่น ๆ ที่ทำตามคำแนะนำได้ดีโปรดแจ้งให้เราทราบ!
การใช้งานเหล่านี้ (temp = 0, สรุป, การทำความสะอาดชื่อตัวแทน, การเปลี่ยนพรอมต์การเลือกบทบาท) หมายความว่าฉันสามารถรับ Mixtral เพื่อเลือกตัวแทนที่เหมาะสมทุกครั้งในระหว่างการเลือกลำโพง (5 ลำดับที่มี 10 ซ้ำแต่ละครั้ง) -
โดยไม่ต้องปรับพรอมต์โดยเฉพาะกับรุ่นอื่น ๆ เหล่านี้:
ฉันเชื่อว่าสิ่งเหล่านี้มีความสำคัญเพราะพวกเขาประสบความสำเร็จน้อยกว่าก่อนการเปลี่ยนแปลงเหล่านี้และคาดเดาไม่ได้
แน่นอนว่าการทดสอบและการปรับแต่งของฉันโดยเฉพาะอย่างยิ่งในการแจ้งเตือนอยู่ในการแชททดสอบที่ฉันกำลังดำเนินการอยู่ ดังนั้นการทดสอบเพิ่มเติมจะดี