Skip to content

Latest commit

Β 

History

History
349 lines (258 loc) Β· 7.79 KB

File metadata and controls

349 lines (258 loc) Β· 7.79 KB

πŸ”§ νŠΈλŸ¬λΈ”μŠˆνŒ… κ°€μ΄λ“œ

μ„Έμ…˜ 생성 μ‹€νŒ¨ (Session Creation Failed)

증상

πŸ§ͺ μƒˆ 버전 ν…ŒμŠ€νŠΈ 쀑...
❌ μ„Έμ…˜ 생성 μ‹€νŒ¨!
   μƒˆ 배포λ₯Ό μ‚­μ œν•©λ‹ˆλ‹€...

κ°€λŠ₯ν•œ 원인

1. Import μ—λŸ¬

κ°€μž₯ ν”ν•œ 원인은 μ„œλΈŒ μ—μ΄μ „νŠΈλ‚˜ 도ꡬλ₯Ό importν•  λ•Œ λ°œμƒν•˜λŠ” μ—λŸ¬μž…λ‹ˆλ‹€.

확인 방법:

# λ‘œμ»¬μ—μ„œ import ν…ŒμŠ€νŠΈ
cd /Users/hong-gihyeon/Desktop/cap
python -c "from goole_adk.agent import root_agent; print('βœ… Import 성곡!')"

ν•΄κ²° 방법:

  • goole_adk/__init__.py 파일이 λͺ¨λ“  μ„œλΈŒ 디렉토리에 μžˆλŠ”μ§€ 확인
  • μˆœν™˜ importκ°€ μ—†λŠ”μ§€ 확인
  • λͺ¨λ“  κ²½λ‘œκ°€ μ˜¬λ°”λ₯Έμ§€ 확인

2. ν™˜κ²½ λ³€μˆ˜ 문제

PROJECT_IDλ‚˜ VERTEX_AI_LOCATION이 μ œλŒ€λ‘œ μ„€μ •λ˜μ§€ μ•Šμ•˜μ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

확인 방법:

# config.py 확인
cat goole_adk/config.py

ν•΄κ²° 방법:

# goole_adk/config.pyμ—μ„œ ν•˜λ“œμ½”λ”©λœ κ°’ 확인
PROJECT_ID = "kangnam-backend"  # μ˜¬λ°”λ₯Έ ν”„λ‘œμ νŠΈ ID
VERTEX_AI_LOCATION = "us-east4"  # μ˜¬λ°”λ₯Έ 리전

3. Vertex AI Search μ—”λ“œν¬μΈνŠΈ 문제

μ„œλΈŒ μ—μ΄μ „νŠΈμ˜ Vertex AI Search μ—”λ“œν¬μΈνŠΈκ°€ 잘λͺ»λ˜μ—ˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

확인 방법:

# 각 μ—μ΄μ „νŠΈμ˜ search_tools.py 확인
grep -r "VERTEX_SEARCH_ENDPOINT" goole_adk/agents/

ν•΄κ²° 방법:

  • 각 μ—”λ“œν¬μΈνŠΈ URL이 μ˜¬λ°”λ₯Έμ§€ 확인
  • ν”„λ‘œμ νŠΈ IDκ°€ λ§žλŠ”μ§€ 확인
  • μ—”μ§„ IDκ°€ μ‘΄μž¬ν•˜λŠ”μ§€ 확인

4. μ˜μ‘΄μ„± νŒ¨ν‚€μ§€ λˆ„λ½

ν•„μš”ν•œ νŒ¨ν‚€μ§€κ°€ deploy.py의 requirements에 ν¬ν•¨λ˜μ§€ μ•Šμ•˜μ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

확인 방법:

# deploy.py의 requirements 확인
grep -A 10 "requirements=" deploy.py

ν˜„μž¬ requirements:

requirements=[
    "google-cloud-aiplatform[adk,agent_engines]",
    "requests",
    "beautifulsoup4",
    "python-dotenv",
]

ν•΄κ²° 방법:

  • ν•„μš”ν•œ νŒ¨ν‚€μ§€κ°€ λͺ¨λ‘ ν¬ν•¨λ˜μ–΄ μžˆλŠ”μ§€ 확인
  • 버전 좩돌이 μ—†λŠ”μ§€ 확인

5. Agent μ •μ˜ 였λ₯˜

Agent μ •μ˜ μ‹œ 문법 였λ₯˜λ‚˜ 잘λͺ»λœ νŒŒλΌλ―Έν„°κ°€ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

확인 방법:

# 각 μ—μ΄μ „νŠΈ 파일 문법 체크
python -m py_compile goole_adk/agents/*/agent.py

ν•΄κ²° 방법:

  • Agent의 model, name, description, instruction νŒŒλΌλ―Έν„° 확인
  • tools λ¦¬μŠ€νŠΈκ°€ μ˜¬λ°”λ₯Έμ§€ 확인
  • sub_agents λ¦¬μŠ€νŠΈκ°€ μ˜¬λ°”λ₯Έμ§€ 확인

디버깅 방법

1. λ‘œμ»¬μ—μ„œ ν…ŒμŠ€νŠΈ

cd /Users/hong-gihyeon/Desktop/cap

# κ°€μƒν™˜κ²½ ν™œμ„±ν™”
source .venv/bin/activate

# Import ν…ŒμŠ€νŠΈ
python -c "
from goole_adk.agent import root_agent
print('βœ… Root agent import 성곡!')
print(f'Agent name: {root_agent.name}')
print(f'Sub-agents: {len(root_agent.sub_agents)}')
"

# 각 μ„œλΈŒ μ—μ΄μ „νŠΈ ν…ŒμŠ€νŠΈ
python -c "
from goole_adk.agents.graduation import graduation_agent
from goole_adk.agents.subject import subject_agent
from goole_adk.agents.professor.agent import professor_agent
from goole_adk.agents.basic_info.agent import basic_info_agent
print('βœ… λͺ¨λ“  μ„œλΈŒ μ—μ΄μ „νŠΈ import 성곡!')
"

2. μ—λŸ¬ 둜그 확인

이제 update_deployment.shκ°€ μ—λŸ¬ 둜그λ₯Ό ν‘œμ‹œν•©λ‹ˆλ‹€:

./update_deployment.sh

μ—λŸ¬ λ°œμƒ μ‹œ:

❌ μ„Έμ…˜ 생성 μ‹€νŒ¨!

πŸ“‹ μ—λŸ¬ 둜그:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Traceback (most recent call last):
  File "deploy.py", line 113, in create_session
    remote_session = remote_app.create_session(user_id=user_id)
  ...
ImportError: cannot import name 'basic_info_agent' from 'goole_adk.agents'
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

3. 단계별 배포

문제λ₯Ό κ²©λ¦¬ν•˜κΈ° μœ„ν•΄ λ‹¨κ³„λ³„λ‘œ ν…ŒμŠ€νŠΈ:

# 1단계: 배포만 (ν…ŒμŠ€νŠΈ 없이)
python deploy.py --create

# 2단계: μ„Έμ…˜ 생성 ν…ŒμŠ€νŠΈ
python deploy.py --create_session --resource_id="ν”„λ‘œμ νŠΈID"

# 3단계: λ©”μ‹œμ§€ 전솑 ν…ŒμŠ€νŠΈ
python deploy.py --send \
  --resource_id="ν”„λ‘œμ νŠΈID" \
  --session_id="μ„Έμ…˜ID" \
  --message="μ•ˆλ…•"

일반적인 ν•΄κ²° 방법

방법 1: Import 경둜 확인

λͺ¨λ“  μ„œλΈŒ μ—μ΄μ „νŠΈκ°€ μ˜¬λ°”λ₯΄κ²Œ exportλ˜λŠ”μ§€ 확인:

# goole_adk/agents/__init__.py 확인
cat goole_adk/agents/__init__.py

μ˜¬λ°”λ₯Έ μ˜ˆμ‹œ:

from .graduation import graduation_agent
from .subject import subject_agent
from .professor.agent import professor_agent
from .basic_info.agent import basic_info_agent
from .admission.agent import admission_agent

__all__ = [
    'graduation_agent',
    'subject_agent',
    'professor_agent',
    'basic_info_agent',
    'admission_agent',
]

방법 2: μ˜μ‘΄μ„± 확인

# λ‘œμ»¬μ—μ„œ ν•„μš”ν•œ νŒ¨ν‚€μ§€κ°€ λͺ¨λ‘ μ„€μΉ˜λ˜μ–΄ μžˆλŠ”μ§€ 확인
pip list | grep -E "(google-cloud-aiplatform|requests|beautifulsoup4|python-dotenv)"

방법 3: 이전 λ²„μ „μœΌλ‘œ λ‘€λ°±

# .env.backupμ—μ„œ 이전 Resource ID 확인
cat .env.backup

# .env 볡원
cp .env.backup .env

# Backend 재배포
cd agent-backend
./deploy_backend.sh

방법 4: κΉ¨λ—ν•œ 재배포

# 1. κ°€μƒν™˜κ²½ μž¬μƒμ„±
rm -rf .venv
python -m venv .venv
source .venv/bin/activate

# 2. μ˜μ‘΄μ„± μž¬μ„€μΉ˜
pip install -r requirements.txt

# 3. Import ν…ŒμŠ€νŠΈ
python -c "from goole_adk.agent import root_agent; print('βœ… 성곡!')"

# 4. 재배포
./update_deployment.sh

νŠΉμ • μ—λŸ¬λ³„ ν•΄κ²° 방법

ImportError: cannot import name 'X'

원인: λͺ¨λ“ˆ import κ²½λ‘œκ°€ 잘λͺ»λ¨

ν•΄κ²°:

  1. __init__.py 파일이 λͺ¨λ“  디렉토리에 μžˆλŠ”μ§€ 확인
  2. Import κ²½λ‘œκ°€ μ˜¬λ°”λ₯Έμ§€ 확인
  3. μˆœν™˜ importκ°€ μ—†λŠ”μ§€ 확인

ModuleNotFoundError: No module named 'X'

원인: ν•„μš”ν•œ νŒ¨ν‚€μ§€κ°€ μ„€μΉ˜λ˜μ§€ μ•ŠμŒ

ν•΄κ²°:

  1. deploy.py의 requirements λ¦¬μŠ€νŠΈμ— νŒ¨ν‚€μ§€ μΆ”κ°€
  2. 재배포

AttributeError: 'Agent' object has no attribute 'X'

원인: Agent μ •μ˜ μ‹œ 잘λͺ»λœ νŒŒλΌλ―Έν„° μ‚¬μš©

ν•΄κ²°:

  1. Agent μ •μ˜ 확인
  2. ADK λ¬Έμ„œ μ°Έμ‘°ν•˜μ—¬ μ˜¬λ°”λ₯Έ νŒŒλΌλ―Έν„° μ‚¬μš©

ValueError: Invalid endpoint

원인: Vertex AI Search μ—”λ“œν¬μΈνŠΈκ°€ 잘λͺ»λ¨

ν•΄κ²°:

  1. 각 μ„œλΈŒ μ—μ΄μ „νŠΈμ˜ search_tools.py 확인
  2. μ—”λ“œν¬μΈνŠΈ URL μˆ˜μ •
  3. 재배포

예방 방법

1. 배포 μ „ 체크리슀트

  • λ‘œμ»¬μ—μ„œ import ν…ŒμŠ€νŠΈ μ™„λ£Œ
  • λͺ¨λ“  __init__.py 파일 쑴재 확인
  • Vertex AI Search μ—”λ“œν¬μΈνŠΈ 확인
  • μ˜μ‘΄μ„± νŒ¨ν‚€μ§€ 확인
  • 문법 μ—λŸ¬ μ—†μŒ 확인

2. ν…ŒμŠ€νŠΈ 슀크립트 μž‘μ„±

#!/bin/bash
# test_imports.sh

echo "πŸ§ͺ Import ν…ŒμŠ€νŠΈ μ‹œμž‘..."

python -c "
try:
    from goole_adk.agent import root_agent
    from goole_adk.agents.graduation import graduation_agent
    from goole_adk.agents.subject import subject_agent
    from goole_adk.agents.professor.agent import professor_agent
    from goole_adk.agents.basic_info.agent import basic_info_agent
    print('βœ… λͺ¨λ“  import 성곡!')
except Exception as e:
    print(f'❌ Import μ‹€νŒ¨: {e}')
    exit(1)
"

3. 단계적 배포

  1. 둜컬 ν…ŒμŠ€νŠΈ
  2. 배포
  3. μ„Έμ…˜ 생성 ν…ŒμŠ€νŠΈ
  4. λ©”μ‹œμ§€ 전솑 ν…ŒμŠ€νŠΈ
  5. ν™˜κ²½λ³€μˆ˜ μ—…λ°μ΄νŠΈ
  6. Backend 재배포

도움이 ν•„μš”ν•œ 경우

둜그 μˆ˜μ§‘

# 전체 배포 둜그 μ €μž₯
./update_deployment.sh 2>&1 | tee deployment.log

# μ—λŸ¬ λΆ€λΆ„λ§Œ μΆ”μΆœ
grep -A 10 "❌" deployment.log

ν™˜κ²½ 정보 μˆ˜μ§‘

# Python 버전
python --version

# μ„€μΉ˜λœ νŒ¨ν‚€μ§€
pip list

# ν”„λ‘œμ νŠΈ ꡬ쑰
tree goole_adk -L 2

# ν™˜κ²½ λ³€μˆ˜
cat .env

λ§ˆμ§€λ§‰ μ—…λ°μ΄νŠΈ: 2025-11-10