Files
youlbot/services/agent/graph_tools.py
T
shinalok a05d2f474e IDEA-8: GraphRAG — NetworkX 기반 지식 그래프
- td_knowledge_graph 테이블 (user_id, subject, relation, object 트리플)
- GraphService: MultiDiGraph 인메모리 캐시 + MySQL 영속화
- add_relation / query_entity LangChain 도구
- call_model에 그래프 요약 자동 주입 (시스템 프롬프트)
- GRAPH_ENABLED=true 환경변수로 활성화
- requirements.txt에 networkx>=3.0 추가

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 10:08:39 +09:00

25 lines
1.2 KiB
Python

from langchain_core.tools import tool
def make_graph_tools(graph_service, user_id: str = "default"):
"""지식 그래프 저장/조회 Tool 쌍을 반환한다."""
@tool
def add_relation(subject: str, relation: str, obj: str) -> str:
"""가족 구성원이나 사물 사이의 관계를 지식 그래프에 저장합니다.
알레르기·가족 관계·선호도·질환·특기 등 관계형 정보를 저장할 때 사용하세요.
예:
subject='도율', relation='알레르기', obj='복숭아'
subject='아록', relation='자녀', obj='도율'
subject='근혜', relation='직업', obj='간호사'
subject='하율', relation='좋아하는음식', obj='바나나'"""
return graph_service.add_relation(subject, relation, obj, user_id)
@tool
def query_entity(entity: str) -> str:
"""특정 인물이나 사물에 대해 저장된 모든 관계 정보를 조회합니다.
예: entity='도율' → 도율의 알레르기, 나이, 부모, 좋아하는 것 등 모든 알려진 관계"""
return graph_service.query_entity(entity, user_id)
return add_relation, query_entity