Legacy 코드 있으면 port
google-generativeai 는 2025 년 11 월 EOL. 여전히 install 되고 많은 경우 동작하긴 하는데 Google 이 더 이상 버그 수정 안 하고, 모델 API 진화하면서 legacy SDK 가 silent 하게 썩어. 마이그레이션은 mechanical 이고 한 번에 처리할 가치 있어.
모양이 바뀌었어
SDK 사이에 여섯 가지가 변함:
| Aspect | Legacy (google-generativeai) | New (google-genai) |
|---|---|---|
| 패키지 | google-generativeai | google-genai |
| Import | import google.generativeai as genai | from google import genai |
| Init | genai.configure(api_key=...) | genai.Client(api_key=...) |
| Model 객체 | genai.GenerativeModel('...') | (없음 — 호출당 model= pass) |
| Generate | model.generate_content(text) | client.models.generate_content(model=..., contents=...) |
| Stream | stream=True kwarg | generate_content_stream() |
| Async | generate_content_async() | client.aio.models.generate_content() |
| Chat | model.start_chat() | client.chats.create(model=...) |
| Vertex | 별도 vertexai pkg | Client(vertexai=True) |
실제로 동작하는 마이그레이션 순서
requirements.txt에google-genai를 legacy 와 함께 pin — 공존 가능.get_client() -> genai.Client를 export 하는 새 module 추가.- 한 번에 한 호출 사이트씩 마이그레이션:
model.generate_content(text)를client.models.generate_content(model=..., contents=text)로 교체. - 마지막 호출 사이트 port 후 legacy
configure()호출 삭제. - requirements 에서 legacy 패키지 제거.