데이터셋 변환

데이터셋 변환

LangSmith를 사용하면 데이터셋의 스키마에서 필드에 변환을 연결해서, UI, API 또는 런 규칙 어디에서 오든 데이터가 데이터셋에 추가되기 전에 변환을 적용할 수 있어요.

LangSmith의 사전 빌드 JSON 스키마 유형과 함께, 데이터를 데이터셋에 저장하기 전에 쉽게 전처리할 수 있게 해줘요.

출처: 문서

본문

변환 유형

변환 유형 대상 유형 기능
remove_system_messages Array[Message] 메시지 목록을 필터링해 시스템 메시지를 제거해요.
convert_to_openai_message Message Array[Message] 들어오는 데이터를 LangChain의 내부 직렬화 형식에서 langchain의 convert_to_openai_messages를 사용해 OpenAI의 표준 메시지 형식으로 변환해요. 대상 필드가 필수로 표시되어 있고 진입 시 일치하는 메시지가 없으면, 몇 가지 잘 알려진 LangSmith 추적 형식(예: 추적된 모든 LangChain BaseChatModel 런 또는 LangSmith OpenAI 래퍼의 추적 런)에서 메시지(또는 메시지 목록)를 추출하려 시도하고, 메시지를 포함한 원래 키를 제거해요.
convert_to_openai_tool Array[Tool] 입력 사전의 최상위 필드에서만 사용 가능. 들어오는 모든 데이터를 langchain의 convert_to_openai_tool을 사용해 OpenAI 표준 도구 형식으로 여기서 변환해요. 지정된 키에 도구가 없으면 런의 호출 파라미터에서 도구 정의를 추출해요. LangChain 채팅 모델은 도구 정의를 입력이 아닌 런의 extra.invocation_params 필드로 추적하기 때문에 유용해요.
remove_extra_fields Object 이 대상 객체에 대해 스키마에 정의되지 않은 모든 필드를 제거해요.

채팅 모델 사전 빌드 스키마

변환의 주요 사용 사례는 프로덕션 트레이스를 데이터셋으로 수집해 모델 프로바이더 전반에서 표준화할 수 있는 형식으로 만들고, 다운스트림의 평가/퓨샷 프롬프팅 등에 사용하는 것을 단순화하는 것이에요.

최종 사용자의 변환 설정을 단순화하기 위해 LangSmith는 다음을 수행하는 미리 정의된 스키마를 제공해요:

  • 수집된 런에서 메시지를 추출해 openai 표준 형식으로 변환. 이는 모든 LangChain ChatModel과 대부분의 모델 프로바이더 SDK와 호환되도록 만들어 다운스트림 평가와 실험에 사용할 수 있게 해줘요.
  • LLM이 사용한 모든 도구를 추출해 예시의 입력에 추가. 다운스트림 평가에서 재현성에 사용할 수 있게 해줘요.

시스템 프롬프트를 반복 개선하려는 사용자는 채팅 모델 스키마를 사용할 때 입력 메시지에 Remove System Messages 변환을 자주 추가해서 시스템 프롬프트가 데이터셋에 저장되는 것을 방지할 수 있어요.

호환성

LLM 런 수집 스키마는 LangChain BaseChatModel 런이나 LangSmith OpenAI 래퍼의 추적 런에서 데이터를 수집하도록 설계됐어요.

추적 중인 LLM 런이 호환되지 않는다면 support.langchain.com을 통해 지원팀에 문의하세요. 지원을 확장할 수 있어요.

다른 종류의 런에 변환을 적용하려면(예: 메시지 기록으로 LangGraph 상태를 표현), 스키마를 직접 정의하고 관련 변환을 수동으로 추가하세요.

활성화

추적 프로젝트나 주석 큐에서 데이터셋으로 런을 추가할 때 런 유형이 LLM이라면 Chat Model 스키마를 기본으로 적용해요.

새 데이터셋에 활성화하는 방법은 데이터셋 관리 방법 가이드를 참고하세요.

사양

사전 빌드 스키마의 전체 API 사양은 아래 섹션을 참고하세요:

입력 스키마

{
  "type": "object",
  "properties": {
    "messages": {
      "type": "array",
      "items": {
        "$ref": "https://api.smith.langchain.com/public/schemas/v1/message.json"
      }
    },
    "tools": {
      "type": "array",
      "items": {
        "$ref": "https://api.smith.langchain.com/public/schemas/v1/tooldef.json"
      }
    }
  },
  "required": ["messages"]
}

출력 스키마

{
  "type": "object",
  "properties": {
    "message": {
      "$ref": "https://api.smith.langchain.com/public/schemas/v1/message.json"
    }
  },
  "required": ["message"]
}

변환

변환은 다음과 같아요:

[
  {
    "path": ["inputs"],
    "transformation_type": "remove_extra_fields"
  },
  {
    "path": ["inputs", "messages"],
    "transformation_type": "convert_to_openai_message"
  },
  {
    "path": ["inputs", "tools"],
    "transformation_type": "convert_to_openai_tool"
  },
  {
    "path": ["outputs"],
    "transformation_type": "remove_extra_fields"
  },
  {
    "path": ["outputs", "message"],
    "transformation_type": "convert_to_openai_message"
  }
]

더 알아보기 (Learn more)