Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion WebUI/electron/electron-env.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ type LocalSettings = {

type ThemeSettings = {
availableThemes: Theme[];
};
currentTheme: Theme;


type ModelPaths = {
llm: string,
Expand Down
3 changes: 3 additions & 0 deletions WebUI/electron/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ const settings: LocalSettings = {
envType: "ultra",
port: 59999,
availableThemes: ["dark", "lnl"],
currentTheme:"lnl"
};

const logger = {
Expand Down Expand Up @@ -258,6 +259,8 @@ function initEventHandle() {
ipcMain.handle("getThemeSettings", async () => {
return {
availableThemes: settings.availableThemes,
currentTheme:settings.currentTheme

};
});

Expand Down
4 changes: 3 additions & 1 deletion WebUI/external/settings-dev.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,7 @@
"envType": "arc",
"debug":1,
"port":56789,
"availableThemes": ["dark","lnl"]
"availableThemes": ["dark","lnl"],
"currentTheme": "lnl"

}
1 change: 1 addition & 0 deletions WebUI/src/assets/i18n/en_US.json
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@
"SETTINGS_BASIC_LANGUAGE": "Language",
"SETTINGS_BASIC_LANGUAGE_EN": "English",
"SETTINGS_BASIC_LANGUAGE_ZH": "Chinese",
"SETTINGS_BASIC_LANGUAGE_KO": "Korean",
"SETTINGS_BASIC_PATHS": "Paths",
"SETTINGS_BASIC_LLM_CHECKPOINTS": "LLM Model Path",
"SETTINGS_MODEL_HUGGINGFACE": "Hugging Face",
Expand Down
155 changes: 155 additions & 0 deletions WebUI/src/assets/i18n/ko_KR.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
{
"MAIN_TITLE": "AI PLAYGROUND",
"COM_SETTINGS": "설정",
"COM_MINI": "최소화",
"COM_CLOSE": "닫기",
"COM_RESTORE": "기본값으로 초기화",
"COM_SD_PROMPT": "프롬프트를 입력하여 이미지를 생성",
"COM_LLM_PROMPT": "프롬프트를 입력하여 답변을 생성",
"COM_CLICK_UPLOAD": "- 클릭하여 이미지 업로드 -",
"COM_GENERATE": "생성",
"COM_GENERATING": "생성중",
"COM_HISTORY": "히스토리",
"COM_POST_TO_ENHANCE_PROCESS": "향상 대기열로 보내기",
"COM_ZOOM_IN": "원본 크기로 보기",
"COM_COPY": "복사",
"COM_COPY_SUCCESS_TIP": "복사 성공",
"COM_APPLY": "적용",
"COM_DOWNLOAD": "다운로드",
"COM_REGENERATE": "재생성",
"COM_DELETE": "삭제",
"COM_DOWNLOAD_MODEL": "모델 다운로드 중",
"COM_DOWNLOAD_SPEED": "다운로드 속도",
"COM_LOADING_MODEL": "AI 모델 로딩 중",
"COM_LOADING_MODEL_COMPONENTS": "AI 모델 구성 요소 로딩 중",
"COM_NO_SELECTED": "선택된 항목 없음",
"COM_CONFIRM": "확인",
"COM_CANCEL": "취소",
"COM_VISIT": "방문",
"COM_REQUESTING":"요청 중",
"COM_DEFAULT":"기본값",
"COM_STOP":"정지",
"COM_OPEN_LOCATION":"파일 위치 열기",
"COM_OPEN_PARAMS": "매개변수 정보",
"COM_LOW": "낮음",
"COM_HIGH": "높음",
"COM_FULLSCREEN": "전체 화면",
"COM_FULLSCREEN_EXIT": "전체 화면 종료",
"SETTINGS_TAB_BASIC": "기본 설정",
"SETTINGS_TAB_MODEL": "모델",
"SETTINGS_INFERENCE_DEVICE": "추론 장치",
"SETTINGS_MODEL_IMAGE_RESOLUTION": "이미지 해상도",
"SETTINGS_MODEL_IMAGE_RESOLUTION_STRANDARD": "표준",
"SETTINGS_MODEL_IMAGE_RESOLUTION_HD": "HD",
"SETTINGS_MODEL_QUALITY": "생성 품질",
"SETTINGS_MODEL_QUALITY_STANDARD": "표준",
"SETTINGS_MODEL_QUALITY_HIGH": "높은 품질",
"SETTINGS_MODEL_QUALITY_FAST": "빠름",
"SETTINGS_MODEL_QUALITY_MANUAL": "수동",
"SETTINGS_MODEL_ADJUSTABLE_OPTIONS": "조정 가능한 옵션",
"SETTINGS_MODEL_MANUAL_OPTIONS": "수동 옵션",
"SETTINGS_MODEL_NEGATIVE_PROMPT": "네거티브 프롬프트",
"SETTINGS_MODEL_SEED": "시드",
"SETTINGS_MODEL_GENERATE_NUMBER": "생성 이미지 수",
"SETTINGS_MODEL_LLM_MODEL": "대규모 언어 모델",
"SETTINGS_MODEL_IMAGE_PREVIEW": "이미지 미리보기",
"SETTINGS_MODEL_SAFE_CHECK": "안전 확인 (SD 1.5에만 적용)",
"SETTINGS_MODEL_IMAGE_MODEL": "이미지 모델",
"SETTINGS_MODEL_INPAINT_MODEL": "인페인트/아웃페인트 모델",
"SETTINGS_MODEL_IMAGE_WIDTH": "너비",
"SETTINGS_MODEL_IMAGE_HEIGHT": "높이",
"SETTINGS_MODEL_IMAGE_STEPS": "단계",
"SETTINGS_MODEL_IMAGE_CFG": "CFG",
"SETTINGS_MODEL_LORA": "LoRa",
"SETTINGS_MODEL_SCHEDULER": "스케줄러",
"SETTINGS_MODEL_LIST_CHANGE_TIP": "모델 목록의 변경으로 인해 일부 설정이 수정되었습니다. 자세한 내용은 기본 설정을 참조하세요.",
"SETTINGS_BASIC_LANGUAGE": "언어",
"SETTINGS_BASIC_LANGUAGE_EN": "영어",
"SETTINGS_BASIC_LANGUAGE_ZH": "중국어",
"SETTINGS_BASIC_LANGUAGE_KO": "한국어",
"SETTINGS_BASIC_PATHS": "경로",
"SETTINGS_BASIC_LLM_CHECKPOINTS": "LLM 모델 경로",
"SETTINGS_MODEL_SD_CHECKPOINTS": "이미지 모델 경로",
"SETTINGS_MODEL_SD_INPAINT_CHECKPOINTS": "이미지 인페인트 모델 경로",
"SETTINGS_MODEL_SD_VAE": "Vae 경로",
"SETTINGS_MODEL_SD_LORA": "Lora 경로",
"SETTINGS_MODEL_SD_SCHEDULER": "스케줄러 경로",
"SETTINGS_MODEL_SD_PRESET_MODEL": "이미지 기본 모델",
"SETTINGS_MODEL_SD_STANDARD_MODEL": "표준 기본 모델",
"SETTINGS_MODEL_SD_STANDARD_INPAINT_MODEL": "표준 기본 인페인트/아웃페인트 모델",
"SETTINGS_MODEL_SD_HD_MODEL": "HD 기본 모델",
"SETTINGS_MODEL_RAG_MODEL": "RAG 쿼리 모델",
"SETTINGS_MODEL_EXIST": "모델이 이미 존재합니다. 다시 다운로드할 필요가 없습니다.",
"SETTINGS_MODEL_DOWNLOAD": "모델 다운로드",
"SETTINGS_MODEL_DOWNLOAD_DESC": "아래는 AI 플레이그라운드에서 다양한 AI 작업을 수행할 수 있는 모델 목록입니다. 다운로드 및 사용 전 각 모델의 약관을 검토하세요. 또는 위의 모델 경로와 모델 기본값을 변경하여 다른 모델 소스를 추가하고 선택할 수 있습니다.",
"TAB_CREATE": "생성",
"TAB_ENHANCE": "향상",
"TAB_ANSWER": "답변",
"TAB_LEARN_MORE": "더 알아보기",
"ENHANCE_INPUT_IMAGE_REQUIRED": "생성 전 입력 이미지를 설정해 주세요",
"ENHANCE_UPSCALE": "업스케일",
"ENHANCE_IMAGE_PROMPT": "이미지 프롬프트",
"ENHANCE_INPAINT": "인페인트",
"ENHANCE_OUTPAINT": "아웃페인트",
"ENHANCE_UPSCALE_SCALE": "업스케일",
"ENHANCE_UPSCALE_SCALE_X1_5": "업스케일 (1.5배)",
"ENHANCE_UPSCALE_SCALE_X2_0": "업스케일 (2.0배)",
"ENHANCE_UPSCALE_VARIATION": "변형",
"ENHANCE_UPSCALE_VARIATION_NONE": "없음",
"ENHANCE_UPSCALE_VARIATION_DISABLE": "미세",
"ENHANCE_UPSCALE_VARIATION_STRONG": "강함",
"ENHANCE_INPAINT_TYPE": "유형",
"ENHANCE_INPAINT_FILL": "새로운 내용으로 채우기",
"ENHANCE_INPAINT_FIX": "마스크 영역 수정 및 복구",
"ENHANCE_INPAINT_MASK_REQUIRED": "생성 전 인페인트 마스크를 그려주세요",
"ENHANCE_INPAINT_USE_IMAGE_MODEL": "현재 이미지 모델 사용",
"ENHANCE_COM_DENOISE": "강도",
"ENHANCE_OUTPAINT_DIRECTION": "방향",
"ENHANCE_PREVIEW_BEFORE_PROCESS": "처리 전",
"ENHANCE_PREVIEW_AFTER_PROCESS": "처리 후",
"ENHANCE_IMAGE_PROMPT_TIP": "이미지를 어떻게 스타일링할지 설명하세요. 유지하고 싶은 원본 이미지의 설명과 변경하고 싶은 내용의 설명을 포함하세요. 강도 슬라이더를 조정하여 프롬프트가 결과에 미치는 영향을 증가시키거나 감소시킬 수 있습니다.",
"ENHANCE_INPAINT_TIP": "펜 도구를 사용하여 영역을 마스킹하세요. 프롬프트에 수정하거나 채우고 싶은 내용을 설명하세요. 수정 또는 채우기 옵션을 선택한 다음, 프롬프트가 미치는 강도 수준을 조정하세요.",
"ENHANCE_OUTPAINT_TIP": "확장하려는 방향을 선택하고, 필요한 경우 노이즈 제거 값을 조정한 다음, 텍스트 상자에 프롬프트 단어를 입력하세요. 확장된 이미지가 생성됩니다.",
"ENHANCE_UPSCALE_TIP": "조작이 필요한 이미지를 업로드하고 확대 배율을 선택한 후, 노이즈 제거 강도를 조정하세요 (0.1 미만이면 이미지 내용은 변경되지 않지만 크기는 여전히 확대됩니다). 텍스트 상자에 프롬프트 단어를 입력하여 확대된 이미지를 생성하세요.",
"ERROR_UNSUPPORTED_IMAGE_TYPE": "PNG, JPG, GIF, BMP 이미지 형식만 지원됩니다",
"ANSWER_USER_NAME": "사용자",
"ANSWER_AI_NAME": "플레이그라운드",
"ANSWER_ERROR_NOT_PROMPT": "프롬프트를 입력해 주세요",
"ANSWER_ERROR_CLEAR_SESSION": "채팅 기록 지우기",
"ANSWER_RAG_ENABLE": "파일 쿼리 활성화",
"ANSWER_RAG_OPEN_DIALOG": "파일 업로더 열기",
"DOWNLOADER_CONFRIM_TIP": "실행에 필요한 하나 이상의 모델이 누락되었습니다. 아래 목록의 모델을 다운로드하시겠습니까?",
"DOWNLOADER_MODEL": "모델",
"DOWNLOADER_INFO": "정보",
"DOWNLOADER_FILE_SIZE": "크기",
"DOWNLOADER_REASON": "이유",
"DOWNLOADER_TERMS": "방문",
"DOWNLOADER_CONFLICT": "다른 다운로드 작업이 현재 진행 중이어서 새 작업을 시작할 수 없습니다. 현재 다운로드 작업을 취소하고 새 다운로드 작업을 시작할 수 있습니다.",
"DOWNLOADER_TERMS_TIP": "모델 카드와 라이선스를 검토했습니다. 모든 이용 약관에 동의하며 서드파티 모델을 다운로드 하겠습니다.",
"DOWNLOADER_FOR_ANSWER_GENERATE": "답변 모델",
"DOWNLOADER_FOR_RAG_QUERY": "RAG 임베딩 모델",
"DOWNLOADER_FOR_IMAGE_GENERATE": "이미지 모델",
"DOWNLOADER_FOR_INAPINT_GENERATE": "인페인트/아웃페인트 모델",
"DOWNLOADER_FOR_IMAGE_PREVIEW": "이미지 미리보기 모델",
"DOWNLOADER_FOR_IMAGE_UPSCALE": "이미지 업스케일 모델",
"DOWNLOADER_FOR_IMAGE_LORA": "빠른 이미지 모델",
"DOWNLOADER_DONWLOAD_TASK_PROGRESS":"모델 다운로드 완료",
"RAG_FILE_TOTAL_FORMAT": "파일 총 개수: {total}",
"RAG_DRAG_UPLOAD": "파일을 끌어다 놓아 업로드",
"RAG_DRAG_UPLOAD_UNSUPPORTED": "현재 프로그램은 관리자 권한으로 실행 중입니다. Windows UAC 제한으로 인해 드래그 앤 드롭 업로드를 사용할 수 없습니다. 파일을 업로드하려면 상단의 추가 버튼을 사용하세요.",
"RAG_UPLOAD_MIME_TYPE": "지원되는 파일 유형:\n\t텍스트 문서: .txt .md\n\t오피스 문서: .doc(x)\n\tPDF Doc: .pdf",
"RAG_ENABLE_TIP": "업로드된 파일에서만 답변",
"RAG_UPLOAD_TYPE_ERROR": "업로드된 파일에 지원되지 않는 파일 유형이 포함되어 있어 자동으로 제외되었습니다",
"RAG_UPLOAD_FILE_EXISTS": "업로드된 파일 {filename}이(가) 이미 존재합니다",
"RAG_ANALYZE_FILE_FAILED": "파일 {filename} 분석에 실패했습니다",
"RAG_USE_REJECT": "인터랙티브 문서 목록이 비어 있습니다. 먼저 문서를 업로드하세요",
"RAG_WHEN_CLOSE_PANEL_AT_UPLODING": "모든 문서가 분석될 때까지 기다려 주세요",
"RAG_SOURCE": "출처:",
"ERR_NOT_ENOUGH_DISK_SPACE": "디스크 공간이 부족합니다. {requires_space}가 필요하지만, 사용 가능한 공간이 {free_space}밖에 없습니다",
"ERR_DOWNLOAD_FAILED": "모델 파일 다운로드에 실패했습니다",
"ERROR_RUNTIME_ERROR": "심각한 오류가 발생하면 프로그램을 재시작하고 다시 시도하세요",
"ERROR_GENERATE_UNKONW_EXCEPTION": "알 수 없는 오류가 발생했습니다. 모델에서 생성에 실패했습니다",
"ERROR_FOLDER_NOT_EXISTS": "지정된 디렉터리가 존재하지 않습니다",
"ERROR_ENHANCE_IMAGE_NOT_SET": "생성할 입력 이미지를 설정하세요",
"ERROR_UNFOUND_GRAPHICS": "프로그램 실행에 필요한 하드웨어가 컴퓨터 장치에서 감지되지 않을 경우, 확인을 클릭하면 프로그램이 종료됩니다."
}
1 change: 1 addition & 0 deletions WebUI/src/assets/i18n/zh_CN.json
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@
"SETTINGS_BASIC_LANGUAGE": "语言",
"SETTINGS_BASIC_LANGUAGE_EN": "英文",
"SETTINGS_BASIC_LANGUAGE_ZH": "中文",
"SETTINGS_BASIC_LANGUAGE_KO": "韩文",
"SETTINGS_BASIC_PATHS": "路径",
"SETTINGS_BASIC_LLM_CHECKPOINTS": "大语言模型路径",
"SETTINGS_MODEL_HUGGINGFACE": "Hugging Face",
Expand Down
37 changes: 36 additions & 1 deletion WebUI/src/assets/js/store/i18n.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
import { defineStore } from "pinia";

export const useI18N = defineStore("i18n", () => {

const langName = ref("en_US");
const currentLanguageName = ref("English");
const state = reactive<StringKV>({
});

async function init() {
const language = localStorage.getItem("language");
if (language == "zh_CN" || language == "en_US") {
if (language == "zh_CN" || language == "en_US" || language == "ko_KR") {
await switchLanguage(language);
} else {
await initFromLocal();
Expand All @@ -19,24 +21,57 @@ export const useI18N = defineStore("i18n", () => {
return switchLanguage(navigator.language == "zh-CN" ? "zh_CN" : "en_US");
}

function changeLanguage(value: any, index: number) {
switchLanguage(value.value)
}

function updateLanguageRecord(record: Record<string, string>) {
Object.keys(record).forEach((key) => {
state[key] = record[key];
});
document.title = state.MAIN_TITLE;
}

const languageOptions = ref([
{ value: 'en_US', name: state.SETTINGS_BASIC_LANGUAGE_EN },
{ value: 'zh_CN', name: state.SETTINGS_BASIC_LANGUAGE_ZH },
{ value: 'ko_KR', name: state.SETTINGS_BASIC_LANGUAGE_KO },
])

const currentLanguageDict = ref<StringKV>({
"en_US": state.SETTINGS_BASIC_LANGUAGE_EN,
"zh_CN": state.SETTINGS_BASIC_LANGUAGE_ZH,
"ko_KR": state.SETTINGS_BASIC_LANGUAGE_KO,
});

async function updateLanguageNames(lang: string) {
currentLanguageDict.value["en_US"] = state.SETTINGS_BASIC_LANGUAGE_EN;
currentLanguageDict.value["zh_CN"] = state.SETTINGS_BASIC_LANGUAGE_ZH;
currentLanguageDict.value["ko_KR"] = state.SETTINGS_BASIC_LANGUAGE_KO;
currentLanguageName.value = currentLanguageDict.value[lang];
languageOptions.value = languageOptions.value.map((item) => {
item.name = currentLanguageDict.value[item.value];
return item;
});
}

async function switchLanguage(lang: string) {
const languageRecords = await import(`../../i18n/${lang}.json`);
updateLanguageRecord(languageRecords);
langName.value = lang;
localStorage.setItem("language", lang);
updateLanguageNames(lang);
}

return {
state,
langName,
languageOptions,
currentLanguageName,
init,
switchLanguage,
changeLanguage,
};


});
1 change: 1 addition & 0 deletions WebUI/src/assets/js/store/theme.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ export const useTheme = defineStore("theme", () => {
window.electronAPI.getThemeSettings().then((themeSettings) => {
const themesFromSettings = themeSettings.availableThemes.filter(t => knownThemes.includes(t));
if (themesFromSettings.length > 0) availableThemes.value = themesFromSettings;
if (knownThemes.includes(themeSettings.currentTheme)) selected.value = themeSettings.currentTheme;
});

return {
Expand Down
20 changes: 14 additions & 6 deletions WebUI/src/views/AppSettings.vue
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,20 @@
<div class="px-3 flex-none flex flex-col gap-3">
<div class="flex flex-col gap-2">
<p>{{ languages.SETTINGS_BASIC_LANGUAGE }}</p>
<div class="grid grid-cols-2 gap-2">
<radio-bolck :checked="i18n.langName == 'en_US'" :text="languages.SETTINGS_BASIC_LANGUAGE_EN"
@click="() => { i18n.switchLanguage('en_US') }"></radio-bolck>
<radio-bolck :checked="i18n.langName == 'zh_CN'" :text="languages.SETTINGS_BASIC_LANGUAGE_ZH"
@click="() => { i18n.switchLanguage('zh_CN') }"></radio-bolck>
</div>
<drop-selector :array="i18n.languageOptions" @change="i18n.changeLanguage">
<template #selected>
<div class="flex gap-2 items-center">
<span class="rounded-full bg-green-500 w-2 h-2"></span>
<span>{{ i18n.currentLanguageName }}</span>
</div>
</template>
<template #list="slotItem">
<div class="flex gap-2 items-center">
<span class="rounded-full bg-green-500 w-2 h-2"></span>
<span>{{ slotItem.item.name }}</span>
</div>
</template>
</drop-selector>
</div>
<div v-if="theme.availableThemes.length > 1" class="flex flex-col gap-2">
<p>Theme</p>
Expand Down
33 changes: 24 additions & 9 deletions readme.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# AI Playground

<a href="https://scan.coverity.com/projects/ai-playground">
<img alt="Coverity Scan Build Status"
src="https://scan.coverity.com/projects/30694/badge.svg"/>
</a>

![image](https://github.com/user-attachments/assets/66086f2c-216e-4a79-8ff9-01e04db7e71d)

This example is based on the xpu implementation of Intel Arc A-Series dGPU and Ultra iGPU
Expand Down Expand Up @@ -37,23 +42,33 @@ IMPORTANT: We have noticed some systems require the VS C++ redistribution, often
### Dev Environment Setup (backend, python)

1. Create and switch the conda environment and go to the service directory.

```cmd
conda create -n aipg_xpu python=3.10 -y
activate aipg_xpu
pip install -r requirements.txt
```
conda activate aipg_xpu
conda install libuv -y

3. Download the Intel Extension For Pytorch* AOT Packages. Depending on your hardware, download cp310 whl files from the links below.
cd service

Core Ultra-H https://github.com/Nuullll/intel-extension-for-pytorch/releases/tag/v2.1.20%2Bmtl%2Boneapi
@REM for Desktop-dGPU (e.g. A770)
pip install -r requriements-arc.txt

The Arc A - Series dGPU https://github.com/Nuullll/intel-extension-for-pytorch/releases/tag/v2.1.10%2Bxpu
@REM for Intel Core Ultra-H (MTL)
pip install -r requriements-ultra.txt
```

Install all downloaded whl files using the pip install command
2. Check whether the XPU environment is correct

4. Check whether the XPU environment is correct
```cmd
python -c "import torch; import intel_extension_for_pytorch as ipex; print(torch.version); print(ipex.version); [print(f'[{i}]: {torch.xpu.get_device_properties(i)}') for i in range(torch.xpu.device_count())];"
python -c "import torch; import intel_extension_for_pytorch as ipex; print(torch.__version__); print(ipex.__version__); [print(f'[{i}]: {torch.xpu.get_device_properties(i)}') for i in range(torch.xpu.device_count())];"
```

Example output:

```txt
2.1.0.post3+cxx11.abi
2.1.40+xpu
[0]: _DeviceProperties(name='Intel(R) Arc(TM) Graphics', platform_name='Intel(R) Level-Zero', dev_type='gpu', driver_version='1.3.29283', has_fp64=1, total_memory=14765MB, max_compute_units=112, gpu_eu_count=112)
```


Expand Down
Loading