GymCoach
근력 트레이닝 기록 및 개인 AI 코치
터키어 건강 문의에 맞춤 답변 제공 FastAPI·LangChain·Gemini 2.5 Flash 기반 응급 상황 감지·세션 기억 기능 포함
Answers a health complaint in Turkish, tailored to the person. FastAPI · LangChain · Gemini 2.5 Flash, with emergency detection and session memory.
건강Python · TypeScriptGitHub @333asli333온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
🩺 AI Doktor Asistanı / AI Doctor Assistant 🟢 Canlı uygulama / Live app · 👩💻 Portfolyo / Portfolio Proje Hakkında Kullanıcının adını, yaşını ve sağlık şikayetini alarak kişiselleştirilmiş Türkçe sağlık bilgisi sunan, hafızalı bir AI doktor asistanı. OpenRouter üzerinden çalışan Google Gemini modeli, LangChain ile yönetilen konuşma hafızası ve FastAPI tabanlı bir servis ile geliştirilmiştir. ⚠️ Bu uygulama tıbbi teşhis koymaz. Sağlık sorunlarınız için mutlaka bir doktora danışınız.README 전문 보기 ↗
🟢 Canlı uygulama / Live app · 👩💻 Portfolyo / Portfolio
Kullanıcının adını, yaşını ve sağlık şikayetini alarak kişiselleştirilmiş Türkçe sağlık bilgisi sunan, hafızalı bir AI doktor asistanı. OpenRouter üzerinden çalışan Google Gemini modeli, LangChain ile yönetilen konuşma hafızası ve FastAPI tabanlı bir servis ile geliştirilmiştir.
⚠️ Bu uygulama tıbbi teşhis koymaz. Sağlık sorunlarınız için mutlaka bir doktora danışınız.
Soldan sağa: giriş formu · kişiye özel yanıt · acil belirtide tek cümlelik yönlendirme
Birbirine bağımlı olmayan iki servis. SSL'i sunucudaki ters vekil bitirir.
| Parça | Yol | Alan adı | Host portu |
|---|---|---|---|
| Backend — FastAPI + LangChain | backend/ | doctor-assistant-api.aisli.dev | 8003 |
| Frontend — React + Vite + nginx | frontend/ | doctor-assistant.aisli.dev | 8002 |
Frontend nginx'i yalnız statik dosya servis eder, backend'e bağlanmaz. Tarayıcı API'ye VITE_API_BASE adresinden doğrudan gider; bu adres derlemeye gömülür, değişirse imaj yeniden derlenmelidir. Backend de FRONTEND_URL ile yalnız frontend'in origin'ine CORS izni verir.
ai-doctor/
├── backend/
│ ├── llm.py # model, prompt, zincir, hafıza
│ ├── api.py # FastAPI (yalnız JSON)
│ ├── terminal.py # terminal sürümü
│ ├── tests/ # birim testleri (pytest, sahte model)
│ ├── smoke_test.py # davranış doğrulaması
│ ├── Dockerfile · docker-compose.yml · Makefile
│ └── .env.example
└── frontend/
├── src/ # React + TypeScript
├── Dockerfile · nginx.conf · docker-compose.yml · Makefile
└── .env.example
Backend
cd backend
cp .env.example .env # OPENROUTER_API_KEY değerini doldurun
make up # derle ve başlat
make health # {"status":"ok", ...}
Frontend
cd frontend
VITE_API_BASE=http://localhost:8003 make up # yerel backend'e bağlan
Tarayıcıda http://localhost:8002 adresini açın.
Docker olmadan, iki terminalde:
cd backend && make dev # uvicorn :8000, canlı yeniden yükleme
cd frontend && make dev # vite :5173, /chat isteklerini :8000'e proxy'ler (yalnız dev)
Terminal sürümü için: cd backend && make terminal
cd backend && pytest # birim testleri (API anahtarı ve ağ gerekmez)
cd backend && make test # gerçek API'ye karşı davranış testi
cd frontend && make typecheck # TypeScript denetimi
pytest modeli sahte bir modelle değiştirir; HTTP katmanını (doğrulama, 503 hata yönetimi), oturum hafızasını ve sistem promptundaki güvenlik kurallarını kontrol eder ve her push'ta GitHub Actions'ta çalışır.
make test OpenRouter'a gerçek istek atar ve kredi harcar. Kontrol ettikleri:
Model çıktısı deterministik olmadığından tek bir başarısızlık gürültü olabilir; tekrarlıyorsa gerçek bir gerilemedir.
Varsayılan google/gemini-2.5-flash (~0.30$/1M token). OpenRouter'da ücretsiz Gemini kalmadı; daha ucuzu google/gemini-2.5-flash-lite (~0.10$) ama yönergeleri daha zayıf takip ediyor. Model OPENROUTER_MODEL ile değiştirilir.
max_tokens 800'e sabitlenmiştir: verilmezse OpenRouter modelin tavanını (65k) varsayıp bakiyeyi ona göre kontrol eder ve düşük bakiyede 402 döner.
Sunucu Dokploy ile yönetilir, SSL'i ters vekil bitirir. Sunucuda elle nginx ayarı yapılmaz, certbot çalıştırılmaz.
doctor-assistant ve doctor-assistant-api için A kaydı → sunucu IP'si./backend, Environment'a OPENROUTER_API_KEY ve FRONTEND_URL=https://doctor-assistant.aisli.dev. Domain doctor-assistant-api.aisli.dev, Container Port 8000./frontend, Domain doctor-assistant.aisli.dev, Container Port 80.Frontend varsayılan olarak https://doctor-assistant-api.aisli.dev adresine derlenir. Farklı bir API adresi gerekirse Build Args'a VITE_API_BASE girilip yeniden deploy edilir.
A conversational AI health assistant that collects the user's name, age, and health complaint to provide personalized Turkish-language health information. Built with Google Gemini via OpenRouter, LangChain conversation memory, a FastAPI backend, and a React + Vite frontend served by nginx.
⚠️ This application does not provide medical diagnoses. Always consult a doctor for health concerns.
Left to right: intake form · personalised reply · one-sentence referral on an emergency symptom
| Layer | Technology |
|---|---|
| LLM | Google Gemini (OpenRouter) |
| LLM Management | LangChain |
| Backend | FastAPI + Uvicorn |
| Frontend | React + Vite + TypeScript (bun) |
| Web server | nginx (static only) |
| Deployment | Docker + Dokploy (self-hosted) |
cd backend && cp .env.example .env && make up
cd ../frontend && VITE_API_BASE=http://localhost:8003 make up
Open http://localhost:8002.
Run make help in either folder to see all targets.
Sohbet hafızası süreç belleğinde (store sözlüğü) tutulur: konteyner yeniden başlatıldığında tüm konuşmalar silinir ve backend tek worker ile çalışmak zorundadır. Kalıcılık gerekirse bir veritabanı katmanı eklenmelidir.
Built by Aslı