วัตถุประสงค์ของการพิสูจน์แนวคิดนี้คือเพื่อประเมินสิ่งที่จำเป็นในการสร้างแชทบอทอเนกประสงค์ เชื่อถือได้ และใช้งานง่ายสำหรับผู้ใช้เพื่อมีส่วนร่วมในหัวข้อที่เกี่ยวข้องกับ Alkemio โปรเจ็กต์นี้ไม่สามารถปรับใช้ได้ตามที่เป็นอยู่ แต่ควรทำหน้าที่เป็นอินพุตอันมีค่าสำหรับการแสดงความสามารถด้าน AI เชิงสร้างสรรค์ และช่วยประเมินสิ่งที่จำเป็นสำหรับการฝังฟังก์ชันนี้ในแพลตฟอร์ม
โมเดลภาษาขนาดใหญ่ (LLM) ได้รับการปรับปรุงอย่างมีนัยสำคัญในช่วงที่ผ่านมา และไม่แพร่หลายและมีประสิทธิภาพ นี่เป็นการเปิดโอกาสมากมายสำหรับการใช้งานในด้านต่างๆ OpenAI เป็นผู้ให้บริการ LLM เชิงพาณิชย์ที่รู้จักกันดีที่สุด แต่มีตัวเลือกมากมายสำหรับโมเดล LLM ไม่ว่าจะเป็นเชิงพาณิชย์หรือโอเพ่นซอร์ส แม้ว่าสิ่งนี้จะมีตัวเลือกต่างๆ แต่ก็ยังสร้างความเสี่ยงในการล็อคอินของผู้ให้บริการด้วย
LLM เป็นเพียงองค์ประกอบหนึ่งที่จำเป็นสำหรับการนำไปปฏิบัติจริงจากโซลูชัน generative AI และ 'แบบเอกสารสำเร็จรูป' อื่นๆ อีกมากมายก็มีความจำเป็นเช่นกัน Langchain เป็นไลบรารีโอเพ่นซอร์สยอดนิยมที่ให้ Building Block เหล่านี้และสร้างเลเยอร์นามธรรม สร้างความเป็นอิสระของผู้ให้บริการ
การฝึกอบรม LLM มีราคาแพงมากสำหรับองค์กรส่วนใหญ่ แต่สำหรับการใช้งานจริงส่วนใหญ่ จำเป็นต้องรวมข้อมูลเฉพาะขององค์กรเข้าด้วยกัน แนวทางทั่วไปคือการเพิ่มบริบทเฉพาะให้กับคำถามของผู้ใช้ในพรอมต์ที่ส่งไปยัง LLM สิ่งนี้ทำให้เกิดความท้าทาย เนื่องจากโดยทั่วไป LLM จะอนุญาตเฉพาะการแจ้งเตือนที่มีขนาดจำกัดเท่านั้น (โดยทั่วไปจะอยู่ที่ประมาณโทเค็น 4,000 รายการ) ดังนั้นจึงเป็นเรื่องสำคัญที่จะต้องให้ข้อมูลบริบทที่เกี่ยวข้องและจำเป็นต้องดำเนินการดังต่อไปนี้:
โครงงานนี้ได้รับแรงบันดาลใจจากบทความมากมาย แต่เป็นเชิงทฤษฎีและปฏิบัติ ส่วนสำคัญของฐานโค้ดมาจากการสร้างแชทบอท AWS Well-Architected ด้วยโปรเจ็กต์ LangChain
โปรเจ็กต์ดังกล่าวได้รับการนำไปใช้เป็นบริการไมโครบนคอนเทนเนอร์ด้วย RabbitMQ RPC มีหนึ่งคิว RabbitMQ:
alkemio-virtual-contributor-engine-guidance
- คิวสำหรับส่งคำขอไปยังไมโครเซอร์วิสเพย์โหลดคำขอประกอบด้วย json ที่มีโครงสร้างดังต่อไปนี้ (ตัวอย่างสำหรับการสืบค้น):
{
"data": {
"userId": "userID",
"question": "What are the key Alkemio concepts?",
"language": "UK"
},
"pattern": {
"cmd": "query"
}
}
ประเภทการดำเนินการคือ:
ingest
: รวบรวมข้อมูลจากเว็บไซต์มูลนิธิ Alkemio (ผ่านแหล่งที่มา Github) และการฝังโดยใช้โมเดลข้อความ OpenAI Ada ไม่มี การร้องขอข้อมูลเพิ่มเติมreset
: รีเซ็ตประวัติการแชทสำหรับการแชทที่กำลังดำเนินอยู่ จำเป็นต้องมีรหัสผู้ใช้query
: โพสต์คำถามถัดไปในลำดับการแชท ดูตัวอย่างการตอบกลับถูกเผยแพร่ในคิวที่สร้างขึ้นอัตโนมัติ พิเศษเฉพาะ และไม่มีชื่อ
มีการใช้งานแบบร่างสำหรับภาษาโต้ตอบของแบบจำลอง (จำเป็นต้องปรับปรุงอย่างมาก) หากไม่มีการระบุรหัสภาษา ระบบจะถือว่าภาษาอังกฤษ ตัวเลือกคือ: 'EN': 'English', 'US': 'English', 'UK': 'English', 'FR': 'French', 'DE': 'German', 'ES': 'Spanish' , 'NL': 'ดัตช์', 'BG': 'บัลแกเรีย', 'UA': "ยูเครน"
*หมายเหตุ: มีการใช้งาน RESTful ก่อนหน้านี้ (ล้าสมัย) ที่ https://github.com/alkem-io/virtual-contributor-engine-guidance/tree/http-api
คำสั่งต่อไปนี้สามารถใช้เพื่อสร้างคอนเทนเนอร์จาก Docker CLI (สถาปัตยกรรมเริ่มต้นคือ amd64 ดังนั้น --build-arg ARCHITECTURE=arm64
สำหรับ amd64 builds): docker build --build-arg ARCHITECTURE=arm64 --no-cache -t alkemio/virtual-contributor-engine-guidance:v0.4.0 .
docker build --no-cache -t alkemio/virtual-contributor-engine-guidance:v0.2.0 .
Dockerfile มีอาร์กิวเมนต์การกำหนดค่าที่อธิบายตนเองบางประการ
คำสั่งต่อไปนี้สามารถใช้เพื่อเริ่มคอนเทนเนอร์จาก Docker CLI: docker run --name virtual-contributor-engine-guidance -v /dev/shm:/dev/shm --env-file .env virtual-contributor-engine-guidance
โดยที่ .env
อิงจาก .azure-template.env
หรือใช้ docker-compose up -d
กับ:
AZURE_OPENAI_API_KEY
: คีย์ OpenAI API ที่ถูกต้องOPENAI_API_VERSION
: เวอร์ชัน Azure OpenAI ที่ถูกต้อง ในขณะที่เขียนล่าสุดคือ 2023-05-15
AZURE_OPENAI_ENDPOINT
: URL พื้นฐานของ Azure OpenAI ที่ถูกต้อง เช่น https://{your-azure-resource-name}.openai.azure.com/
RABBITMQ_HOST
: ชื่อโฮสต์ RabbitMQRABBITMQ_USER
: ผู้ใช้ RabbitMQRABBITMQ_PASSWORD
: รหัสผ่าน RabbitMQAI_MODEL_TEMPERATURE
: temperature
ของแบบจำลอง ใช้ค่าระหว่าง 0 ถึง 1 1 หมายถึง คำตอบที่สุ่มมากขึ้น ใกล้ 0 - ที่เข้มงวดมากขึ้นLLM_DEPLOYMENT_NAME
: ชื่อการปรับใช้โมเดล AI gpt ใน AzureEMBEDDINGS_DEPLOYMENT_NAME
: ชื่อการปรับใช้โมเดลการฝัง AI ใน AzureAI_SOURCE_WEBSITE
: URL ของเว็บไซต์มูลนิธิที่มีข้อมูลต้นฉบับ (สำหรับการอ้างอิงเท่านั้น)AI_SOURCE_WEBSITE2
: URL ของเว็บไซต์ต้อนรับที่มีข้อมูลต้นฉบับ (สำหรับการอ้างอิงเท่านั้น)AI_LOCAL_PATH
: เส้นทางไฟล์ในเครื่องสำหรับการจัดเก็บข้อมูลAI_WEBSITE_REPO
: url ของพื้นที่เก็บข้อมูล Git ที่มีข้อมูลแหล่งที่มาของเว็บไซต์พื้นฐาน อิงจาก Hugo - โดยไม่มี httpsAI_WEBSITE_REPO2
: url ของที่เก็บ Git ที่มีข้อมูลต้นฉบับของเว็บไซต์ยินดีต้อนรับ อ้างอิงจาก Hugo - โดยไม่มี httpsAI_GITHUB_USER
: ผู้ใช้ Github ที่ใช้ในการโคลน repos เว็บไซต์AI_GITHUB_PAT
: โทเค็นการเข้าถึงส่วนบุคคลสำหรับการโคลน repos เว็บไซต์LANGCHAIN_TRACING_V2
: เปิดใช้งานการติดตาม LangchainLANGCHAIN_ENDPOINT
: จุดสิ้นสุดการติดตาม Langchain (เช่น "https://api.smith.langchain.com")LANGCHAIN_API_KEY
: คีย์ API การติดตาม LangchainLANGCHAIN_PROJECT
: ชื่อโครงการการติดตาม Langchain (เช่น "virtual-contributor-engine-guidance") คุณสามารถค้นหาค่าตัวอย่างได้ใน .azure-template.env
กำหนดค่าและสร้างไฟล์ .env
ด้วยการตั้งค่าที่อัปเดต
โปรเจ็กต์นี้ต้องติดตั้ง Python & Poetry สามารถดูการพึ่งพาเวอร์ชันขั้นต่ำได้ที่ pyproject.toml
หลังจากติดตั้ง Python & Poetry:
poetry install
poetry run python virtual_contributor_engine_guidance.py
โปรเจ็กต์นี้ต้องการ Python 3.11 เป็นอย่างน้อย และต้องติดตั้ง Go และ Hugo เพื่อสร้างเว็บไซต์เวอร์ชันท้องถิ่น ดูเอกสารประกอบ Go และ Hugo สำหรับคำแนะนำในการติดตั้ง (เมื่อใช้งานคอนเทนเนอร์ภายนอกเท่านั้น)
งานต่อไปนี้ยังคงค้างอยู่: