Skip to main content
LangSmith 자체 호스팅은 가장 규모가 크고 보안을 중시하는 고객을 위해 설계된 Enterprise 플랜의 추가 기능입니다. 자세한 내용은 가격 페이지를 참조하고, 사용자 환경에서 LangSmith를 체험할 수 있는 라이선스 키를 원하시면 영업팀에 문의하시기 바랍니다.
이 페이지에서는 Kubernetes 클러스터에서 LangSmith(관찰성, 추적 및 평가) 를 설정하는 방법을 설명합니다. Helm을 사용하여 LangSmith와 종속성을 설치하게 됩니다.
이 가이드는 관찰성과 평가를 포함하는 기본 LangSmith 플랫폼을 설치하지만, 배포 관리 기능은 포함하지 않습니다. 어떤 것이 필요한지 잘 모르겠다면 자체 호스팅 옵션을 검토하세요.
이 페이지를 완료하면 다음을 갖추게 됩니다:
  • LangSmith UI 및 API: 관찰성, 추적 및 평가 기능 제공
  • 백엔드 서비스: (queue, playground, ACE)
  • 데이터 스토어: (PostgreSQL, Redis, ClickHouse, 선택적 blob 스토리지)
  • 배포 관리: 배포 기능을 추가하려면, 먼저 이 가이드를 완료한 다음 배포 기능이 포함된 LangSmith 자체 호스팅을 따르세요.
이 페이지의 설정을 완료하면 Kubernetes 클러스터에 LangSmith가 설치됩니다. 이 설정은 완전한 추적, 평가 및 모니터링 기능을 제공하지만, 에이전트나 애플리케이션 배포 기능포함하지 않습니다. LangSmith 내에서 배포를 활성화하고 에이전트를 관리하려면 배포 기능이 포함된 LangSmith 자체 호스팅 가이드도 완료해야 합니다. 다음 Kubernetes 배포판에서 LangSmith를 성공적으로 테스트했습니다:
  • Google Kubernetes Engine (GKE)
  • Amazon Elastic Kubernetes Service (EKS)
  • Azure Kubernetes Service (AKS)
  • OpenShift (4.14+)
  • Minikube 및 Kind (개발 목적)
LangSmith를 위한 리소스 프로비저닝을 돕는 여러 Terraform 모듈을 제공하고 있습니다. 공개 Terraform 저장소에서 확인할 수 있습니다.지원하는 클라우드 제공자는 다음과 같습니다:위 링크를 클릭하면 각 모듈의 문서를 확인할 수 있습니다. 이 모듈들은 Kubernetes 클러스터, 스토리지, 네트워킹을 포함한 LangSmith에 필요한 인프라를 신속하게 설정할 수 있도록 설계되었습니다.

사전 요구 사항

다음 도구/항목을 준비해야 합니다. 일부 항목은 선택 사항으로 표시되어 있습니다:
  1. LangSmith 라이선스 키
    1. LangChain 담당자로부터 받을 수 있습니다. 자세한 내용은 영업팀에 문의하세요.
  2. API 키 솔트(Salt)
    1. 생성할 수 있는 비밀 키입니다. 임의의 문자열이어야 합니다.
    2. 다음 명령을 사용하여 생성할 수 있습니다:
    openssl rand -base64 32
    
  3. JWT 시크릿 (선택 사항이지만 기본 인증에 사용됨)
    1. 생성할 수 있는 비밀 키입니다. 임의의 문자열이어야 합니다.
    2. 다음 명령을 사용하여 생성할 수 있습니다:
    openssl rand -base64 32
    

데이터베이스

LangSmith는 PostgreSQL 데이터베이스, Redis 캐시, 그리고 추적을 저장하기 위한 ClickHouse 데이터베이스를 사용합니다. 기본적으로 이러한 서비스는 Kubernetes 클러스터 내부에 설치됩니다. 그러나 외부 데이터베이스를 사용하는 것을 강력히 권장합니다. PostgreSQL과 Redis의 경우, 가장 좋은 옵션은 클라우드 제공자의 관리형 서비스입니다. 자세한 내용은 다음 외부 서비스 설정 가이드를 참조하세요:

Kubernetes 클러스터 요구 사항

  1. kubectl을 통해 액세스할 수 있는 작동하는 Kubernetes 클러스터가 필요합니다. 클러스터는 다음 최소 요구 사항을 충족해야 합니다:
    1. 권장 사항: 최소 16개의 vCPU, 64GB 메모리 사용 가능
      • 조직 규모/사용량에 따라 모든 서비스의 리소스 요청/제한을 조정해야 할 수 있습니다. 권장 사항은 여기에서 확인할 수 있습니다.
      • 리소스 사용량에 따라 노드를 자동으로 확장/축소하기 위해 클러스터 오토스케일러를 사용하는 것을 권장합니다.
      • 오토스케일링을 활성화할 수 있도록 메트릭 서버를 설정하는 것을 권장합니다.
      • ClickHouse를 클러스터 내에서 실행하는 경우, ClickHouse가 기본적으로 이 양의 리소스를 요청하므로 최소 4개의 vCPU와 16GB 메모리를 할당 가능한 노드가 있어야 합니다.
    2. 클러스터에서 유효한 동적 PV 프로비저너 또는 사용 가능한 PV (클러스터 내에서 데이터베이스를 실행하는 경우에만 필요)
      • 영속성을 활성화하기 위해 클러스터 내에서 실행되는 모든 데이터베이스에 대해 볼륨을 프로비저닝하려고 시도합니다.
      • 클러스터에서 PV를 사용하는 경우, 프로덕션 환경에서는 백업을 설정하는 것을 강력히 권장합니다.
      • 더 나은 성능을 위해 SSD로 백업되는 스토리지 클래스를 사용하는 것을 강력히 권장합니다. 7000 IOPS와 1000 MiB/s 처리량을 권장합니다.
      • EKS에서는 동적 프로비저닝을 위해 ebs-csi-driver가 설치 및 구성되어 있는지 확인해야 할 수 있습니다. 자세한 내용은 EBS CSI 드라이버 문서를 참조하세요.
      다음을 실행하여 확인할 수 있습니다:
      kubectl get storageclass
      
      출력에는 동적 프로비저닝을 지원하는 프로비저너가 있는 스토리지 클래스가 하나 이상 표시되어야 합니다. 예:
      NAME            PROVISIONER                 RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
      gp2 (default)   ebs.csi.eks.amazonaws.com   Delete          WaitForFirstConsumer   true                   161d
      
      볼륨 확장을 지원하는 스토리지 클래스를 사용하는 것을 강력히 권장합니다. 추적은 잠재적으로 많은 디스크 공간을 필요로 할 수 있으며, 시간이 지남에 따라 볼륨 크기를 조정해야 할 수 있기 때문입니다.
      스토리지 클래스에 대한 자세한 내용은 Kubernetes 문서를 참조하세요.
  2. Helm
    1. helm을 설치하려면 Helm 문서를 참조하세요
  3. https://beacon.langchain.com에 대한 외부 접속 (오프라인 모드가 아닌 경우)
    1. LangSmith는 라이선스 검증 및 사용량 보고를 위해 https://beacon.langchain.com에 대한 외부 접속이 필요합니다. 이는 LangSmith가 올바르게 작동하는 데 필요합니다. 외부 접속 요구 사항에 대한 자세한 내용은 외부 접속 섹션에서 확인할 수 있습니다.

Helm 차트 구성하기:

  1. 이전 단계의 구성 옵션을 사용하여 langsmith_config.yaml이라는 새 파일을 생성합니다.
    1. langsmith_config.yaml 파일에서 설정할 수 있는 여러 구성 옵션이 있습니다. 특정 구성 옵션에 대한 자세한 내용은 구성 섹션에서 확인할 수 있습니다.
    2. Kubernetes나 Helm이 처음이라면, Helm 차트 저장소의 examples 디렉토리에 있는 예제 구성 중 하나로 시작하는 것을 권장합니다: LangSmith helm 차트 예제
    3. Helm 차트 저장소의 values.yaml 파일에서 전체 구성 옵션 목록을 확인할 수 있습니다: LangSmith Helm 차트
  2. 최소한 다음 구성 옵션을 설정해야 합니다 (기본 인증 사용 시):
    config:
      langsmithLicenseKey: "<your license key>"
      apiKeySalt: "<your api key salt>"
      authType: mixed
      basicAuth:
        enabled: true
        initialOrgAdminEmail: "[email protected]" # 관리자 이메일 주소로 변경하세요
        initialOrgAdminPassword: "secure-password" # 최소 12자 이상이며 소문자, 대문자, 기호를 각각 하나 이상 포함해야 합니다
        jwtSecret: <your jwt salt> # 기본 인증을 위한 JWT 토큰 서명에 사용되는 임의의 문자열입니다.
    
사용 중인 외부 데이터베이스에 대한 연결 세부 정보도 지정해야 합니다.

Kubernetes에 배포하기:

  1. Kubernetes 클러스터에 연결할 수 있는지 확인합니다 (참고: 빈 네임스페이스에 설치하는 것을 강력히 권장합니다)
    1. kubectl get pods 실행 출력은 다음과 유사해야 합니다:
      kubectl get pods langsmith-eks-2vauP7wf 21:07:46No resources found in default namespace.
      
    기본 네임스페이스가 아닌 다른 네임스페이스를 사용하는 경우, -n <namespace> 플래그를 사용하여 helmkubectl 명령에서 네임스페이스를 지정해야 합니다.
  2. LangChain Helm 저장소가 추가되어 있는지 확인합니다. (로컬 차트를 사용하는 경우 이 단계를 건너뛰세요)
    helm repo add langchain https://langchain-ai.github.io/helm/"langchain" has been added to your repositories
    
  3. 차트의 최신 버전을 찾습니다. Helm 차트 저장소에서 사용 가능한 버전을 확인할 수 있습니다.
    • 일반적으로 최신 버전을 사용하는 것을 권장합니다.
    • 또한 helm search repo langchain/langsmith --versions를 실행하여 사용 가능한 버전을 확인할 수도 있습니다. 출력은 다음과 유사합니다:
    langchain/langsmith     0.10.14         0.10.32         Helm chart to deploy the langsmith application ...
    langchain/langsmith     0.10.13         0.10.32         Helm chart to deploy the langsmith application ...
    langchain/langsmith     0.10.12         0.10.32         Helm chart to deploy the langsmith application ...
    langchain/langsmith     0.10.11         0.10.29         Helm chart to deploy the langsmith application ...
    langchain/langsmith     0.10.10         0.10.29         Helm chart to deploy the langsmith application ...
    
  4. helm upgrade -i langsmith langchain/langsmith --values langsmith_config.yaml --version <version> -n <namespace> --wait --debug 실행
    • <namespace>를 LangSmith를 배포할 네임스페이스로 바꿉니다.
    • <version>을 이전 단계에서 설치하려는 LangSmith 버전으로 바꿉니다. 대부분의 사용자는 사용 가능한 최신 버전을 설치해야 합니다.
    helm install 명령이 실행되고 성공적으로 완료되면 다음과 유사한 출력이 표시됩니다:
    NAME: langsmith
    LAST DEPLOYED: Fri Sep 17 21:08:47 2021
    NAMESPACE: langsmith
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    
    데이터베이스 및 기타 서비스를 초기화하기 위해 여러 Kubernetes 리소스를 생성하고 여러 작업을 실행하므로 완료하는 데 몇 분이 걸릴 수 있습니다.
  5. kubectl get pods 실행. 이제 출력은 다음과 유사해야 합니다 (사용한 버전 및 구성에 따라 정확한 Pod 이름이 다를 수 있습니다):
    langsmith-backend-6ff46c99c4-wz22d       1/1     Running   0          3h2m
    langsmith-frontend-6bbb94c5df-8xrlr      1/1     Running   0          3h2m
    langsmith-hub-backend-5cc68c888c-vppjj   1/1     Running   0          3h2m
    langsmith-playground-6d95fd8dc6-x2d9b    1/1     Running   0          3h2m
    langsmith-postgres-0                     1/1     Running   0          9h
    langsmith-queue-5898b9d566-tv6q8         1/1     Running   0          3h2m
    langsmith-redis-0                        1/1     Running   0          9h
    

배포 검증하기:

  1. kubectl get services 실행 출력은 다음과 유사해야 합니다:
    NAME                    TYPE           CLUSTER-IP       EXTERNAL-IP                                                               PORT(S)        AGE
    langsmith-backend       ClusterIP      172.20.140.77    <none>                                                                    1984/TCP       35h
    langsmith-frontend      LoadBalancer   172.20.253.251   <external ip>                                                             80:31591/TCP   35h
    langsmith-hub-backend   ClusterIP      172.20.112.234   <none>                                                                    1985/TCP       35h
    langsmith-playground    ClusterIP      172.20.153.194   <none>                                                                    3001/TCP       9h
    langsmith-postgres      ClusterIP      172.20.244.82    <none>                                                                    5432/TCP       35h
    langsmith-redis         ClusterIP      172.20.81.217    <none>                                                                    6379/TCP       35h
    
  2. langsmith-frontend 서비스의 외부 IP로 curl 요청:
    curl <external ip>/api/tenants
    
    예상 출력:
    [{"id":"00000000-0000-0000-0000-000000000000","has_waitlist_access":true,"created_at":"2023-09-13T18:25:10.488407","display_name":"Personal","config":{"is_personal":true,"max_identities":1},"tenant_handle":"default"}]
    
  3. 브라우저에서 langsmith-frontend 서비스의 외부 IP를 방문합니다 LangSmith UI가 표시되고 작동해야 합니다

LangSmith 사용하기

이제 LangSmith가 실행 중이므로 코드를 추적하는 데 사용할 수 있습니다. 자체 호스팅 LangSmith 사용 방법에 대한 자세한 내용은 자체 호스팅 사용 가이드에서 확인할 수 있습니다. LangSmith 인스턴스가 이제 실행 중이지만 아직 완전히 설정되지 않았을 수 있습니다. 기본 구성 중 하나를 사용한 경우, 기본 관리자 사용자 계정이 생성되어 있습니다. langsmith_config.yaml 파일에 지정한 이메일 주소와 비밀번호로 로그인할 수 있습니다. 다음 단계로 인프라 관리자와 협력하여 다음을 수행하는 것을 강력히 권장합니다:
  • LangSmith 인스턴스에 대한 DNS를 설정하여 더 쉽게 액세스할 수 있도록 합니다
  • LangSmith에 제출된 추적의 전송 중 암호화를 보장하기 위해 SSL을 구성합니다
  • LangSmith 인스턴스를 보호하기 위해 Single Sign-On으로 LangSmith를 구성합니다
  • LangSmith를 외부 Postgres 및 Redis 인스턴스에 연결합니다
  • 대용량 파일을 저장하기 위해 Blob 스토리지를 설정합니다
이러한 옵션을 구성하는 방법에 대한 자세한 내용은 구성 섹션을 검토하세요.
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.
I