Google endpoint์ ๊ฒฝ์ฐ, Generative Language API(Gemini ๋ชจ๋ธ์ฉ) ๋๋ Vertex AI API(Gemini, PaLM2 ๋ฐ Codey ๋ชจ๋ธ์ฉ)๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Generative Language API๋ Google AI Studio์์ ์ป์ ์ ์๋ API ํค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Vertex AI์ ๊ฒฝ์ฐ, ์ ์ ํ ์ก์ธ์ค ๊ถํ์ด ๊ตฌ์ฑ๋ ์๋น์ค ๊ณ์ (Service Account) JSON ํค ํ์ผ์ด ํ์ํฉ๋๋ค.
๋ ๊ฐ์ง ๋ชจ๋์ ๋ํ ์ง์นจ์ ์๋์ ๋์ ์์ต๋๋ค.
Generative Language API (Gemini)
Gemini API ์๊ธ ๋ฐ ์ฌ์ฉ๋ ์ ํ์ ์ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์
โ ๏ธ Google ๋ชจ๋ธ์ ๋ฌด๋ฃ์ด์ง๋ง, ๊ทํ์ Google ๊ณ์ ๋ฐ API ํค์์ ์๋ณ ์ ๋ณด๊ฐ ์ ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ ๊ฐ์ ์ ๋์์ ์ค๋๋ค. โ ๏ธ ์ด ๊ธฐ๊ฐ ๋์ ๊ทํ์ ๋ฉ์์ง๋ "ํ๋ จ๋ ๊ฒํ ์๊ฐ ์ก์ธ์คํ ์ ์์ต๋๋ค."
Google AI Studio๋ฅผ ํตํด Gemini ๋ชจ๋ธ์ ์ฌ์ฉํ๋ ค๋ฉด API ํค๊ฐ ํ์ํฉ๋๋ค. ์์ง API ํค๊ฐ ์๋ค๋ฉด Google AI Studio์์ ํค๋ฅผ ์์ฑํ์ธ์.
๋ค์์์ API ํค๋ฅผ ๋ฐ์ผ์ธ์: aistudio.google.com
ํค๋ฅผ ํ๋ณดํ ํ, .env ํ์ผ์ ํด๋น ํค๋ฅผ ์ ๋ ฅํ๋ฉด ์ธ์คํด์ค์ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์ด๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค.
GOOGLE_KEY=mY_SeCreT_w9347w8_kEY๋๋, ๋ค์์ ์ค์ ํ์ฌ ์ฌ์ฉ์๊ฐ ํ๋ก ํธ์๋์์ ์ง์ ์ ๊ณตํ๋๋ก ํ ์ ์์ต๋๋ค:
GOOGLE_KEY=user_provided์ผ๋ถ ๋ฆฌ๋ฒ์ค ํ๋ก์๋ X-goog-api-key ํค๋๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. LibreChat์ด ๋์ Authorization ํค๋๋ฅผ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค:
GOOGLE_AUTH_HEADER=true๋ชจ๋ธ ๋ชฉ๋ก์ ๊ฐ์ ธ์ค๋ ๊ธฐ๋ฅ์ด ์์ง ์ง์๋์ง ์์ผ๋ฏ๋ก, ์ฌ์ฉํ๋ ค๋ ๋ชจ๋ธ์ .env ํ์ผ์ ์ค์ ํด์ผ ํฉ๋๋ค.
ํธ์๋ฅผ ์ํด, 2024๋ 5์ 18์ผ ๊ธฐ์ค์ผ๋ก Generative Language API์ ํจ๊ป ์ฌ์ฉํ ์ ์๋ ์ต์ ๋ชจ๋ธ๋ค์ ์ ๋ฆฌํ์ต๋๋ค:
GOOGLE_MODELS=gemini-1.5-flash-latest,gemini-1.0-pro,gemini-1.0-pro-001,gemini-1.0-pro-latest,gemini-1.0-pro-vision-latest,gemini-1.5-pro-latest,gemini-pro,gemini-pro-vision์ฐธ๊ณ :
- ์ด๋ฏธ์ง ์ฒจ๋ถ๋ฅผ ์ํด์๋ ๋ชฉ๋ก์ gemini-pro ๋ชจ๋ธ ๋๋
gemini-pro-vision์ด ํ์ํฉ๋๋ค. - LibreChat์์ PaLM2 ๋ฐ Codey ๋ชจ๋ธ์ Generative Language API๊ฐ ์๋ Vertex AI๋ฅผ ํตํด์๋ง ์ก์ธ์คํ ์ ์์ต๋๋ค.
generateContent๋ฉ์๋๋ฅผ ์ง์ํ๋ ๋ชจ๋ธ๋ง LibreChat + Gen AI API์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ฒจ๋ถ ํ์ผ์ด ํฌํจ๋ ๋ฉ์์ง์ ๊ฒฝ์ฐ
gemini-pro-vision์ ์ ํํ ํ์๊ฐ ์์ต๋๋ค. ๋ฐฑ์๋์์ ์๋์ผ๋ก ์ ํ๋๊ธฐ ๋๋ฌธ์ ๋๋ค. gemini-pro-vision์ ์ฒจ๋ถ ํ์ผ์ด ์๋ ๋ฉ์์ง๋ฅผ ํ์ฉํ์ง ์์ผ๋ฏ๋ก, ์ฒจ๋ถ ํ์ผ์ด ์๋ ๋ฉ์์ง๋ ์๋์ผ๋กgemini-pro๋ฅผ ์ฌ์ฉํ๋๋ก ์ ํ๋ฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด Google์ด ์ค๋ฅ๋ฅผ ๋ฐํํฉ๋๋ค.- Google endpoint๋ฅผ ์ฌ์ฉํ ๋๋ Vertex AI์ Generative Language API๋ฅผ ๋์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ ์ค ํ๋๋ฅผ ์ ํํด์ผ ํฉ๋๋ค.
- ์ผ๋ถ PaLM/Codey ๋ชจ๋ธ ๋ฐ
gemini-pro-vision์maxOutputTokens๊ฐ ๋์ ๊ฐ์ผ๋ก ์ค์ ๋ ๊ฒฝ์ฐ ์คํจํ ์ ์์ต๋๋ค. ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ๋ํ ๋งค๊ฐ๋ณ์๋ฅผ ํตํด ๊ฐ์ ์ค์ฌ๋ณด์ญ์์ค.
.env ํ์ผ์์ GOOGLE_KEY=user_provided๋ฅผ ์ค์ ํ๋ฉด Vertex AI ์๋น์ค ๊ณ์ JSON ํค ํ์ผ๊ณผ Generative Language API ํค๋ฅผ ๋ชจ๋ ํ๋ก ํธ์๋์์ ๋ค์๊ณผ ๊ฐ์ด ์ ๊ณตํ๋๋ก ์ค์ ๋ฉ๋๋ค:
URL Context
Google์ URL Context ๋๊ตฌ๋ ์ง์๋๋ Gemini ๋ชจ๋ธ์ด ์น ํ์ด์ง, ์ด๋ฏธ์ง, PDF์ ๊ฐ์ด ์ฌ์ฉ์ ๋ฉ์์ง์ ํฌํจ๋ URL์ ์ฝ์ ์ ์๋๋ก ํฉ๋๋ค. LibreChat์์๋ Google endpoint ๋งค๊ฐ๋ณ์ url_context๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ํ์ฑํํ ์ ์์ต๋๋ค.
preset:
endpoint: google
model: gemini-2.5-flash
url_context: trueaddParams ๋๋ ๋งค๊ฐ๋ณ์ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํ์ฌ Google ํํ์ ์ฌ์ฉ์ ์ง์ endpoint์ ๋ํด์๋ ํ์ฑํํ ์ ์์ต๋๋ค:
custom:
- name: 'Google Gateway'
apiKey: '${GOOGLE_KEY}'
baseURL: 'https://gateway.example.com/v1'
models:
default: ['gemini-2.5-flash']
customParams:
defaultParamsEndpoint: google
addParams:
url_context: trueurl_context๋ Gemini 2.5+ ๋ฐ Gemini 3.x ๋ชจ๋ธ์ ํฌํจํ์ฌ ์ง์๋๋ Gemini ํ
์คํธ ๋ชจ๋ธ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. url_context๊ฐ ํ์ฑํ๋๋ฉด YouTube ๋งํฌ๋ Google์ URL Context ๋๊ตฌ๊ฐ YouTube URL์ ์ง์ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์ Gemini์ ๊ธฐ๋ณธ ๋น๋์ค ์ดํด ๊ธฐ๋ฅ์ ํตํด ๋ณ๋๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
Vertex AI
Vertex API ๊ฐ๊ฒฉ ๋ฐ ์ฌ์ฉ๋ ์ ํ์ ์ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์
Google LLM(Google Cloud Vertex AI๋ฅผ ํตํด)์ ์ค์ ํ๋ ค๋ฉด ๋จผ์ Google Cloud์ ๊ฐ์ ํ์ธ์: cloud.google.com
์ผ๋ฐ์ ์ผ๋ก $300์ ์์ ํฌ๋ ๋ง์ ๋ฐ์ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด 90์ผ ๋์ ์ด ์ต์ ์ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๊ฐ์
์ด ์๋ฃ๋๋ฉด, Google Cloud์์ Vertex AI API๋ฅผ ํ์ฑํํ์ธ์:
- **Google Cloud ์ฝ์์ Vertex AI ํ์ด์ง**๋ก ์ด๋ํ์ธ์.
- ๋ฉ์์ง๊ฐ ํ์๋๋ฉด
Enable API๋ฅผ ํด๋ฆญํ์ธ์.
- Vertex AI ์ญํ ์ด ํฌํจ๋ ์๋น์ค ๊ณ์ ์์ฑ:
- ์๋น์ค ๊ณ์ ์ ์์ฑํ๋ ค๋ฉด ์ฌ๊ธฐ๋ฅผ ํด๋ฆญํ์ธ์
- ํ๋ก์ ํธ๋ฅผ ์ ํํ๊ฑฐ๋ ์์ฑํ์ธ์
- ์๋น์ค ๊ณ์ ID๋ฅผ ์
๋ ฅํ์ธ์(ํ์). ์ด๋ฆ๊ณผ ์ค๋ช
์ ์ ํ ์ฌํญ์
๋๋ค.
- "Create and Continue"์ ํด๋ฆญํ์ฌ ์ต์ํ "Vertex AI User" ์ญํ ์ ๋ถ์ฌํ์ธ์.
- "Continue/Done"์ ํด๋ฆญํ์ธ์
- ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ์ ์ ์ฅํ JSON ํค ์์ฑ:
- ์๋น์ค ๊ณ์ ํ์ด์ง๋ก ๋์๊ฐ๊ธฐ
- ์๋น์ค ๊ณ์ ์ ํ
- "Keys"๋ฅผ ํด๋ฆญํ์ธ์
- "Add Key"๋ฅผ ํด๋ฆญํ ๋ค์ "Create new key"๋ฅผ ํด๋ฆญํ์ธ์.
- ํค ์ ํ์ผ๋ก JSON์ ์ ํํ๊ณ "Create"๋ฅผ ํด๋ฆญํ์ธ์
- ํค ํ์ผ์ ๋ค์ด๋ก๋ํ๊ณ ์ด๋ฆ์ 'auth.json'์ผ๋ก ๋ณ๊ฒฝํ์ธ์.
- ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ ๋ด์
/api/data/์ ์ ์ฅํ์ธ์.
๋์: GOOGLE_SERVICE_KEY_FILE ์ฌ์ฉํ๊ธฐ
ํค ํ์ผ์ /api/data/auth.json์ ์ ์ฅํ๋ ๋์ , GOOGLE_SERVICE_KEY_FILE ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค ๊ณ์ ํค ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ์ด๋ ์๊ฒฉ ์ฆ๋ช
์ ๊ด๋ฆฌํ๋ ๋ฐฉ์์ ๋ ๋ง์ ์ ์ฐ์ฑ์ ์ ๊ณตํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์๋์ ํ๊ฒฝ ๋ณ์ ์น์
์ ์ฐธ์กฐํ์ธ์.
JSON ํค ํ์ผ์ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ์ ์ ์ฅํ๋ฉด LibreChat ์ธ์คํด์ค์ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์ด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋๋, ๋ค์์ ์ค์ ํ์ฌ ์ฌ์ฉ์๊ฐ ํ๋ก ํธ์๋์์ ์ง์ ์ ๊ณตํ๋๋ก ํ ์ ์์ต๋๋ค:
# Note: this configures both the Vertex AI Service Account JSON key file
# and the Generative Language API key to be provided from the frontend.
GOOGLE_KEY=user_providedGOOGLE_SERVICE_KEY_FILE ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค ๊ณ์ ํค ํ์ผ์ ์ง์ ํ ์๋ ์์ต๋๋ค:
# Path to the service account JSON key file
GOOGLE_SERVICE_KEY_FILE=/path/to/auth.json
# Or provide as a URL
GOOGLE_SERVICE_KEY_FILE=https://example.com/path/to/auth.json
# Or provide as stringified JSON
GOOGLE_SERVICE_KEY_FILE='{"type":"service_account","project_id":"your-project",...}'
# Or provide as base64 encoded JSON
GOOGLE_SERVICE_KEY_FILE=eyJ0eXBlIjogInNlcnZpY2VfYWNjb3VudCIsICJwcm9qZWN0X2lkIjogInlvdXItcHJvamVjdC1pZCIsIC4uLn0=์ด๋ OCR ๊ธฐ๋ฅ๊ณผ ๊ฐ์ด Vertex AI ์ธ์ฆ์ด ํ์ํ ๊ธฐ๋ฅ์ ํนํ ์ ์ฉํฉ๋๋ค.
Vertex AI API ์์ฒญ์ ์ํ Google Cloud ์์น๋ฅผ ์ง์ ํ ์๋ ์์ต๋๋ค:
# Google Cloud region for Vertex AI
GOOGLE_LOC=us-central1
# Alternative region for Gemini Image Generation (defaults to global)
GOOGLE_CLOUD_LOCATION=global๋ชจ๋ธ ๋ชฉ๋ก์ ๊ฐ์ ธ์ค๋ ๊ธฐ๋ฅ์ด ์์ง ์ง์๋์ง ์์ผ๋ฏ๋ก, ์ฌ์ฉํ๋ ค๋ ๋ชจ๋ธ์ .env ํ์ผ์ ์ค์ ํด์ผ ํฉ๋๋ค.
ํธ์๋ฅผ ์ํด, 2024๋ 5์ 18์ผ ๊ธฐ์ค์ผ๋ก Generative Language API์ ํจ๊ป ์ฌ์ฉํ ์ ์๋ ์ต์ ๋ชจ๋ธ๋ค์ ์ ๋ฆฌํ์ต๋๋ค:
GOOGLE_MODELS=gemini-1.5-flash-preview-0514,gemini-1.5-pro-preview-0514,gemini-1.0-pro-vision-001,gemini-1.0-pro-002,gemini-1.0-pro-001,gemini-pro-vision,gemini-1.0-proDocker๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
Docker๋ฅผ ์ฌ์ฉ ์ค์ด๋ฉฐ auth.json ํ์ผ์ ์ ๊ณตํ๋ ค๋ ๊ฒฝ์ฐ, docker-compose.override.yml์์ ๋ณผ๋ฅจ์ ๋ง์ดํธํด์ผ ํฉ๋๋ค.
version: '3.4'
services:
api:
volumes:
- type: bind
source: ./api/data/auth.json
target: /app/api/data/auth.jsonGoogle ์์ ์ค์
Vertex AI ๋ฐ Generative Language API ๋ชจ๋์ ๋ํ ์์ ์ค์ ์ ์ง์ ํ๋ ค๋ฉด .env ํ์ผ์ ๋ค์์ ์ค์ ํ ์ ์์ต๋๋ค:
GOOGLE_SAFETY_SEXUALLY_EXPLICIT=BLOCK_ONLY_HIGH
GOOGLE_SAFETY_HATE_SPEECH=BLOCK_ONLY_HIGH
GOOGLE_SAFETY_HARASSMENT=BLOCK_ONLY_HIGH
GOOGLE_SAFETY_DANGEROUS_CONTENT=BLOCK_ONLY_HIGH
GOOGLE_SAFETY_CIVIC_INTEGRITY=BLOCK_ONLY_HIGH๋ํ .env ํ์ผ์ ๋ค์์ ์ค์ ํ์ฌ ์์ ์ค์ ์ ์ ์ธํ ์ ์์ผ๋ฉฐ, ์ด ๊ฒฝ์ฐ ๊ณต๊ธ์์ ๊ธฐ๋ณธ๊ฐ์ด ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ ํน์ ์์ ์ค์ ๊ณผ ๊ด๋ จํ์ฌ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๋ ์ ์ฉํ ์ ์์ต๋๋ค.
GOOGLE_EXCLUDE_SAFETY_SETTINGS=true์ฐธ๊ณ : ๊ธฐ๋ณธ์ ์ผ๋ก BLOCK_NONE ์ค์ ์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
์ด ์ ํ๋ HarmBlockThreshold ์ค์ ์ ์ฌ์ฉํ๋ ค๋ฉด ๋ค์ ์ค ํ๋๋ฅผ ์ํํด์ผ ํฉ๋๋ค:
- (a) Google ๊ณ์ ํ์ ํตํด ํ์ฉ ๋ชฉ๋ก(allowlist)์ ๋ํ ์ก์ธ์ค ๊ถํ์ ์ป์ผ์ธ์
- (b) ๋ค์ ์ง์นจ์ ๋ฐ๋ผ ๊ณ์ ์ ํ์ ์๋ณ ์ฒญ๊ตฌ์ ๋ฐํ ๋ฐฉ์์ผ๋ก ์ ํํ์ธ์: https://cloud.google.com/billing/docs/how-to/invoiced-billing
์ฐธ๊ณ :
- Google endpoint๋
streamRate,headers,titleModel,titleMethod,titlePrompt,titlePromptTemplate,titleEndpoint๋ฅผ ํฌํจํ์ฌlibrechat.yaml๊ตฌ์ฑ ํ์ผ์ ํตํ ๋ชจ๋ Shared Endpoint Settings์ ์ง์ํฉ๋๋ค.
์ด ๊ฐ์ด๋๋ ์ด๋ค๊ฐ์?