
Pippa เป็นโครงการ Chatbot รุ่น Open-Source Language Language (LLM) ตามกรอบ Langchain มันมีจุดมุ่งหมายเพื่อมอบประสบการณ์การสนทนาที่เป็นส่วนตัวและปรับตัวได้
Pippa รวมคุณสมบัติต่าง ๆ เพื่อปรับปรุงกระบวนการปรับตัวรวมถึงความสามารถในการปรับแต่งบุคลิกภาพของ Chatbot เอกสารการบริโภคสำหรับการเรียนรู้จดจำประวัติการสนทนาสลับระหว่างตัวละครที่แตกต่างกันและปรับให้เข้ากับความต้องการของผู้ใช้
โมดูลการดึงข้อมูล QA ได้รับแรงบันดาลใจจาก LocalGPT โดยวิศวกรรมที่รวดเร็ว
โครงการ Pippa เริ่มต้นเป็นงานอดิเรกส่วนตัวเพื่อสำรวจความเป็นไปได้ในการสร้างตัวละครลูกสาว AI แม้ว่าจะยังอยู่ในช่วงเริ่มต้นโครงการได้รับการปรับปรุงอย่างสม่ำเสมอด้วยคุณสมบัติและการปรับปรุงใหม่ บทบาทเริ่มต้นใน Pippa คือ "ระบบ" สำหรับข้อความระบบ "Pippa" ในฐานะตัวละครลูกสาวที่ห่วงใยและ "Bundy" ในฐานะพ่อของเธอ
เมื่อใช้เครื่องยนต์ TTS/STT Pippa จะใช้ Elevenlabs API คุณสามารถลงทะเบียนสำหรับบัญชีฟรี: https://elevenlabs.io
สำหรับประสบการณ์ที่ดีขึ้นกำหนดเสียงที่ไม่ซ้ำกันให้กับตัวละคร
ทดสอบด้วย Python 3.10
ในการติดตั้ง Pippa ให้ทำตามขั้นตอนเหล่านี้:
git clone https://github.com/neobundy/pippaGPT.git cd pippaGPT pip install -r requirements.txtหมายเหตุ: หากคุณพบข้อผิดพลาดคุณอาจต้องติดตั้งการพึ่งพาเพิ่มเติมเช่น
ffmpegและportaudioบน MacOS คุณสามารถใช้ Homebrewหากต้องการติดตั้งให้เรียกใช้คำสั่งต่อไปนี้:
brew install ffmpeg brew install portaudio
env_sample ไปยังไฟล์. .env ในโฟลเดอร์รูทของโครงการและเพิ่มคีย์ API ของคุณ:โปรดทราบว่า hugging_face_api_key ใช้สำหรับการใช้งานในอนาคต
OPENAI_API_KEY=
XI_API_KEY=
HUGGING_FACE_API_KEY=
SERPAPI_API_KEY=หรือคุณสามารถส่งออกตัวแปรสภาพแวดล้อมเหล่านี้ในเทอร์มินัลของคุณ
คัดลอก characters_samply.py ไปยัง characters.py และแก้ไขไฟล์เพื่อปรับแต่งชื่อและบุคลิกภาพของ AI ของคุณ
คัดลอก settings_private_sample.py ไปยัง settings_private.py settings_sample.py to settings.py และแก้ไขไฟล์เพื่อปรับแต่งการตั้งค่าของคุณ
เลือกรุ่น LLMS ใน settings.py ไฟล์ py:
DEFAULT_GPT_MODEL = "gpt-3.5-turbo"
DEFAULT_GPT_HELPER_MODEL = "gpt-3.5-turbo-16k"
DEFAULT_GPT_QA_HELPER_MODEL = "gpt-3.5-turbo-16k"บริบทขนาดใหญ่ต้องการโทเค็นมากขึ้น โทเค็น 16K เพียงพอสำหรับกรณีส่วนใหญ่
GPT-4 รุ่นสำหรับ default_gpt_model ขอแนะนำอย่างยิ่งสำหรับประสบการณ์ที่ดีกว่า แต่โปรดทราบว่ามีราคาแพง 10 เท่าและมีให้สำหรับบัญชี OpenAI แบบจ่ายล่วงหน้าเท่านั้น
settings_private.py เช่นเซิร์ฟเวอร์ zep vector store หรือ URL เซิร์ฟเวอร์เสียง ZEP_API_URL = "http://localhost:8000"
DEFAULT_MEMORY_TYPE = "Summary Buffer"
AUDIO_SERVER_URL = "http://localhost:5000" โดยค่าเริ่มต้นหน่วยความจำ "บัฟเฟอร์สรุป" ของ Langchain ใช้เพื่อรักษาบริบทการสนทนา
Pippa รองรับความทรงจำหกประเภท:
ZEP ขอแนะนำอย่างยิ่งสำหรับบริบทขนาดใหญ่ สามารถเรียกใช้งานได้ในพื้นที่เป็นคอนเทนเนอร์ Docker แก้ไข settings_private.py
บทสรุปจะปรากฏขึ้นเมื่อเลือกหน่วยความจำประเภทสรุปรวมถึง ZEP บทสรุปถูกสร้างขึ้นโดยโมเดลการสรุป GTP Helper
โปรดทราบว่าต้องใช้เวลาสักครู่สำหรับ ZEP ในการจัดทำดัชนีและสร้างบทสรุป เมื่อยังไม่พร้อม "สรุป ... โปรดอดทนรอ" ข้อความจะปรากฏขึ้น
ZEP_API_URL = "http://localhost:8000" เซิร์ฟเวอร์ ZEP สามารถเรียกใช้บนโฮสต์หรือพอร์ตใด ๆ หากคุณรันบนโฮสต์อื่นตรวจสอบให้แน่ใจว่าได้อัปเดตตัวแปร ZEP_API_URL ใน settings_private.py
เยี่ยมชม https://www.getzep.com/ เพื่อเรียนรู้วิธีเรียกใช้ ZEP
ในการเรียกใช้แอพ Pippa ให้ใช้คำสั่งต่อไปนี้:
streamlit run main.py แอพจะเริ่มต้นเซิร์ฟเวอร์เสียงโดยอัตโนมัติซึ่งฟังพอร์ต 5000 หากจำเป็นคุณสามารถเรียกใช้เซิร์ฟเวอร์เสียงด้วยตนเองโดยดำเนินการ audio_server.py
หากต้องการบริโภคเอกสารของคุณเองเพื่อให้ Pippa เรียนรู้จากขั้นตอนเหล่านี้:
docsvectordb.py เพื่อสร้างฐานข้อมูลเวกเตอร์ของคุณ: python vectordb.pyหากคุณมีคีย์ API Elevenlabs คุณสามารถใช้เครื่องยนต์ TTS (ข้อความเป็นคำพูด) กับ Pippa
STT (คำพูดเป็นข้อความ) ได้รับการจัดการโดยโมเดล Whisper-1 ของ OpenAI
ทำตามขั้นตอนเหล่านี้:
tts.py เพื่อรับชื่อเสียงและรหัสที่มีอยู่จากบัญชี Elevenlabs ของคุณ: python tts.py อัปเดตตัวแปรต่อไปนี้ใน settings_private.py ด้วยรหัสเสียงที่เหมาะสม:
VOICE_ID_AI = ""
VOICE_ID_SYSTEM = ""
VOICE_ID_HUMAN = ""audio_server.py คุณสามารถปรับแต่งคำนำหน้าคำหลักที่ใช้ใน Pippa ได้โดยแก้ไข settings.py ไฟล์. py:
PROMPT_KEYWORD_PREFIX_SYSTEM : ใช้สำหรับข้อความระบบชั่วคราว (ค่าเริ่มต้น: "ระบบ:")PROMPT_KEYWORD_PREFIX_CI : ใช้สำหรับแทนที่คำสั่งที่กำหนดเอง (ค่าเริ่มต้น: "CI:")PROMPT_KEYWORD_PREFIX_QA : ใช้สำหรับการดึง QA ตามเอกสารของคุณใน docs เอกสาร (ค่าเริ่มต้น: "QA:")PROMPT_KEYWORD_PREFIX_GOOGLE : ใช้สำหรับการค้นหาเว็บสำหรับข้อมูลที่ได้รับ (ค่าเริ่มต้น: "Google:")PROMPT_KEYWORD_PREFIX_WIKI : ใช้สำหรับการค้นหา wikipedia (ค่าเริ่มต้น: "wiki:")PROMPT_KEYWORD_PREFIX_MATH : ใช้สำหรับการสืบค้นทางคณิตศาสตร์ (ค่าเริ่มต้น: "คณิตศาสตร์:")PROMPT_KEYWORD_PREFIX_MIDJOURNEY : ใช้สำหรับการสร้าง Midjourney Prompts (ค่าเริ่มต้น: "Midjourney:") การสตรีมเปิดใช้งานโดยค่าเริ่มต้น หากต้องการปิดใช้งานให้แก้ไขไฟล์การตั้งค่า py ดังนี้:
STREAMING_ENABLED = Trueเมื่อเปิดใช้งานสตรีมมิ่งค่าใช้จ่ายจะเป็นการประมาณตามเอกสารของ OpenAI เพื่อให้ได้ค่าใช้จ่ายที่แน่นอนคุณจะต้องปิดการสตรีม
โปรดทราบว่าการคำนวณต้นทุนไม่รวมค่าใช้จ่ายอื่น ๆ ที่เกิดขึ้นจากโมเดล GPT เสริมเช่นการสรุปและ QA
ตั้งค่าคงที่ต่อไปนี้ใน settings.py :
DEFAULT_GPT_AGENT_HELPER_MODEL = "gpt-4" MAX_AGENTS_ITERATIONS = 8จำนวนการวนซ้ำกำหนดจำนวนครั้งที่เอเจนต์จะทำงาน การวนซ้ำจำนวนมากขึ้นโดยทั่วไปจะนำไปสู่คำตอบที่แม่นยำยิ่งขึ้น แต่ก็ใช้โทเค็นมากขึ้น
โปรดทราบว่าตัวแทนการค้นหาของ Google อาจต้องดำเนินการหลายคำแบบสอบถามเพื่อรับคำตอบที่ดีที่สุด
ตัวอย่างเช่นหากคุณถามว่า "ใครคือผู้ที่เก่าแก่ที่สุดในบรรดาประมุขแห่งรัฐเกาหลีใต้สหรัฐอเมริกาและญี่ปุ่น?" ตัวแทนอาจต้องสอบถามอย่างน้อย 3-4 ครั้งเพื่อรับคำตอบสุดท้าย
โมเดลเดียวกันอาจตอบสนองแตกต่างจากแบบสอบถามเดียวกัน แม้แต่ 'GPT-4' ก็ไม่ได้ผลดีที่สุดเสมอไป แต่ขอแนะนำอย่างยิ่ง ทดลองกับโมเดลที่แตกต่างกัน
โปรดทราบว่าแม้ในระดับ Langchain มันก็เป็นการทดลองอย่างมาก มันอาจไม่ทำงานตามที่คาดไว้
มันเป็นสถานการณ์ที่ยอดเยี่ยมหรือพลาดขึ้นอยู่กับทักษะการแจ้งเตือนของคุณ คุณต้องใช้คีย์ Serpapi API เพื่อใช้คุณสมบัติการค้นหาของ Google: https://serpapi.com คำตอบสุดท้ายที่ให้ไว้ทำหน้าที่เป็นพรอมต์ระดับกลางสำหรับโมเดลหลัก
ตัวแทนพยายามค้นหาหน้า Wikipedia ที่เกี่ยวข้องเป็นครั้งแรกสำหรับการสืบค้นที่กำหนด หากพบมันจะส่งคืนสรุปของหน้าและค้นหาคำศัพท์เฉพาะภายในบทสรุป
LLMs ไม่เป็นที่รู้จักสำหรับความสามารถในวิชาคณิตศาสตร์ ตัวแทนคณิตศาสตร์ให้คำตอบที่ถูกต้องสำหรับปัญหาทางคณิตศาสตร์ที่ซับซ้อนสูง
ในการจัดการฐานข้อมูลเวกเตอร์ให้เรียกใช้สคริปต์ vectordb.py
python vectordb.pyคุณมีตัวเลือกต่อไปนี้:
settings.CHROMA_DB_FOLDER พร้อมคอลเลกชันชื่อ settings.VECTORDB_COLLECTIONsettings.CONVERSATION_SAVE_FOLDER ลงในฐานข้อมูลเวกเตอร์เพื่อใช้เป็นหน่วยความจำระยะยาว โปรดทราบว่าเมื่อคุณเลือกตัวเลือกการสนทนา (e) Mbed เฉพาะการสนทนาที่ส่งออกที่มีอยู่ *.json จะถูกฝังลงในฐานข้อมูลเวกเตอร์ยกเว้น snapshot.json
หากคุณพบข้อผิดพลาดเมื่อเรียกใช้แอพให้ลองทำตามขั้นตอนต่อไปนี้:
pip install --upgrade charset_normalizer
pip install --upgrade openai
pip install --upgrade langchain
Pippa เปิดตัวภายใต้ใบอนุญาต Apache 2.0 อย่าลังเลที่จะใช้แก้ไขและแจกจ่ายรหัสเพื่อวัตถุประสงค์ส่วนตัวหรือเชิงพาณิชย์