Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
chenpangpang
open-webui
Commits
bec04279
Commit
bec04279
authored
Jun 20, 2024
by
sihuangwlp
Browse files
Add AUTOMATIC1111_API_AUTH support
parent
9e4dd4b8
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
73 additions
and
17 deletions
+73
-17
backend/apps/images/main.py
backend/apps/images/main.py
+37
-16
backend/config.py
backend/config.py
+5
-0
src/lib/components/admin/Settings/Images.svelte
src/lib/components/admin/Settings/Images.svelte
+27
-1
src/lib/i18n/locales/zh-CN/translation.json
src/lib/i18n/locales/zh-CN/translation.json
+4
-0
No files found.
backend/apps/images/main.py
View file @
bec04279
import
re
import
re
import
requests
import
requests
import
base64
from
fastapi
import
(
from
fastapi
import
(
FastAPI
,
FastAPI
,
Request
,
Request
,
...
@@ -36,6 +37,7 @@ from config import (
...
@@ -36,6 +37,7 @@ from config import (
IMAGE_GENERATION_ENGINE
,
IMAGE_GENERATION_ENGINE
,
ENABLE_IMAGE_GENERATION
,
ENABLE_IMAGE_GENERATION
,
AUTOMATIC1111_BASE_URL
,
AUTOMATIC1111_BASE_URL
,
AUTOMATIC1111_API_AUTH
,
COMFYUI_BASE_URL
,
COMFYUI_BASE_URL
,
COMFYUI_CFG_SCALE
,
COMFYUI_CFG_SCALE
,
COMFYUI_SAMPLER
,
COMFYUI_SAMPLER
,
...
@@ -49,7 +51,6 @@ from config import (
...
@@ -49,7 +51,6 @@ from config import (
AppConfig
,
AppConfig
,
)
)
log
=
logging
.
getLogger
(
__name__
)
log
=
logging
.
getLogger
(
__name__
)
log
.
setLevel
(
SRC_LOG_LEVELS
[
"IMAGES"
])
log
.
setLevel
(
SRC_LOG_LEVELS
[
"IMAGES"
])
...
@@ -75,11 +76,10 @@ app.state.config.OPENAI_API_KEY = IMAGES_OPENAI_API_KEY
...
@@ -75,11 +76,10 @@ app.state.config.OPENAI_API_KEY = IMAGES_OPENAI_API_KEY
app
.
state
.
config
.
MODEL
=
IMAGE_GENERATION_MODEL
app
.
state
.
config
.
MODEL
=
IMAGE_GENERATION_MODEL
app
.
state
.
config
.
AUTOMATIC1111_BASE_URL
=
AUTOMATIC1111_BASE_URL
app
.
state
.
config
.
AUTOMATIC1111_BASE_URL
=
AUTOMATIC1111_BASE_URL
app
.
state
.
config
.
AUTOMATIC1111_API_AUTH
=
AUTOMATIC1111_API_AUTH
app
.
state
.
config
.
COMFYUI_BASE_URL
=
COMFYUI_BASE_URL
app
.
state
.
config
.
COMFYUI_BASE_URL
=
COMFYUI_BASE_URL
app
.
state
.
config
.
IMAGE_SIZE
=
IMAGE_SIZE
app
.
state
.
config
.
IMAGE_SIZE
=
IMAGE_SIZE
app
.
state
.
config
.
IMAGE_STEPS
=
IMAGE_STEPS
app
.
state
.
config
.
IMAGE_STEPS
=
IMAGE_STEPS
app
.
state
.
config
.
COMFYUI_CFG_SCALE
=
COMFYUI_CFG_SCALE
app
.
state
.
config
.
COMFYUI_CFG_SCALE
=
COMFYUI_CFG_SCALE
...
@@ -88,6 +88,16 @@ app.state.config.COMFYUI_SCHEDULER = COMFYUI_SCHEDULER
...
@@ -88,6 +88,16 @@ app.state.config.COMFYUI_SCHEDULER = COMFYUI_SCHEDULER
app
.
state
.
config
.
COMFYUI_SD3
=
COMFYUI_SD3
app
.
state
.
config
.
COMFYUI_SD3
=
COMFYUI_SD3
def
get_automatic1111_api_auth
():
if
app
.
state
.
config
.
AUTOMATIC1111_API_AUTH
==
None
:
return
""
else
:
auth1111_byte_string
=
app
.
state
.
config
.
AUTOMATIC1111_API_AUTH
.
encode
(
'utf-8'
)
auth1111_base64_encoded_bytes
=
base64
.
b64encode
(
auth1111_byte_string
)
auth1111_base64_encoded_string
=
auth1111_base64_encoded_bytes
.
decode
(
'utf-8'
)
return
f
"Basic
{
auth1111_base64_encoded_string
}
"
@
app
.
get
(
"/config"
)
@
app
.
get
(
"/config"
)
async
def
get_config
(
request
:
Request
,
user
=
Depends
(
get_admin_user
)):
async
def
get_config
(
request
:
Request
,
user
=
Depends
(
get_admin_user
)):
return
{
return
{
...
@@ -120,15 +130,15 @@ class EngineUrlUpdateForm(BaseModel):
...
@@ -120,15 +130,15 @@ class EngineUrlUpdateForm(BaseModel):
async
def
get_engine_url
(
user
=
Depends
(
get_admin_user
)):
async
def
get_engine_url
(
user
=
Depends
(
get_admin_user
)):
return
{
return
{
"AUTOMATIC1111_BASE_URL"
:
app
.
state
.
config
.
AUTOMATIC1111_BASE_URL
,
"AUTOMATIC1111_BASE_URL"
:
app
.
state
.
config
.
AUTOMATIC1111_BASE_URL
,
"AUTOMATIC1111_API_AUTH"
:
app
.
state
.
config
.
AUTOMATIC1111_API_AUTH
,
"COMFYUI_BASE_URL"
:
app
.
state
.
config
.
COMFYUI_BASE_URL
,
"COMFYUI_BASE_URL"
:
app
.
state
.
config
.
COMFYUI_BASE_URL
,
}
}
@
app
.
post
(
"/url/update"
)
@
app
.
post
(
"/url/update"
)
async
def
update_engine_url
(
async
def
update_engine_url
(
form_data
:
EngineUrlUpdateForm
,
user
=
Depends
(
get_admin_user
)
form_data
:
EngineUrlUpdateForm
,
user
=
Depends
(
get_admin_user
)
):
):
if
form_data
.
AUTOMATIC1111_BASE_URL
==
None
:
if
form_data
.
AUTOMATIC1111_BASE_URL
==
None
:
app
.
state
.
config
.
AUTOMATIC1111_BASE_URL
=
AUTOMATIC1111_BASE_URL
app
.
state
.
config
.
AUTOMATIC1111_BASE_URL
=
AUTOMATIC1111_BASE_URL
else
:
else
:
...
@@ -150,8 +160,14 @@ async def update_engine_url(
...
@@ -150,8 +160,14 @@ async def update_engine_url(
except
Exception
as
e
:
except
Exception
as
e
:
raise
HTTPException
(
status_code
=
400
,
detail
=
ERROR_MESSAGES
.
DEFAULT
(
e
))
raise
HTTPException
(
status_code
=
400
,
detail
=
ERROR_MESSAGES
.
DEFAULT
(
e
))
if
form_data
.
AUTOMATIC1111_API_AUTH
==
None
:
app
.
state
.
config
.
AUTOMATIC1111_API_AUTH
=
AUTOMATIC1111_API_AUTH
else
:
app
.
state
.
config
.
AUTOMATIC1111_API_AUTH
=
form_data
.
AUTOMATIC1111_API_AUTH
return
{
return
{
"AUTOMATIC1111_BASE_URL"
:
app
.
state
.
config
.
AUTOMATIC1111_BASE_URL
,
"AUTOMATIC1111_BASE_URL"
:
app
.
state
.
config
.
AUTOMATIC1111_BASE_URL
,
"AUTOMATIC1111_API_AUTH"
:
app
.
state
.
config
.
AUTOMATIC1111_API_AUTH
,
"COMFYUI_BASE_URL"
:
app
.
state
.
config
.
COMFYUI_BASE_URL
,
"COMFYUI_BASE_URL"
:
app
.
state
.
config
.
COMFYUI_BASE_URL
,
"status"
:
True
,
"status"
:
True
,
}
}
...
@@ -172,7 +188,7 @@ async def get_openai_config(user=Depends(get_admin_user)):
...
@@ -172,7 +188,7 @@ async def get_openai_config(user=Depends(get_admin_user)):
@
app
.
post
(
"/openai/config/update"
)
@
app
.
post
(
"/openai/config/update"
)
async
def
update_openai_config
(
async
def
update_openai_config
(
form_data
:
OpenAIConfigUpdateForm
,
user
=
Depends
(
get_admin_user
)
form_data
:
OpenAIConfigUpdateForm
,
user
=
Depends
(
get_admin_user
)
):
):
if
form_data
.
key
==
""
:
if
form_data
.
key
==
""
:
raise
HTTPException
(
status_code
=
400
,
detail
=
ERROR_MESSAGES
.
API_KEY_NOT_FOUND
)
raise
HTTPException
(
status_code
=
400
,
detail
=
ERROR_MESSAGES
.
API_KEY_NOT_FOUND
)
...
@@ -198,7 +214,7 @@ async def get_image_size(user=Depends(get_admin_user)):
...
@@ -198,7 +214,7 @@ async def get_image_size(user=Depends(get_admin_user)):
@
app
.
post
(
"/size/update"
)
@
app
.
post
(
"/size/update"
)
async
def
update_image_size
(
async
def
update_image_size
(
form_data
:
ImageSizeUpdateForm
,
user
=
Depends
(
get_admin_user
)
form_data
:
ImageSizeUpdateForm
,
user
=
Depends
(
get_admin_user
)
):
):
pattern
=
r
"^\d+x\d+$"
# Regular expression pattern
pattern
=
r
"^\d+x\d+$"
# Regular expression pattern
if
re
.
match
(
pattern
,
form_data
.
size
):
if
re
.
match
(
pattern
,
form_data
.
size
):
...
@@ -225,7 +241,7 @@ async def get_image_size(user=Depends(get_admin_user)):
...
@@ -225,7 +241,7 @@ async def get_image_size(user=Depends(get_admin_user)):
@
app
.
post
(
"/steps/update"
)
@
app
.
post
(
"/steps/update"
)
async
def
update_image_size
(
async
def
update_image_size
(
form_data
:
ImageStepsUpdateForm
,
user
=
Depends
(
get_admin_user
)
form_data
:
ImageStepsUpdateForm
,
user
=
Depends
(
get_admin_user
)
):
):
if
form_data
.
steps
>=
0
:
if
form_data
.
steps
>=
0
:
app
.
state
.
config
.
IMAGE_STEPS
=
form_data
.
steps
app
.
state
.
config
.
IMAGE_STEPS
=
form_data
.
steps
...
@@ -262,7 +278,8 @@ def get_models(user=Depends(get_current_user)):
...
@@ -262,7 +278,8 @@ def get_models(user=Depends(get_current_user)):
else
:
else
:
r
=
requests
.
get
(
r
=
requests
.
get
(
url
=
f
"
{
app
.
state
.
config
.
AUTOMATIC1111_BASE_URL
}
/sdapi/v1/sd-models"
url
=
f
"
{
app
.
state
.
config
.
AUTOMATIC1111_BASE_URL
}
/sdapi/v1/sd-models"
,
headers
=
{
"authorization"
:
get_automatic1111_api_auth
()}
)
)
models
=
r
.
json
()
models
=
r
.
json
()
return
list
(
return
list
(
...
@@ -289,7 +306,8 @@ async def get_default_model(user=Depends(get_admin_user)):
...
@@ -289,7 +306,8 @@ async def get_default_model(user=Depends(get_admin_user)):
return
{
"model"
:
(
app
.
state
.
config
.
MODEL
if
app
.
state
.
config
.
MODEL
else
""
)}
return
{
"model"
:
(
app
.
state
.
config
.
MODEL
if
app
.
state
.
config
.
MODEL
else
""
)}
else
:
else
:
r
=
requests
.
get
(
r
=
requests
.
get
(
url
=
f
"
{
app
.
state
.
config
.
AUTOMATIC1111_BASE_URL
}
/sdapi/v1/options"
url
=
f
"
{
app
.
state
.
config
.
AUTOMATIC1111_BASE_URL
}
/sdapi/v1/options"
,
headers
=
{
"authorization"
:
get_automatic1111_api_auth
()}
)
)
options
=
r
.
json
()
options
=
r
.
json
()
return
{
"model"
:
options
[
"sd_model_checkpoint"
]}
return
{
"model"
:
options
[
"sd_model_checkpoint"
]}
...
@@ -307,8 +325,10 @@ def set_model_handler(model: str):
...
@@ -307,8 +325,10 @@ def set_model_handler(model: str):
app
.
state
.
config
.
MODEL
=
model
app
.
state
.
config
.
MODEL
=
model
return
app
.
state
.
config
.
MODEL
return
app
.
state
.
config
.
MODEL
else
:
else
:
api_auth
=
get_automatic1111_api_auth
()
r
=
requests
.
get
(
r
=
requests
.
get
(
url
=
f
"
{
app
.
state
.
config
.
AUTOMATIC1111_BASE_URL
}
/sdapi/v1/options"
url
=
f
"
{
app
.
state
.
config
.
AUTOMATIC1111_BASE_URL
}
/sdapi/v1/options"
,
headers
=
{
"authorization"
:
api_auth
}
)
)
options
=
r
.
json
()
options
=
r
.
json
()
...
@@ -317,6 +337,7 @@ def set_model_handler(model: str):
...
@@ -317,6 +337,7 @@ def set_model_handler(model: str):
r
=
requests
.
post
(
r
=
requests
.
post
(
url
=
f
"
{
app
.
state
.
config
.
AUTOMATIC1111_BASE_URL
}
/sdapi/v1/options"
,
url
=
f
"
{
app
.
state
.
config
.
AUTOMATIC1111_BASE_URL
}
/sdapi/v1/options"
,
json
=
options
,
json
=
options
,
headers
=
{
"authorization"
:
api_auth
},
)
)
return
options
return
options
...
@@ -324,8 +345,8 @@ def set_model_handler(model: str):
...
@@ -324,8 +345,8 @@ def set_model_handler(model: str):
@
app
.
post
(
"/models/default/update"
)
@
app
.
post
(
"/models/default/update"
)
def
update_default_model
(
def
update_default_model
(
form_data
:
UpdateModelForm
,
form_data
:
UpdateModelForm
,
user
=
Depends
(
get_current_user
),
user
=
Depends
(
get_current_user
),
):
):
return
set_model_handler
(
form_data
.
model
)
return
set_model_handler
(
form_data
.
model
)
...
@@ -401,10 +422,9 @@ def save_url_image(url):
...
@@ -401,10 +422,9 @@ def save_url_image(url):
@
app
.
post
(
"/generations"
)
@
app
.
post
(
"/generations"
)
def
generate_image
(
def
generate_image
(
form_data
:
GenerateImageForm
,
form_data
:
GenerateImageForm
,
user
=
Depends
(
get_current_user
),
user
=
Depends
(
get_current_user
),
):
):
width
,
height
=
tuple
(
map
(
int
,
app
.
state
.
config
.
IMAGE_SIZE
.
split
(
"x"
)))
width
,
height
=
tuple
(
map
(
int
,
app
.
state
.
config
.
IMAGE_SIZE
.
split
(
"x"
)))
r
=
None
r
=
None
...
@@ -519,6 +539,7 @@ def generate_image(
...
@@ -519,6 +539,7 @@ def generate_image(
r
=
requests
.
post
(
r
=
requests
.
post
(
url
=
f
"
{
app
.
state
.
config
.
AUTOMATIC1111_BASE_URL
}
/sdapi/v1/txt2img"
,
url
=
f
"
{
app
.
state
.
config
.
AUTOMATIC1111_BASE_URL
}
/sdapi/v1/txt2img"
,
json
=
data
,
json
=
data
,
headers
=
{
"authorization"
:
get_automatic1111_api_auth
()},
)
)
res
=
r
.
json
()
res
=
r
.
json
()
...
...
backend/config.py
View file @
bec04279
...
@@ -1001,6 +1001,11 @@ AUTOMATIC1111_BASE_URL = PersistentConfig(
...
@@ -1001,6 +1001,11 @@ AUTOMATIC1111_BASE_URL = PersistentConfig(
"image_generation.automatic1111.base_url"
,
"image_generation.automatic1111.base_url"
,
os
.
getenv
(
"AUTOMATIC1111_BASE_URL"
,
""
),
os
.
getenv
(
"AUTOMATIC1111_BASE_URL"
,
""
),
)
)
AUTOMATIC1111_API_AUTH
=
PersistentConfig
(
"AUTOMATIC1111_API_AUTH"
,
"image_generation.automatic1111.api_auth"
,
os
.
getenv
(
"AUTOMATIC1111_API_AUTH"
,
""
),
)
COMFYUI_BASE_URL
=
PersistentConfig
(
COMFYUI_BASE_URL
=
PersistentConfig
(
"COMFYUI_BASE_URL"
,
"COMFYUI_BASE_URL"
,
...
...
src/lib/components/admin/Settings/Images.svelte
View file @
bec04279
...
@@ -29,6 +29,7 @@
...
@@ -29,6 +29,7 @@
let enableImageGeneration = false;
let enableImageGeneration = false;
let AUTOMATIC1111_BASE_URL = '';
let AUTOMATIC1111_BASE_URL = '';
let AUTOMATIC1111_API_AUTH = '';
let COMFYUI_BASE_URL = '';
let COMFYUI_BASE_URL = '';
let OPENAI_API_BASE_URL = '';
let OPENAI_API_BASE_URL = '';
...
@@ -75,6 +76,7 @@
...
@@ -75,6 +76,7 @@
} else {
} else {
const res = await updateImageGenerationEngineUrls(localStorage.token, {
const res = await updateImageGenerationEngineUrls(localStorage.token, {
AUTOMATIC1111_BASE_URL: AUTOMATIC1111_BASE_URL
AUTOMATIC1111_BASE_URL: AUTOMATIC1111_BASE_URL
AUTOMATIC1111_API_AUTH: AUTOMATIC1111_API_AUTH
}).catch((error) => {
}).catch((error) => {
toast.error(error);
toast.error(error);
return null;
return null;
...
@@ -82,6 +84,7 @@
...
@@ -82,6 +84,7 @@
if (res) {
if (res) {
AUTOMATIC1111_BASE_URL = res.AUTOMATIC1111_BASE_URL;
AUTOMATIC1111_BASE_URL = res.AUTOMATIC1111_BASE_URL;
AUTOMATIC1111_API_AUTH = res.AUTOMATIC1111_API_AUTH;
await getModels();
await getModels();
...
@@ -89,7 +92,7 @@
...
@@ -89,7 +92,7 @@
toast.success($i18n.t('Server connection verified'));
toast.success($i18n.t('Server connection verified'));
}
}
} else {
} else {
({ AUTOMATIC1111_BASE_URL } = await getImageGenerationEngineUrls(localStorage.token));
({ AUTOMATIC1111_BASE_URL
,AUTOMATIC1111_API_AUTH
} = await getImageGenerationEngineUrls(localStorage.token));
}
}
}
}
};
};
...
@@ -128,6 +131,7 @@
...
@@ -128,6 +131,7 @@
const URLS = await getImageGenerationEngineUrls(localStorage.token);
const URLS = await getImageGenerationEngineUrls(localStorage.token);
AUTOMATIC1111_BASE_URL = URLS.AUTOMATIC1111_BASE_URL;
AUTOMATIC1111_BASE_URL = URLS.AUTOMATIC1111_BASE_URL;
AUTOMATIC1111_API_AUTH = URLS.AUTOMATIC1111_API_AUTH;
COMFYUI_BASE_URL = URLS.COMFYUI_BASE_URL;
COMFYUI_BASE_URL = URLS.COMFYUI_BASE_URL;
const config = await getOpenAIConfig(localStorage.token);
const config = await getOpenAIConfig(localStorage.token);
...
@@ -270,6 +274,28 @@
...
@@ -270,6 +274,28 @@
{$i18n.t('(e.g. `sh webui.sh --api`)')}
{$i18n.t('(e.g. `sh webui.sh --api`)')}
</a>
</a>
</div>
</div>
<div class=" mb-2.5 text-sm font-medium">{$i18n.t('AUTOMATIC1111 Api Auth String')}</div>
<div class="flex w-full">
<div class="flex-1 mr-2">
<input
class="w-full rounded-lg py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-850 outline-none"
placeholder={$i18n.t('Enter api auth string (e.g. username:password)')}
bind:value={AUTOMATIC1111_API_AUTH}
/>
</div>
</div>
<div class="mt-2 text-xs text-gray-400 dark:text-gray-500">
{$i18n.t('Include `--api-auth` flag when running stable-diffusion-webui')}
<a
class=" text-gray-300 font-medium"
href="https://github.com/AUTOMATIC1111/stable-diffusion-webui/discussions/13993"
target="_blank"
>
{$i18n.t('(e.g. `sh webui.sh --api --api-auth username:password`)')}
</a>
</div>
{:else if imageGenerationEngine === 'comfyui'}
{:else if imageGenerationEngine === 'comfyui'}
<div class=" mb-2.5 text-sm font-medium">{$i18n.t('ComfyUI Base URL')}</div>
<div class=" mb-2.5 text-sm font-medium">{$i18n.t('ComfyUI Base URL')}</div>
<div class="flex w-full">
<div class="flex w-full">
...
...
src/lib/i18n/locales/zh-CN/translation.json
View file @
bec04279
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
"'s', 'm', 'h', 'd', 'w' or '-1' for no expiration."
:
"'s', 'm', 'h', 'd', 'w' 或 '-1' 表示无过期时间。"
,
"'s', 'm', 'h', 'd', 'w' or '-1' for no expiration."
:
"'s', 'm', 'h', 'd', 'w' 或 '-1' 表示无过期时间。"
,
"(Beta)"
:
"(测试版)"
,
"(Beta)"
:
"(测试版)"
,
"(e.g. `sh webui.sh --api`)"
:
"(例如 `sh webui.sh --api`)"
,
"(e.g. `sh webui.sh --api`)"
:
"(例如 `sh webui.sh --api`)"
,
"(e.g. `sh webui.sh --api --api-auth username:password`)"
:
"(例如 `sh webui.sh --api --api-auth username:password`)"
,
"(latest)"
:
"(最新版)"
,
"(latest)"
:
"(最新版)"
,
"{{ models }}"
:
"{{ models }}"
,
"{{ models }}"
:
"{{ models }}"
,
"{{ owner }}: You cannot delete a base model"
:
"{{ owner }}:您不能删除基础模型"
,
"{{ owner }}: You cannot delete a base model"
:
"{{ owner }}:您不能删除基础模型"
,
...
@@ -63,6 +64,7 @@
...
@@ -63,6 +64,7 @@
"Audio"
:
"语音"
,
"Audio"
:
"语音"
,
"August"
:
"八月"
,
"August"
:
"八月"
,
"Auto-playback response"
:
"自动念出回复内容"
,
"Auto-playback response"
:
"自动念出回复内容"
,
"AUTOMATIC1111 Api Auth String"
:
"AUTOMATIC1111 Api鉴权字符串"
,
"AUTOMATIC1111 Base URL"
:
"AUTOMATIC1111 基础地址"
,
"AUTOMATIC1111 Base URL"
:
"AUTOMATIC1111 基础地址"
,
"AUTOMATIC1111 Base URL is required."
:
"需要 AUTOMATIC1111 基础地址。"
,
"AUTOMATIC1111 Base URL is required."
:
"需要 AUTOMATIC1111 基础地址。"
,
"available!"
:
"版本可用!"
,
"available!"
:
"版本可用!"
,
...
@@ -211,6 +213,7 @@
...
@@ -211,6 +213,7 @@
"Enter stop sequence"
:
"输入停止序列 (Stop Sequence)"
,
"Enter stop sequence"
:
"输入停止序列 (Stop Sequence)"
,
"Enter Tavily API Key"
:
""
,
"Enter Tavily API Key"
:
""
,
"Enter Top K"
:
"输入 Top K"
,
"Enter Top K"
:
"输入 Top K"
,
"Enter api auth string (e.g. username:password)"
:
"输入api鉴权路径 (例如:username:password)"
,
"Enter URL (e.g. http://127.0.0.1:7860/)"
:
"输入地址 (例如:http://127.0.0.1:7860/)"
,
"Enter URL (e.g. http://127.0.0.1:7860/)"
:
"输入地址 (例如:http://127.0.0.1:7860/)"
,
"Enter URL (e.g. http://localhost:11434)"
:
"输入地址 (例如:http://localhost:11434)"
,
"Enter URL (e.g. http://localhost:11434)"
:
"输入地址 (例如:http://localhost:11434)"
,
"Enter Your Email"
:
"输入您的电子邮箱"
,
"Enter Your Email"
:
"输入您的电子邮箱"
,
...
@@ -265,6 +268,7 @@
...
@@ -265,6 +268,7 @@
"Import Models"
:
"导入模型"
,
"Import Models"
:
"导入模型"
,
"Import Prompts"
:
"导入提示词"
,
"Import Prompts"
:
"导入提示词"
,
"Import Tools"
:
"导入工具"
,
"Import Tools"
:
"导入工具"
,
"Include `--api-auth` flag when running stable-diffusion-webui"
:
"运行 stable-diffusion-webui 时包含 `--api-auth` 标志"
,
"Include `--api` flag when running stable-diffusion-webui"
:
"运行 stable-diffusion-webui 时包含 `--api` 标志"
,
"Include `--api` flag when running stable-diffusion-webui"
:
"运行 stable-diffusion-webui 时包含 `--api` 标志"
,
"Info"
:
"信息"
,
"Info"
:
"信息"
,
"Input commands"
:
"输入命令"
,
"Input commands"
:
"输入命令"
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment