feat: 이벤트 로깅 시스템 추가 및 주요 컴포넌트 로깅 통합
This commit is contained in:
@@ -9,6 +9,7 @@ from langchain.tools import Tool
|
||||
from langchain.memory import ConversationBufferMemory
|
||||
from web_scraper import WebScraper
|
||||
from google_drive_uploader import GoogleDriveUploader, SimpleDriveSaver
|
||||
from event_logger import get_logger, LangChainEventsHandler
|
||||
|
||||
class AIAgent:
|
||||
def __init__(self, config_path='./config.json'):
|
||||
@@ -85,6 +86,9 @@ class AIAgent:
|
||||
memory=self.memory,
|
||||
verbose=True
|
||||
)
|
||||
# 콜백 핸들러 구성 (이벤트 로깅)
|
||||
logger = get_logger()
|
||||
self.callback_handler = LangChainEventsHandler(logger) if logger else None
|
||||
|
||||
def load_model(self):
|
||||
"""
|
||||
@@ -349,9 +353,15 @@ class AIAgent:
|
||||
주제별로 웹 검색 → 스크래핑 → 요약 → 저장까지 수행
|
||||
반환: [{ topic, response }]
|
||||
"""
|
||||
from event_logger import get_logger
|
||||
logger = get_logger()
|
||||
results = []
|
||||
for topic in topics:
|
||||
if logger:
|
||||
logger.log_event("topic_start", topic=topic)
|
||||
urls = self._search_urls(topic, k=5)
|
||||
if logger:
|
||||
logger.log_event("search_done", topic=topic, url_count=len(urls))
|
||||
collected = []
|
||||
for u in urls[:5]:
|
||||
data = self.web_scraper.scrape_website(u)
|
||||
@@ -372,11 +382,18 @@ class AIAgent:
|
||||
자료:
|
||||
{snippet}
|
||||
"""
|
||||
summary = self.llm(prompt)
|
||||
# LangChain 0.1+: __call__ deprecated → use invoke
|
||||
if logger:
|
||||
logger.log_event("llm_summary_start", topic=topic)
|
||||
summary = self.llm.invoke(prompt)
|
||||
if logger:
|
||||
logger.log_event("llm_summary_end", topic=topic)
|
||||
except Exception as e:
|
||||
summary = f"요약 실패: {e}"
|
||||
|
||||
results.append({"topic": topic, "response": summary})
|
||||
if logger:
|
||||
logger.log_event("topic_done", topic=topic)
|
||||
|
||||
return results
|
||||
|
||||
@@ -432,7 +449,10 @@ class AIAgent:
|
||||
AI 에이전트를 실행합니다.
|
||||
"""
|
||||
try:
|
||||
response = self.agent.run(task_description)
|
||||
if self.callback_handler:
|
||||
response = self.agent.run(task_description, callbacks=[self.callback_handler])
|
||||
else:
|
||||
response = self.agent.run(task_description)
|
||||
return response
|
||||
except Exception as e:
|
||||
print(f"에이전트 실행 실패: {e}")
|
||||
@@ -459,7 +479,14 @@ class AIAgent:
|
||||
"""
|
||||
|
||||
try:
|
||||
response = self.llm(prompt)
|
||||
# LangChain 0.1+: __call__ deprecated → use invoke
|
||||
from event_logger import get_logger
|
||||
logger = get_logger()
|
||||
if logger:
|
||||
logger.log_event("llm_topics_start", count=num_topics)
|
||||
response = self.llm.invoke(prompt)
|
||||
if logger:
|
||||
logger.log_event("llm_topics_end", count=num_topics)
|
||||
# 응답에서 주제들을 추출 (줄 단위로 분리)
|
||||
topics = [line.strip() for line in response.split('\n') if line.strip() and not line.startswith(('1.', '2.', '3.', '-'))]
|
||||
# 최대 num_topics개 반환
|
||||
|
||||
Reference in New Issue
Block a user