สวัสดีซาจาล!
ภาพรวม
โปรเจ็กต์นี้ได้รับการออกแบบเพื่อแสดงแอปพลิเคชันแชทบอทที่ครอบคลุมซึ่งใช้ประโยชน์จากโมเดล GPT-4 ของ OpenAI พร้อมด้วยความสามารถล่าสุดของ Langchain รวมถึง Langchain Expression Language และ LangGraph ซึ่งผสานรวมกับอินเทอร์เฟซ Gradio เพื่อการโต้ตอบที่ง่ายดาย
มันถูกห่อหุ้มไว้ในคอนเทนเนอร์ Docker เพื่อความสะดวกในการปรับใช้และความสามารถในการปรับขนาด
เริ่มต้นใช้งาน
การสร้างคอนเทนเนอร์นักเทียบท่า
- โคลนที่เก็บไปยังเครื่องของคุณ:
git clone <repository-link>
cd <repository-name>
- สร้างอิมเมจ Docker จาก Dockerfile ที่ให้ไว้ในโปรเจ็กต์:
docker build -t hello-sajal-app .
คำสั่งนี้สร้างอิมเมจ Docker ชื่อ hello-sajal-app ตามคำแนะนำใน Dockerfile
- เรียกใช้แอปพลิเคชัน
หลังจากสร้างอิมเมจแล้ว คุณสามารถรันแอปพลิเคชันโดยใช้คำสั่งต่อไปนี้:
docker run -p 7860:7860 gradio-openai-app
คำสั่งนี้จะรันคอนเทนเนอร์และแมปพอร์ต 7860 ของคอนเทนเนอร์กับพอร์ต 7860 บนโฮสต์ของคุณ ทำให้คุณสามารถเข้าถึงแอปพลิเคชัน Gradio ผ่านเว็บเบราว์เซอร์ของคุณได้
- การเข้าถึงแอปพลิเคชัน เมื่อคอนเทนเนอร์ Docker ทำงาน ให้เปิดเว็บเบราว์เซอร์แล้วไปที่ http://localhost:7860 เพื่อโต้ตอบกับแอปพลิเคชัน Gradio
ภายใต้ประทุน
ทั้งคอนเทนเนอร์นักเทียบท่าและแอป gradio เป็นไปตามโฟลว์:
- src/ingest_data.py: การแยกข้อมูลและการนำเข้าข้อมูลลงในฐานข้อมูลเวกเตอร์ ChromaDB ซึ่งคงอยู่ในดิสก์
- src/app.py: การเริ่มต้นแอป gradio ซึ่งขับเคลื่อนโดย langchain เพื่อการประสาน
ไดเร็กทอรีและไฟล์
- ข้อมูล:
- source.md: แหล่งที่มาของข้อมูลเกี่ยวกับ Sajal Sharma ในรูปแบบมาร์กดาวน์
- chroma_db: ไดเรกทอรีคงอยู่สำหรับ chromadb
- src:
- app.py: จุดเริ่มต้นสำหรับแอป, โค้ดสำหรับแอป gradio
- graph.py: โค้ดสำหรับกราฟการเรียบเรียง langgraph
- ingest_data.py: โค้ดสำหรับการดึงข้อมูล การแปลง และการนำเข้าข้อมูล
- ดึงข้อมูล.py: รหัสสำหรับการค้นหาบนดัชนีเวกเตอร์ ChromaDb
- chains/*.py: โซ่ langchain แบบกำหนดเองและนอกกรอบสำหรับฟังก์ชัน LLM เฉพาะ
ส่วนประกอบ
- ChromaDB สำหรับการจัดทำดัชนีและค้นหาเอกสารที่เป็นก้อน
- Langchain สำหรับวิศวกรรมการไหล
- โมเดล OpenAI สำหรับดำเนินการเรียก LLM
- Gradio สำหรับส่วนหน้าการแชทขั้นพื้นฐาน
- Langsmith สำหรับการติดตามอย่างรวดเร็ว
คุณสมบัติและสถาปัตยกรรมของแอป GenAI
แอปพลิเคชันใช้งาน langchain อย่างหนักสำหรับ prompts, chains, tools, การเรียกฟังก์ชัน LLM และวิศวกรรมโฟลว์ ซึ่งสาธิตกรณีการใช้งานขั้นสูงบางส่วน
สถาปัตยกรรมระดับสูง:
ข้อความขาเข้าแต่ละข้อความจากผู้ใช้จะต้องผ่านโมดูลสำหรับการจดจำเจตนา, RAG, RAG การแก้ไข และสายโซ่ Smalltalk
แผนภาพต่อไปนี้แสดงถึงการไหลของข้อความผู้ใช้ขาเข้าแต่ละข้อความไปยังแอปแชท: