โครงการนี้มาจากแนวคิดง่ายๆ: ถ้าคุณสามารถให้รหัสฐานทั้งหมดแก่ LLM แทนที่จะเป็นเพียงชิ้นเล็ก ๆ ผู้ช่วยการเข้ารหัสส่วนใหญ่เช่นนักบินร่วมทำงานในขอบเขตที่ จำกัด แต่ฉันต้องการบางสิ่งที่สามารถจัดการกับบริบททั้งหมดของโครงการ
ด้วยการรวมรหัสเบสเต็มรูปแบบเข้ากับ Generation Retrieval-Augmented (RAG) POC นี้มีจุดมุ่งหมายเพื่อปรับปรุงคุณภาพและความเกี่ยวข้องของคำแนะนำรหัส เป้าหมายคือการดูว่าการมีรหัสที่สมบูรณ์สำหรับการสืบค้นแบบเรียลไทม์สามารถเพิ่มประสิทธิภาพการผลิตได้อย่างไร
Coderag เป็นเครื่องมือดึงรหัสและการเสริมรหัส AI ที่ใช้ประโยชน์จากโมเดลของ OpenAI (เช่น gpt-4 หรือ gpt-3.5-turbo ) สำหรับ Codebase แบบเรียลไทม์การสืบค้นการจัดทำดัชนีและการปรับปรุง โครงการนี้รวมระบบการดึง (RAG) การดึงข้อมูล (RAG) เพื่อช่วยให้นักพัฒนาค้นหาอย่างราบรื่นผ่านรหัสรับคำแนะนำและใช้การปรับปรุง
.env สำหรับคีย์ API การเลือกรุ่นและไดเรกทอรีgit clone https://github.com/yourusername/CodeRAG.git
cd CodeRAGสร้างสภาพแวดล้อมเสมือนจริง (แนะนำ):
python3 -m venv venv
source venv/bin/activate # On Windows use `venvScriptsactivate`ติดตั้งแพ็คเกจที่ต้องการ:
pip install -r requirements.txt สร้างไฟล์ .env ในรูทของโครงการและเพิ่มตัวแปรต่อไปนี้:
OPENAI_API_KEY=your_openai_api_key
OPENAI_EMBEDDING_MODEL=text-embedding-ada-002
OPENAI_CHAT_MODEL=gpt-4o
WATCHED_DIR=path_to_your_code_directory
FAISS_INDEX_FILE=path_to_faiss_index
EMBEDDING_DIM=1536 # Modify if you're using a different embedding model เริ่มต้นแบ็กเอนด์ :
ในการเริ่มต้นแบ็กเอนด์ (การจัดทำดัชนีการฝังและการตรวจสอบ):
python main.pyเริ่มต้นส่วนหน้า :
เพื่อเปิดตัว UI Streamlit:
streamlit run app.pymain.py : สคริปต์หลักในการเรียกใช้แอปพลิเคชันprompt_flow.py : จัดการการสืบค้น API ของ OpenAI และจัดการประวัติการค้นหาและการสนทนาcoderag/config.py : เก็บตัวแปรการกำหนดค่าและสภาพแวดล้อมcoderag/search.py : จัดการฐานข้อมูลเวกเตอร์ (FAISS) ค้นหาตัวอย่างโค้ดที่เกี่ยวข้อง.env : ถือการตั้งค่าเฉพาะสภาพแวดล้อม (คีย์ OpenAI API, การกำหนดค่าแบบจำลอง ฯลฯ )requirements.txt : แสดงรายการการพึ่งพา Python ที่จำเป็นในการเรียกใช้โครงการอย่าลังเลที่จะแยกที่เก็บนี้ปัญหาเปิดและส่งคำขอดึง
git checkout -b feature/your-feature )git commit -am 'Add new feature' )git push origin feature/your-feature )โครงการนี้ได้รับใบอนุญาตภายใต้ใบอนุญาต Apache ดูไฟล์ใบอนุญาตสำหรับรายละเอียด