LangSmith 자체 호스팅은 가장 규모가 크고 보안을 중요시하는 고객을 위해 설계된 Enterprise Plan의 추가 기능입니다. 자세한 내용은 가격 페이지를 참조하고, 사용자 환경에서 LangSmith를 체험하기 위한 라이선스 키를 받으려면 영업팀에 문의하세요.
이 페이지는 Kubernetes 클러스터에서 LangSmith(관찰성, 추적 및 평가)를 설정하는 방법을 설명합니다. Helm을 사용하여 LangSmith와 종속성을 설치합니다.
이 가이드는 관찰성 및 평가를 포함하는 기본 LangSmith 플랫폼을 설치하지만, 배포 관리 기능은 포함하지 않습니다. 어떤 것이 필요한지 확실하지 않다면 자체 호스팅 옵션을 검토하세요.
이 페이지를 완료하면 다음을 갖추게 됩니다:
  • LangSmith UI 및 API: 관찰성, 추적 및 평가용.
  • 백엔드 서비스: (queue, playground, ACE).
  • 데이터 저장소: (PostgreSQL, Redis, ClickHouse, 선택적 blob storage).
  • 배포 관리: 배포 기능을 추가하려면 먼저 이 가이드를 완료한 다음 배포 기능이 포함된 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 License Key
    1. LangChain 담당자로부터 받을 수 있습니다. 자세한 내용은 영업팀에 문의하세요.
  2. Api Key Salt
    1. 생성할 수 있는 비밀 키입니다. 무작위 문자열이어야 합니다.
    2. 다음 명령을 사용하여 생성할 수 있습니다:
    openssl rand -base64 32
    
  3. JWT Secret (선택 사항이지만 기본 인증에 사용됨)
    1. 생성할 수 있는 비밀 키입니다. 무작위 문자열이어야 합니다.
    2. 다음 명령을 사용하여 생성할 수 있습니다:
    openssl rand -base64 32
    

데이터베이스

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

Kubernetes 클러스터 요구 사항

  1. kubectl을 통해 액세스할 수 있는 작동하는 Kubernetes 클러스터가 필요합니다. 클러스터는 다음과 같은 최소 요구 사항을 충족해야 합니다:
    1. 권장: 최소 16 vCPU, 64GB 메모리 사용 가능
      • 조직 규모/사용량에 따라 다양한 서비스에 대한 리소스 요청/제한을 조정해야 할 수 있습니다. 권장 사항은 여기에서 확인할 수 있습니다.
      • 리소스 사용량에 따라 노드를 확장/축소하기 위해 클러스터 오토스케일러를 사용하는 것을 권장합니다.
      • 오토스케일링을 활성화할 수 있도록 metrics server를 설정하는 것을 권장합니다.
      • Clickhouse를 클러스터 내에서 실행하는 경우, ClickHouse가 기본적으로 이 양의 리소스를 요청하므로 최소 4 vCPU와 16GB 메모리를 할당 가능한 노드가 있어야 합니다.
    2. 클러스터에서 사용 가능한 유효한 Dynamic PV provisioner 또는 PV (클러스터 내에서 데이터베이스를 실행하는 경우에만 필요)
      • 지속성을 활성화하기 위해 클러스터 내에서 실행되는 모든 데이터베이스에 대해 볼륨을 프로비저닝하려고 시도합니다.
      • 클러스터에서 PV를 사용하는 경우 프로덕션 환경에서 백업을 설정하는 것을 강력히 권장합니다.
      • 더 나은 성능을 위해 SSD로 지원되는 스토리지 클래스를 사용하는 것을 강력히 권장합니다. 7000 IOPS와 1000 MiB/s 처리량을 권장합니다.
      • EKS에서는 동적 프로비저닝을 위해 ebs-csi-driver가 설치되고 구성되어 있는지 확인해야 할 수 있습니다. 자세한 내용은 EBS CSI Driver 문서를 참조하세요.
      다음을 실행하여 확인할 수 있습니다:
      kubectl get storageclass
      
      출력에는 동적 프로비저닝을 지원하는 provisioner가 있는 스토리지 클래스가 하나 이상 표시되어야 합니다. 예를 들어:
      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에 대한 Egress (오프라인 모드에서 실행하지 않는 경우)
    1. LangSmith는 라이선스 확인 및 사용량 보고를 위해 https://beacon.langchain.com에 대한 egress가 필요합니다. 이는 LangSmith가 제대로 작동하는 데 필요합니다. egress 요구 사항에 대한 자세한 내용은 Egress 섹션에서 확인할 수 있습니다.

Helm Chart 구성하기:

  1. 이전 단계의 구성 옵션으로 langsmith_config.yaml이라는 새 파일을 만듭니다.
    1. langsmith_config.yaml 파일에서 설정할 수 있는 여러 구성 옵션이 있습니다. 특정 구성 옵션에 대한 자세한 내용은 Configuration 섹션에서 확인할 수 있습니다.
    2. Kubernetes 또는 Helm을 처음 사용하는 경우 Helm Chart 저장소의 examples 디렉토리에 있는 예제 구성 중 하나로 시작하는 것을 권장합니다: LangSmith helm chart examples.
    3. Helm Chart 저장소의 values.yaml 파일에서 전체 구성 옵션 목록을 볼 수 있습니다: LangSmith Helm Chart
  2. 최소한 다음 구성 옵션을 설정해야 합니다 (기본 인증 사용):
    config:
      langsmithLicenseKey: "<your license key>"
      apiKeySalt: "<your api key salt>"
      authType: mixed
      basicAuth:
        enabled: true
        initialOrgAdminEmail: "[email protected]" # Change this to your admin email address
        initialOrgAdminPassword: "secure-password" # Must be at least 12 characters long and have at least one lowercase, uppercase, and symbol
        jwtSecret: <your jwt salt> # A random string of characters used to sign JWT tokens for basic auth.
    
사용 중인 외부 데이터베이스에 대한 연결 세부 정보도 지정해야 합니다.

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 repo가 추가되어 있는지 확인합니다. (로컬 차트를 사용하는 경우 이 단계를 건너뛰세요)
    helm repo add langchain https://langchain-ai.github.io/helm/"langchain" has been added to your repositories
    
  3. 차트의 최신 버전을 찾습니다. Helm Chart 저장소에서 사용 가능한 버전을 찾을 수 있습니다.
    • 일반적으로 최신 버전을 사용하는 것을 권장합니다.
    • 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 서비스의 external 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 서비스의 external ip를 방문합니다 LangSmith UI가 표시되고 작동해야 합니다

LangSmith 사용하기

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