189 lines
4.4 KiB
Markdown
189 lines
4.4 KiB
Markdown
# Using Prompts with Docker
|
|
|
|
## Overview
|
|
|
|
Thư mục prompts được mount từ host vào Docker container, cho phép bạn chỉnh sửa prompts mà **không cần rebuild Docker image**.
|
|
|
|
## Volume Mapping
|
|
|
|
Trong `docker-compose.yml`:
|
|
|
|
```yaml
|
|
volumes:
|
|
- ./lightrag/prompts:/app/lightrag/prompts
|
|
```
|
|
|
|
**Host Path:** `./lightrag/prompts` (trên máy của bạn)
|
|
**Container Path:** `/app/lightrag/prompts` (trong Docker container)
|
|
|
|
## Cách sử dụng
|
|
|
|
### 1. Chỉnh sửa Prompts
|
|
|
|
Chỉ cần edit file `.md` trong thư mục `lightrag/prompts/` trên host:
|
|
|
|
```bash
|
|
# Ví dụ: Chỉnh sửa entity extraction prompt
|
|
notepad lightrag/prompts/entity_extraction_system_prompt.md
|
|
# hoặc
|
|
code lightrag/prompts/entity_extraction_system_prompt.md
|
|
```
|
|
|
|
### 2. Áp dụng thay đổi
|
|
|
|
Sau khi chỉnh sửa, restart container để load prompts mới:
|
|
|
|
```bash
|
|
docker-compose restart lightrag
|
|
```
|
|
|
|
**Lưu ý:** Container sẽ tự động đọc file prompts mới khi khởi động lại.
|
|
|
|
### 3. Kiểm tra thay đổi
|
|
|
|
Prompts được load lại mỗi khi:
|
|
- Container restart
|
|
- Application restart
|
|
- Module `lightrag.prompt` được import lại
|
|
|
|
## Lợi ích
|
|
|
|
✅ **Không cần rebuild image:** Tiết kiệm thời gian và bandwidth
|
|
✅ **Edit nhanh:** Thay đổi prompts ngay trên host
|
|
✅ **Version control:** Track changes với git
|
|
✅ **Rollback dễ dàng:** Git revert nếu cần
|
|
✅ **Test A/B:** Dễ dàng test nhiều phiên bản prompts
|
|
|
|
## Ví dụ Workflow
|
|
|
|
### Tùy chỉnh Entity Extraction Prompt
|
|
|
|
```bash
|
|
# 1. Mở file prompt
|
|
code lightrag/prompts/entity_extraction_system_prompt.md
|
|
|
|
# 2. Chỉnh sửa (ví dụ: thêm entity type mới)
|
|
# Thay đổi các instructions, format, examples...
|
|
|
|
# 3. Lưu file
|
|
|
|
# 4. Restart container
|
|
docker-compose restart lightrag
|
|
|
|
# 5. Test với API
|
|
curl -X POST http://localhost:9621/insert \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"text": "Your test text here"}'
|
|
```
|
|
|
|
### Backup Prompts trước khi thay đổi
|
|
|
|
```bash
|
|
# Tạo backup
|
|
cp -r lightrag/prompts lightrag/prompts.backup
|
|
|
|
# Hoặc sử dụng git
|
|
git checkout -b custom-prompts
|
|
# ... make changes ...
|
|
git commit -am "Custom entity extraction prompts"
|
|
```
|
|
|
|
### Restore về default prompts
|
|
|
|
```bash
|
|
# Nếu đã backup
|
|
rm -rf lightrag/prompts
|
|
mv lightrag/prompts.backup lightrag/prompts
|
|
|
|
# Hoặc dùng git
|
|
git checkout main -- lightrag/prompts/
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Prompt không được update sau khi chỉnh sửa
|
|
|
|
**Giải pháp:**
|
|
```bash
|
|
# Restart container
|
|
docker-compose restart lightrag
|
|
|
|
# Hoặc recreate container
|
|
docker-compose down
|
|
docker-compose up -d
|
|
```
|
|
|
|
### Permission issues (Linux/Mac)
|
|
|
|
Nếu gặp lỗi permission:
|
|
|
|
```bash
|
|
# Đảm bảo quyền đọc
|
|
chmod -R 644 lightrag/prompts/*.md
|
|
chmod 755 lightrag/prompts
|
|
|
|
# Hoặc chown nếu cần
|
|
sudo chown -R $USER:$USER lightrag/prompts
|
|
```
|
|
|
|
### File không tồn tại trong container
|
|
|
|
Check volume mapping:
|
|
|
|
```bash
|
|
# Xem volumes
|
|
docker-compose config
|
|
|
|
# Inspect container
|
|
docker exec lightrag ls -la /app/lightrag/prompts/
|
|
|
|
# Check file content
|
|
docker exec lightrag cat /app/lightrag/prompts/entity_extraction_system_prompt.md
|
|
```
|
|
|
|
## Best Practices
|
|
|
|
1. **Backup trước khi thay đổi:** Luôn backup hoặc commit vào git
|
|
2. **Test từng prompt:** Không thay đổi nhiều prompts cùng lúc
|
|
3. **Document changes:** Ghi chú lý do thay đổi trong commit message
|
|
4. **Monitor performance:** Theo dõi quality và performance sau khi thay đổi
|
|
5. **Keep placeholders intact:** Không xóa hoặc đổi tên `{variable_name}`
|
|
|
|
## Environment-specific Prompts
|
|
|
|
Nếu cần prompts khác nhau cho các môi trường:
|
|
|
|
```yaml
|
|
# docker-compose.dev.yml
|
|
volumes:
|
|
- ./lightrag/prompts.dev:/app/lightrag/prompts
|
|
|
|
# docker-compose.prod.yml
|
|
volumes:
|
|
- ./lightrag/prompts.prod:/app/lightrag/prompts
|
|
```
|
|
|
|
Sau đó:
|
|
```bash
|
|
# Dev
|
|
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up
|
|
|
|
# Prod
|
|
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up
|
|
```
|
|
|
|
## Hot Reload (Future Enhancement)
|
|
|
|
Hiện tại cần restart container. Trong tương lai có thể implement:
|
|
- File watcher để auto-reload prompts
|
|
- API endpoint để reload prompts without restart
|
|
- Cache invalidation mechanism
|
|
|
|
## Support
|
|
|
|
Nếu gặp vấn đề với prompt customization, check:
|
|
1. File có tồn tại trên host không
|
|
2. Volume mount đúng trong docker-compose.yml
|
|
3. Container có quyền đọc file không
|
|
4. Syntax trong prompt file có đúng không (placeholders intact)
|
|
|