Bu depo, iki ayrı uygulama ve toplamda 3 projeyi bir arada barındırıyor;
- argenova-mobile-app klasörü: Flutter mobil uygulaması (chat_llm_app) ve ilgili Flask API (flask_api) olmak üzere iki proje içerir ve mobil uygulama için hazırlanmıştır.
- chat_llm_web_app projesi: Nuxt 3 tabanlı web uygulaması, Qdrant ve Ollama ile entegrasyon
Aşağıda her bir uygulamanın amacı, teknoloji yığını, kurulum/geliştirme talimatları ve önemli notlar özetlenmiştir.
### Amaç
- Mobil cihazlardan sohbet arayüzü ile mesai verilerine ilişkin sorular sormak ve kısa, Türkçe yanıtlar almak
- Excel dosyası ile çalışan verilerini backend’e yüklemek ve Qdrant’ta vektör olarak saklamak
- Sohbet geçmişini cihazda (Hive) kalıcı olarak tutmak
- chat_llm_app: Flutter istemci
- flask_api: Python/Flask backend (Qdrant ve Ollama entegrasyonu)
- Flutter, Riverpod, Hive, http
- Flask, Qdrant, Ollama, Pandas
- Gerekli servislerin çalışır olduğundan emin olun:
- Qdrant (örn. http://:6333)
- Ollama (örn. http://:11434)
argenova-mobile-app/flask_apidizininde.env(opsiyonel) veyaconfig/settings.pydeğerlerini kontrol edin:- QDRANT_URL, AI_SERVICE_URL, PORT varsayılanları
- Uygulama:
- Python ortamı kurun ve bağımlılıkları yükleyin:
pip install -r requirements.txt - Çalıştırın:
python app.py - Sağlık kontrolü:
GET http://<host>:5000/health
- Python ortamı kurun ve bağımlılıkları yükleyin:
- Android emülatör için backend tabanı:
http://10.0.2.2:5000/api - Komutlar:
flutter pub getflutter run
- chat_llm_app/lib: Modeller (
Chat,ChatMessage), provider’lar (ChatNotifier), sayfalar (chat, excel, ayarlar), servis (AIService) - flask_api:
controllers/(chat, employee),services/(ai_service, qdrant_service),config/settings.py,scripts/
AIServiceyanıtları kısa ve Türkçe olacak şekilde optimize edilmiştir- Excel yüklemede veri temizliği ve gruplayarak tekilleştirme uygulanır
- Sohbet geçmişi Hive’da saklanır, ilk kullanıcı mesajından sohbet başlığı üretilir
### Amaç
- Web arayüzü üzerinden mesai verilerini yüklemek (Excel/CSV), Qdrant’a vektör olarak basmak
- Qdrant’tan özet bağlam çıkarıp Ollama ile kısa, Türkçe sohbet yanıtları üretmek
- Sohbet geçmişini MongoDB’de oturum bazlı tutmak
- Nuxt 3, Nitro server routes, Tailwind, Pinia
- Qdrant HTTP API, Ollama HTTP API, MongoDB (Mongoose)
- Başlat:
docker compose -f docker-compose.dev.yml up -d - Durdur:
docker compose -f docker-compose.dev.yml stop - Kaldır:
docker compose -f docker-compose.dev.yml down
Uç noktalar proje içerisinde ilgili controller/route dosyalarında tanımlıdır.
- server/utils:
ai.ts(Ollama),qdrant.ts(Qdrant) - server/api:
chat.post.ts,vectors/upload-excel.post.ts,health.get.ts,history/* - app/components: Chat arayüzü, sistem durumu ve vektör yönetimi bileşenleri
- nuxt.config.ts: runtime config (qdrantUrl, ollamaUrl, mongodbUri vb.)
- Koleksiyon adı:
ai_vectors(web). Flutter/Flask tarafındakimesaikoleksiyonundan bağımsızdır. - Embedding boyutu 384, Cosine uzaklık kullanılır.