웹소켓 연결 완료

This commit is contained in:
2026-02-26 11:19:23 +09:00
parent ec02f27200
commit dbd2c4648b
9 changed files with 312 additions and 70 deletions

View File

@@ -10,15 +10,18 @@ logger = logging.getLogger(__name__)
class GeminiClient:
"""Gemini AI 클라이언트 (ClaudeClient와 동일한 인터페이스)"""
"""Gemini AI 클라이언트 (최신 google-genai SDK 버전)"""
def __init__(self):
if not settings.GEMINI_API_KEY:
raise ValueError("GEMINI_API_KEY is not set")
genai.configure(api_key=settings.GEMINI_API_KEY)
self.model = genai.GenerativeModel(settings.GEMINI_MODEL)
self.generate_config = types.GenerateContentConfig(
# 최신 SDK에서는 Client 객체를 생성하여 사용합니다.
self.client = genai.Client(api_key=settings.GEMINI_API_KEY)
self.model_id = settings.GEMINI_MODEL # 예: 'gemini-2.0-flash'
# GenerationConfig 설정
self.config = types.GenerateContentConfig(
max_output_tokens=settings.MAX_TOKENS,
temperature=settings.TEMPERATURE,
)
@@ -31,16 +34,23 @@ class GeminiClient:
) -> Dict[str, Any]:
"""Gemini를 통한 분석 실행"""
try:
model_with_system_prompt = genai.GenerativeModel(
model_name=self.model.model_name,
system_instruction=system_prompt
# 최신 SDK에서는 별도의 모델 객체 생성 없이 client.models.generate_content를 사용합니다.
# system_instruction을 config에 포함시켜 보냅니다.
config_with_system = types.GenerateContentConfig(
system_instruction=system_prompt,
max_output_tokens=self.config.max_output_tokens,
temperature=self.config.temperature,
)
response = await model_with_system_prompt.generate_content_async(
user_message,
generation_config=self.generate_config,
# 비동기 호출
response = await self.client.models.generate_content(
model=self.model_id,
contents=user_message,
config=config_with_system
)
text = response.text if response.text else ""
return {
"content": [{"type": "text", "text": text}],
"stop_reason": "end_turn",