콘텐츠로 이동

환경 설정 가이드

항목요구사항
Python3.10 이상
DDEVsi-data 프로젝트 환경
Elasticsearch7.x (DDEV 컨테이너)
서비스발급 방법
OpenAIhttps://platform.openai.com → API keys → Create new secret key

Terminal window
cd /path/to/si-data
git checkout feature/openai-search-poc
Terminal window
cd services/llm-search
# 가상환경 생성
python3 -m venv venv
# 활성화 (macOS/Linux)
source venv/bin/activate
# 활성화 (Windows)
.\venv\Scripts\activate
Terminal window
pip install --upgrade pip
pip install -r requirements.txt
Terminal window
# .env.example 복사
cp .env.example .env
# .env 파일 편집하여 API 키 설정
nano .env # 또는 선호하는 에디터 사용

변수명설명예시
OPENAI_API_KEYOpenAI API 키sk-proj-...
LLM_PROVIDER기본 LLM 제공자openai 또는 ollama
변수명기본값설명
OPENAI_MODELgpt-4o사용할 OpenAI 모델
OPENAI_TIMEOUT30API 타임아웃 (초)
OPENAI_MAX_RETRIES3최대 재시도 횟수
OLLAMA_HOSThttp://localhost:11434Ollama 서버 주소
OLLAMA_MODELqwen3:8bOllama 모델명
ES_HOSTelasticsearchElasticsearch 호스트
ES_PORT9200Elasticsearch 포트
PAGEINDEX_ENABLEDtruePageIndex 기능 활성화
DEBUGfalse디버그 모드
LOG_LEVELINFO로그 레벨
Terminal window
# LLM Provider
LLM_PROVIDER=openai
# OpenAI
OPENAI_API_KEY=sk-proj-your-api-key-here
OPENAI_MODEL=gpt-4o
OPENAI_TIMEOUT=30
# Ollama (로컬 테스트용)
OLLAMA_HOST=http://localhost:11434
OLLAMA_MODEL=qwen3:8b
# Elasticsearch
ES_HOST=elasticsearch
ES_PORT=9200
# PageIndex
PAGEINDEX_ENABLED=true
# Debug
DEBUG=true
LOG_LEVEL=DEBUG

Terminal window
cd services/llm-search
source venv/bin/activate
# uvicorn으로 실행 (hot reload)
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
Terminal window
# 헬스체크
curl http://localhost:8000/health
# API 문서
open http://localhost:8000/docs

4.3 DDEV 환경에서 Elasticsearch 접근

섹션 제목: “4.3 DDEV 환경에서 Elasticsearch 접근”
Terminal window
# DDEV 내부에서 ES 확인
ddev exec curl -s "elasticsearch:9200/_cat/indices?v"
# 로컬에서 ES 접근 (DDEV 포트포워딩 필요시)
ddev describe # ES 포트 확인

services/llm-search/
├── app/
│ ├── __init__.py
│ ├── main.py # FastAPI 애플리케이션
│ ├── config.py # 환경변수 설정
│ ├── services/ # 비즈니스 로직
│ │ ├── __init__.py
│ │ ├── llm_client.py # Ollama 클라이언트
│ │ ├── openai_client.py # OpenAI 클라이언트
│ │ ├── llm_factory.py # Provider 팩토리
│ │ ├── rag_service.py # RAG 서비스
│ │ └── pageindex_client.py
│ ├── routes/ # API 라우터
│ │ ├── __init__.py
│ │ ├── keywords.py
│ │ ├── benchmark.py
│ │ └── pageindex.py
│ └── data/ # 데이터 파일
│ ├── context/ # RAG 컨텍스트
│ └── indexes/ # PageIndex 캐시
├── tests/ # 테스트
│ ├── benchmark.py
│ └── test_queries.json
├── venv/ # 가상환경 (gitignore)
├── .env # 환경변수 (gitignore)
├── .env.example # 환경변수 템플릿
├── requirements.txt # 의존성
└── README.md

증상: AuthenticationError: Invalid API key

해결:

  1. .env 파일에서 OPENAI_API_KEY 확인
  2. API 키가 sk-proj-... 형식인지 확인
  3. OpenAI 콘솔에서 키 상태 확인

증상: ConnectionError: elasticsearch:9200

해결:

  1. DDEV 환경이 실행 중인지 확인: ddev status
  2. ES 컨테이너 상태 확인: ddev describe
  3. ES 인덱스 확인: ddev exec curl elasticsearch:9200/_cat/indices

증상: pydantic_settings 모듈 없음

해결:

Terminal window
pip install pydantic-settings