어시스턴트

어시스턴트 (Assistants)

어시스턴트Agent Server의 개념으로, 그래프의 핵심 로직과 별도로 구성(예: 프롬프트, LLM 선택, 도구)을 관리할 수 있게 해줘요. 이를 통해 동일한 그래프 아키텍처의 여러 특화 버전을 런타임에 서로 다른 동작으로 만들 수 있답니다. 구조적인 그래프 변경이 아닌 구성 변형을 통해 각 어시스턴트가 다른 사용 사례에 최적화됩니다.

출처: 문서

본문

어시스턴트는 그래프의 핵심 로직과 별도로 구성(예: 프롬프트, LLM 선택, 도구)을 관리할 수 있게 해주는 Agent Server 개념입니다. 이를 통해 동일한 그래프 아키텍처의 여러 특화 버전을 런타임에 서로 다른 동작으로 만들 수 있습니다. (구조적인 그래프 변경이 아닌) 구성 변형을 통해 각 어시스턴트는 다른 사용 사례에 최적화됩니다.

예를 들어 공통 그래프 아키텍처를 기반으로 한 범용 작성 에이전트를 생각해 봅시다. 구조는 동일하게 유지되지만, 블로그 글과 트윗 같은 서로 다른 작성 스타일은 성능 최적화를 위해 맞춤 구성이 필요합니다. 이러한 변형을 지원하려면 기본 그래프를 공유하지만 모델 선택과 시스템 프롬프트가 다른 여러 어시스턴트(예: 블로그용 하나, 트윗용 하나)를 만들 수 있습니다.

assistant versions

Agent Server API는 어시스턴트와 그 버전을 만들고 관리하기 위한 여러 엔드포인트를 제공합니다. 자세한 내용은 API 레퍼런스를 참고하세요.

참고: 어시스턴트는 LangSmith Deployment 개념입니다. 오픈 소스 LangGraph 라이브러리에서는 사용할 수 없습니다.

어시스턴트가 배포와 함께 작동하는 방식

LangSmith Deployment로 그래프를 배포하면, Agent Server가 해당 그래프의 기본 구성에 연결된 기본 어시스턴트(default assistant) 를 자동으로 생성합니다. 그런 다음 같은 그래프에 대해 각각 고유한 구성을 가진 추가 어시스턴트를 만들 수 있습니다.

배포가 langgraph.json에 여러 그래프를 정의하면 각 그래프는 자체 기본 어시스턴트를 갖습니다:

{
    "graphs": {
        "graph_id_1": "path_to_graph_id_1",  // default assistant created for graph_id_1
        "graph_id_2": "path_to_graph_id_2"   // default assistant created for graph_id_2
    }
}

즉, 배포에 정의된 각 그래프에 대해 하나씩 여러 기본 어시스턴트가 있을 수 있습니다.

어시스턴트에는 몇 가지 주요 기능이 있습니다:

  • API와 UI로 관리: Agent Server/LangGraph SDK 또는 LangSmith UI를 사용해 어시스턴트를 만들고, 나열하고, 업데이트하고, 버전을 관리하고, 가져올 수 있습니다.
  • 하나의 그래프, 여러 어시스턴트: 단일 배포된 그래프가 각각 다른 구성(예: 프롬프트, 모델, 도구)을 가진 여러 어시스턴트를 지원할 수 있습니다.
  • 버전 관리된 구성: 각 어시스턴트는 버전 관리를 통해 자체 구성 기록을 유지합니다. 어시스턴트를 편집하면 새 버전이 생성되며, 어떤 버전으로든 승격하거나 롤백할 수 있습니다.
  • 그래프 변경 없는 구성 업데이트: 어시스턴트 구성을 통해 프롬프트, 모델 선택 및 기타 설정을 업데이트해, 그래프 코드를 수정하거나 재배포하지 않고도 빠르게 반복할 수 있습니다.

참고: 어시스턴트를 호출할 때 langgraph.json에서 다음 중 하나를 지정할 수 있습니다:

  • 그래프 ID (예: "agent"): 해당 그래프의 기본 어시스턴트를 사용합니다.
  • 어시스턴트 ID (UUID): 특정 어시스턴트 구성을 사용합니다.

이 유연성을 통해 기본 설정으로 빠르게 테스트하거나, 어떤 구성을 사용할지 정확히 제어할 수 있습니다.

구성 (Configuration)

어시스턴트는 LangGraph 오픈 소스의 구성 개념을 기반으로 합니다.

구성은 오픈 소스 LangGraph 라이브러리에서 사용할 수 있지만, 어시스턴트는 배포된 그래프와 밀접하게 연결되어 있으므로 LangSmith Deployment에만 존재합니다. 배포 시 Agent Server가 그래프의 기본 구성 설정을 사용해 각 그래프에 대한 기본 어시스턴트를 자동으로 생성합니다.

실제로 어시스턴트는 특정 구성을 가진 그래프의 인스턴스일 뿐입니다. 따라서 여러 어시스턴트가 같은 그래프를 참조하면서 다른 구성(예: 프롬프트, 모델, 도구)을 담을 수 있습니다. LangSmith Deployment API는 어시스턴트를 만들고 관리하기 위한 여러 엔드포인트를 제공합니다. 어시스턴트 만드는 방법에 대한 자세한 내용은 API 레퍼런스이 하우투를 참고하세요.

사용 사례

어시스턴트는 동일한 그래프 아키텍처를 다른 구성으로 배포해야 할 때 이상적입니다. 일반적인 사용 사례는 다음과 같습니다:

  • 사용자 수준 개인화

    • 사용자별로 모델 선택, 시스템 프롬프트 또는 도구 가용성을 커스터마이즈합니다.
    • 사용자 기본 설정을 저장하고 각 상호작용에 자동으로 적용합니다.
    • 사용자가 서로 다른 AI 페르소나 또는 전문성 수준을 선택할 수 있게 합니다.
  • 고객 또는 조직별 구성

    • 다른 고객이나 조직에 대해 별도의 구성을 유지합니다.
    • 별도의 인프라를 배포하지 않고 각 클라이언트의 동작을 커스터마이즈합니다.
    • 구성 변경을 특정 고객에게 격리합니다.
graph TD
    A["Graph: agent<br/>(deployed)"]
    A --> B["Customer A Assistant<br/>━━━━━━━━━━━━━<br/>Model: GPT-4<br/>Tone: Legal<br/>Tools: Custom"]
    A --> C["Customer B Assistant<br/>━━━━━━━━━━━━━<br/>Model: Claude<br/>Tone: Casual<br/>Tools: Standard"]
    A --> D["Customer C Assistant<br/>━━━━━━━━━━━━━<br/>Model: GPT-3.5<br/>Tone: Formal<br/>Tools: Limited"]

    style A fill:#E5F4FF,stroke:#006DDD,stroke-width:3px,color:#030710
    style B fill:#B3E0F2,stroke:#4A90E2,stroke-width:2px,color:#1E3A5F
    style C fill:#B3E0F2,stroke:#4A90E2,stroke-width:2px,color:#1E3A5F
    style D fill:#B3E0F2,stroke:#4A90E2,stroke-width:2px,color:#1E3A5F
  • 환경별 구성

    • 개발, 스테이징, 프로덕션에 대해 다른 모델이나 설정을 사용합니다.
    • 프로덕션으로 승격하기 전에 스테이징에서 구성 변경을 테스트합니다.
    • 비프로덕션 환경에서 더 작은 모델로 비용을 절감합니다.
  • A/B 테스트 및 실험

    • 다른 프롬프트, 모델 또는 파라미터 설정을 비교합니다.
    • 구성 변경을 사용자 하위 집합에 점진적으로 배포합니다.
    • 구성 변형 간의 성능 차이를 측정합니다.
  • 특화된 작업 변형

    • 범용 에이전트의 도메인별 버전을 만듭니다.
    • 언어, 지역 또는 산업에 대해 구성을 최적화합니다.
    • 실행 세부 사항을 다양하게 하면서 일관된 그래프 로직을 유지합니다.
graph TD
    A["Graph: writing-agent<br/>(deployed)"]
    A --> B["Blog Assistant<br/>━━━━━━━━━━━━━<br/>Model: GPT-4<br/>Tone: Formal<br/>Style: Long-form<br/>Tools: SEO optimization"]
    A --> C["Tweet Assistant<br/>━━━━━━━━━━━━━<br/>Model: GPT-4-mini<br/>Tone: Casual<br/>Style: 280-char limit<br/>Tools: Hashtag suggestions"]
    A --> D["Email Assistant<br/>━━━━━━━━━━━━━<br/>Model: GPT-4<br/>Tone: Professional<br/>Style: Medium length<br/>Tools: Templates"]

    style A fill:#E5F4FF,stroke:#006DDD,stroke-width:3px,color:#030710
    style B fill:#B3E0F2,stroke:#4A90E2,stroke-width:2px,color:#1E3A5F
    style C fill:#B3E0F2,stroke:#4A90E2,stroke-width:2px,color:#1E3A5F
    style D fill:#B3E0F2,stroke:#4A90E2,stroke-width:2px,color:#1E3A5F

버전 관리 (Versioning)

어시스턴트는 시간에 따른 변경을 추적하기 위해 버전 관리를 지원합니다. 어시스턴트를 만든 후 후속 편집은 자동으로 새 버전을 만듭니다.

  • 각 업데이트는 어시스턴트의 새 버전을 만듭니다.
  • 어떤 버전이든 활성 버전으로 승격할 수 있습니다.
  • 이전 버전으로 롤백하는 것은 활성 버전으로 설정하는 것만큼 간단합니다.
  • 모든 버전은 참조 및 롤백을 위해 계속 사용할 수 있습니다.

경고: 어시스턴트를 업데이트할 때 전체 구성 페이로드를 제공해야 합니다. 업데이트 엔드포인트는 이전 버전과 병합하지 않고 처음부터 새 버전을 만듭니다. 유지하고 싶은 모든 구성 필드를 포함해야 합니다.

어시스턴트 버전 관리 방법에 대한 자세한 내용은 어시스턴트 관리 가이드를 참고하세요.

더 알아보기

  • 어시스턴트 관리 방법은 Manage assistants 문서를 참고하세요.
  • Agent Server API 레퍼런스는 API reference 문서를 확인해 보세요.