nai-aclab 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,148 +1,240 @@
1
1
  # NAI Artist Combination Lab
2
2
 
3
- NovelAI 이미지 생성에서 작가 태그 조합과 가중치를 실험하기 위한 브라우저 기반 웹앱입니다.
4
- 작가 태그의 가중치를 랜덤하게 바꿔 여러 이미지를 만들고, 마음에 드는 결과에서 작가 가중치를 다시 불러와 고정한 뒤 여러 프리셋 조합을 테스트할 수 있습니다.
3
+ NovelAI에서 여러 작가 태그 조합을 시험해보고, 마음에 드는 그림체의 작가 가중치를 찾아내기 위한 앱입니다.
5
4
 
6
- ## 설치와 실행
5
+ 예를 들어 같은 캐릭터 프롬프트를 두고 작가 태그의 가중치만 바꿔 여러 장을 만든 뒤, 마음에 드는 이미지의 가중치를 다시 불러와 고정해서 더 테스트할 수 있습니다.
7
6
 
8
- 필요한 것:
7
+ ## 이런 분에게 좋습니다
8
+
9
+ - NovelAI에서 그림체 조합을 여러 번 실험하는 분
10
+ - `artist:*` 태그의 가중치를 매번 손으로 바꾸기 귀찮은 분
11
+ - 마음에 드는 이미지가 나왔을 때 그 작가 가중치를 저장해두고 싶은 분
12
+ - 여러 캐릭터/장면 프리셋에서 같은 그림체가 안정적으로 나오는지 보고 싶은 분
13
+
14
+ ## 준비물
15
+
16
+ 이 앱은 브라우저에서 열리지만, 실행을 위해 아래 두 가지가 필요합니다.
9
17
 
10
18
  - Node.js 18 이상
11
19
  - Python 3.10 이상
12
20
 
13
- 실행 방법:
21
+ 설치되어 있지 않다면 아래 공식 사이트에서 받을 수 있습니다.
22
+
23
+ - Node.js: https://nodejs.org/
24
+ - Python: https://www.python.org/downloads/
25
+
26
+ 잘 모르겠다면 Node.js는 `LTS` 버전을 설치하면 됩니다.
27
+
28
+ 설치되어 있는지 확인하려면 터미널에서 아래 명령어를 입력합니다.
29
+
30
+ ```powershell
31
+ node -v
32
+ python --version
33
+ ```
34
+
35
+ 버전 숫자가 나오면 준비된 상태입니다.
36
+
37
+ ## 실행하기
38
+
39
+ Windows에서는 시작 메뉴에서 `PowerShell`을 열고 아래 명령어를 입력합니다.
14
40
 
15
41
  ```powershell
16
42
  npx nai-aclab
17
43
  ```
18
44
 
19
- 브라우저가 자동으로 열리고, 터미널이 열려 있는 동안 앱 서버가 유지됩니다. 앱을 종료하려면 터미널에서 `Ctrl+C`를 누르거나 터미널을 닫으면 됩니다.
45
+ macOS에서는 `터미널`을 열고 같은 명령어를 입력하면 됩니다.
46
+
47
+ 처음 실행할 때는 npm이 패키지를 내려받겠냐고 물어볼 수 있습니다. `y`를 입력하고 Enter를 누르면 됩니다.
20
48
 
21
- 자주 사용한다면 전역 설치 실행할 수도 있습니다.
49
+ 실행되면 브라우저가 자동으로 열립니다. 앱을 사용하는 동안 터미널 창은 닫지 마세요. 앱을 종료하려면 터미널에서 `Ctrl+C`를 누르거나 터미널 창을 닫으면 됩니다.
50
+
51
+ 자주 사용할 경우 전역 설치도 가능합니다.
22
52
 
23
53
  ```powershell
24
54
  npm install -g nai-aclab
25
55
  nai-aclab
26
56
  ```
27
57
 
28
- ## 기본 사용 흐름
29
-
30
- 1. `API 설정` 메뉴에서 NovelAI 토큰과 모델 설정을 입력합니다.
31
- 2. `작가 태그` 메뉴에서 카테고리별 작가 태그 목록과 가중치 범위를 설정합니다.
32
- 3. `프리셋` 메뉴에서 베이스 프롬프트, 퀄리티 프롬프트, 캐릭터 프롬프트를 저장합니다.
33
- 4. `생성` 메뉴에서 베이스+퀄리티 프리셋과 캐릭터 프리셋을 고르고 이미지를 생성합니다.
34
- 5. `히스토리` 또는 `가중치 비교`에서 마음에 드는 이미지의 `가중치 불러오기`를 누릅니다.
35
- 6. 고정된 작가 가중치로 다시 생성하거나, `타율 테스트`에서 여러 씬을 한 번에 테스트합니다.
36
-
37
- ## 주요 기능
38
-
39
- - 작가 태그 카테고리별 랜덤 선택
40
- - 카테고리별 가중치 범위와 granule 설정
41
- - 선택 태그 수 설정
42
- - `1.3::artist:example ::` 형식의 작가 가중치 프롬프트 생성
43
- - 기존 프롬프트에서 붙여넣은 `artist:*` 태그 자동 인식
44
- - 베이스 프롬프트와 퀄리티 프롬프트 프리셋 저장
45
- - 공용 퀄리티 프롬프트 override
46
- - 최대 3명 캐릭터 프롬프트 저장
47
- - 네거티브 프롬프트와 UC 프롬프트 분리 관리
48
- - Normal Portrait, Landscape, Square 이미지 크기 선택
49
- - 실시간 이미지 미리보기
50
- - 생성 히스토리 저장
51
- - 히스토리 선택 삭제와 전체 삭제
52
- - 이미지 확대 보기, 좌우 이동, 휠 확대/축소, 드래그 이동
53
- - 작가 가중치 비교
54
- - 이상형 월드컵
55
- - 마음에 드는 이미지의 작가 가중치 불러오기
56
- - 타율 테스트
57
-
58
- ## 작가 태그 입력
59
-
60
- 작가 태그는 한 줄에 하나씩 넣어도 되고, 기존에 쓰던 프롬프트 조각을 그대로 붙여넣어도 됩니다.
58
+ ## 처음 설정하기
59
+
60
+ 처음 켜면 아래 순서대로 설정하면 됩니다.
61
+
62
+ 1. `API 설정` 메뉴로 이동합니다.
63
+ 2. NovelAI API 토큰을 입력합니다.
64
+ 3. `목업 모드 사용`을 끕니다.
65
+ 4. `설정 저장`을 누릅니다.
66
+
67
+ API 토큰을 아직 넣고 싶지 않다면 `목업 모드 사용`을 켜둔 채로 UI만 먼저 테스트할 수 있습니다. 목업 모드에서는 실제 NovelAI API를 쓰지 않고 테스트용 이미지를 만듭니다.
68
+
69
+ 대부분의 사용자는 `Endpoint`, `Model`, `Sampler`, `Noise Schedule` 같은 값은 기본값 그대로 두면 됩니다.
70
+
71
+ ## 기본 사용 순서
72
+
73
+ ### 1. 작가 태그 등록
74
+
75
+ `작가 태그` 메뉴에서 사용할 작가 태그를 넣습니다.
76
+
77
+ 작가 태그는 줄씩 넣어도 됩니다.
61
78
 
62
79
  ```text
63
80
  artist:example_main
64
81
  artist:sample_a
65
82
  ```
66
83
 
67
- 또는:
84
+ 기존에 쓰던 프롬프트 조각을 그대로 붙여넣어도 됩니다.
68
85
 
69
86
  ```text
70
87
  1.3::artist:example_alpha ::, 1.1::artist:example_beta ::, 0.8::artist:example_gamma ::,
71
88
  ```
72
89
 
73
- 앱은 여기서 `artist:*` 부분만 자동으로 인식합니다.
90
+ 앱은 여기서 `artist:*` 부분만 자동으로 찾아냅니다.
91
+
92
+ `선택 태그 수`를 비워두면 그 카테고리에 적은 작가 태그를 모두 사용합니다. 일부만 랜덤으로 뽑고 싶을 때만 숫자를 입력하면 됩니다.
93
+
94
+ ### 2. 프리셋 만들기
95
+
96
+ `프리셋` 메뉴에서 자주 쓸 프롬프트를 저장합니다.
74
97
 
75
- ## 프롬프트 조립 순서
98
+ - 베이스 프롬프트: 배경, 구도, 상황 같은 전체 설명
99
+ - 퀄리티 프롬프트: 품질 관련 태그
100
+ - 캐릭터 프롬프트: 캐릭터별 외형과 행동
101
+ - 네거티브 프롬프트: 피하고 싶은 요소
102
+ - UC 프롬프트: NovelAI의 legacy UC 입력값
76
103
 
77
- 최종 프롬프트는 아래 순서로 만들어집니다.
104
+ 최종 프롬프트는 아래 순서로 조립됩니다.
78
105
 
79
106
  ```text
80
107
  베이스 프롬프트, 작가 태그, 퀄리티 프롬프트 | 캐릭터 1 | 캐릭터 2 | 캐릭터 3
81
108
  ```
82
109
 
83
- 퀄리티 프롬프트 override가 비어 있으면 선택한 베이스+퀄리티 프리셋의 퀄리티 프롬프트를 사용합니다.
84
- override가 입력되어 있으면 모든 프리셋 조합에서 override 값을 우선 사용합니다.
110
+ NovelAI V4+의 멀티 캐릭터 프롬프트는 캐릭터를 쉼표로 합치지 않고 `|`로 나눕니다.
111
+
112
+ ### 3. 이미지 생성
113
+
114
+ `생성` 메뉴에서 사용할 프리셋과 이미지 크기를 고른 뒤 `이미지 생성`을 누릅니다.
115
+
116
+ 생성 중에는 `실시간 이미지 미리보기`에서 결과를 바로 확인할 수 있습니다.
117
+
118
+ 마음에 드는 이미지가 나오면 히스토리나 가중치 비교 화면에서 `가중치 불러오기`를 누릅니다. 그러면 해당 이미지에 쓰인 작가 가중치가 생성 메뉴에 고정됩니다.
119
+
120
+ 고정된 가중치를 해제하고 싶으면 생성 메뉴에서 `고정 해제`를 누르면 됩니다.
121
+
122
+ ## 주요 메뉴 설명
123
+
124
+ ### 생성
125
+
126
+ 이미지를 만드는 기본 화면입니다.
85
127
 
86
- ## 타율 테스트
128
+ - 사용할 베이스+퀄리티 프리셋 선택
129
+ - 사용할 캐릭터 프리셋 선택
130
+ - 생성할 이미지 개수 선택
131
+ - 이미지 크기 선택
132
+ - 랜덤 가중치/고정 가중치 상태 확인
133
+ - 실시간 이미지 미리보기 확인
87
134
 
88
- 타율 테스트는 고정된 작가 가중치가 여러 프리셋 조합에서 얼마나 안정적으로 잘 나오는지 확인하는 기능입니다.
135
+ ### 작가 태그
89
136
 
90
- 여기서 씬은 아래 조합을 뜻합니다.
137
+ 작가 태그 목록과 가중치 범위를 관리합니다.
138
+
139
+ 기본 카테고리는 두 개입니다.
140
+
141
+ - 메인 그림체 작가
142
+ - 그림체 안정화 작가
143
+
144
+ 필요하면 직접 카테고리를 추가할 수 있습니다.
145
+
146
+ ### 프리셋
147
+
148
+ 반복해서 쓸 프롬프트를 저장하는 곳입니다.
149
+
150
+ 프리셋을 잘 만들어두면 매번 긴 프롬프트를 다시 입력하지 않아도 됩니다.
151
+
152
+ ### 히스토리
153
+
154
+ 생성한 이미지를 모아보는 곳입니다.
155
+
156
+ - 이미지 크게 보기
157
+ - 좌우 방향키로 이미지 이동
158
+ - 마우스 휠로 확대/축소
159
+ - 드래그로 확대된 이미지 이동
160
+ - 마음에 드는 이미지의 가중치 불러오기
161
+ - 히스토리 선택 삭제 또는 전체 삭제
162
+ - 이상형 월드컵 실행
163
+
164
+ ### 가중치 비교
165
+
166
+ 한 히스토리 안에서 생성된 이미지들을 옆으로 훑어보며, 각 이미지에 어떤 작가 가중치가 쓰였는지 비교하는 화면입니다.
167
+
168
+ 여기서도 마음에 드는 이미지의 `가중치 불러오기`를 누를 수 있습니다.
169
+
170
+ ### 이상형 월드컵
171
+
172
+ 히스토리 이미지 중에서 두 장씩 비교하며 가장 마음에 드는 이미지를 고르는 기능입니다.
173
+
174
+ 우승/준우승 이미지에서도 바로 `가중치 불러오기`를 할 수 있습니다.
175
+
176
+ ### 타율 테스트
177
+
178
+ 마음에 드는 작가 가중치를 고정한 상태로 여러 프리셋 조합을 한 번에 테스트하는 기능입니다.
179
+
180
+ 여기서 `씬`은 아래 조합을 뜻합니다.
91
181
 
92
182
  ```text
93
183
  씬 = 베이스+퀄리티 프리셋 + 캐릭터 프리셋 + 생성 개수
94
184
  ```
95
185
 
96
- 사용 방법:
186
+ 사용 순서:
97
187
 
98
188
  1. 히스토리나 가중치 비교에서 마음에 드는 이미지의 `가중치 불러오기`를 누릅니다.
99
189
  2. `타율 테스트` 메뉴로 이동합니다.
100
- 3. `씬 추가`를 눌러 테스트할 씬을 여러 개 등록합니다.
101
- 4. 씬의 프리셋과 생성 개수를 조정합니다.
190
+ 3. `씬 추가`를 눌러 테스트할 조합을 등록합니다.
191
+ 4. 필요한 만큼 씬을 추가합니다.
102
192
  5. `타율 테스트 시작`을 누릅니다.
103
193
 
104
- 결과는 히스토리에 `타율 테스트` 묶음으로 저장되며, 이미지에는 사용된 이름과 프리셋 정보가 함께 남습니다.
194
+ 생성 멈추고 싶으면 `생성 중지`를 누르면 됩니다. 현재 처리 중인 이미지가 끝난 남은 생성을 멈춥니다.
105
195
 
106
- ## API 설정
196
+ ## 이미지 크기
107
197
 
108
- `API 설정` 메뉴에서 다음 값을 설정합니다.
198
+ 생성 메뉴에서 아래 크기 중 하나를 고를 수 있습니다.
109
199
 
110
- - API 토큰
111
- - Endpoint
112
- - Model
113
- - Steps
114
- - Scale
115
- - Guidance Rescale
116
- - Sampler
117
- - Noise Schedule
118
- - Seed
119
- - UC 프롬프트
120
- - 네거티브 프롬프트
200
+ - Normal Portrait: 832 x 1216
201
+ - Landscape: 1216 x 832
202
+ - Square: 1024 x 1024
121
203
 
122
- 토큰을 넣기 전에는 목업 모드로 UI 흐름을 먼저 테스트할 수 있습니다.
204
+ ## 저장되는 정보
123
205
 
124
- API 토큰은 `app_state.json`에 저장하거나 `/api/state` 응답으로 다시 내려보내지 않습니다. 한 번 입력한 토큰은 별도 secret store에 저장되어 다음 실행 때 자동으로 사용됩니다.
206
+ 설정과 생성 이미지는 컴퓨터에 저장됩니다.
125
207
 
126
- 생성 히스토리에는 이미지 표시와 작가 가중치 비교에 필요한 최소 정보만 저장합니다. 최종 프롬프트, 네거티브 프롬프트, UC 프롬프트, 생성 요청 JSON, 로컬 절대 경로는 별도로 저장하지 않습니다. 이전 버전에서 생성된 `*_request.json` 파일은 앱 시작 시 자동으로 제거됩니다.
208
+ - Windows: `%APPDATA%\NAI Artist Combination Lab`
209
+ - macOS: `~/Library/Application Support/NAI Artist Combination Lab`
210
+ - Linux: `~/.local/share/nai-artist-combination-lab`
127
211
 
128
- 로컬 API 앱이 시작될 생성되는 임시 토큰으로 보호됩니다. 또한 기본 NovelAI endpoint가 아닌 주소로 이미지를 생성하려는 경우, API 토큰이 해당 endpoint로 전송된다는 확인창을 먼저 표시합니다.
212
+ API 토큰은 일반 설정 파일에 저장하지 않고 별도 secret store에 저장합니다. 화면으로 다시 내려보내지도 않습니다.
129
213
 
130
- ## 저장 위치
214
+ 생성 히스토리에는 이미지 표시와 작가 가중치 비교에 필요한 최소 정보만 저장합니다. 최종 프롬프트, 네거티브 프롬프트, UC 프롬프트, 생성 요청 JSON, 로컬 절대 경로는 별도로 저장하지 않습니다.
131
215
 
132
- 상태, 생성 이미지, 요청 JSON은 아래 위치에 저장됩니다.
216
+ NovelAI가 이미지 파일 안에 저장하는 생성 정보는 그대로 남을 있습니다. 이 정보는 이미지 자체의 메타데이터입니다.
133
217
 
134
- - Windows: `%APPDATA%\NAI Artist Combination Lab`
135
- - macOS: `~/Library/Application Support/NAI Artist Combination Lab`
136
- - Linux: `~/.local/share/nai-artist-combination-lab`
218
+ ## 자주 묻는 문제
137
219
 
138
- 저장 위치를 직접 지정하려면 `NAI_ARTIST_LAB_USER_DIR` 환경 변수를 설정하면 됩니다.
220
+ ### `npx` 명령어가 됩니다
139
221
 
140
- ## 참고
222
+ Node.js가 설치되어 있지 않거나 너무 오래된 버전일 수 있습니다. Node.js 18 이상을 설치한 뒤 다시 시도하세요.
141
223
 
142
- NovelAI V4+의 멀티 캐릭터 프롬프트는 캐릭터 프롬프트를 쉼표로 합치지 않고 `|`로 분리합니다.
224
+ ### Python을 찾을 없다고 나옵니다
143
225
 
144
- 예시:
226
+ Python 3.10 이상이 설치되어 있는지 확인하세요.
145
227
 
146
- ```text
147
- 2girls, outdoors, best quality | girl, black hair | girl, blonde hair
148
- ```
228
+ Windows에서 Python을 설치할 때는 `Add Python to PATH` 옵션을 켜는 것이 좋습니다.
229
+
230
+ ### 브라우저가 열렸는데 앱이 멈춘 것 같습니다
231
+
232
+ 터미널 창을 닫으면 앱 서버도 종료됩니다. 앱을 사용하는 동안 터미널 창을 열어두세요.
233
+
234
+ ### 이미지가 실제로 생성되지 않고 테스트 이미지만 나옵니다
235
+
236
+ `API 설정`에서 `목업 모드 사용`이 켜져 있는지 확인하세요. 실제 NovelAI 생성을 하려면 목업 모드를 꺼야 합니다.
237
+
238
+ ### 기본 endpoint가 아닌 주소라는 경고가 나옵니다
239
+
240
+ API 설정의 `Endpoint`가 기본 NovelAI 주소와 다를 때 나오는 경고입니다. API 토큰이 해당 주소로 전송될 수 있으므로, 직접 설정한 주소가 맞는지 확인한 뒤 계속하세요.
package/package.json CHANGED
@@ -1,25 +1,25 @@
1
- {
2
- "name": "nai-aclab",
3
- "version": "1.0.4",
4
- "description": "Local web UI for experimenting with NovelAI artist tag weight combinations.",
5
- "license": "MIT",
6
- "type": "commonjs",
7
- "bin": {
8
- "nai-aclab": "bin/nai-artist-lab.js",
9
- "nai-artist-lab": "bin/nai-artist-lab.js"
10
- },
11
- "scripts": {
12
- "start": "node bin/nai-artist-lab.js"
13
- },
14
- "files": [
15
- "app.py",
16
- "web_app.py",
17
- "launcher.py",
18
- "web/",
19
- "bin/",
20
- "README.md"
21
- ],
22
- "engines": {
23
- "node": ">=18"
24
- }
25
- }
1
+ {
2
+ "name": "nai-aclab",
3
+ "version": "1.0.6",
4
+ "description": "Local web UI for experimenting with NovelAI artist tag weight combinations.",
5
+ "license": "MIT",
6
+ "type": "commonjs",
7
+ "bin": {
8
+ "nai-aclab": "bin/nai-artist-lab.js",
9
+ "nai-artist-lab": "bin/nai-artist-lab.js"
10
+ },
11
+ "scripts": {
12
+ "start": "node bin/nai-artist-lab.js"
13
+ },
14
+ "files": [
15
+ "app.py",
16
+ "web_app.py",
17
+ "launcher.py",
18
+ "web/",
19
+ "bin/",
20
+ "README.md"
21
+ ],
22
+ "engines": {
23
+ "node": ">=18"
24
+ }
25
+ }