소개
ChatGPT나 Claude같은 유료 LLM 서비스를 n8n으로 실행하다보면, 실제로 얼마나 비용이 들지, LLM 체인에 문제가 생겼을 때는 어디가 어떤 문제가 생겼는지 확인하고 싶을 때가 있습니다. 이 를 위해 LangSmith를 n8n과 연결하여 볼 수 있도록 설정하는 과정을 소개하고자 합니다.
진행 방법
1. n8n - langsmith 설정 준비
출처 : Use LangSmith with n8n | n8n Docs
현재 n8n에 langsmith를 연결하는 건 셀프호스팅하는 n8n에서만 된다는 점 유의하시길 바랍니다.
2. 진행 과정
셀프 호스팅을 하기 위해 우선, docker를 설치하고 진행하겠습니다.
1) Docker 설치 및 Docker Compose 설치
sudo apt update && sudo apt install docker docker-compose -y
sudo apt update
: 패키지 목록을 업데이트하여 최신 버전 정보를 가져옵니다.sudo apt install docker docker-compose -y
: Docker와 Docker Compose를 설치하며,y
옵션은 설치 과정에서 사용자 입력을 생략하고 자동으로 진행하게 합니다.
결과 예시:
Reading package lists... Done
Setting up docker... Done
Setting up docker-compose... Done
2) .env
파일 생성 및 설정
nano .env
nano .env
:.env
라는 환경 변수 파일을 생성하고 편집기(nano)로 엽니다.
nano
로 연 .env
작성 내용:
WEBHOOK_URL= <https://domain.io> (선택)
LANGCHAIN_TRACING_V2=true
LANGCHAIN_API_KEY=sk-langsmith-XXXXXXXXXXXXXXXXXXXXXXXX
LANGCHAIN_PROJECT="프로젝트 명"
WEBHOOK_URL
: n8n에서 외부로 Webhook 요청을 보낼 때 사용하는 URL입니다. (필수는 아닙니다.)LANGCHAIN_TRACING_V2
: LangSmith의 최신 트레이싱 기능을 활성화합니다.LANGCHAIN_API_KEY
: LangSmith API 접근을 위한 인증 키입니다.LANGCHAIN_PROJECT
: LangSmith에서 사용할 프로젝트 이름입니다.
작성 후에는 ctrl + x 를 누른 뒤, y를 눌러 저장을 하고 nano 편집기를 나갑니다.
chmod 600 .env
.env
파일의 권한을 소유자만 읽고 쓸 수 있도록 변경합니다.
3) docker-compose.yml
파일 생성 및 설정
nano docker-compose.yml
docker-compose.yml
파일을 생성하고 nano 편집기로 열어 작성합니다.
작성 내용:
version: '3.7'
services:
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: always
env_file:
- .env
ports:
- "5678:5678"
volumes:
- /var/lib/docker/volumes/n8n_data/_data:/home/node/.n8n
version: '3.7'
: Docker Compose 파일 포맷 버전.services
: Docker Compose로 관리할 서비스 목록.n8n
: n8n 서비스를 정의.image
: n8n의 최신 이미지를 Docker Hub에서 가져옴.container_name
: Docker 컨테이너 이름을n8n
으로 지정.restart: always
: 컨테이너가 종료되면 자동으로 다시 시작.env_file
:.env
파일에서 환경 변수를 불러옴. (핵심)ports
: 호스트(로컬 머신)의 5678 포트를 n8n 컨테이너의 5678 포트에 연결.volumes
: 로컬 경로를 n8n의 데이터 경로로 마운트하여 데이터 지속성 보장.
4) Docker Compose 실행
docker compose up -d
docker compose up
:docker-compose.yml
파일을 기반으로 컨테이너를 생성하고 실행.-
d
: 백그라운드에서 실행.
[+] Running 10/12
Pull complete, Extracting ... done
Container n8n Started
실제 예시
5) 설정 확인
docker exec -it n8n env | grep LANGCHAIN
docker exec -it n8n env
:n8n
컨테이너 내에서 환경 변수를 출력.| grep LANGCHAIN
: 출력된 환경 변수 중LANGCHAIN
으로 시작하는 항목만 필터링.
평소엔 이 명령어로 실행하면 됩니다.
결과와 배운 점
n8n을 이용해 좀 더 명확한 POC를 구현할 수 있고, 서비스를 준비하는 경우, 비용까지 정확히 계산해볼 수 있다는 점을 확인할 수 있었습니다.
n8n에서 제공하는 노드들이 여러가지 있다보니, 워크플로우를 작성할 때 필요한 노드는 무엇인지 배우는 시간이 필요해 보입니다. 그래도 다른 분들이 만들어놓은 워크플로우를 실행해보거나, 직접 노드를 실행하면 금방 배울 수 있을 것이라 생각합니다!