Graph of Thoughts(이하 GoT)는 대규모 언어 모델(LLM)의 추론 경로를 확장하기 위해 설계된 오픈소스 컴퓨팅 프레임워크입니다. 기존 사슬형 체이닝 방법론과 달리, 작업 단계들을 방향성 그래프로 표현하여 각 노드 간의 데이터 흐름과 의존성을 명시적으로 제어합니다. 이를 통해 사용자 정의 검증 루트, 병렬 처리, 피드백 순환 등을 하나의 파이프라인으로 통합할 수 있으며, 복잡도가 높은 논리 검증 및 의사결정 시나리오에 효과적으로 적용됩니다.
환경 구축 및 설치
GoT 라이브러리를 안정적으로 구동하려면 Python 3.8 이상의 인터프리터를 준비해야 합니다. 표준 패키지 관리자를 통해 의존성 없이 바로 사용할 수 있으며, 내부 로직을 수정하거나 커스텀 노드를 추가해야 할 경우 소스 저장소를 클론한 후 편집 모드(-e) 플래그로 설치하는 것이 권장됩니다.
# 기본 환경 설치
pip install graph_of_thoughts
# 개발 모드 설치 (소스 변경이 필요할 경우)
git clone https://github.com/spcl/graph-of-thoughts.git
cd graph-of-thoughts
pip install -e .
언어 모델 엔드포인트 연결
프레임워크의 핵심 엔진인 LLM과의 통신을 위해 인증 정보와 파라미터 세팅이 필요합니다. 프로젝트 디렉토리 내에 config.json 파일을 생성하거나 기존 설정파일을 복사한 뒤, API 키(API Secret), 호출 템플릿 변수, 최대 토큰 제한 값 등을 명시해야 합니다. 주요 벤더 서비스와 호환되므로 제공되는 문서를 참고하여 보안 자격 증명을 등록하십시오.
실제 적용 예시: 정렬 알고리즘 추론
다음 코드는 GoT 라이브러리를 활용해 단순 정렬 작업을 Chain of Thought 방식으로 처리하는 구조입니다. 논리적 흐름은 응답 생성(Genreate) → 품질 점수 부여(Score) → 정답 매칭(GroundTruth) 순서로 노드를 체이닝합니다.
from examples.sorting.sorting_032 import SortingPrompter, SortingParser, utils
from graph_of_thoughts import controller, language_models, operations
# 처리 대상 데이터셋 정의
target_sequence = "[0, 2, 6, 3, 8, 1]"
# 연산 노드 그래프 인스턴스화
reasoning_graph = operations.GraphOfOperations()
reasoning_graph.append_operation(operations.Generate())
reasoning_graph.append_operation(operations.Score(scoring_function=utils.num_errors))
reasoning_graph.append_operation(operations.GroundTruth(utils.test_sorting))
# 외부 LLM 백엔드 매핑
llm_backend = language_models.ChatGPT("config.json", model_name="chatgpt")
# 컨트롤러 실행 및 결과 직렬화
runner = controller.Controller(
llm_backend,
reasoning_graph,
SortingPrompter(),
SortingParser(),
{"input_data": target_sequence, "current_state": "", "strategy": "cot"}
)
runner.run()
runner.output_graph("output_cot_v2.json")
도메인 적용 전략
GoT는 수식 계산, 다단계 논리 검증, 코드 리팩토링 판단 등 단일 프롬프트 응답으로 해결하기 어려운 다층적 문제에 최적화되어 있습니다. 초기 배포 단계에서는 정렬이나 간단한 조건문 평가처럼 노드 의존성이 낮은 프로세스부터 시작해, 점차 병목 지점을 발생시키는 하위 작업으로 분해해 나가는 접근이 효율적입니다. 도메인 특화 요구사항에 따라 가중치 계산을 오버라이드하거나 프롬프트 레이어를 교체하면 추론 정확도를 크게 향상시킬 수 있습니다.