mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-02-02 16:45:08 +08:00
Fix: Hunyuan cannot work properly (#12843)
### What problem does this PR solve? Hunyuan cannot work properly ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue)
This commit is contained in:
@ -146,10 +146,6 @@ async def add_llm():
|
|||||||
# Assemble ark_api_key endpoint_id into api_key
|
# Assemble ark_api_key endpoint_id into api_key
|
||||||
api_key = apikey_json(["ark_api_key", "endpoint_id"])
|
api_key = apikey_json(["ark_api_key", "endpoint_id"])
|
||||||
|
|
||||||
elif factory == "Tencent Hunyuan":
|
|
||||||
req["api_key"] = apikey_json(["hunyuan_sid", "hunyuan_sk"])
|
|
||||||
return await set_api_key()
|
|
||||||
|
|
||||||
elif factory == "Tencent Cloud":
|
elif factory == "Tencent Cloud":
|
||||||
req["api_key"] = apikey_json(["tencent_cloud_sid", "tencent_cloud_sk"])
|
req["api_key"] = apikey_json(["tencent_cloud_sid", "tencent_cloud_sk"])
|
||||||
return await set_api_key()
|
return await set_api_key()
|
||||||
|
|||||||
@ -57,6 +57,7 @@ class SupportedLiteLLMProvider(StrEnum):
|
|||||||
OpenAI = "OpenAI"
|
OpenAI = "OpenAI"
|
||||||
Azure_OpenAI = "Azure-OpenAI"
|
Azure_OpenAI = "Azure-OpenAI"
|
||||||
n1n = "n1n"
|
n1n = "n1n"
|
||||||
|
HunYuan = "Tencent Hunyuan"
|
||||||
|
|
||||||
|
|
||||||
FACTORY_DEFAULT_BASE_URL = {
|
FACTORY_DEFAULT_BASE_URL = {
|
||||||
@ -83,6 +84,7 @@ FACTORY_DEFAULT_BASE_URL = {
|
|||||||
SupportedLiteLLMProvider.DeerAPI: "https://api.deerapi.com/v1",
|
SupportedLiteLLMProvider.DeerAPI: "https://api.deerapi.com/v1",
|
||||||
SupportedLiteLLMProvider.OpenAI: "https://api.openai.com/v1",
|
SupportedLiteLLMProvider.OpenAI: "https://api.openai.com/v1",
|
||||||
SupportedLiteLLMProvider.n1n: "https://api.n1n.ai/v1",
|
SupportedLiteLLMProvider.n1n: "https://api.n1n.ai/v1",
|
||||||
|
SupportedLiteLLMProvider.HunYuan: "https://api.hunyuan.cloud.tencent.com/v1",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -121,6 +123,7 @@ LITELLM_PROVIDER_PREFIX = {
|
|||||||
SupportedLiteLLMProvider.OpenAI: "openai/",
|
SupportedLiteLLMProvider.OpenAI: "openai/",
|
||||||
SupportedLiteLLMProvider.Azure_OpenAI: "azure/",
|
SupportedLiteLLMProvider.Azure_OpenAI: "azure/",
|
||||||
SupportedLiteLLMProvider.n1n: "openai/",
|
SupportedLiteLLMProvider.n1n: "openai/",
|
||||||
|
SupportedLiteLLMProvider.HunYuan: "openai/",
|
||||||
}
|
}
|
||||||
|
|
||||||
ChatModel = globals().get("ChatModel", {})
|
ChatModel = globals().get("ChatModel", {})
|
||||||
|
|||||||
@ -34,8 +34,6 @@ from common.token_utils import num_tokens_from_string, total_token_count_from_re
|
|||||||
from rag.llm import FACTORY_DEFAULT_BASE_URL, LITELLM_PROVIDER_PREFIX, SupportedLiteLLMProvider
|
from rag.llm import FACTORY_DEFAULT_BASE_URL, LITELLM_PROVIDER_PREFIX, SupportedLiteLLMProvider
|
||||||
from rag.nlp import is_chinese, is_english
|
from rag.nlp import is_chinese, is_english
|
||||||
|
|
||||||
# Error message constants
|
|
||||||
|
|
||||||
from common.misc_utils import thread_pool_exec
|
from common.misc_utils import thread_pool_exec
|
||||||
class LLMErrorCode(StrEnum):
|
class LLMErrorCode(StrEnum):
|
||||||
ERROR_RATE_LIMIT = "RATE_LIMIT_EXCEEDED"
|
ERROR_RATE_LIMIT = "RATE_LIMIT_EXCEEDED"
|
||||||
@ -793,84 +791,6 @@ class ReplicateChat(Base):
|
|||||||
yield num_tokens_from_string(ans)
|
yield num_tokens_from_string(ans)
|
||||||
|
|
||||||
|
|
||||||
class HunyuanChat(Base):
|
|
||||||
_FACTORY_NAME = "Tencent Hunyuan"
|
|
||||||
|
|
||||||
def __init__(self, key, model_name, base_url=None, **kwargs):
|
|
||||||
super().__init__(key, model_name, base_url=base_url, **kwargs)
|
|
||||||
|
|
||||||
from tencentcloud.common import credential
|
|
||||||
from tencentcloud.hunyuan.v20230901 import hunyuan_client
|
|
||||||
|
|
||||||
key = json.loads(key)
|
|
||||||
sid = key.get("hunyuan_sid", "")
|
|
||||||
sk = key.get("hunyuan_sk", "")
|
|
||||||
cred = credential.Credential(sid, sk)
|
|
||||||
self.model_name = model_name
|
|
||||||
self.client = hunyuan_client.HunyuanClient(cred, "")
|
|
||||||
|
|
||||||
def _clean_conf(self, gen_conf):
|
|
||||||
_gen_conf = {}
|
|
||||||
if "temperature" in gen_conf:
|
|
||||||
_gen_conf["Temperature"] = gen_conf["temperature"]
|
|
||||||
if "top_p" in gen_conf:
|
|
||||||
_gen_conf["TopP"] = gen_conf["top_p"]
|
|
||||||
return _gen_conf
|
|
||||||
|
|
||||||
def _chat(self, history, gen_conf={}, **kwargs):
|
|
||||||
from tencentcloud.hunyuan.v20230901 import models
|
|
||||||
|
|
||||||
hist = [{k.capitalize(): v for k, v in item.items()} for item in history]
|
|
||||||
req = models.ChatCompletionsRequest()
|
|
||||||
params = {"Model": self.model_name, "Messages": hist, **gen_conf}
|
|
||||||
req.from_json_string(json.dumps(params))
|
|
||||||
response = self.client.ChatCompletions(req)
|
|
||||||
ans = response.Choices[0].Message.Content
|
|
||||||
return ans, response.Usage.TotalTokens
|
|
||||||
|
|
||||||
def chat_streamly(self, system, history, gen_conf={}, **kwargs):
|
|
||||||
from tencentcloud.common.exception.tencent_cloud_sdk_exception import (
|
|
||||||
TencentCloudSDKException,
|
|
||||||
)
|
|
||||||
from tencentcloud.hunyuan.v20230901 import models
|
|
||||||
|
|
||||||
_gen_conf = {}
|
|
||||||
_history = [{k.capitalize(): v for k, v in item.items()} for item in history]
|
|
||||||
if system and history and history[0].get("role") != "system":
|
|
||||||
_history.insert(0, {"Role": "system", "Content": system})
|
|
||||||
if "max_tokens" in gen_conf:
|
|
||||||
del gen_conf["max_tokens"]
|
|
||||||
if "temperature" in gen_conf:
|
|
||||||
_gen_conf["Temperature"] = gen_conf["temperature"]
|
|
||||||
if "top_p" in gen_conf:
|
|
||||||
_gen_conf["TopP"] = gen_conf["top_p"]
|
|
||||||
req = models.ChatCompletionsRequest()
|
|
||||||
params = {
|
|
||||||
"Model": self.model_name,
|
|
||||||
"Messages": _history,
|
|
||||||
"Stream": True,
|
|
||||||
**_gen_conf,
|
|
||||||
}
|
|
||||||
req.from_json_string(json.dumps(params))
|
|
||||||
ans = ""
|
|
||||||
total_tokens = 0
|
|
||||||
try:
|
|
||||||
response = self.client.ChatCompletions(req)
|
|
||||||
for resp in response:
|
|
||||||
resp = json.loads(resp["data"])
|
|
||||||
if not resp["Choices"] or not resp["Choices"][0]["Delta"]["Content"]:
|
|
||||||
continue
|
|
||||||
ans = resp["Choices"][0]["Delta"]["Content"]
|
|
||||||
total_tokens += 1
|
|
||||||
|
|
||||||
yield ans
|
|
||||||
|
|
||||||
except TencentCloudSDKException as e:
|
|
||||||
yield ans + "\n**ERROR**: " + str(e)
|
|
||||||
|
|
||||||
yield total_tokens
|
|
||||||
|
|
||||||
|
|
||||||
class SparkChat(Base):
|
class SparkChat(Base):
|
||||||
_FACTORY_NAME = "XunFei Spark"
|
_FACTORY_NAME = "XunFei Spark"
|
||||||
|
|
||||||
@ -1209,6 +1129,7 @@ class LiteLLMBase(ABC):
|
|||||||
"GPUStack",
|
"GPUStack",
|
||||||
"OpenAI",
|
"OpenAI",
|
||||||
"Azure-OpenAI",
|
"Azure-OpenAI",
|
||||||
|
"Tencent Hunyuan",
|
||||||
]
|
]
|
||||||
|
|
||||||
def __init__(self, key, model_name, base_url=None, **kwargs):
|
def __init__(self, key, model_name, base_url=None, **kwargs):
|
||||||
@ -1259,6 +1180,11 @@ class LiteLLMBase(ABC):
|
|||||||
return LLMErrorCode.ERROR_GENERIC
|
return LLMErrorCode.ERROR_GENERIC
|
||||||
|
|
||||||
def _clean_conf(self, gen_conf):
|
def _clean_conf(self, gen_conf):
|
||||||
|
if self.provider == SupportedLiteLLMProvider.HunYuan:
|
||||||
|
unsupported = ["presence_penalty", "frequency_penalty"]
|
||||||
|
for key in unsupported:
|
||||||
|
gen_conf.pop(key, None)
|
||||||
|
|
||||||
if "max_tokens" in gen_conf:
|
if "max_tokens" in gen_conf:
|
||||||
del gen_conf["max_tokens"]
|
del gen_conf["max_tokens"]
|
||||||
return gen_conf
|
return gen_conf
|
||||||
@ -1704,3 +1630,4 @@ class LiteLLMBase(ABC):
|
|||||||
if extra_headers:
|
if extra_headers:
|
||||||
completion_args["extra_headers"] = extra_headers
|
completion_args["extra_headers"] = extra_headers
|
||||||
return completion_args
|
return completion_args
|
||||||
|
|
||||||
|
|||||||
@ -1226,10 +1226,6 @@ Beispiel: Virtual Hosted Style`,
|
|||||||
'sa-east-1': 'Südamerika (São Paulo)',
|
'sa-east-1': 'Südamerika (São Paulo)',
|
||||||
'us-gov-east-1': 'AWS GovCloud (US-Ost)',
|
'us-gov-east-1': 'AWS GovCloud (US-Ost)',
|
||||||
'us-gov-west-1': 'AWS GovCloud (US-West)',
|
'us-gov-west-1': 'AWS GovCloud (US-West)',
|
||||||
addHunyuanSID: 'Hunyuan Secret ID',
|
|
||||||
HunyuanSIDMessage: 'Bitte geben Sie Ihre Secret ID ein',
|
|
||||||
addHunyuanSK: 'Hunyuan Secret Key',
|
|
||||||
HunyuanSKMessage: 'Bitte geben Sie Ihren Secret Key ein',
|
|
||||||
addTencentCloudSID: 'TencentCloud Secret ID',
|
addTencentCloudSID: 'TencentCloud Secret ID',
|
||||||
TencentCloudSIDMessage: 'Bitte geben Sie Ihre Secret ID ein',
|
TencentCloudSIDMessage: 'Bitte geben Sie Ihre Secret ID ein',
|
||||||
addTencentCloudSK: 'TencentCloud Secret Key',
|
addTencentCloudSK: 'TencentCloud Secret Key',
|
||||||
|
|||||||
@ -1178,10 +1178,6 @@ Example: Virtual Hosted Style`,
|
|||||||
'sa-east-1': 'South America (São Paulo)',
|
'sa-east-1': 'South America (São Paulo)',
|
||||||
'us-gov-east-1': 'AWS GovCloud (US-East)',
|
'us-gov-east-1': 'AWS GovCloud (US-East)',
|
||||||
'us-gov-west-1': 'AWS GovCloud (US-West)',
|
'us-gov-west-1': 'AWS GovCloud (US-West)',
|
||||||
addHunyuanSID: 'Hunyuan Secret ID',
|
|
||||||
HunyuanSIDMessage: 'Please input your Secret ID',
|
|
||||||
addHunyuanSK: 'Hunyuan Secret Key',
|
|
||||||
HunyuanSKMessage: 'Please input your Secret Key',
|
|
||||||
addTencentCloudSID: 'TencentCloud Secret ID',
|
addTencentCloudSID: 'TencentCloud Secret ID',
|
||||||
TencentCloudSIDMessage: 'Please input your Secret ID',
|
TencentCloudSIDMessage: 'Please input your Secret ID',
|
||||||
addTencentCloudSK: 'TencentCloud Secret Key',
|
addTencentCloudSK: 'TencentCloud Secret Key',
|
||||||
|
|||||||
@ -162,13 +162,16 @@ export default {
|
|||||||
knowledgeConfiguration: {
|
knowledgeConfiguration: {
|
||||||
paddleocrOptions: 'Opciones de PaddleOCR',
|
paddleocrOptions: 'Opciones de PaddleOCR',
|
||||||
paddleocrApiUrl: 'URL de API de PaddleOCR',
|
paddleocrApiUrl: 'URL de API de PaddleOCR',
|
||||||
paddleocrApiUrlTip: 'La URL del endpoint de la API para el servicio PaddleOCR',
|
paddleocrApiUrlTip:
|
||||||
|
'La URL del endpoint de la API para el servicio PaddleOCR',
|
||||||
paddleocrApiUrlPlaceholder: 'ej: https://servidor-paddleocr.com/api',
|
paddleocrApiUrlPlaceholder: 'ej: https://servidor-paddleocr.com/api',
|
||||||
paddleocrAccessToken: 'Token de acceso de AI Studio',
|
paddleocrAccessToken: 'Token de acceso de AI Studio',
|
||||||
paddleocrAccessTokenTip: 'Token de acceso para la API de PaddleOCR (opcional)',
|
paddleocrAccessTokenTip:
|
||||||
|
'Token de acceso para la API de PaddleOCR (opcional)',
|
||||||
paddleocrAccessTokenPlaceholder: 'Su token de AI Studio (opcional)',
|
paddleocrAccessTokenPlaceholder: 'Su token de AI Studio (opcional)',
|
||||||
paddleocrAlgorithm: 'Algoritmo de PaddleOCR',
|
paddleocrAlgorithm: 'Algoritmo de PaddleOCR',
|
||||||
paddleocrAlgorithmTip: 'Algoritmo a utilizar para el análisis de PaddleOCR',
|
paddleocrAlgorithmTip:
|
||||||
|
'Algoritmo a utilizar para el análisis de PaddleOCR',
|
||||||
paddleocrSelectAlgorithm: 'Seleccionar algoritmo',
|
paddleocrSelectAlgorithm: 'Seleccionar algoritmo',
|
||||||
paddleocrModelNamePlaceholder: 'ej: paddleocr-desde-env-1',
|
paddleocrModelNamePlaceholder: 'ej: paddleocr-desde-env-1',
|
||||||
},
|
},
|
||||||
@ -395,14 +398,15 @@ export default {
|
|||||||
baseUrlNameMessage: '¡Por favor ingresa tu URL base!',
|
baseUrlNameMessage: '¡Por favor ingresa tu URL base!',
|
||||||
paddleocr: {
|
paddleocr: {
|
||||||
apiUrl: 'URL de la API de PaddleOCR',
|
apiUrl: 'URL de la API de PaddleOCR',
|
||||||
apiUrlPlaceholder: 'Por ejemplo: https://paddleocr-server.com/layout-parsing',
|
apiUrlPlaceholder:
|
||||||
|
'Por ejemplo: https://paddleocr-server.com/layout-parsing',
|
||||||
accessToken: 'Token de acceso de AI Studio',
|
accessToken: 'Token de acceso de AI Studio',
|
||||||
accessTokenPlaceholder: 'Su token de AI Studio (opcional)',
|
accessTokenPlaceholder: 'Su token de AI Studio (opcional)',
|
||||||
algorithm: 'Algoritmo de PaddleOCR',
|
algorithm: 'Algoritmo de PaddleOCR',
|
||||||
selectAlgorithm: 'Seleccionar algoritmo',
|
selectAlgorithm: 'Seleccionar algoritmo',
|
||||||
modelNamePlaceholder: 'Por ejemplo: paddleocr-from-env-1',
|
modelNamePlaceholder: 'Por ejemplo: paddleocr-from-env-1',
|
||||||
modelNameRequired: 'El nombre del modelo es obligatorio',
|
modelNameRequired: 'El nombre del modelo es obligatorio',
|
||||||
apiUrlRequired: 'La URL de la API de PaddleOCR es obligatoria'
|
apiUrlRequired: 'La URL de la API de PaddleOCR es obligatoria',
|
||||||
},
|
},
|
||||||
vision: '¿Soporta visión?',
|
vision: '¿Soporta visión?',
|
||||||
ollamaLink: 'Cómo integrar {{name}}',
|
ollamaLink: 'Cómo integrar {{name}}',
|
||||||
@ -427,10 +431,6 @@ export default {
|
|||||||
'eu-central-1': 'Europa (Frankfurt)',
|
'eu-central-1': 'Europa (Frankfurt)',
|
||||||
'us-gov-west-1': 'AWS GovCloud (EE. UU. Oeste)',
|
'us-gov-west-1': 'AWS GovCloud (EE. UU. Oeste)',
|
||||||
'ap-southeast-2': 'Asia Pacífico (Sídney)',
|
'ap-southeast-2': 'Asia Pacífico (Sídney)',
|
||||||
addHunyuanSID: 'ID Secreto de Hunyuan',
|
|
||||||
HunyuanSIDMessage: '¡Por favor ingresa tu ID Secreto!',
|
|
||||||
addHunyuanSK: 'Clave Secreta de Hunyuan',
|
|
||||||
HunyuanSKMessage: '¡Por favor ingresa tu Clave Secreta!',
|
|
||||||
addTencentCloudSID: 'ID Secreto de TencentCloud',
|
addTencentCloudSID: 'ID Secreto de TencentCloud',
|
||||||
TencentCloudSIDMessage: '¡Por favor ingresa tu ID Secreto!',
|
TencentCloudSIDMessage: '¡Por favor ingresa tu ID Secreto!',
|
||||||
addTencentCloudSK: 'Clave Secreta de TencentCloud',
|
addTencentCloudSK: 'Clave Secreta de TencentCloud',
|
||||||
|
|||||||
@ -295,8 +295,10 @@ export default {
|
|||||||
'Le document en cours d’analyse ne peut pas être supprimé',
|
'Le document en cours d’analyse ne peut pas être supprimé',
|
||||||
paddleocrOptions: 'Options PaddleOCR',
|
paddleocrOptions: 'Options PaddleOCR',
|
||||||
paddleocrApiUrl: 'URL de l’API PaddleOCR',
|
paddleocrApiUrl: 'URL de l’API PaddleOCR',
|
||||||
paddleocrApiUrlTip: 'URL du point de terminaison de l’API du service PaddleOCR',
|
paddleocrApiUrlTip:
|
||||||
paddleocrApiUrlPlaceholder: 'Par exemple : https://paddleocr-server.com/layout-parsing',
|
'URL du point de terminaison de l’API du service PaddleOCR',
|
||||||
|
paddleocrApiUrlPlaceholder:
|
||||||
|
'Par exemple : https://paddleocr-server.com/layout-parsing',
|
||||||
paddleocrAccessToken: 'Jeton d’accès AI Studio',
|
paddleocrAccessToken: 'Jeton d’accès AI Studio',
|
||||||
paddleocrAccessTokenTip: 'Jeton d’accès à l’API PaddleOCR (optionnel)',
|
paddleocrAccessTokenTip: 'Jeton d’accès à l’API PaddleOCR (optionnel)',
|
||||||
paddleocrAccessTokenPlaceholder: 'Votre jeton AI Studio (optionnel)',
|
paddleocrAccessTokenPlaceholder: 'Votre jeton AI Studio (optionnel)',
|
||||||
@ -579,14 +581,15 @@ export default {
|
|||||||
baseUrlNameMessage: 'Veuillez saisir votre URL de base !',
|
baseUrlNameMessage: 'Veuillez saisir votre URL de base !',
|
||||||
paddleocr: {
|
paddleocr: {
|
||||||
apiUrl: 'URL de l’API PaddleOCR',
|
apiUrl: 'URL de l’API PaddleOCR',
|
||||||
apiUrlPlaceholder: 'Par exemple : https://paddleocr-server.com/layout-parsing',
|
apiUrlPlaceholder:
|
||||||
|
'Par exemple : https://paddleocr-server.com/layout-parsing',
|
||||||
accessToken: 'Jeton d’accès AI Studio',
|
accessToken: 'Jeton d’accès AI Studio',
|
||||||
accessTokenPlaceholder: 'Votre jeton AI Studio (optionnel)',
|
accessTokenPlaceholder: 'Votre jeton AI Studio (optionnel)',
|
||||||
algorithm: 'Algorithme PaddleOCR',
|
algorithm: 'Algorithme PaddleOCR',
|
||||||
selectAlgorithm: 'Sélectionner un algorithme',
|
selectAlgorithm: 'Sélectionner un algorithme',
|
||||||
modelNamePlaceholder: 'Par exemple : paddleocr-from-env-1',
|
modelNamePlaceholder: 'Par exemple : paddleocr-from-env-1',
|
||||||
modelNameRequired: 'Le nom du modèle est obligatoire',
|
modelNameRequired: 'Le nom du modèle est obligatoire',
|
||||||
apiUrlRequired: 'L’URL de l’API PaddleOCR est obligatoire'
|
apiUrlRequired: 'L’URL de l’API PaddleOCR est obligatoire',
|
||||||
},
|
},
|
||||||
vision: 'Supporte-t-il la vision ?',
|
vision: 'Supporte-t-il la vision ?',
|
||||||
ollamaLink: 'Comment intégrer {{name}}',
|
ollamaLink: 'Comment intégrer {{name}}',
|
||||||
@ -611,10 +614,6 @@ export default {
|
|||||||
'eu-central-1': 'Europe (Francfort)',
|
'eu-central-1': 'Europe (Francfort)',
|
||||||
'us-gov-west-1': 'AWS GovCloud (US-Ouest)',
|
'us-gov-west-1': 'AWS GovCloud (US-Ouest)',
|
||||||
'ap-southeast-2': 'Asie Pacifique (Sydney)',
|
'ap-southeast-2': 'Asie Pacifique (Sydney)',
|
||||||
addHunyuanSID: 'ID secret Hunyuan',
|
|
||||||
HunyuanSIDMessage: 'Veuillez saisir votre ID secret',
|
|
||||||
addHunyuanSK: 'Clé secrète Hunyuan',
|
|
||||||
HunyuanSKMessage: 'Veuillez saisir votre clé secrète',
|
|
||||||
addTencentCloudSID: 'ID secret TencentCloud',
|
addTencentCloudSID: 'ID secret TencentCloud',
|
||||||
TencentCloudSIDMessage: 'Veuillez saisir votre ID secret',
|
TencentCloudSIDMessage: 'Veuillez saisir votre ID secret',
|
||||||
addTencentCloudSK: 'Clé secrète TencentCloud',
|
addTencentCloudSK: 'Clé secrète TencentCloud',
|
||||||
|
|||||||
@ -319,12 +319,14 @@ export default {
|
|||||||
paddleocrOptions: 'Opsi PaddleOCR',
|
paddleocrOptions: 'Opsi PaddleOCR',
|
||||||
paddleocrApiUrl: 'URL API PaddleOCR',
|
paddleocrApiUrl: 'URL API PaddleOCR',
|
||||||
paddleocrApiUrlTip: 'URL endpoint API layanan PaddleOCR',
|
paddleocrApiUrlTip: 'URL endpoint API layanan PaddleOCR',
|
||||||
paddleocrApiUrlPlaceholder: 'Contoh: https://paddleocr-server.com/layout-parsing',
|
paddleocrApiUrlPlaceholder:
|
||||||
|
'Contoh: https://paddleocr-server.com/layout-parsing',
|
||||||
paddleocrAccessToken: 'Token Akses AI Studio',
|
paddleocrAccessToken: 'Token Akses AI Studio',
|
||||||
paddleocrAccessTokenTip: 'Token akses untuk API PaddleOCR (opsional)',
|
paddleocrAccessTokenTip: 'Token akses untuk API PaddleOCR (opsional)',
|
||||||
paddleocrAccessTokenPlaceholder: 'Token AI Studio Anda (opsional)',
|
paddleocrAccessTokenPlaceholder: 'Token AI Studio Anda (opsional)',
|
||||||
paddleocrAlgorithm: 'Algoritma PaddleOCR',
|
paddleocrAlgorithm: 'Algoritma PaddleOCR',
|
||||||
paddleocrAlgorithmTip: 'Algoritma yang digunakan untuk pemrosesan PaddleOCR',
|
paddleocrAlgorithmTip:
|
||||||
|
'Algoritma yang digunakan untuk pemrosesan PaddleOCR',
|
||||||
paddleocrSelectAlgorithm: 'Pilih algoritma',
|
paddleocrSelectAlgorithm: 'Pilih algoritma',
|
||||||
paddleocrModelNamePlaceholder: 'Contoh: paddleocr-lingkungan-1',
|
paddleocrModelNamePlaceholder: 'Contoh: paddleocr-lingkungan-1',
|
||||||
},
|
},
|
||||||
@ -566,14 +568,15 @@ export default {
|
|||||||
baseUrlNameMessage: 'Silakan masukkan base url Anda!',
|
baseUrlNameMessage: 'Silakan masukkan base url Anda!',
|
||||||
paddleocr: {
|
paddleocr: {
|
||||||
apiUrl: 'URL API PaddleOCR',
|
apiUrl: 'URL API PaddleOCR',
|
||||||
apiUrlPlaceholder: 'Contoh: https://paddleocr-server.com/layout-parsing',
|
apiUrlPlaceholder:
|
||||||
|
'Contoh: https://paddleocr-server.com/layout-parsing',
|
||||||
accessToken: 'Token Akses AI Studio',
|
accessToken: 'Token Akses AI Studio',
|
||||||
accessTokenPlaceholder: 'Token AI Studio Anda (opsional)',
|
accessTokenPlaceholder: 'Token AI Studio Anda (opsional)',
|
||||||
algorithm: 'Algoritma PaddleOCR',
|
algorithm: 'Algoritma PaddleOCR',
|
||||||
selectAlgorithm: 'Pilih algoritma',
|
selectAlgorithm: 'Pilih algoritma',
|
||||||
modelNamePlaceholder: 'Contoh: paddleocr-from-env-1',
|
modelNamePlaceholder: 'Contoh: paddleocr-from-env-1',
|
||||||
modelNameRequired: 'Nama model wajib diisi',
|
modelNameRequired: 'Nama model wajib diisi',
|
||||||
apiUrlRequired: 'URL API PaddleOCR wajib diisi'
|
apiUrlRequired: 'URL API PaddleOCR wajib diisi',
|
||||||
},
|
},
|
||||||
vision: 'Apakah mendukung Vision?',
|
vision: 'Apakah mendukung Vision?',
|
||||||
ollamaLink: 'Cara mengintegrasikan {{name}}',
|
ollamaLink: 'Cara mengintegrasikan {{name}}',
|
||||||
@ -626,10 +629,6 @@ export default {
|
|||||||
'sa-east-1': 'South America (São Paulo)',
|
'sa-east-1': 'South America (São Paulo)',
|
||||||
'us-gov-east-1': 'AWS GovCloud (US-East)',
|
'us-gov-east-1': 'AWS GovCloud (US-East)',
|
||||||
'us-gov-west-1': 'AWS GovCloud (US-West)',
|
'us-gov-west-1': 'AWS GovCloud (US-West)',
|
||||||
addHunyuanSID: 'Hunyuan Secret ID',
|
|
||||||
HunyuanSIDMessage: 'Silakan masukkan Secret ID Anda',
|
|
||||||
addHunyuanSK: 'Hunyuan Secret Key',
|
|
||||||
HunyuanSKMessage: 'Silakan masukkan Secret Key Anda',
|
|
||||||
addTencentCloudSID: 'TencentCloud Secret ID',
|
addTencentCloudSID: 'TencentCloud Secret ID',
|
||||||
TencentCloudSIDMessage: 'Silakan masukkan Secret ID Anda',
|
TencentCloudSIDMessage: 'Silakan masukkan Secret ID Anda',
|
||||||
addTencentCloudSK: 'TencentCloud Secret Key',
|
addTencentCloudSK: 'TencentCloud Secret Key',
|
||||||
|
|||||||
@ -616,7 +616,7 @@ export default {
|
|||||||
selectAlgorithm: 'アルゴリズムを選択',
|
selectAlgorithm: 'アルゴリズムを選択',
|
||||||
modelNamePlaceholder: '例:paddleocr-from-env-1',
|
modelNamePlaceholder: '例:paddleocr-from-env-1',
|
||||||
modelNameRequired: 'モデル名は必須です',
|
modelNameRequired: 'モデル名は必須です',
|
||||||
apiUrlRequired: 'PaddleOCR API URL は必須です'
|
apiUrlRequired: 'PaddleOCR API URL は必須です',
|
||||||
},
|
},
|
||||||
vision: 'ビジョンをサポートしていますか?',
|
vision: 'ビジョンをサポートしていますか?',
|
||||||
ollamaLink: '{{name}}を統合する方法',
|
ollamaLink: '{{name}}を統合する方法',
|
||||||
@ -641,10 +641,6 @@ export default {
|
|||||||
'eu-central-1': 'ヨーロッパ(フランクフルト)',
|
'eu-central-1': 'ヨーロッパ(フランクフルト)',
|
||||||
'us-gov-west-1': 'AWS GovCloud(米国西部)',
|
'us-gov-west-1': 'AWS GovCloud(米国西部)',
|
||||||
'ap-southeast-2': 'アジア太平洋(シドニー)',
|
'ap-southeast-2': 'アジア太平洋(シドニー)',
|
||||||
addHunyuanSID: 'HunyuanシークレットID',
|
|
||||||
HunyuanSIDMessage: 'シークレットIDを入力してください',
|
|
||||||
addHunyuanSK: 'Hunyuanシークレットキー',
|
|
||||||
HunyuanSKMessage: 'シークレットキーを入力してください',
|
|
||||||
addTencentCloudSID: 'TencentCloudシークレットID',
|
addTencentCloudSID: 'TencentCloudシークレットID',
|
||||||
TencentCloudSIDMessage: 'シークレットIDを入力してください',
|
TencentCloudSIDMessage: 'シークレットIDを入力してください',
|
||||||
addTencentCloudSK: 'TencentCloudシークレットキー',
|
addTencentCloudSK: 'TencentCloudシークレットキー',
|
||||||
|
|||||||
@ -315,10 +315,12 @@ export default {
|
|||||||
paddleocrApiUrlTip: 'A URL do endpoint da API para o serviço PaddleOCR',
|
paddleocrApiUrlTip: 'A URL do endpoint da API para o serviço PaddleOCR',
|
||||||
paddleocrApiUrlPlaceholder: 'ex: https://servidor-paddleocr.com/api',
|
paddleocrApiUrlPlaceholder: 'ex: https://servidor-paddleocr.com/api',
|
||||||
paddleocrAccessToken: 'Token de Acesso do AI Studio',
|
paddleocrAccessToken: 'Token de Acesso do AI Studio',
|
||||||
paddleocrAccessTokenTip: 'Token de acesso para a API do PaddleOCR (opcional)',
|
paddleocrAccessTokenTip:
|
||||||
|
'Token de acesso para a API do PaddleOCR (opcional)',
|
||||||
paddleocrAccessTokenPlaceholder: 'Seu token do AI Studio (opcional)',
|
paddleocrAccessTokenPlaceholder: 'Seu token do AI Studio (opcional)',
|
||||||
paddleocrAlgorithm: 'Algoritmo do PaddleOCR',
|
paddleocrAlgorithm: 'Algoritmo do PaddleOCR',
|
||||||
paddleocrAlgorithmTip: 'Algoritmo a ser usado para a análise do PaddleOCR',
|
paddleocrAlgorithmTip:
|
||||||
|
'Algoritmo a ser usado para a análise do PaddleOCR',
|
||||||
paddleocrSelectAlgorithm: 'Selecionar algoritmo',
|
paddleocrSelectAlgorithm: 'Selecionar algoritmo',
|
||||||
paddleocrModelNamePlaceholder: 'ex: paddleocr-do-ambiente-1',
|
paddleocrModelNamePlaceholder: 'ex: paddleocr-do-ambiente-1',
|
||||||
},
|
},
|
||||||
@ -559,14 +561,15 @@ export default {
|
|||||||
baseUrlNameMessage: 'Por favor, insira sua URL base!',
|
baseUrlNameMessage: 'Por favor, insira sua URL base!',
|
||||||
paddleocr: {
|
paddleocr: {
|
||||||
apiUrl: 'URL da API do PaddleOCR',
|
apiUrl: 'URL da API do PaddleOCR',
|
||||||
apiUrlPlaceholder: 'Por exemplo: https://paddleocr-server.com/layout-parsing',
|
apiUrlPlaceholder:
|
||||||
|
'Por exemplo: https://paddleocr-server.com/layout-parsing',
|
||||||
accessToken: 'Token de acesso do AI Studio',
|
accessToken: 'Token de acesso do AI Studio',
|
||||||
accessTokenPlaceholder: 'Seu token do AI Studio (opcional)',
|
accessTokenPlaceholder: 'Seu token do AI Studio (opcional)',
|
||||||
algorithm: 'Algoritmo do PaddleOCR',
|
algorithm: 'Algoritmo do PaddleOCR',
|
||||||
selectAlgorithm: 'Selecionar algoritmo',
|
selectAlgorithm: 'Selecionar algoritmo',
|
||||||
modelNamePlaceholder: 'Por exemplo: paddleocr-from-env-1',
|
modelNamePlaceholder: 'Por exemplo: paddleocr-from-env-1',
|
||||||
modelNameRequired: 'O nome do modelo é obrigatório',
|
modelNameRequired: 'O nome do modelo é obrigatório',
|
||||||
apiUrlRequired: 'A URL da API do PaddleOCR é obrigatória'
|
apiUrlRequired: 'A URL da API do PaddleOCR é obrigatória',
|
||||||
},
|
},
|
||||||
vision: 'Suporta visão?',
|
vision: 'Suporta visão?',
|
||||||
ollamaLink: 'Como integrar {{name}}',
|
ollamaLink: 'Como integrar {{name}}',
|
||||||
@ -591,10 +594,6 @@ export default {
|
|||||||
'eu-central-1': 'Europa (Frankfurt)',
|
'eu-central-1': 'Europa (Frankfurt)',
|
||||||
'us-gov-west-1': 'AWS GovCloud (EUA-Oeste)',
|
'us-gov-west-1': 'AWS GovCloud (EUA-Oeste)',
|
||||||
'ap-southeast-2': 'Ásia-Pacífico (Sydney)',
|
'ap-southeast-2': 'Ásia-Pacífico (Sydney)',
|
||||||
addHunyuanSID: 'Hunyuan Secret ID',
|
|
||||||
HunyuanSIDMessage: 'Por favor, insira seu Secret ID',
|
|
||||||
addHunyuanSK: 'Hunyuan Secret Key',
|
|
||||||
HunyuanSKMessage: 'Por favor, insira sua Secret Key',
|
|
||||||
addTencentCloudSID: 'TencentCloud Secret ID',
|
addTencentCloudSID: 'TencentCloud Secret ID',
|
||||||
TencentCloudSIDMessage: 'Por favor, insira seu Secret ID',
|
TencentCloudSIDMessage: 'Por favor, insira seu Secret ID',
|
||||||
addTencentCloudSK: 'TencentCloud Secret Key',
|
addTencentCloudSK: 'TencentCloud Secret Key',
|
||||||
|
|||||||
@ -513,7 +513,8 @@ export default {
|
|||||||
paddleocrOptions: 'Параметры PaddleOCR',
|
paddleocrOptions: 'Параметры PaddleOCR',
|
||||||
paddleocrApiUrl: 'URL API PaddleOCR',
|
paddleocrApiUrl: 'URL API PaddleOCR',
|
||||||
paddleocrApiUrlTip: 'URL конечной точки API сервиса PaddleOCR',
|
paddleocrApiUrlTip: 'URL конечной точки API сервиса PaddleOCR',
|
||||||
paddleocrApiUrlPlaceholder: 'Например: https://paddleocr-server.com/layout-parsing',
|
paddleocrApiUrlPlaceholder:
|
||||||
|
'Например: https://paddleocr-server.com/layout-parsing',
|
||||||
paddleocrAccessToken: 'Токен доступа AI Studio',
|
paddleocrAccessToken: 'Токен доступа AI Studio',
|
||||||
paddleocrAccessTokenTip: 'Токен доступа к API PaddleOCR (необязательно)',
|
paddleocrAccessTokenTip: 'Токен доступа к API PaddleOCR (необязательно)',
|
||||||
paddleocrAccessTokenPlaceholder: 'Ваш токен AI Studio (необязательно)',
|
paddleocrAccessTokenPlaceholder: 'Ваш токен AI Studio (необязательно)',
|
||||||
@ -979,10 +980,6 @@ export default {
|
|||||||
'sa-east-1': 'Южная Америка (Сан-Паулу)',
|
'sa-east-1': 'Южная Америка (Сан-Паулу)',
|
||||||
'us-gov-east-1': 'AWS GovCloud (US-East)',
|
'us-gov-east-1': 'AWS GovCloud (US-East)',
|
||||||
'us-gov-west-1': 'AWS GovCloud (US-West)',
|
'us-gov-west-1': 'AWS GovCloud (US-West)',
|
||||||
addHunyuanSID: 'Hunyuan Secret ID',
|
|
||||||
HunyuanSIDMessage: 'Пожалуйста, введите ваш Secret ID',
|
|
||||||
addHunyuanSK: 'Hunyuan Secret Key',
|
|
||||||
HunyuanSKMessage: 'Пожалуйста, введите ваш Secret Key',
|
|
||||||
addTencentCloudSID: 'TencentCloud Secret ID',
|
addTencentCloudSID: 'TencentCloud Secret ID',
|
||||||
TencentCloudSIDMessage: 'Пожалуйста, введите ваш Secret ID',
|
TencentCloudSIDMessage: 'Пожалуйста, введите ваш Secret ID',
|
||||||
addTencentCloudSK: 'TencentCloud Secret Key',
|
addTencentCloudSK: 'TencentCloud Secret Key',
|
||||||
@ -1047,14 +1044,15 @@ export default {
|
|||||||
mcp: 'MCP',
|
mcp: 'MCP',
|
||||||
paddleocr: {
|
paddleocr: {
|
||||||
apiUrl: 'URL API PaddleOCR',
|
apiUrl: 'URL API PaddleOCR',
|
||||||
apiUrlPlaceholder: 'Например: https://paddleocr-server.com/layout-parsing',
|
apiUrlPlaceholder:
|
||||||
|
'Например: https://paddleocr-server.com/layout-parsing',
|
||||||
accessToken: 'Токен доступа AI Studio',
|
accessToken: 'Токен доступа AI Studio',
|
||||||
accessTokenPlaceholder: 'Ваш токен AI Studio (необязательно)',
|
accessTokenPlaceholder: 'Ваш токен AI Studio (необязательно)',
|
||||||
algorithm: 'Алгоритм PaddleOCR',
|
algorithm: 'Алгоритм PaddleOCR',
|
||||||
selectAlgorithm: 'Выбрать алгоритм',
|
selectAlgorithm: 'Выбрать алгоритм',
|
||||||
modelNamePlaceholder: 'Например: paddleocr-from-env-1',
|
modelNamePlaceholder: 'Например: paddleocr-from-env-1',
|
||||||
modelNameRequired: 'Имя модели является обязательным',
|
modelNameRequired: 'Имя модели является обязательным',
|
||||||
apiUrlRequired: 'URL API PaddleOCR является обязательным'
|
apiUrlRequired: 'URL API PaddleOCR является обязательным',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
message: {
|
message: {
|
||||||
|
|||||||
@ -357,7 +357,8 @@ export default {
|
|||||||
paddleocrOptions: 'Tùy chọn PaddleOCR',
|
paddleocrOptions: 'Tùy chọn PaddleOCR',
|
||||||
paddleocrApiUrl: 'URL API PaddleOCR',
|
paddleocrApiUrl: 'URL API PaddleOCR',
|
||||||
paddleocrApiUrlTip: 'URL điểm cuối API của dịch vụ PaddleOCR',
|
paddleocrApiUrlTip: 'URL điểm cuối API của dịch vụ PaddleOCR',
|
||||||
paddleocrApiUrlPlaceholder: 'Ví dụ: https://paddleocr-server.com/layout-parsing',
|
paddleocrApiUrlPlaceholder:
|
||||||
|
'Ví dụ: https://paddleocr-server.com/layout-parsing',
|
||||||
paddleocrAccessToken: 'Token truy cập AI Studio',
|
paddleocrAccessToken: 'Token truy cập AI Studio',
|
||||||
paddleocrAccessTokenTip: 'Token truy cập cho API PaddleOCR (tùy chọn)',
|
paddleocrAccessTokenTip: 'Token truy cập cho API PaddleOCR (tùy chọn)',
|
||||||
paddleocrAccessTokenPlaceholder: 'Token AI Studio của bạn (tùy chọn)',
|
paddleocrAccessTokenPlaceholder: 'Token AI Studio của bạn (tùy chọn)',
|
||||||
@ -615,7 +616,7 @@ export default {
|
|||||||
selectAlgorithm: 'Chọn thuật toán',
|
selectAlgorithm: 'Chọn thuật toán',
|
||||||
modelNamePlaceholder: 'Ví dụ: paddleocr-from-env-1',
|
modelNamePlaceholder: 'Ví dụ: paddleocr-from-env-1',
|
||||||
modelNameRequired: 'Tên mô hình là bắt buộc',
|
modelNameRequired: 'Tên mô hình là bắt buộc',
|
||||||
apiUrlRequired: 'URL API PaddleOCR là bắt buộc'
|
apiUrlRequired: 'URL API PaddleOCR là bắt buộc',
|
||||||
},
|
},
|
||||||
vision: 'Có hỗ trợ Tầm nhìn không?',
|
vision: 'Có hỗ trợ Tầm nhìn không?',
|
||||||
ollamaLink: 'Cách tích hợp {{name}}',
|
ollamaLink: 'Cách tích hợp {{name}}',
|
||||||
@ -667,10 +668,6 @@ export default {
|
|||||||
'sa-east-1': 'South America (São Paulo)',
|
'sa-east-1': 'South America (São Paulo)',
|
||||||
'us-gov-east-1': 'AWS GovCloud (US-East)',
|
'us-gov-east-1': 'AWS GovCloud (US-East)',
|
||||||
'us-gov-west-1': 'AWS GovCloud (US-West)',
|
'us-gov-west-1': 'AWS GovCloud (US-West)',
|
||||||
addHunyuanSID: 'Hunyuan Secret ID',
|
|
||||||
HunyuanSIDMessage: 'Vui lòng nhập ID bí mật của bạn',
|
|
||||||
addHunyuanSK: 'Hunyuan Secret Key',
|
|
||||||
HunyuanSKMessage: 'Vui lòng nhập Khóa bí mật của bạn',
|
|
||||||
addTencentCloudSID: 'TencentCloud Secret ID',
|
addTencentCloudSID: 'TencentCloud Secret ID',
|
||||||
TencentCloudSIDMessage: 'Vui lòng nhập ID bí mật của bạn',
|
TencentCloudSIDMessage: 'Vui lòng nhập ID bí mật của bạn',
|
||||||
addTencentCloudSK: 'TencentCloud Secret Key',
|
addTencentCloudSK: 'TencentCloud Secret Key',
|
||||||
|
|||||||
@ -692,10 +692,6 @@ export default {
|
|||||||
'eu-central-1': '歐洲 (法蘭克福)',
|
'eu-central-1': '歐洲 (法蘭克福)',
|
||||||
'us-gov-west-1': 'AWS GovCloud (US-West)',
|
'us-gov-west-1': 'AWS GovCloud (US-West)',
|
||||||
'ap-southeast-2': '亞太地區 (雪梨)',
|
'ap-southeast-2': '亞太地區 (雪梨)',
|
||||||
addHunyuanSID: '混元 Secret ID',
|
|
||||||
HunyuanSIDMessage: '請輸入 Secret ID',
|
|
||||||
addHunyuanSK: '混元 Secret Key',
|
|
||||||
HunyuanSKMessage: '請輸入 Secret Key',
|
|
||||||
addTencentCloudSID: '騰訊雲 Secret ID',
|
addTencentCloudSID: '騰訊雲 Secret ID',
|
||||||
TencentCloudSIDMessage: '請輸入 Secret ID',
|
TencentCloudSIDMessage: '請輸入 Secret ID',
|
||||||
addTencentCloudSK: '騰訊雲 Secret Key',
|
addTencentCloudSK: '騰訊雲 Secret Key',
|
||||||
|
|||||||
@ -1051,10 +1051,6 @@ General:实体和关系提取提示来自 GitHub - microsoft/graphrag:基于
|
|||||||
'eu-central-1': '欧洲 (法兰克福)',
|
'eu-central-1': '欧洲 (法兰克福)',
|
||||||
'us-gov-west-1': 'AWS GovCloud (US-West)',
|
'us-gov-west-1': 'AWS GovCloud (US-West)',
|
||||||
'ap-southeast-2': '亚太地区 (悉尼)',
|
'ap-southeast-2': '亚太地区 (悉尼)',
|
||||||
addHunyuanSID: '混元 Secret ID',
|
|
||||||
HunyuanSIDMessage: '请输入 Secret ID',
|
|
||||||
addHunyuanSK: '混元 Secret Key',
|
|
||||||
HunyuanSKMessage: '请输入 Secret Key',
|
|
||||||
addTencentCloudSID: '腾讯云 Secret ID',
|
addTencentCloudSID: '腾讯云 Secret ID',
|
||||||
TencentCloudSIDMessage: '请输入 Secret ID',
|
TencentCloudSIDMessage: '请输入 Secret ID',
|
||||||
addTencentCloudSK: '腾讯云 Secret Key',
|
addTencentCloudSK: '腾讯云 Secret Key',
|
||||||
|
|||||||
@ -206,33 +206,6 @@ export const useSubmitVolcEngine = () => {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
export const useSubmitHunyuan = () => {
|
|
||||||
const { addLlm, loading } = useAddLlm();
|
|
||||||
const {
|
|
||||||
visible: HunyuanAddingVisible,
|
|
||||||
hideModal: hideHunyuanAddingModal,
|
|
||||||
showModal: showHunyuanAddingModal,
|
|
||||||
} = useSetModalState();
|
|
||||||
|
|
||||||
const onHunyuanAddingOk = useCallback(
|
|
||||||
async (payload: IAddLlmRequestBody) => {
|
|
||||||
const ret = await addLlm(payload);
|
|
||||||
if (ret === 0) {
|
|
||||||
hideHunyuanAddingModal();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
[hideHunyuanAddingModal, addLlm],
|
|
||||||
);
|
|
||||||
|
|
||||||
return {
|
|
||||||
HunyuanAddingLoading: loading,
|
|
||||||
onHunyuanAddingOk,
|
|
||||||
HunyuanAddingVisible,
|
|
||||||
hideHunyuanAddingModal,
|
|
||||||
showHunyuanAddingModal,
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
export const useSubmitTencentCloud = () => {
|
export const useSubmitTencentCloud = () => {
|
||||||
const { addLlm, loading } = useAddLlm();
|
const { addLlm, loading } = useAddLlm();
|
||||||
const {
|
const {
|
||||||
|
|||||||
@ -12,7 +12,6 @@ import {
|
|||||||
useSubmitBedrock,
|
useSubmitBedrock,
|
||||||
useSubmitFishAudio,
|
useSubmitFishAudio,
|
||||||
useSubmitGoogle,
|
useSubmitGoogle,
|
||||||
useSubmitHunyuan,
|
|
||||||
useSubmitMinerU,
|
useSubmitMinerU,
|
||||||
useSubmitOllama,
|
useSubmitOllama,
|
||||||
useSubmitPaddleOCR,
|
useSubmitPaddleOCR,
|
||||||
@ -27,11 +26,10 @@ import AzureOpenAIModal from './modal/azure-openai-modal';
|
|||||||
import BedrockModal from './modal/bedrock-modal';
|
import BedrockModal from './modal/bedrock-modal';
|
||||||
import FishAudioModal from './modal/fish-audio-modal';
|
import FishAudioModal from './modal/fish-audio-modal';
|
||||||
import GoogleModal from './modal/google-modal';
|
import GoogleModal from './modal/google-modal';
|
||||||
import HunyuanModal from './modal/hunyuan-modal';
|
|
||||||
import MinerUModal from './modal/mineru-modal';
|
import MinerUModal from './modal/mineru-modal';
|
||||||
import PaddleOCRModal from './modal/paddleocr-modal';
|
|
||||||
import TencentCloudModal from './modal/next-tencent-modal';
|
import TencentCloudModal from './modal/next-tencent-modal';
|
||||||
import OllamaModal from './modal/ollama-modal';
|
import OllamaModal from './modal/ollama-modal';
|
||||||
|
import PaddleOCRModal from './modal/paddleocr-modal';
|
||||||
import SparkModal from './modal/spark-modal';
|
import SparkModal from './modal/spark-modal';
|
||||||
import VolcEngineModal from './modal/volcengine-modal';
|
import VolcEngineModal from './modal/volcengine-modal';
|
||||||
import YiyanModal from './modal/yiyan-modal';
|
import YiyanModal from './modal/yiyan-modal';
|
||||||
@ -68,14 +66,6 @@ const ModelProviders = () => {
|
|||||||
volcAddingLoading,
|
volcAddingLoading,
|
||||||
} = useSubmitVolcEngine();
|
} = useSubmitVolcEngine();
|
||||||
|
|
||||||
const {
|
|
||||||
HunyuanAddingVisible,
|
|
||||||
hideHunyuanAddingModal,
|
|
||||||
showHunyuanAddingModal,
|
|
||||||
onHunyuanAddingOk,
|
|
||||||
HunyuanAddingLoading,
|
|
||||||
} = useSubmitHunyuan();
|
|
||||||
|
|
||||||
const {
|
const {
|
||||||
GoogleAddingVisible,
|
GoogleAddingVisible,
|
||||||
hideGoogleAddingModal,
|
hideGoogleAddingModal,
|
||||||
@ -152,7 +142,6 @@ const ModelProviders = () => {
|
|||||||
() => ({
|
() => ({
|
||||||
[LLMFactory.Bedrock]: showBedrockAddingModal,
|
[LLMFactory.Bedrock]: showBedrockAddingModal,
|
||||||
[LLMFactory.VolcEngine]: showVolcAddingModal,
|
[LLMFactory.VolcEngine]: showVolcAddingModal,
|
||||||
[LLMFactory.TencentHunYuan]: showHunyuanAddingModal,
|
|
||||||
[LLMFactory.XunFeiSpark]: showSparkAddingModal,
|
[LLMFactory.XunFeiSpark]: showSparkAddingModal,
|
||||||
[LLMFactory.BaiduYiYan]: showyiyanAddingModal,
|
[LLMFactory.BaiduYiYan]: showyiyanAddingModal,
|
||||||
[LLMFactory.FishAudio]: showFishAudioAddingModal,
|
[LLMFactory.FishAudio]: showFishAudioAddingModal,
|
||||||
@ -165,7 +154,6 @@ const ModelProviders = () => {
|
|||||||
[
|
[
|
||||||
showBedrockAddingModal,
|
showBedrockAddingModal,
|
||||||
showVolcAddingModal,
|
showVolcAddingModal,
|
||||||
showHunyuanAddingModal,
|
|
||||||
showSparkAddingModal,
|
showSparkAddingModal,
|
||||||
showyiyanAddingModal,
|
showyiyanAddingModal,
|
||||||
showFishAudioAddingModal,
|
showFishAudioAddingModal,
|
||||||
@ -259,13 +247,6 @@ const ModelProviders = () => {
|
|||||||
loading={volcAddingLoading}
|
loading={volcAddingLoading}
|
||||||
llmFactory={LLMFactory.VolcEngine}
|
llmFactory={LLMFactory.VolcEngine}
|
||||||
></VolcEngineModal>
|
></VolcEngineModal>
|
||||||
<HunyuanModal
|
|
||||||
visible={HunyuanAddingVisible}
|
|
||||||
hideModal={hideHunyuanAddingModal}
|
|
||||||
onOk={onHunyuanAddingOk}
|
|
||||||
loading={HunyuanAddingLoading}
|
|
||||||
llmFactory={LLMFactory.TencentHunYuan}
|
|
||||||
></HunyuanModal>
|
|
||||||
<GoogleModal
|
<GoogleModal
|
||||||
visible={GoogleAddingVisible}
|
visible={GoogleAddingVisible}
|
||||||
hideModal={hideGoogleAddingModal}
|
hideModal={hideGoogleAddingModal}
|
||||||
|
|||||||
@ -1,91 +0,0 @@
|
|||||||
import {
|
|
||||||
DynamicForm,
|
|
||||||
FormFieldConfig,
|
|
||||||
FormFieldType,
|
|
||||||
} from '@/components/dynamic-form';
|
|
||||||
import { Modal } from '@/components/ui/modal/modal';
|
|
||||||
import { useCommonTranslation, useTranslate } from '@/hooks/common-hooks';
|
|
||||||
import { IModalProps } from '@/interfaces/common';
|
|
||||||
import { IAddLlmRequestBody } from '@/interfaces/request/llm';
|
|
||||||
import { FieldValues } from 'react-hook-form';
|
|
||||||
import { LLMHeader } from '../../components/llm-header';
|
|
||||||
|
|
||||||
const HunyuanModal = ({
|
|
||||||
visible,
|
|
||||||
hideModal,
|
|
||||||
onOk,
|
|
||||||
loading,
|
|
||||||
llmFactory,
|
|
||||||
}: IModalProps<IAddLlmRequestBody> & { llmFactory: string }) => {
|
|
||||||
const { t } = useTranslate('setting');
|
|
||||||
const { t: tc } = useCommonTranslation();
|
|
||||||
|
|
||||||
const fields: FormFieldConfig[] = [
|
|
||||||
{
|
|
||||||
name: 'hunyuan_sid',
|
|
||||||
label: t('addHunyuanSID'),
|
|
||||||
type: FormFieldType.Text,
|
|
||||||
required: true,
|
|
||||||
placeholder: t('HunyuanSIDMessage'),
|
|
||||||
validation: {
|
|
||||||
message: t('HunyuanSIDMessage'),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'hunyuan_sk',
|
|
||||||
label: t('addHunyuanSK'),
|
|
||||||
type: FormFieldType.Text,
|
|
||||||
required: true,
|
|
||||||
placeholder: t('HunyuanSKMessage'),
|
|
||||||
validation: {
|
|
||||||
message: t('HunyuanSKMessage'),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
const handleOk = async (values?: FieldValues) => {
|
|
||||||
if (!values) return;
|
|
||||||
|
|
||||||
const data = {
|
|
||||||
hunyuan_sid: values.hunyuan_sid as string,
|
|
||||||
hunyuan_sk: values.hunyuan_sk as string,
|
|
||||||
llm_factory: llmFactory,
|
|
||||||
} as unknown as IAddLlmRequestBody;
|
|
||||||
|
|
||||||
await onOk?.(data);
|
|
||||||
};
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Modal
|
|
||||||
title={<LLMHeader name={llmFactory} />}
|
|
||||||
open={visible || false}
|
|
||||||
onOpenChange={(open) => !open && hideModal?.()}
|
|
||||||
maskClosable={false}
|
|
||||||
footer={<div className="p-4"></div>}
|
|
||||||
className="max-w-[600px]"
|
|
||||||
>
|
|
||||||
<DynamicForm.Root
|
|
||||||
fields={fields}
|
|
||||||
onSubmit={() => {}}
|
|
||||||
labelClassName="font-normal"
|
|
||||||
>
|
|
||||||
<div className="absolute bottom-0 right-0 left-0 flex items-center justify-end w-full gap-2 py-6 px-6">
|
|
||||||
<DynamicForm.CancelButton
|
|
||||||
handleCancel={() => {
|
|
||||||
hideModal?.();
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
<DynamicForm.SavingButton
|
|
||||||
submitLoading={loading || false}
|
|
||||||
buttonText={tc('ok')}
|
|
||||||
submitFunc={(values: FieldValues) => {
|
|
||||||
handleOk(values);
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</DynamicForm.Root>
|
|
||||||
</Modal>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default HunyuanModal;
|
|
||||||
Reference in New Issue
Block a user