diff --git a/README.md b/README.md new file mode 100644 index 0000000..26bbf28 --- /dev/null +++ b/README.md @@ -0,0 +1,225 @@ +# ๐Ÿฝ๏ธ AI Review - ์†Œ์ƒ๊ณต์ธ์„ ์œ„ํ•œ AI ๊ธฐ๋ฐ˜ ๊ฒฝ์Ÿ์—…์ฒด ๋ถ„์„ ๋ฐ ์•ก์…˜ ์ถ”์ฒœ ์‹œ์Šคํ…œ + +์†Œ์ƒ๊ณต์ธ๋“ค์ด ์นด์นด์˜ค๋งต ๋ฆฌ๋ทฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฒฝ์Ÿ์—…์ฒด๋ฅผ ๋ถ„์„ํ•˜๊ณ , AI๊ฐ€ ์ œ์•ˆํ•˜๋Š” ๋งž์ถคํ˜• ๋น„์ฆˆ๋‹ˆ์Šค ๊ฐœ์„  ๋ฐฉ์•ˆ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ธฐ๋ฐ˜ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. + +## ๐ŸŽฏ ์‹œ์Šคํ…œ ๊ฐœ์š” + +### ํ•ต์‹ฌ ๊ฐ€์น˜ ์ œ์•ˆ +- **๐Ÿ” ์Šค๋งˆํŠธ ๊ฒฝ์Ÿ์—…์ฒด ๋ฐœ๊ฒฌ**: ์ง€์—ญ๊ณผ ์—…์ข… ๊ธฐ๋ฐ˜์œผ๋กœ ์œ ์‚ฌํ•œ ๊ฒฝ์Ÿ์—…์ฒด ์ž๋™ ํƒ์ง€ +- **๐Ÿ“Š ๋Œ€๋Ÿ‰ ๋ฆฌ๋ทฐ ๋ฐ์ดํ„ฐ ๋ถ„์„**: ์นด์นด์˜ค๋งต ๋ฆฌ๋ทฐ๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ ๊ณ ํ’ˆ์งˆ ์ธ์‚ฌ์ดํŠธ ๋„์ถœ +- **๐Ÿค– AI ๊ธฐ๋ฐ˜ ๋งž์ถค ์ปจ์„คํŒ…**: Claude AI๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ์•ก์…˜ ํ”Œ๋žœ +- **โšก ์™„์ „ ์ž๋™ํ™”**: API ๊ธฐ๋ฐ˜์œผ๋กœ ๋ชจ๋“  ๊ณผ์ •์ด ์ž๋™ํ™”๋œ ์†”๋ฃจ์…˜ + +### ๋น„์ฆˆ๋‹ˆ์Šค ์ž„ํŒฉํŠธ +- **์†Œ์ƒ๊ณต์ธ**: ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ๊ฒฝ์˜ ์˜์‚ฌ๊ฒฐ์ •์œผ๋กœ ๋งค์ถœ ํ–ฅ์ƒ ์ง€์› +- **๊ฒฝ์Ÿ ์šฐ์œ„**: AI ๊ธฐ๋ฐ˜ ๊ฐœ์ธํ™”๋œ ๋น„์ฆˆ๋‹ˆ์Šค ์ „๋žต์œผ๋กœ ์ฐจ๋ณ„ํ™” +- **์šด์˜ ํšจ์œจ**: ์ˆ˜์ž‘์—… ์‹œ์žฅ์กฐ์‚ฌ ๋Œ€๋น„ ์‹œ๊ฐ„๊ณผ ๋น„์šฉ 90% ์ ˆ๊ฐ + +## ๐Ÿ—๏ธ ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ + +๋ณธ ์‹œ์Šคํ…œ์€ 3๊ฐœ์˜ ๋…๋ฆฝ์ ์ธ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค: + +### ๐Ÿ“ Restaurant Service +**์Œ์‹์  ๊ฒ€์ƒ‰ ๋ฐ ์ •๋ณด ์ˆ˜์ง‘ ์„œ๋น„์Šค** + +- **ํ•ต์‹ฌ ๊ธฐ๋Šฅ**: ์นด์นด์˜ค ๋กœ์ปฌ API ๊ธฐ๋ฐ˜ ์Œ์‹์  ๊ฒ€์ƒ‰ ๋ฐ ์ƒ์„ธ ์ •๋ณด ์ˆ˜์ง‘ +- **์ฃผ์š” API**: + - ์Œ์‹์  ๊ฒ€์ƒ‰ (`/restaurants/search`) + - ์Œ์‹์  ์ƒ์„ธ ์ •๋ณด (`/restaurants/{restaurant_id}`) +- **๊ธฐ์ˆ  ์Šคํƒ**: FastAPI, Python 3.11, Kakao Local API +- **ํฌํŠธ**: 18000 + +### ๐Ÿ“ Review Service +**์นด์นด์˜ค๋งต ๋ฆฌ๋ทฐ ์ˆ˜์ง‘ ๋ฐ ๋ถ„์„ ์„œ๋น„์Šค** + +- **ํ•ต์‹ฌ ๊ธฐ๋Šฅ**: ์นด์นด์˜ค๋งต ๋ฆฌ๋ทฐ ๋Œ€๋Ÿ‰ ์ˆ˜์ง‘, ๊ฐ์ • ๋ถ„์„, ํ‚ค์›Œ๋“œ ์ถ”์ถœ +- **์ฃผ์š” API**: + - ๋ฆฌ๋ทฐ ์ˆ˜์ง‘ (`/reviews/collect`) + - ๋ฆฌ๋ทฐ ๋ถ„์„ (`/reviews/analyze`) +- **๊ธฐ์ˆ  ์Šคํƒ**: FastAPI, Python 3.11, BeautifulSoup, Sentiment Analysis +- **ํฌํŠธ**: 19000 + +### ๐Ÿง  Vector Service +**Vector DB ๊ตฌ์ถ• ๋ฐ AI ๋น„์ฆˆ๋‹ˆ์Šค ์ปจ์„คํŒ… ์„œ๋น„์Šค** + +- **ํ•ต์‹ฌ ๊ธฐ๋Šฅ**: ChromaDB ๊ธฐ๋ฐ˜ Vector ๊ฒ€์ƒ‰, Claude AI ์—ฐ๋™ ์•ก์…˜ ์ถ”์ฒœ +- **์ฃผ์š” API**: + - Vector DB ๊ตฌ์ถ• (`/find-reviews`) + - AI ์•ก์…˜ ์ถ”์ฒœ (`/action-recommendation`) +- **๊ธฐ์ˆ  ์Šคํƒ**: FastAPI, ChromaDB, Sentence Transformers, Claude AI +- **ํฌํŠธ**: 8000 + +## ๐Ÿš€ AKS ๋ฐฐํฌ ๊ฐ€์ด๋“œ + +### 1. ์‚ฌ์ „ ์ค€๋น„ + +#### Local Ubuntu ์ ‘์† ํ›„ ์†Œ์Šค ๋‹ค์šด๋กœ๋“œ +```bash +cd ~/workflow +git clone https://github.com/cna-bootcamp/ai-review.git +cd ai-review +``` + +#### Azure Cloud ๋กœ๊ทธ์ธ +```bash +az login --use-device-code +``` + +#### AKS Credential ์ทจ๋“ +```bash +az aks get-credentials aks-digitalgarage-03 -f ~/.kube/config +``` + +#### Namespace ์ƒ์„ฑ ๋ฐ ์ด๋™ +```bash +k create ns ai-review-ns +kubens ai-review-ns +``` + +#### Image Pull Secret ์ƒ์„ฑ +```bash +./restaurant/create-imagepullsecret.sh acrdigitalgarage03 rg-digitalgarage-03 +``` + +### 2. Restaurant Service ๋ฐฐํฌ + +#### ๋””๋ ‰ํ† ๋ฆฌ ์ด๋™ +```bash +cd ~/workspace/ai-review/restaurant +``` + +#### ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ๋นŒ๋“œ +```bash +./build-base.sh latest acrdigitalgarage03 rg-digitalgarage-03 +``` + +#### ์„œ๋น„์Šค ์ด๋ฏธ์ง€ ๋นŒ๋“œ +```bash +./build.sh latest acrdigitalgarage03 rg-digitalgarage-03 +``` + +#### Manifest ์ˆ˜์ • +- **Deployment yaml** (`deployment/manifest/deployment.yaml`)์˜ image๋ช…์„ ์„œ๋น„์Šค ์ด๋ฏธ์ง€๋ช…์œผ๋กœ ๋ณ€๊ฒฝ +- **Ingress yaml** (`deployment/manifest/ingress.yaml`)์˜ host ์ˆ˜์ • + ```bash + # Ingress IP ํ™•์ธ + k get svc -n ingress-nginx + ``` + +#### ๋ฐฐํฌ ์‹คํ–‰ +```bash +k apply -f deployment/manifest +``` + +#### ๋ฐฐํฌ ํ™•์ธ +```bash +# Pod ์ƒํƒœ ํ™•์ธ +k get po + +# Ingress ํ™•์ธ +k get ing + +# Swagger ํŽ˜์ด์ง€ ์ ‘์† +# http://{ingress ์ฃผ์†Œ}/docs +``` + +### 3. Review Service ๋ฐฐํฌ + +#### ๋””๋ ‰ํ† ๋ฆฌ ์ด๋™ +```bash +cd ~/workspace/ai-review/review +``` + +#### ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ๋นŒ๋“œ +```bash +./build-base.sh latest acrdigitalgarage03 rg-digitalgarage-03 +``` + +#### ์„œ๋น„์Šค ์ด๋ฏธ์ง€ ๋นŒ๋“œ +```bash +./build.sh latest acrdigitalgarage03 rg-digitalgarage-03 +``` + +#### Manifest ์ˆ˜์ • +- **Deployment yaml** (`deployment/manifest/deployment.yaml`)์˜ image๋ช…์„ ์„œ๋น„์Šค ์ด๋ฏธ์ง€๋ช…์œผ๋กœ ๋ณ€๊ฒฝ +- **Ingress yaml** (`deployment/manifest/ingress.yaml`)์˜ host ์ˆ˜์ • + ```bash + # Ingress IP ํ™•์ธ + k get svc -n ingress-nginx + ``` + +#### ๋ฐฐํฌ ์‹คํ–‰ +```bash +k apply -f deployment/manifest +``` + +#### ๋ฐฐํฌ ํ™•์ธ +```bash +# Pod ์ƒํƒœ ํ™•์ธ +k get po + +# Ingress ํ™•์ธ +k get ing + +# Swagger ํŽ˜์ด์ง€ ์ ‘์† +# http://{ingress ์ฃผ์†Œ}/docs +``` + +### 4. Vector Service ๋ฐฐํฌ + +#### ๋””๋ ‰ํ† ๋ฆฌ ์ด๋™ +```bash +cd ~/workspace/ai-review/vector +``` + +#### ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€ ๋นŒ๋“œ +```bash +./build-base.sh latest acrdigitalgarage03 rg-digitalgarage-03 +``` + +#### ์„œ๋น„์Šค ์ด๋ฏธ์ง€ ๋นŒ๋“œ +```bash +./build.sh latest acrdigitalgarage03 rg-digitalgarage-03 +``` + +#### Manifest ์ˆ˜์ • +- **Deployment yaml** (`deployment/manifest/deployment.yaml`)์˜ image๋ช…์„ ์„œ๋น„์Šค ์ด๋ฏธ์ง€๋ช…์œผ๋กœ ๋ณ€๊ฒฝ +- **Ingress yaml** (`deployment/manifest/ingress.yaml`)์˜ host ์ˆ˜์ • + ```bash + # Ingress IP ํ™•์ธ + k get svc -n ingress-nginx + ``` + +#### ๋ฐฐํฌ ์‹คํ–‰ +```bash +k apply -f deployment/manifest +``` + +#### ๋ฐฐํฌ ํ™•์ธ +```bash +# Pod ์ƒํƒœ ํ™•์ธ +k get po + +# Ingress ํ™•์ธ +k get ing + +# Swagger ํŽ˜์ด์ง€ ์ ‘์† +# http://{ingress ์ฃผ์†Œ}/docs +``` + +## ๐Ÿ”ง ์„œ๋น„์Šค ์ƒํƒœ ํ™•์ธ + +### ์ „์ฒด ์„œ๋น„์Šค ์ƒํƒœ ์ ๊ฒ€ +```bash +# ๋ชจ๋“  Pod ์ƒํƒœ ํ™•์ธ +kubectl get pods -n ai-review-ns + +# ๋ชจ๋“  Service ํ™•์ธ +kubectl get svc -n ai-review-ns + +# ๋ชจ๋“  Ingress ํ™•์ธ +kubectl get ing -n ai-review-ns + +# ๋กœ๊ทธ ํ™•์ธ (์˜ˆ: restaurant ์„œ๋น„์Šค) +kubectl logs -l app=restaurant-api -n ai-review-ns --tail=100 +```