Skip to content

Commit 4763cb5

Browse files
committed
fix: show provider-specific embedding API Base URL hint as field subtitle
1 parent 0e5946a commit 4763cb5

4 files changed

Lines changed: 54 additions & 9 deletions

File tree

astrbot/core/config/default.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1463,6 +1463,7 @@ class ChatProviderTemplate(TypedDict):
14631463
"type": "openai_embedding",
14641464
"provider": "openai",
14651465
"provider_type": "embedding",
1466+
"hint": "provider_group.provider.openai_embedding.hint",
14661467
"enable": True,
14671468
"embedding_api_key": "",
14681469
"embedding_api_base": "",
@@ -1476,6 +1477,7 @@ class ChatProviderTemplate(TypedDict):
14761477
"type": "gemini_embedding",
14771478
"provider": "google",
14781479
"provider_type": "embedding",
1480+
"hint": "provider_group.provider.gemini_embedding.hint",
14791481
"enable": True,
14801482
"embedding_api_key": "",
14811483
"embedding_api_base": "",
@@ -1771,7 +1773,6 @@ class ChatProviderTemplate(TypedDict):
17711773
"embedding_api_base": {
17721774
"description": "API Base URL",
17731775
"type": "string",
1774-
"hint": "provider_group.provider.embedding_api_base.hint",
17751776
},
17761777
"volcengine_cluster": {
17771778
"type": "string",

dashboard/src/components/shared/AstrBotConfig.vue

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,40 @@ const filteredIterable = computed(() => {
4848
return rest
4949
})
5050
51+
const providerHint = computed(() => {
52+
const hint = props.iterable?.hint
53+
if (typeof hint !== 'string' || !hint) return ''
54+
55+
if (
56+
hint === 'provider_group.provider.openai_embedding.hint'
57+
|| hint === 'provider_group.provider.gemini_embedding.hint'
58+
) {
59+
return ''
60+
}
61+
62+
return hint
63+
})
64+
65+
const getItemHint = (itemKey, itemMeta) => {
66+
if (itemMeta?.hint) return itemMeta.hint
67+
68+
if (itemKey !== 'embedding_api_base') return ''
69+
70+
const providerType = props.iterable?.type
71+
if (providerType === 'openai_embedding') {
72+
return getRaw('provider_group.provider.openai_embedding.hint')
73+
? 'provider_group.provider.openai_embedding.hint'
74+
: ''
75+
}
76+
if (providerType === 'gemini_embedding') {
77+
return getRaw('provider_group.provider.gemini_embedding.hint')
78+
? 'provider_group.provider.gemini_embedding.hint'
79+
: ''
80+
}
81+
82+
return ''
83+
}
84+
5185
const dialog = ref(false)
5286
const currentEditingKey = ref('')
5387
const currentEditingLanguage = ref('json')
@@ -153,14 +187,14 @@ function hasVisibleItemsAfter(items, currentIndex) {
153187
<div v-if="metadata[metadataKey]?.type === 'object' || metadata[metadataKey]?.config_template" class="object-config">
154188
<!-- Provider-level hint -->
155189
<v-alert
156-
v-if="iterable.hint && !isEditing"
190+
v-if="providerHint"
157191
type="info"
158192
variant="tonal"
159193
class="mb-4"
160194
border="start"
161195
density="compact"
162196
>
163-
{{ iterable.hint }}
197+
{{ translateIfKey(providerHint) }}
164198
</v-alert>
165199
166200
<div v-for="(val, key, index) in filteredIterable" :key="key" class="config-item">
@@ -218,9 +252,9 @@ function hasVisibleItemsAfter(items, currentIndex) {
218252
</v-list-item-title>
219253
220254
<v-list-item-subtitle class="property-hint">
221-
<span v-if="metadata[metadataKey].items[key]?.obvious_hint && metadata[metadataKey].items[key]?.hint"
255+
<span v-if="metadata[metadataKey].items[key]?.obvious_hint && getItemHint(key, metadata[metadataKey].items[key])"
222256
class="important-hint">‼️</span>
223-
{{ translateIfKey(metadata[metadataKey].items[key]?.hint) }}
257+
{{ translateIfKey(getItemHint(key, metadata[metadataKey].items[key])) }}
224258
</v-list-item-subtitle>
225259
</v-list-item>
226260
</v-col>

dashboard/src/i18n/locales/en-US/features/config-metadata.json

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1084,8 +1084,13 @@
10841084
"description": "API Key"
10851085
},
10861086
"embedding_api_base": {
1087-
"description": "API Base URL",
1088-
"hint": "OpenAI Embedding automatically appends /v1 at request time. For Gemini Embedding, use https://generativelanguage.googleapis.com and do not add /v1beta manually."
1087+
"description": "API Base URL"
1088+
},
1089+
"openai_embedding": {
1090+
"hint": "OpenAI Embedding automatically appends /v1 at request time."
1091+
},
1092+
"gemini_embedding": {
1093+
"hint": "Gemini Embedding does not require manually adding /v1beta."
10891094
},
10901095
"volcengine_cluster": {
10911096
"description": "Volcengine cluster",

dashboard/src/i18n/locales/zh-CN/features/config-metadata.json

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1087,8 +1087,13 @@
10871087
"description": "API Key"
10881088
},
10891089
"embedding_api_base": {
1090-
"description": "API Base URL",
1091-
"hint": "OpenAI Embedding 会在请求时自动补上 /v1。Gemini Embedding 建议填写 https://generativelanguage.googleapis.com,无需手动添加 /v1beta。"
1090+
"description": "API Base URL"
1091+
},
1092+
"openai_embedding": {
1093+
"hint": "OpenAI Embedding 会在请求时自动补上 /v1。"
1094+
},
1095+
"gemini_embedding": {
1096+
"hint": "Gemini Embedding 无需手动添加 /v1beta。"
10921097
},
10931098
"volcengine_cluster": {
10941099
"description": "火山引擎集群",

0 commit comments

Comments
 (0)