You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.7 KiB
2.7 KiB
AI Session Summary — geonet-console
session: 2026-07-06-ai-chat-endpoint
project: server-connection/geonet-console
version: ai-fase3
status: deployed
next: UI chat Super Apps PWA + user memory + ai.chat permission guard
agent: Cascade
branch: main
TL;DR
POST /api/v1/ai/chat+GET /api/v1/ai/statuslive di production (console.gisportal.id)- RAG pipeline: embed query → pgvector
10.100.1.24:5433→ 5 context chunks → Ollama10.100.1.14:11434→ jawaban - Verified: query "route untuk feedback" → jawab
POST /api/v1/feedbackdengan akurat
Files baru
| File | Fungsi |
|---|---|
app/Services/AiChatService.php |
Embed query, similarity search pgvector, generate via Ollama |
app/Http/Controllers/Api/V1/AiChatController.php |
Handler POST /api/v1/ai/chat + GET /api/v1/ai/status |
config/pgvector.php |
Config pgvector — baca env PGVECTOR_HOST/PORT/DB/USER/PASSWORD |
Files dimodifikasi
| File | Perubahan |
|---|---|
config/ollama.php |
Default URL → 10.100.1.14:11434, model → qwen2.5-coder:14b |
routes/api.php |
Tambah 2 route AI Chat, import AiChatController |
Env vars baru di server .env
OLLAMA_BASE_URL=http://10.100.1.14:11434
OLLAMA_CHAT_MODEL=qwen2.5-coder:14b
OLLAMA_EMBED_MODEL=nomic-embed-text
PGVECTOR_HOST=10.100.1.24
PGVECTOR_PORT=5433
PGVECTOR_DB=geonet_project_search
PGVECTOR_USER=geonet_ai
PGVECTOR_PASSWORD=<lihat .env server>
API endpoint
| Method | Path | Auth | Keterangan |
|---|---|---|---|
GET |
/api/v1/ai/status |
Bearer | Cek ketersediaan + model aktif |
POST |
/api/v1/ai/chat |
Bearer | Chat dengan RAG codebase |
Request body /ai/chat:
{
"message": "pertanyaan...",
"history": [{"role":"user","content":"..."},{"role":"assistant","content":"..."}]
}
Deploy notes
- Image di-rebuild di
10.100.1.24viadocker compose build geonet-console - Bug: jangan gunakan
scp config/*.php routes/api.php root@host:/path/config/dalam satu perintah —routes/api.phpakan tertimpa keconfig/api.php - Selalu deploy config dan routes terpisah
Lanjut dari sini
- UI chat di Super Apps PWA — React window, kirim ke
/api/v1/ai/chat - User memory —
POST /api/v1/ai/memory, simpan ke tabeluser_memorydi pgvector - Permission guard — tambah
ai.chatkegroup_permissions, guard di middleware - Streaming — opsional, tambah
stream: truekeOllamaService::chat()
Jangan
- Jangan hardcode
PGVECTOR_PASSWORDdi source — baca dari env - Jangan expose
/api/v1/ai/chattanpa auth (api.authmiddleware sudah aktif) - Jangan rebuild image tanpa verifikasi
config/api.phpisi yang benar