- plans/completed/ 폴더 삭제 및 파일들을 plans/archive/로 통합 - 원칙 문서에 archive 이동 규칙 명시 (312_문서_작성_원칙.md) - completed 폴더 참조를 archive로 수정 (125_베이즈_성장과_관계의_철학.md) - Gemini API 스트리밍 개선 계획을 archive로 이동 및 간결화 - troubleshooting 문서 생성 및 링크 연결
1.9 KiB
1.9 KiB
Gemini API 스트리밍 및 멀티모달 개선 구현
날짜: 2025-12-25
작성자: happybell80
관련 파일: rb8001/app/services/llm/gemini_handler.py, rb8001/app/router/llm_endpoint.py
구현 완료
Gemini API 신버전 SDK 전환 및 스트리밍/멀티모달/사고 기능 추가 완료.
주요 변경사항
- 신버전 SDK 전환:
google-generativeai→google-genai(Phase 1) - 스트리밍 구현:
generate_content_stream, SSE 엔드포인트/api/llm/stream(Phase 2) - 멀티모달 지원: 이미지, PDF 처리 (
Part.from_bytes) (Phase 3) - 사고 기능:
thinkingBudget,includeThoughts파라미터 지원 (Phase 4) - 에러 처리 강화: Rate Limit 재시도 (지수 백오프), 토큰 모니터링 (Phase 5)
구현 파일
rb8001/app/services/llm/gemini_handler.py: 신버전 SDK 전환, stream_chat 메서드 추가, 멀티모달/사고 기능 통합rb8001/app/router/llm_endpoint.py:/api/llm/streamSSE 엔드포인트 추가
테스트 결과
- 기본 chat API: 정상 작동 (토큰 모니터링 확인)
- 스트리밍 API: 청크 단위 응답 정상 전달
- 배포: 성공적으로 배포 완료 및 검증
교훈
신버전 SDK 메서드명 확인 필수
- 스트리밍 메서드:
generate_content_stream(초기stream_generate_content사용 시 에러 발생) - SDK 문서나 실제 객체 확인 (
dir(client.models))로 정확한 메서드명 확인 필요
동기 generator를 async generator로 변환
- 신버전 SDK의
generate_content_stream은 동기 generator 반환 asyncio.to_thread(next, stream)로 각 청크를 비동기로 처리하여 AsyncIterator로 변환 필요
원칙 문서 준수
- 구현 완료 시 plans/archive/로 이동하고 troubleshooting 문서와 링크 연결
- 원칙 문서에 명확한 규칙 명시 필요