Groq
Groq와 Lingo.dev 컴파일러를 이용한 AI 번역
Groq란 무엇인가요?
Groq는 초저지연 추론에 최적화된 고성능 AI 하드웨어 및 소프트웨어를 설계하는 회사입니다. Groq의 솔루션은 맞춤형 텐서 스트리밍 프로세서 아키텍처를 활용하여 대규모 언어 모델 및 실시간 분석과 같은 영역에서 AI 워크로드를 가속화하는 것을 목표로 합니다.
API 키 설정하기
Groq는 Lingo.dev Compiler에서 요청을 인증하기 위해 API 키가 필요합니다. 작업 흐름에 가장 적합한 설정 방법을 선택하세요:
옵션 1: 환경 변수 (터미널)
파일을 수정하지 않고 빠른 실험과 테스트에 적합합니다.
터미널 세션에서 직접 키를 설정하세요:
export GROQ_API_KEY="your-api-key-here"
이 키는 터미널 창을 닫을 때까지만 사용할 수 있습니다.
옵션 2: 프로젝트 구성 (.env)
프로젝트별 구성 및 각 프로젝트마다 다른 자격 증명을 사용할 수 있는 팀 환경에 적합합니다.
프로젝트 루트에 .env
파일을 생성하세요:
touch .env
파일에 다음 줄을 추가하세요:
GROQ_API_KEY="your-api-key-here"
Lingo.dev Compiler는 다음 우선순위로 환경 파일을 확인합니다:
.env.development
(최우선순위).env.local
.env
(최하위 우선순위)
우선순위가 높은 파일의 값이 우선순위가 낮은 파일의 값을 재정의합니다.
옵션 3: 전역 구성 (사용자 설정)
모든 프로젝트에서 동일한 API 키를 사용하려는 개별 개발자에게 적합합니다.
홈 디렉토리에 구성 파일을 생성하세요:
touch ~/.lingodotdevrc
파일에 다음 내용을 추가하세요:
[llm]
groqApiKey="your-api-key-here"
이 구성은 기기의 모든 터미널 세션과 프로젝트에서 유지됩니다.
구성 우선순위
여러 구성 방법이 사용될 때, Lingo.dev Compiler는 다음 순서로 API 키를 확인합니다:
- 환경 변수 (최우선순위)
- 프로젝트 .env 파일 (자체 우선순위 순서에 따라)
- 사용자 구성 파일
~/.lingodotdevrc
(최하위 우선순위)
발견된 첫 번째 유효한 API 키가 사용됩니다.
Groq 사용하기
Groq를 활성화하려면 컴파일러 옵션에서 models
속성을 설정하세요:
import react from "@vitejs/plugin-react";
import lingoCompiler from "lingo.dev/compiler";
import { type UserConfig } from "vite";
// https://vite.dev/config/
const viteConfig: UserConfig = {
plugins: [react()],
};
const withLingo = lingoCompiler.vite({
sourceRoot: "src",
lingoDir: "lingo",
sourceLocale: "en",
targetLocales: ["es", "fr", "de", "ja"],
rsc: false,
useDirective: false,
debug: false,
models: {
"*:*": "groq:llama-3.1-8b-instant",
},
});
export default withLingo(viteConfig);
이 속성은 다음과 같은 객체를 받습니다:
- 키는 소스 로케일과 대상 로케일의 쌍이며,
*
는 모든 로케일을 나타냅니다 - 값은 모델 식별자입니다(예:
groq:llama-3.1-8b-instant
)
Groq를 사용하여 다음과 같이 번역할 수 있습니다:
- 모든 로케일 간
- 특정 소스 로케일에서
- 특정 대상 로케일로
- 특정 소스와 대상 로케일 간
모든 로케일 번역하기
와일드카드 패턴 *:*
을 사용하여 모든 번역 쌍에 동일한 Groq 모델을 적용할 수 있습니다:
const withLingo = lingoCompiler.vite({
sourceRoot: "src",
lingoDir: "lingo",
sourceLocale: "en",
targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
models: {
// 모든 번역 쌍에 Llama 3.1 8B 사용
"*:*": "groq:llama-3.1-8b-instant",
},
});
특정 소스 로케일에서 번역하기
특정 소스 로케일과 와일드카드 대상을 사용하여 해당 소스에서 모든 번역에 모델을 적용할 수 있습니다:
const withLingo = lingoCompiler.vite({
sourceRoot: "src",
lingoDir: "lingo",
sourceLocale: "en",
targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
models: {
// 영어에서 모든 번역에 Llama 3.1 70B 사용
"en:*": "groq:llama-3.1-70b-versatile",
// 스페인어에서 모든 언어로의 번역에 Mixtral 사용
"es:*": "groq:mixtral-8x7b-32768",
// 다른 소스 언어에 대한 폴백
"*:*": "groq:llama-3.1-8b-instant",
},
});
특정 대상 로케일로 번역하기
와일드카드 소스와 특정 대상 로케일을 사용하여 해당 대상에 대한 모든 번역에 모델을 적용하세요:
const withLingo = lingoCompiler.vite({
sourceRoot: "src",
lingoDir: "lingo",
sourceLocale: "en",
targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
models: {
// 일본어 번역에 특화된 모델 사용
"*:ja": "groq:llama-3.1-70b-versatile",
// 중국어 번역에 Mixtral 사용
"*:zh": "groq:mixtral-8x7b-32768",
// 독일어 번역에 Gemma 2 사용
"*:de": "groq:gemma2-9b-it",
// 다른 대상 언어에 대한 기본값
"*:*": "groq:llama-3.1-8b-instant",
},
});
특정 로케일 간 번역하기
특정 언어 조합을 처리하는 모델에 대한 세밀한 제어를 위해 정확한 소스-대상 쌍을 정의하세요:
const withLingo = lingoCompiler.vite({
sourceRoot: "src",
lingoDir: "lingo",
sourceLocale: "en",
targetLocales: ["es", "fr", "de", "ja", "pt", "zh"],
models: {
// 최적의 모델이 있는 특정 쌍
"en:es": "groq:llama-3.1-70b-versatile", // 영어에서 스페인어로
"en:ja": "groq:llama-3.1-70b-versatile", // 영어에서 일본어로
"en:zh": "groq:mixtral-8x7b-32768", // 영어에서 중국어로
"es:en": "groq:llama-3.1-8b-instant", // 스페인어에서 영어로
"fr:en": "groq:gemma2-9b-it", // 프랑스어에서 영어로
"de:en": "groq:gemma2-9b-it", // 독일어에서 영어로
// 지정되지 않은 쌍에 대한 폴백
"*:*": "groq:llama-3.1-8b-instant",
},
});