구성 구조
참고: 필수 항목으로 명시되지 않은 필드는 선택 사항입니다.
version
- 필수
| Key | Type | Description | Example |
|---|---|---|---|
| version | String | 구성 파일의 버전을 지정합니다. | version: 1.3.13 |
cache
| Key | Type | Description | Example |
|---|---|---|---|
| cache | Boolean | 캐싱을 켜거나 끕니다. 캐싱을 활성화하려면 `true`로 설정하세요(기본값). | cache: true |
skillSync
| Key | Type | Description | Example |
|---|---|---|---|
| skillSync | Object | 외부 Skill 미러링을 구성합니다. v1.3.13부터 GitHub Skill Sync가 지원됩니다. |
참고: Skill Sync Object Structure
messageFilter
| Key | Type | Description | Example |
|---|---|---|---|
| messageFilter | Object | 서버 측 메시지 필터를 구성합니다. v1.3.13부터 `messageFilter.pii`는 모델 호출 및 지속성 이전에 자격 증명 형태의 제출된 텍스트를 거부할 수 있습니다. |
참조: Message Filter Object Structure
fileStrategy
- 옵션: "local" | "firebase" | "s3" | "azure_blob" | "cloudfront"
| Key | Type | Description | Example |
|---|---|---|---|
| fileStrategy | String | 사용자가 업로드하거나 생성한 파일을 저장할 위치를 결정합니다. 생략 시 기본값은 `"local"`입니다. | fileStrategy: "firebase" |
- 참고:
"cloudfront"는 파일을 S3에 저장하고 안정적인 미디어 전송, 서명된 쿠키(signed cookies) 및 서명된 다운로드(signed downloads)를 위해 CloudFront URL을 반환합니다."firebase"는 Firebase Storage 및 Firebase Hosting 엣지 위치를 통해 파일을 제공합니다.- S3는 만료되는 presigned URL(임시 서명 토큰)을 통해 파일을 제공합니다. 일단 만료되면 해당 URL을 참조하는 모든 이미지나 아바타는 UI에서 깨진 상태로 표시됩니다. 이로 인해 S3는 시각적 자산을 위한 기본 전략으로 적합하지 않습니다. 자세한 내용은 관련 토론을 참조하세요.
- 이미지와 아바타의 최적 성능을 위해
"cloudfront"또는"firebase"를 사용하거나,fileStrategies를 구성하여avatar및image를 CDN 기반 전략으로 라우팅하십시오. - 설정 세부 정보는 File Storage & CDN documentation을 참조하세요.
fileStrategies
다양한 파일 유형에 대한 파일 저장 전략을 세밀하게 제어할 수 있습니다.
- 사용 가능한 전략(Available Strategies): "local" | "firebase" | "s3" | "azure_blob" | "cloudfront"
| Key | Type | Description | Example |
|---|---|---|---|
| fileStrategies | Object | 파일 유형별로 서로 다른 저장 전략을 구성합니다. 단일 fileStrategy 옵션보다 더 유연합니다. |
하위 키:
| Key | Type | Description | Example |
|---|---|---|---|
| default | String | 특정 유형이 정의되지 않았을 때의 대체 저장 전략입니다. 기본값은 "local"입니다. | |
| avatar | String | 사용자 및 에이전트 아바타 이미지를 위한 스토리지 전략입니다. 최상의 성능을 위해 CDN 기반 전략(`"cloudfront"` 또는 `"firebase"`)을 사용하는 것을 권장합니다. | |
| image | String | 채팅에 업로드된 이미지에 대한 스토리지 전략입니다. 최상의 성능을 위해 CDN 기반 전략(`"cloudfront"` 또는 `"firebase"`)을 사용하는 것을 권장합니다. | |
| document | String | 문서 업로드(PDF, 텍스트 파일 등)를 위한 스토리지 전략. | |
| skills | String | Skills와 함께 번들로 제공되는 파일에 대한 저장 전략. |
- 참고:
- 이 설정은 단일
fileStrategy옵션보다 우선합니다. - 특정 파일 형식이 구성되지 않은 경우,
default로 대체된 다음fileStrategy로, 마지막으로"local"로 대체됩니다. - 이미지와 아바타가 UI 전반에서 올바르게 렌더링되려면 지속적이고 안정적인 URL이 필요합니다. S3 사전 서명된 URL은 만료되기 때문에(AWS 제한: IAM 사용자의 경우 7일, STS/역할 기반 자격 증명의 경우 몇 시간), 모델 선택기 및 채팅 UI에서 이미지가 깨지는 현상이 발생합니다. 자세한 내용은 관련 토론을 참조하세요. 이를 방지하려면
avatar및image에"cloudfront"또는"firebase"를 사용하세요. - S3 및 Azure Blob Storage는 수명이 짧은 사전 서명된(presigned) 다운로드 URL이 적합한
document저장소로 사용하기에 매우 적합합니다. - 각 스토리지 공급자에 대한 설정 세부 정보는 File Storage & CDN documentation을 참조하세요.
- 이 설정은 단일
예시:
# Use a single strategy for all file types
fileStrategies:
default: 's3'# Route images and avatars to CDN, keep documents in object storage
fileStrategies:
avatar: 'cloudfront' # CDN delivery for avatars
image: 'cloudfront' # CDN delivery for generated/uploaded images
document: 's3' # Object storage for documents# Only configure specific types, others use default
fileStrategies:
default: 'local'
avatar: 'firebase' # Only avatars use Firebase CDN, everything else is localcloudfront
키:
| Key | Type | Description | Example |
|---|---|---|---|
| cloudfront | Object | S3에 저장된 파일을 위한 CloudFront 전송을 구성합니다. |
하위 키(Subkeys):
| Key | Type | Description | Example |
|---|---|---|---|
| domain | String | CloudFront 배포 도메인 또는 CNAME. 파일 전략에서 `"cloudfront"`를 사용하는 경우 필수입니다. | domain: "https://cdn.example.com" |
| distributionId | String | CloudFront 배포 ID. `invalidateOnDelete`가 true일 때 필수입니다. | distributionId: "E1234ABCD" |
| invalidateOnDelete | Boolean | 삭제된 파일에 대한 CloudFront 무효화를 생성합니다. 기본값: false. | invalidateOnDelete: false |
| imageSigning | String | 인라인 이미지/아바타 액세스를 제어합니다. 옵션: `"none"` 또는 `"cookies"`. `"url"`은 예약되어 있으며 이미지에 대해서는 구현되지 않았습니다. | imageSigning: "cookies" |
| cookieDomain | String | 서명된 쿠키에 필요한 공유 상위 쿠키 도메인입니다. 점(.)으로 시작해야 합니다. | cookieDomain: ".example.com" |
| cookieExpiry | Number | 서명된 쿠키의 유효 시간(초 단위)입니다. 기본값: 1800, 최댓값: 604800. | cookieExpiry: 1800 |
| urlExpiry | Number | 초 단위의 서명된 CloudFront 다운로드 URL 수명입니다. 기본값: 3600. | urlExpiry: 3600 |
| storageRegion | String | 지역 경로가 활성화된 경우 생성된 객체 키에 사용되는 선택적 지역 레이블입니다. | storageRegion: "us-east-2" |
| includeRegionInPath | Boolean | 새로 생성된 객체 키에 스토리지 리전을 포함합니다. 기본값: false. | includeRegionInPath: false |
| requireSignedAccess | Boolean | 서명된 쿠키 CloudFront 액세스를 초기화할 수 없을 때 시작을 거부합니다. 기본값: false. | requireSignedAccess: true |
참고: CloudFront Object Structure 및 CloudFront with S3
filteredTools
| Key | Type | Description | Example |
|---|---|---|---|
| filteredTools | Array of Strings | Plugins 및 OpenAI Assistants endpoint 모두에서 특정 도구를 필터링합니다. | filteredTools: ["scholarai", "calculator"] |
- 참고:
includedTools와filteredTools가 모두 지정된 경우,includedTools만 인식됩니다.gptPlugins및assistantsendpoint 모두에 영향을 미칩니다.- 필터링할 도구의 이름은
api/app/clients/tools/manifest.json에서 확인할 수 있습니다.pluginKey값을 사용하세요
- 또한,
api/app/clients/tools/.well-known디렉토리의 ".well-known" 아래에 나열된 모든 항목도 포함됩니다.name_for_model값을 사용하세요
includedTools
| Key | Type | Description | Example |
|---|---|---|---|
| includedTools | Array of Strings | Plugins 및 OpenAI Assistants endpoint 모두의 특정 도구를 포함합니다. | includedTools: ["calculator"] |
- 참고:
includedTools와filteredTools가 모두 지정된 경우,includedTools만 인식됩니다.gptPlugins및assistantsendpoint 모두에 영향을 미칩니다.- 필터링할 도구의 이름은
api/app/clients/tools/manifest.json에서 확인할 수 있습니다.pluginKey값을 사용하세요
- 또한,
api/app/clients/tools/.well-known디렉토리의 ".well-known" 아래에 나열된 모든 항목도 포함됩니다.name_for_model값을 사용하세요
secureImageLinks
| Key | Type | Description | Example |
|---|---|---|---|
| secureImageLinks | Boolean | 앱에서 로컬로 호스팅되는 이미지 링크에 대한 액세스를 보안 처리할지 여부입니다. 기본값: false. | secureImageLinks: true |
imageOutputType
- 참고: 대소문자를 구분합니다. Google endpoint는 "jpeg" 및 "png" 출력 유형만 지원합니다.
- 옵션: "png" | "webp" | "jpeg"
| Key | Type | Description | Example |
|---|---|---|---|
| imageOutputType | String | 이미지 응답에 대한 이미지 출력 유형입니다. 생략 시 기본값은 "png"입니다. | imageOutputType: "webp" |
ocr
키:
| Key | Type | Description | Example |
|---|---|---|---|
| ocr | Object | 이미지에서 텍스트를 추출하기 위한 광학 문자 인식(OCR) 설정을 구성합니다. |
하위 키(Subkeys):
| Key | Type | Description | Example |
|---|---|---|---|
| apiKey | String | OCR 서비스를 위한 API 키입니다. | |
| baseURL | String | OCR 서비스 API의 기본 URL입니다. | |
| strategy | String | 사용할 OCR 전략입니다. 옵션은 "mistral_ocr", "azure_mistral_ocr", "vertexai_mistral_ocr", "document_parser" 또는 "custom_ocr"입니다. | |
| mistralModel | String | OCR 처리에 사용할 Mistral 모델입니다. |
참고: OCR Config Object Structure
webSearch
키:
| Key | Type | Description | Example |
|---|---|---|---|
| webSearch | Object | 웹 검색 기능을 구성하며, 검색 제공자, 콘텐츠 스크레이퍼, 결과 리랭커를 포함합니다. |
하위 키(Subkeys):
| Key | Type | Description | Example |
|---|---|---|---|
| serperApiKey | String | Serper API 키를 위한 환경 변수 이름입니다. .env에 설정되지 않은 경우, 사용자가 UI를 통해 입력하도록 요청받게 됩니다. | |
| searxngInstanceUrl | String | SearXNG 인스턴스 URL을 위한 환경 변수 이름입니다. .env에 설정되지 않은 경우, 사용자가 UI를 통해 입력하도록 요청받게 됩니다. | |
| searxngApiKey | String | SearXNG API 키를 위한 환경 변수 이름입니다. .env에 설정되지 않은 경우, 사용자에게 UI를 통해 입력하라는 메시지가 표시됩니다. | |
| tavilyApiKey | String | Tavily API 키를 위한 환경 변수 이름입니다. 검색 및 스크레이퍼 모두에 사용됩니다. .env에 설정되지 않은 경우, 사용자에게 UI를 통해 입력하라는 메시지가 표시됩니다. | |
| tavilySearchUrl | String | 사용자 지정 Tavily Search API URL을 위한 환경 변수 이름입니다. 선택 사항이며, 설정하지 않으면 Tavily 호스팅 검색이 기본값으로 사용됩니다. | |
| tavilyExtractUrl | String | 사용자 지정 Tavily Extract API URL을 위한 환경 변수 이름입니다. 선택 사항이며, 설정하지 않으면 Tavily 호스팅 extract가 기본값으로 사용됩니다. | |
| firecrawlApiKey | String | Firecrawl API 키를 위한 환경 변수 이름입니다. .env에 설정되지 않은 경우, 사용자는 UI를 통해 이를 입력하라는 메시지를 받게 됩니다. | |
| firecrawlApiUrl | String | Firecrawl API URL을 위한 환경 변수 이름입니다. .env에 설정되지 않은 경우, 사용자가 UI를 통해 입력하도록 요청받게 됩니다. | |
| jinaApiKey | String | Jina API 키를 위한 환경 변수 이름입니다. .env에 설정되지 않은 경우, 사용자가 UI를 통해 입력하도록 요청받게 됩니다. | |
| cohereApiKey | String | Cohere API 키를 위한 환경 변수 이름입니다. .env에 설정되지 않은 경우, 사용자에게 UI를 통해 입력하라는 메시지가 표시됩니다. | |
| searchProvider | String | 사용할 검색 공급자를 지정합니다. 옵션: "serper", "searxng", "tavily". | |
| scraperProvider | String | 사용할 스크레이퍼 서비스를 지정합니다. 옵션: "firecrawl", "serper", "tavily". | |
| firecrawlVersion | String | Firecrawl API 버전(v0 또는 v1)을 지정합니다. | |
| rerankerType | String | 사용할 reranker 서비스를 지정합니다. reranking을 건너뛰려면 "none"으로 설정하세요. 옵션: "jina", "cohere", "none". | |
| scraperTimeout | Integer | 스크레이퍼 요청에 대한 밀리초 단위의 타임아웃입니다. 음수가 아닌 정수여야 합니다. | |
| safeSearch | Number | 안전 검색 필터링 수준입니다. 0 = OFF, 1 = MODERATE (기본값), 2 = STRICT. |
참고: Web Search Object Structure
fileConfig
키:
| Key | Type | Description | Example |
|---|---|---|---|
| fileConfig | Object | 애플리케이션의 파일 처리 설정을 구성하며, 여기에는 크기 제한 및 MIME 유형 제한이 포함됩니다. |
하위 키(Subkeys):
| Key | Type | Description | Example |
|---|---|---|---|
| endpoints | Record/Object | 개별 endpoint에 대한 파일 처리 구성을 지정하여 endpoint별로 사용자 정의를 허용합니다. | |
| serverFileSizeLimit | Number | 서버가 허용할 최대 파일 크기(MB 단위)입니다. 엔드포인트별 설정으로 재정의되지 않는 한 모든 endpoint에 전역적으로 적용됩니다. | |
| avatarSizeLimit | Number | 사용자 아바타 이미지의 최대 크기(MB 단위). | |
| clientImageResize | Object | 파일 업로드를 최적화하고 대용량 이미지로 인한 업로드 오류를 방지하기 위해 클라이언트 측 이미지 크기 조정을 구성합니다. | |
| ocr | Object | OCR(광학 문자 인식) 파일 처리를 위한 설정. | |
| text | Object | 직접 텍스트 파일 파싱을 위한 설정. | |
| stt | Object | 음성-텍스트 변환(STT) 오디오 파일 처리를 위한 설정입니다. | |
| fileTokenLimit | Number | 프롬프트에 포함할 텍스트 파일의 최대 토큰 수(잘리기 전). | fileTokenLimit: 100000 |
clientImageResize
키:
| Key | Type | Description | Example |
|---|---|---|---|
| clientImageResize | Object | 파일 업로드를 최적화하고 대용량 이미지로 인한 업로드 오류를 방지하기 위해 클라이언트 측 이미지 크기 조정을 구성합니다. |
하위 키(Subkeys):
| Key | Type | Description | Example |
|---|---|---|---|
| enabled | Boolean | 클라이언트 측 이미지 크기 조정 기능을 활성화하거나 비활성화합니다. 기본값: false. | enabled: true |
| maxWidth | Number | 크기 조정된 이미지의 최대 너비(픽셀 단위)입니다. 이보다 넓은 이미지는 크기가 조정됩니다. 기본값: 1920. | maxWidth: 1024 |
| maxHeight | Number | 크기 조정된 이미지의 최대 높이(픽셀 단위)입니다. 이보다 높은 이미지는 크기가 조정됩니다. 기본값: 1080. | maxHeight: 768 |
| quality | Number | JPEG 압축 품질 (0.1에서 1.0). 값이 높을수록 품질은 좋아지지만 파일 크기가 커집니다. 기본값: 0.8. | quality: 0.9 |
| compressFormat | String | 압축된 이미지의 출력 형식입니다. 옵션: "jpeg", "webp". 기본값: "jpeg". | compressFormat: "webp" |
설명:
clientImageResize 구성은 업로드 전 클라이언트 측에서 자동으로 이미지 크기를 조정하는 기능을 활성화합니다. 이 기능은 다음을 지원합니다:
- 업로드 실패 방지: 대용량 이미지 파일이 서버 제한을 초과하는 문제 방지
- 전송 전에 이미지를 압축하여 대역폭 사용량을 줄이세요
- 업로드 성능 개선: 더 작은 파일 크기 사용
- 파일 크기를 최적화하면서 이미지 품질을 유지하세요
이 기능이 활성화되면, 지정된 maxWidth 또는 maxHeight 치수를 초과하는 이미지는 서버로 업로드되기 전에 클라이언트 측에서 자동으로 크기가 조정됩니다. 크기 조정은 이미지의 가로세로 비율을 유지하면서 지정된 범위 내에 맞도록 보장합니다.
예시:
fileConfig:
clientImageResize:
enabled: true
maxWidth: 1920
maxHeight: 1080
quality: 0.8
compressFormat: 'jpeg'참고:
- 이미지 파일(JPEG, PNG, WebP 등)에만 적용됩니다.
- 이미지가 지정된 크기를 초과하면 자동으로 크기가 조정됩니다
- 크기 조정 중 원본 가로세로 비율이 유지됩니다
- 이 기능은 지원되는 모든 이미지 업로드 endpoint에서 작동합니다.
- Quality 설정은 JPEG 및 WebP 형식에만 적용됩니다.
- 품질을 너무 낮게(0.5 미만) 설정하면 눈에 띄는 이미지 품질 저하가 발생할 수 있습니다.
참고: File Config Object Structure
rateLimits
키:
| Key | Type | Description | Example |
|---|---|---|---|
| rateLimits | Object | 요청 횟수를 제한하여 남용을 방지하는 속도 제한 정책을 정의합니다. |
하위 키(Subkeys):
| Key | Type | Description | Example |
|---|---|---|---|
| fileUploads | Object | 파일 업로드 작업에 대한 속도 제한을 구체적으로 구성합니다. | |
| conversationsImport | Object | 대화 가져오기 작업에 대한 속도 제한을 구체적으로 구성합니다. | |
| stt | Object | 음성-텍스트 변환(stt) 요청에 대한 속도 제한을 구체적으로 구성합니다 | |
| tts | Object | text-to-speech (tts) 요청에 대한 속도 제한을 구체적으로 구성합니다 |
fileUploads 하위 키:
| Key | Type | Description | Example |
|---|---|---|---|
| ipMax | Number | IP 주소당 시간 단위별로 허용되는 최대 업로드 횟수입니다. | |
| ipWindowInMinutes | Number | IP 기반 업로드 제한을 위한 시간 창(분 단위)입니다. | |
| userMax | Number | 사용자당 윈도우별로 허용되는 최대 업로드 수입니다. | |
| userWindowInMinutes | Number | 사용자 기반 업로드 제한을 위한 시간 창(분 단위). |
conversationsImport 하위 키:
| Key | Type | Description | Example |
|---|---|---|---|
| ipMax | Number | IP 주소당 윈도우별로 허용되는 최대 가져오기(import) 횟수입니다. | |
| ipWindowInMinutes | Number | IP 기반 가져오기 제한을 위한 시간 창(분 단위)입니다. | |
| userMax | Number | 사용자당 윈도우별 최대 가져오기(import) 횟수. | |
| userWindowInMinutes | Number | 사용자 기반 가져오기 제한에 대한 시간 창(분 단위). |
tts 하위 키:
| Key | Type | Description | Example |
|---|---|---|---|
| ipMax | Number | IP 주소당 윈도우별로 허용되는 최대 요청 수입니다. | |
| ipWindowInMinutes | Number | IP 기반 요청 제한을 위한 시간 창(분 단위). | |
| userMax | Number | 사용자당 윈도우별 최대 요청 수. | |
| userWindowInMinutes | Number | 사용자 기반 요청 제한을 위한 시간 창(분 단위). |
stt 하위 키:
| Key | Type | Description | Example |
|---|---|---|---|
| ipMax | Number | IP 주소당 윈도우별로 허용되는 최대 요청 수입니다. | |
| ipWindowInMinutes | Number | IP 기반 요청 제한을 위한 시간 창(분 단위). | |
| userMax | Number | 사용자당 윈도우별 최대 요청 수. | |
| userWindowInMinutes | Number | 사용자 기반 요청 제한을 위한 시간 창(분 단위). |
- 예시:
rateLimits:
fileUploads:
ipMax: 100
ipWindowInMinutes: 60
userMax: 50
userWindowInMinutes: 60
conversationsImport:
ipMax: 100
ipWindowInMinutes: 60
userMax: 50
userWindowInMinutes: 60
stt:
ipMax: 100
ipWindowInMinutes: 1
userMax: 50
userWindowInMinutes: 1
tts:
ipMax: 100
ipWindowInMinutes: 1
userMax: 50
userWindowInMinutes: 1registration
키:
| Key | Type | Description | Example |
|---|---|---|---|
| registration | Object | 애플리케이션의 등록 관련 설정을 구성합니다. |
하위 키(Subkeys):
| Key | Type | Description | Example |
|---|---|---|---|
| socialLogins | 소셜 로그인 설정 | ||
| allowedDomains | 등록이 허용된 도메인을 지정합니다. |
참고:
memory
키:
| Key | Type | Description | Example |
|---|---|---|---|
| memory | Object | 애플리케이션의 대화 메모리 및 개인화 기능을 구성합니다. |
하위 키(Subkeys):
| Key | Type | Description | Example |
|---|---|---|---|
| disabled | Boolean | true로 설정하면 메모리 기능을 비활성화합니다. | |
| validKeys | Array of Strings | 메모리 저장소에 유효한 키를 지정합니다. | |
| tokenLimit | Number | 메모리 저장 및 처리를 위한 최대 토큰 수를 설정합니다. | |
| charLimit | Number | 메모리 저장소의 최대 문자 수를 설정합니다. 기본값: 10000. | |
| maxInputTokens | Number | 추출 전 자동 메모리 에이전트로 전송되는 최근 채팅 토큰의 상한선을 설정합니다. 기본값: 12000. | |
| personalize | Boolean | 개인화 기능을 활성화하거나 비활성화합니다. | |
| messageWindowSize | Number | 메모리 컨텍스트에 포함할 최근 메시지 수를 지정합니다. | |
| agent | Object | Union | 메모리 처리를 담당하는 에이전트를 구성합니다. |
summarization
키:
| Key | Type | Description | Example |
|---|---|---|---|
| summarization | Object | 대화 요약 및 컨텍스트 정리(pruning)를 구성합니다. 엔드포인트별 `summarize` 및 `summaryModel` 필드를 대체합니다. |
하위 키(Subkeys):
| Key | Type | Description | Example |
|---|---|---|---|
| provider | String | 요약 호출을 위한 LLM 공급자입니다. 기본값은 에이전트 자체의 공급자입니다. | |
| model | String | 요약 호출을 위한 모델입니다. 기본값은 에이전트 자체 모델입니다. | |
| parameters | Object | 요약 요청을 위한 추가 LLM 매개변수. | |
| prompt | String | 초기 요약을 위한 사용자 지정 프롬프트. | |
| updatePrompt | String | 이전 요약이 존재할 때 재요약을 위한 사용자 지정 프롬프트. | |
| trigger | Object | 요약이 트리거되는 시점(토큰 비율, 남은 토큰 또는 메시지 수 기준)을 정의합니다. | |
| maxSummaryTokens | Number | 요약 모델 응답을 위한 최대 출력 토큰 수입니다. | |
| reserveRatio | Number | 헤드룸으로 예약된 토큰 예산의 비율(0–1). 기본값: 0.05. | |
| contextPruning | Object | 이전 메시지에 대한 위치 기반 도구 결과 저하를 구성합니다. |
참고: Summarization Object Structure
actions
키:
| Key | Type | Description | Example |
|---|---|---|---|
| actions | Object | 에이전트 및 어시스턴트에서 사용하는 액션 관련 설정을 구성합니다 |
하위 키(Subkeys):
| Key | Type | Description | Example |
|---|---|---|---|
| allowedDomains | Array of Strings | 액션을 위한 도메인 엄격 화이트리스트입니다. 설정 시, 나열된 도메인만 접근 가능합니다. | |
| allowedAddresses | Array of Strings | SSRF 예외 목록 (사설 IP 대역만 해당). `allowedDomains`가 구성되지 않았을 때 공용 대상에 대한 제한 없이 특정 사설 host:port 서비스를 허용합니다. |
참고:
interface
키:
| Key | Type | Description | Example |
|---|---|---|---|
| interface | Object | 애플리케이션 내 사용자 인터페이스 요소를 구성하며, 다양한 구성 요소의 표시 여부와 동작을 사용자 지정할 수 있도록 합니다. |
하위 키(Subkeys):
| Key | Type | Description | Example |
|---|---|---|---|
| privacyPolicy | Object | 제공된 개인정보 처리방침 링크와 관련된 설정을 포함합니다. | |
| termsOfService | Object | 제공된 서비스 약관 링크와 관련된 설정을 포함합니다. | |
| modelSelect | Boolean | 모델 선택 기능의 사용 가능 여부를 결정합니다. | |
| parameters | Boolean | 매개변수 구성 옵션(일명 대화 설정)의 표시 여부를 전환합니다. | |
| presets | Boolean | 프리셋 메뉴를 활성화하거나 비활성화합니다 | |
| prompts | Boolean or Object | 모든 사용자에 대해 프롬프트 관련 기능을 활성화하거나 비활성화합니다 | |
| bookmarks | Boolean | 모든 사용자에 대해 북마크 관련 기능을 활성화하거나 비활성화합니다 | |
| memories | Boolean | 모든 사용자에 대해 memories 기능을 활성화하거나 비활성화합니다 | |
| multiConvo | Boolean | 모든 사용자에 대해 "multi convo"(다중 응답 스트리밍) 관련 기능을 활성화하거나 비활성화합니다. | |
| agents | Boolean or Object | 모든 사용자에 대해 모든 에이전트 기능을 활성화하거나 비활성화합니다 | |
| temporaryChat | Boolean | 임시 채팅 기능을 활성화하거나 비활성화합니다 | |
| temporaryChatRetention | Number | 임시 채팅의 보존 기간을 시간 단위로 설정합니다. 최소: 1, 최대: 8760. 기본값: 720 (30일). | |
| autoSubmitFromUrl | Boolean | `/c/new?prompt=…&submit=true`가 모델에 자동으로 제출될지 여부를 제어합니다. `false`로 설정하면 프롬프트가 미리 채워지지만 자동으로 제출되지는 않습니다. | |
| mcpServers | Object | MCP 서버 선택 및 액세스 제어와 관련된 설정을 포함합니다. | |
| customWelcome | String | 채팅 인터페이스에 표시되는 사용자 지정 환영 메시지입니다. | |
| runCode | Boolean | Markdown 코드 블록에 대한 "코드 실행(Run Code)" 버튼을 활성화하거나 비활성화합니다 | |
| webSearch | Boolean | 채팅 인터페이스에서 웹 검색 버튼을 활성화하거나 비활성화합니다 | |
| fileSearch | Boolean | 채팅 인터페이스에서 파일 검색 버튼을 활성화하거나 비활성화합니다 | |
| fileCitations | Boolean | 모든 사용자에 대해 파일 인용 기능을 전역적으로 활성화하거나 비활성화합니다 | |
| peoplePicker | Object | 사람 선택기 인터페이스에서 어떤 주체 유형을 제어할 수 있는지 구성합니다 | |
| marketplace | Object | Agent Marketplace에 대한 액세스를 활성화하거나 비활성화합니다 |
참고: Interface Object Structure
modelSpecs
키:
| Key | Type | Description | Example |
|---|---|---|---|
| modelSpecs | Object | Model Specs를 구성하여 애플리케이션 내 AI 모델과 그 동작에 대한 상세한 설정 및 사용자 지정을 가능하게 합니다. |
하위 키(Subkeys):
| Key | Type | Description | Example |
|---|---|---|---|
| enforce | Boolean | 모델 사양이 다른 구성 설정을 엄격하게 재정의해야 하는지 여부를 결정합니다. | |
| prioritize | Boolean | Model Specs가 적용 가능한 경우 기본 구성보다 우선순위를 가질지 여부를 지정합니다. | |
| list | Array of Objects | 다양한 구성 및 동작을 상세히 설명하는 개별 Model Specs 목록을 포함합니다. |
참고: Model Specs Object Structure
endpoints
키:
| Key | Type | Description | Example |
|---|---|---|---|
| endpoints | Object | 애플리케이션을 위한 사용자 지정 API endpoint를 정의합니다. |
하위 키(Subkeys):
| Key | Type | Description | Example |
|---|---|---|---|
| custom | Array of Objects | 배열의 각 객체는 고유한 endpoint 구성을 나타냅니다. | |
| azureOpenAI | Object | Azure OpenAI 엔드포인트별 구성 | |
| assistants | Object | Assistants 엔드포인트별 구성. | |
| azureAssistants | Object | Azure Assistants 엔드포인트별 구성. | |
| agents | Object | Agents 엔드포인트별 구성. | |
| all | Object | 모든 endpoint에 적용되는 전역 endpoint 설정입니다. Shared Endpoint Settings를 참조하세요. | |
| allowedAddresses | Array of Strings | SSRF 예외 목록 (사설 IP 대역만 해당). 사용자가 제공한 baseURL이 다른 모든 것에 대한 SSRF 보호를 비활성화하지 않고도 특정 사설 host:port 서비스(예: 자체 호스팅 Ollama)를 가리킬 수 있도록 허용합니다. |
참고: 엔드포인트는
streamRate,headers,titleModel,titleMethod,titlePrompt,titlePromptTemplate,titleEndpoint,maxToolResultChars와 같은 Shared Endpoint Settings을 지원합니다. 이러한 설정은 각 엔드포인트별로 개별적으로 구성하거나all키를 사용하여 전역적으로 구성할 수 있습니다.headers는 병합되며, 키 충돌 시 엔드포인트 수준의 값이 우선합니다.all키는baseURL을 허용하지 않습니다.
참고:
endpoints.allowedAddresses는 사용자가 제공한baseURL값에 적용됩니다(관리자가apiKey: 'user_provided'및baseURL: 'user_provided'로 사용자 지정 endpoint를 구성한 경우). 사용자가 제공한 각 baseURL은 요청 시점에 SSRF 차단 목록에 대해 검증되며, 여기에 나열된 항목은 예외로 처리됩니다. 필드 의미론에 대해서는mcpSettings.allowedAddresses를 참조하십시오. 동일한 규칙이 적용됩니다(사설 IP 대역만 허용, 포트 필수, URL/경로/CIDR/베어 호스트/공용 IP 리터럴은 허용되지 않음).
mcpSettings
키:
| Key | Type | Description | Example |
|---|---|---|---|
| mcpSettings | Object | Model Context Protocol (MCP) 서버에 대한 전역 설정을 정의합니다 |
하위 키(Subkeys):
| Key | Type | Description | Example |
|---|---|---|---|
| allowedDomains | Array of Strings | MCP 서버 연결을 위한 도메인 엄격 허용 목록입니다. 설정 시, 목록에 있는 항목만 연결할 수 있습니다. | |
| allowedAddresses | Array of Strings | SSRF 예외 목록 (사설 IP 대역만 해당). `allowedDomains`를 엄격한 화이트리스트 모드로 전환하지 않고도 특정 사설 host:port 서비스를 허용합니다. |
- 참고:
- 이는 MCP 서버를 통한 내부 주소의 남용/오용을 방지하기 위한 보안 기능입니다.
- 기본적으로 LibreChat은 MCP 서버가 내부, 로컬 또는 사설 네트워크 주소에 연결하는 것을 제한합니다.
- 로컬 IP 주소나 도메인을 사용하는 MCP 서버는 엄격한
allowedDomains화이트리스트에 추가하거나(이 경우 해당 목록만 접근 가능해짐), 공용 목적지에 대한 접근성을 유지하려면allowedAddresses를 통해 정확한 host:port 서비스로 예외 처리할 수 있습니다. - 모든 yaml 구성 변경 사항과 마찬가지로, 변경 사항을 적용하려면 LibreChat을 다시 시작해야 합니다.
- 도메인, 와일드카드 서브도메인(
*.example.com), Docker 도메인 및 IP 주소를 지원합니다.
예시:
mcpSettings:
# Strict whitelist mode:
# allowedDomains:
# - "example.com" # Specific domain
# - "*.example.com" # All subdomains
# - "http://mcp-server:3000" # Internal service, explicitly whitelisted
# Default SSRF mode with private service exemptions:
allowedAddresses:
- 'host.docker.internal:8080' # Permit one private host on one port
- '10.0.0.5:8000' # Permit one private IP on one port참고: MCP Settings Object Structure
mcpServers
키:
| Key | Type | Description | Example |
|---|---|---|---|
| mcpServers | Object | Model Context Protocol (MCP) 서버에 대한 구성을 정의하여 애플리케이션 내에서 MCP 서버를 동적으로 통합할 수 있도록 합니다. |
하위 키(Subkeys):
| Key | Type | Description | Example |
|---|---|---|---|
| <serverName> | Object | `mcpServers` 아래의 각 키는 고유한 이름으로 식별되는 개별 MCP 서버 구성을 나타냅니다. |
- 참고:
- 초기화는 시작 시점에 발생하며, 변경 사항을 적용하려면 앱을 다시 시작해야 합니다.
<serverName>은 각 MCP 서버 구성에 대한 고유 식별자입니다.- 각 MCP 서버는 다음 네 가지 연결 유형 중 하나를 사용하여 구성할 수 있습니다:
stdiowebsocketssestreamable-http
type필드는 MCP 서버에 대한 연결 유형을 지정합니다.type이 생략된 경우,url또는command의 존재 여부와 형식에 따라 기본값이 결정됩니다:url이 지정되어 있고http또는https로 시작하는 경우,type은 기본적으로sse로 설정됩니다.url이 지정되어 있고ws또는wss로 시작하는 경우,type은 기본적으로websocket으로 설정됩니다.command가 지정된 경우,type은 기본적으로stdio로 설정됩니다.
- 추가 구성 옵션은 다음과 같습니다:
timeout: MCP 서버 요청에 대한 밀리초 단위의 타임아웃입니다. 도구 요청에 대한 응답을 기다릴 시간을 결정합니다.initTimeout: MCP 서버 초기화를 위한 밀리초 단위의 타임아웃입니다. 서버가 초기화될 때까지 대기할 시간을 결정합니다.serverInstructions: 에이전트 컨텍스트에 서버 지침을 포함할지 여부를 제어합니다.true(서버 제공 지침 사용),false(비활성화), 또는 사용자 지정 문자열(서버 제공 지침을 재정의)로 설정할 수 있습니다.customUserVars: (선택 사항) 개별 사용자가 MCP 서버에 대해 설정할 수 있는 사용자 지정 변수(예: API 키, URL)를 정의합니다. UI를 통해 제공되는 이러한 사용자별 값은{{VARIABLE_NAME}}구문을 사용하여 서버의headers또는env구성에서 참조할 수 있습니다. 이를 통해 MCP 도구에 대한 사용자별 인증 또는 사용자 지정이 가능합니다.
- 참고: MCP Servers Object Structure
예시:
mcpServers:
everything:
# type: sse # type can optionally be omitted
url: http://localhost:3001/sse
timeout: 30000
initTimeout: 10000
serverInstructions: true # Use server-provided instructions
puppeteer:
type: stdio
command: npx
args:
- -y
- '@modelcontextprotocol/server-puppeteer'
timeout: 30000
initTimeout: 10000
serverInstructions: 'Do not access any local files or local/internal IP addresses'
filesystem:
# type: stdio
command: npx
args:
- -y
- '@modelcontextprotocol/server-filesystem'
- /home/user/LibreChat/
iconPath: /home/user/LibreChat/client/public/assets/logo.svg
mcp-obsidian:
command: npx
args:
- -y
- 'mcp-obsidian'
- /path/to/obsidian/vault
streamable-http-example:
type: streamable-http
url: https://example.com/mcp
headers:
Authorization: 'Bearer ${API_TOKEN}'
timeout: 30000
per-user-crendentials-example:
type: sse
url: 'https//some.mcp/sse'
headers:
X-Custom-Auth-Token: '{{USER_API_KEY}}' # Placeholder for the user-provided API key, defined in `customUserVars` below.
customUserVars:
USER_API_KEY:
title: 'Service API Key'
description: "Your personal API key for this service. You can get it <a href='https://example.com/api-keys' target='_blank'>here</a>."
serverInstructions: true참고: MCP Servers Object Structure
speech
키:
| Key | Type | Description | Example |
|---|---|---|---|
| speech | Object | 애플리케이션을 위한 Text-to-Speech(TTS) 및 Speech-to-Text(STT) 공급자를 구성합니다. |
하위 키(Subkeys):
| Key | Type | Description | Example |
|---|---|---|---|
| tts | Object | Text-to-Speech 공급자 구성 (OpenAI, Azure OpenAI, ElevenLabs, LocalAI). | |
| stt | Object | Speech-to-Text 공급자 구성 (OpenAI, Azure OpenAI). | |
| speechTab | Object | 음성 기능을 위한 기본 UI 설정. |
turnstile
키:
| Key | Type | Description | Example |
|---|---|---|---|
| turnstile | Object | 회원가입 및 로그인 폼의 봇 방지를 위해 Cloudflare Turnstile을 구성합니다. |
하위 키(Subkeys):
| Key | Type | Description | Example |
|---|---|---|---|
| siteKey | String | Cloudflare Turnstile 사이트 키 (필수). | |
| options | Object | 추가 Turnstile 위젯 옵션 (선택 사항). |
참고: Turnstile Object Structure
transactions
키:
| Key | Type | Description | Example |
|---|---|---|---|
| transactions | Object | 트랜잭션 로깅 및 가시성 기능을 제어합니다. |
하위 키(Subkeys):
| Key | Type | Description | Example |
|---|---|---|---|
| enabled | Boolean | 트랜잭션 로깅을 활성화하거나 비활성화합니다. 기본값: true. |
참고: Transactions Object Structure
추가 링크
이 가이드는 어떤가요?