a05d2f474e
- 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>
25 lines
1.2 KiB
Python
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
|