문서 기여하기

문서 기여하기 (Contributing to documentation)

LangChain 문서 기여는 언제나 환영합니다. 새로운 기능, 통합, 기존 문서 개선이 모두 포함됩니다.

출처: 문서

본문

빠른 시작 - 로컬 개발

문서의 로컬 프리뷰를 실행하려면:

git clone https://github.com/langchain-ai/docs.git
cd docs

mise로 고정된 툴체인을 설치하세요. mise는 .mise.toml에서 Python, Node.js, uv, Vale, Mintlify CLI 버전을 읽고 저장소의 git 훅을 설치합니다:

mise trust && mise install
make install
make dev

이렇게 하면 http://localhost:3000에서 핫 리로드가 되는 개발 서버가 시작됩니다. src/의 파일을 편집하면 변경 사항이 즉시 반영됩니다.

전제 조건 (Prerequisites)

권장: mise trust && mise install을 실행해 모든 고정 버전을 한 번에 가져오세요. .mise.toml이 툴체인의 표준 핀(pin)이며, 그 postinstall 훅이 pre-commit 및 pre-push 훅을 연결합니다.

필수:

  • Python 3.13+
  • uv 0.9.26 이상 - Python 패키지 관리자
  • Node.js 22.x 및 npm. Mintlify는 Node 25 이상을 지원하지 않습니다
  • Make
  • Git

선택:

문서 편집하기

  • GitHub에서 빠르게 편집 — 오타나 작은 변경은 로컬 설정 없이 GitHub에서 직접 편집: 1. 아무 페이지 하단의 Edit this page on GitHub 클릭, 2. 개인 계정으로 포크, 3. GitHub 웹 에디터에서 변경, 4. 풀 리퀘스트 생성.
**`src/`의 파일만 편집하세요** — `build/` 디렉터리는 자동으로 생성됩니다.
  1. 작성 표준에 따라 src/의 파일을 편집합니다.
  2. 제출 전에 품질 검사를 실행합니다.
  3. 검토를 위해 풀 리퀘스트를 만듭니다.
모든 풀 리퀘스트는 메인테이너가 승인한 솔루션이 있는 이슈나 디스커션에 연결해야 합니다. [풀 리퀘스트 요건](/oss/javascript/contributing/overview#pull-request-requirements)을 참고하세요.

품질 검사 실행하기 (Run quality checks)

변경 사항을 제출하기 전에 코드가 포맷팅과 린팅 검사를 통과하는지 확인하세요:

# Check broken links
make broken-links

# Format code automatically
make format

# Check for linting issues
make lint

# Fix markdown issues
make lint_md_fix

# Run tests to ensure your changes don't break existing functionality
make test

자세한 내용은 README사용 가능한 명령 섹션을 참고하세요.

모든 풀 리퀘스트는 CI/CD로 자동 검사됩니다. 동일한 린팅 및 포맷팅 표준이 적용되며, 이 검사가 실패하면 PR은 병합될 수 없습니다.

문서 유형 (Documentation types)

모든 문서는 네 가지 범주 중 하나에 속합니다:

  • 하우투 가이드 (How-to guides): 무엇을 이루고 싶은지 아는 사용자를 위한 작업 중심 지침
  • 개념 가이드 (Conceptual guides): 더 깊은 이해와 통찰을 제공하는 설명
  • 레퍼런스 (Reference): API와 구현 세부 사항의 기술적 설명
  • 튜토리얼 (Tutorials): 이해를 쌓기 위해 실용적 활동을 안내하는 수업
해당되는 경우 모든 문서는 Python과 JavaScript/TypeScript 콘텐츠를 모두 가져야 합니다. 자세한 내용은 [Python과 JavaScript/TypeScript 콘텐츠를 함께 배치](#co-locate-python-and-javascript%2Ftypescript-content) 섹션을 참고하세요.

하우투 가이드 (How-to guides)

하우투 가이드는 무엇을 이루고 싶은지 아는 사용자를 위한 작업 중심 지침입니다. 하우투 가이드의 예는 LangChainLangGraph 탭에 있습니다.

특징:

  • 작업 중심: 특정 작업이나 문제에 집중
  • 단계별: 작업을 더 작은 단계로 분해
  • 실습형: 구체적인 예시와 코드 스니펫 제공

팁:

  • 어떻게(how) 보다는 **무엇(what)**에 집중... 아니, 어떻게에 집중 (why보다 how)
  • 구체적인 예시와 코드 스니펫 사용
  • 작업을 더 작은 단계로 분해
  • 관련 개념 가이드와 레퍼런스에 연결

예시:

개념 가이드 (Conceptual guides)

개념 가이드는 핵심 개념을 추상적으로 다루며 깊은 이해를 제공합니다.

특징:

  • 이해 중심: 왜 그렇게 동작하는지 설명
  • 넓은 관점: 다른 유형보다 더 높고 넓은 시야
  • 설계 지향: 결정과 트레이드오프 설명
  • 컨텍스트 풍부: 비유와 비교 사용

팁:

  • "어떻게"보다 **"왜"**에 집중
  • 기능 사용에 반드시 필요하지 않은 보충 정보 제공
  • 비유와 대안 참조 사용 가능
  • 레퍼런스 콘텐츠를 너무 많이 섞지 않기
  • 관련 튜토리얼과 하우투 가이드에 연결

예시:

레퍼런스 (Reference)

레퍼런스 문서는 어떤 기능이 존재하고 어떻게 사용하는지 정확히 설명하는 상세한 저수준 정보를 포함합니다.

좋은 레퍼런스는:

  • 존재하는 것(모든 파라미터, 옵션, 반환 값)을 설명
  • 쉽게 찾아볼 수 있도록 포괄적이고 구조화
  • 기술적 세부 사항의 권위 있는 출처 역할

레퍼런스 기여: 생성된 API 레퍼런스는 reference.langchain.com에서 이 저장소 밖에서 구축 및 배포됩니다. 버그, 누락된 패키지, 깨진 페이지를 신고하려면 레퍼런스 문서 이슈를 여세요.

LangChain 레퍼런스 모범 사례:

  • 일관성 유지; 프로바이더별 문서의 기존 패턴 따르기
  • 기본 사용법(코드 스니펫)과 흔한 엣지 케이스/실패 모드 모두 포함
  • 기능이 특정 버전을 요구할 때 명시

새 레퍼런스 문서를 만들 때:

  • 호스티드 가이드 자격 기준(월 5만 회 이상 다운로드 또는 추천)을 충족하는 새 통합
  • 복잡한 구성 옵션이 상세 설명을 요구할 때
  • API 변경이 새 파라미터나 동작을 도입할 때
  • 커뮤니티가 특정 기능에 대해 자주 질문할 때

튜토리얼 (Tutorials)

튜토리얼은 스스로 쌓아가는 더 긴 형식의 단계별 가이드로, 사용자를 특정 실용 활동으로 안내해 이해를 쌓게 합니다. 튜토리얼은 일반적으로 Learn 탭에서 찾을 수 있습니다.

긴급한 필요 없이는 외부 기여자의 새 튜토리얼을 일반적으로 병합하지 않습니다. 특정 주제가 문서에서 빠져 있거나 충분히 다뤄지지 않았다고 생각되면 [새 이슈를 열어주세요](https://github.com/langchain-ai/docs/issues).

특징:

  • 실용적: 이해를 쌓기 위한 실용 활동에 집중
  • 단계별: 활동을 더 작은 단계로 분해
  • 실습형: 순차적인 작동 코드 스니펫 제공
  • 보충적: 기능 사용에 반드시 필요하지 않은 추가 컨텍스트와 정보 제공

팁:

  • 코드 스니펫은 사용자가 순서대로 따라가면 순차적이고 작동해야 함
  • 활동에 대한 일부 컨텍스트를 제공하되, 상세 정보는 관련 개념 가이드와 레퍼런스에 연결

예시:

작성 표준 (Writing standards)

Mintlify 컴포넌트

Mintlify 컴포넌트를 사용해 가독성을 높이세요:

  • 콜아웃(Callouts): <Note> — 유용한 보충 정보, <Warning> — 중요한 주의와 파괴적 변경, <Tip> — 모범 사례와 조언, <Info> — 중립적 컨텍스트 정보, <Check> — 성공 확인
  • 구조(Structure): <Steps> — 순차 절차 개요 (긴 단계 목록이나 튜토리얼에는 아님), <Tabs> — 플랫폼별 콘텐츠, <AccordionGroup>/<Accordion> — 기본적으로 접힐 수 있는 있으면 좋은 정보(예: 전체 코드 예시), <CardGroup>/<Card> — 콘텐츠 강조
  • 코드(Code): <CodeGroup> — 여러 언어 예시, 코드 블록에 항상 언어 태그 지정(예: ```python, ```javascript), 코드 블록 제목(예: Success, Error Response)

Mermaid 다이어그램

Mermaid 다이어그램을 추가할 때는 노드 스타일링에 LangChain 브랜드 색상 팔레트를 사용하세요. 기존 다이어그램에서 classDef 줄을 복사하거나 CLAUDE.md의 참조 테이블을 사용하세요.

역할 Fill Stroke Text
process #E5F4FF #006DDD #030710
trigger #F6FFDB #6E8900 #2E3900
decision #FDF3FF #7E65AE #504B5F
output #EBD0F0 #885270 #441E33
alert #F8E8E6 #B27D75 #634643
neutral #F2FAFF #40668D #2F4B68

Tailwind 기본값, Material Design 색상 또는 다른 브랜드 외 팔레트를 사용하지 마세요.

페이지 구조 (Page structure)

모든 문서 페이지는 YAML 프론트매터로 시작해야 합니다:

---
title: "Clear, specific title"
sidebarTitle: "Short title for the sidebar (optional)"
---

Python과 JavaScript/TypeScript 콘텐츠 함께 배치하기

모든 문서는 가능하면 Python과 JavaScript/TypeScript로 모두 작성되어야 합니다. 이를 위해 한 언어 또는 양 언어로 표시되어야 하는 섹션을 구분하는 커스텀 인라인 구문을 사용합니다:

:::python
Python-specific content. In real docs, the preceding backslash (before `python`) is omitted.
:::

:::js
JavaScript/TypeScript-specific content. In real docs, the preceding backslash (before `js`) is omitted.
:::

Content for both languages (not wrapped)

이렇게 하면 /oss/python/concepts/foo.mdx/oss/javascript/concepts/foo.mdx 두 가지 출력(각 언어당 하나)이 생성됩니다. 각 출력 페이지는 내비게이션에 포함되도록 /src/docs.json 파일에 추가해야 합니다.

패리티 부족이 기여를 막지 않게 하려고 합니다. 기능이 한 언어에만 있다면 다른 언어가 따라잡을 때까지 해당 언어로만 문서화해도 좋습니다. 이런 경우 기능이 다른 언어에는 아직 없다는 메모를 포함해 주세요.

Python과 JavaScript/TypeScript 사이에서 콘텐츠 번역에 도움이 필요하면 커뮤니티 슬랙에 물어보거나 PR에서 메인테이너를 태그하세요.

품질 표준 (Quality standards)

일반 지침

  • 중복 피하기 — 같은 내용을 다루는 여러 페이지는 유지 관리가 어렵고 혼란을 일으킵니다. 각 개념이나 기능에는 하나의 정규 페이지만 있어야 합니다. 다시 설명하지 말고 다른 가이드에 연결하세요.
  • 자주 연결하기 — 문서 섹션은 진공 상태에 존재하지 않습니다. 낯선 주제를 배울 수 있도록 다른 섹션에 자주 연결하세요. 여기에는 API 레퍼런스와 개념 섹션에 연결하는 것이 포함됩니다.
  • 간결하게 — less-is-more 접근 방식을 취하세요. 좋은 설명이 있는 다른 섹션이 있으면, 새 관점을 제시하지 않는 한 다시 설명하는 대신 연결하세요.

접근성 요건 (Accessibility)

문서가 모든 사용자에게 접근 가능하도록 하세요:

  • 헤더와 목록으로 쉽게 훑어볼 수 있게 콘텐츠 구성
  • "click here" 대신 구체적이고 실행 가능한 링크 텍스트 사용
  • 모든 이미지와 다이어그램에 설명적인 alt 텍스트 포함

상호 참조 (Cross-referencing)

일관된 상호 참조를 사용해 문서를 API 레퍼런스 문서와 연결하세요.

문서에서 API 레퍼런스로:

@[] 구문을 사용해 API 레퍼런스 페이지에 연결합니다:

See @[`ChatAnthropic`] for all configuration options.

The @[`bind_tools`][ChatAnthropic.bind_tools] method accepts...

빌드 파이프라인은 현재 언어 범위(Python 또는 JavaScript)에 따라 이들을 적절한 마크다운 링크로 변환합니다. 예를 들어 @[ChatAnthropic]은 어떤 버전의 문서를 빌드 중인지에 따라 Python 또는 JS API 레퍼런스 페이지로의 링크가 됩니다. 단, link_map.py 파일에 항목이 존재할 때만 해당합니다! 아래에서 자세히 설명합니다.

자동 링크가 작동하는 방식: @[] 구문은 handle_auto_links.py가 처리합니다. 이 파일은 Python과 JavaScript 범위 모두에 대한 사전 매핑이 포함된 link_map.py에서 링크 키를 조회합니다.

지원 형식:

구문 결과
@[ChatAnthropic] "ChatAnthropic" 표시 텍스트 링크
@[`ChatAnthropic`] `ChatAnthropic` (코드 포맷) 텍스트 링크
@[text][ChatAnthropic] "text" 텍스트, ChatAnthropic을 링크 맵 키로 하는 링크
\@[ChatAnthropic] 이스케이프됨: 리터럴 @[ChatAnthropic]로 렌더링 (링크 없음 – 이 페이지에서 사용 중인 것!)

새 링크 추가하기: 맵에서 링크가 발견되지 않으면 출력에 그대로 남습니다. 새 자동 링크를 추가하려면:

  1. pipeline/preprocessors/link_map.py 열기
  2. LINK_MAPS의 적절한 범위(python 또는 js)에 항목 추가
  3. 키는 @[key] 또는 @[text][key]에서 사용되는 링크 이름이고, 값은 레퍼런스 호스트에 대한 상대 경로

지역화 (Localization)

기능이 두 SDK에 모두 존재하는 경우 Python과 JavaScript/TypeScript를 함께 문서화하세요. 아직 한 언어만 지원된다면, 해당 기능과 그에 대한 참조가 해당 언어에서만 보이도록 하세요.

코드 내 문서화 (In-code documentation)

예시는 정확해야 하고, 가능하면 복사해서 붙여넣기 가능해야 하며, 풀 리퀘스트를 열기 전에 테스트되어야 합니다. 실행 불가능한 스니펫(예: 의사 코드나 설명용 조각)은 명확히 표시하세요.

도움 받기 (Get help)

목표는 가장 단순한 개발자 설정을 갖추는 것입니다. 설정에 어려움이 있다면 커뮤니티 슬랙에 물어보거나 포럼 게시글을 여세요. 내부 팀원은 #documentation 슬랙 채널에서 연락할 수 있습니다.

더 알아보기