FastAPI와 LangChain을 사용하여 구축된 AI 기반 뉴스레터 생성 서비스입니다.
- Google Vertex AI (Gemini) 기반 뉴스레터 생성
- 다단계 처리를 위한 LangGraph 기반 워크플로우
- 스크랩 콘텐츠 분석 및 조합
- 글쓰기 스타일 적응
- 콘텐츠 템플릿을 위한 구조 분석
- 자동 문서화가 포함된 RESTful API
tyquill-agent/
├── app/
│ ├── __init__.py
│ ├── main.py # FastAPI 애플리케이션
│ ├── models/
│ │ └── newsletter.py # Pydantic 모델
│ ├── services/
│ │ ├── newsletter_workflow.py # LangChain 워크플로우 서비스
│ │ ├── scrap_combination.py # 스크랩 처리 서비스
│ │ └── prompt_templates.py # AI 프롬프트 템플릿
│ └── config/
│ └── settings.py # 애플리케이션 설정
├── main.py # 진입점
├── pyproject.toml # UV 설정
├── Dockerfile # Docker 설정
└── .env # 환경 변수
- Python 3.11+
- UV 패키지 매니저
- Google Vertex AI 프로젝트 및 서비스 계정
- (선택) Google Gemini API 키
- 의존성 설치: -```bash uv sync
2. 환경 변수 설정:
-```bash
cp .env.example .env
# .env 파일을 편집하고 Vertex 프로젝트 설정 및 서비스 계정 경로를 추가하세요
- 애플리케이션 실행:
uv run python main.pyAPI는 http://localhost:8001에서 사용할 수 있습니다.
실행 후 다음 주소에서 확인할 수 있습니다:
- API 문서:
http://localhost:8001/docs - ReDoc:
http://localhost:8001/redoc
제공된 콘텐츠와 매개변수로부터 뉴스레터를 생성합니다.
제공된 콘텐츠의 구조를 분석합니다.
상태 확인 엔드포인트입니다.
GOOGLE_VERTEX_PROJECT_ID: Vertex AI가 활성화된 GCP 프로젝트 ID (필수)GOOGLE_VERTEX_LOCATION: Vertex AI 리전 (기본값: us-central1)GOOGLE_APPLICATION_CREDENTIALS: 서비스 계정 JSON 파일의 절대 경로 (필수)GOOGLE_API_KEY: Google Gemini API 키 (선택, GenAI 직접 호출 시 사용)API_HOST: API 호스트 (기본값: 0.0.0.0)API_PORT: API 포트 (기본값: 8001)DEBUG: 디버그 모드 (기본값: false)
Vertex용 모델 이름은
app/services/newsletter_workflow.py와app/services/scrap_combination.py상단 상수를 수정하여 변경하세요.
Docker 컨테이너에서 실행할 경우
GOOGLE_APPLICATION_CREDENTIALS에 지정한 서비스 계정 JSON이 컨테이너 내부 경로로 마운트되어 있어야 합니다. 파일이 없으면 Application Default Credentials로 폴백합니다.
Docker를 사용하여 빌드 및 실행:
docker build -t tyquill-agent .
docker run -p 8001:8001 --env-file .env tyquill-agent