Implement Phase 12 feedback, Phase 13 Semantic Chunker, Phase 13-B Reranker, Bug 5 thinking fix

- Phase 12: FeedbackRepository + td_feedback 테이블, Gradio 👍/👎 이벤트, run_id 추적, LangSmith create_feedback() 연동
- Phase 13: 커스텀 _SemanticSplitter 제거 → langchain_experimental.SemanticChunker 교체, buffer_size/threshold_type 환경변수 적용
- Phase 13-B: RerankService (Cross-Encoder), RetrieverService.search()에 reranker 통합, tools.py as_retriever() → search() 전환
- Bug 5: mlx_chat_model enable_thinking 런타임 오버라이드, agent_service stream_mode=["messages","custom"] 이중 스트림, thinking 토큰 custom 이벤트로 emit
- ROADMAP: LLM 모델명 8B 반영, RAG에 Reranker 추가, 추천 진행 순서 갱신

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
sal
2026-05-29 17:41:36 +09:00
parent e1d7e9cc21
commit 145b0cc96f
13 changed files with 469 additions and 143 deletions
+19
View File
@@ -0,0 +1,19 @@
class FeedbackRepository:
def __init__(self, db):
self._db = db
def save_feedback(
self,
user_id: str,
message: str,
response: str,
rating: int,
langsmith_run_id: str | None = None,
) -> None:
self._db.execute_write(
"""
INSERT INTO td_feedback (user_id, message, response, rating, langsmith_run_id)
VALUES (%s, %s, %s, %s, %s)
""",
(user_id, message, response, rating, langsmith_run_id),
)
+11
View File
@@ -99,6 +99,17 @@ class DatabaseService:
UNIQUE KEY uq_user_key (user_id, key_name)
)
""")
cursor.execute("""
CREATE TABLE IF NOT EXISTS td_feedback (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id VARCHAR(50) NOT NULL DEFAULT 'default',
message TEXT,
response TEXT,
rating TINYINT,
langsmith_run_id VARCHAR(100),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
)
""")
conn.commit()
self._migrate_schema(conn)