Feat: add support for international Dashscope service (#10356)

### What problem does this PR solve?

 Add support for international Dashscope service. #10340 

### Type of change

- [x] New Feature (non-breaking change which adds functionality)
This commit is contained in:
Yongteng Lei
2025-09-29 14:49:45 +08:00
committed by GitHub
parent a8883905a7
commit 17757930a3
12 changed files with 54 additions and 14 deletions

View File

@ -146,7 +146,7 @@ class Base(ABC):
response = self.client.chat.completions.create(model=self.model_name, messages=history, **gen_conf, **kwargs) response = self.client.chat.completions.create(model=self.model_name, messages=history, **gen_conf, **kwargs)
if (not response.choices or not response.choices[0].message or not response.choices[0].message.content): if not response.choices or not response.choices[0].message or not response.choices[0].message.content:
return "", 0 return "", 0
ans = response.choices[0].message.content.strip() ans = response.choices[0].message.content.strip()
if response.choices[0].finish_reason == "length": if response.choices[0].finish_reason == "length":
@ -457,7 +457,7 @@ class Base(ABC):
yield total_tokens yield total_tokens
def total_token_count(self, resp): def total_token_count(self, resp):
return total_token_count_from_response(resp) return total_token_count_from_response(resp)
def _calculate_dynamic_ctx(self, history): def _calculate_dynamic_ctx(self, history):
"""Calculate dynamic context window size""" """Calculate dynamic context window size"""
@ -1305,10 +1305,6 @@ class LiteLLMBase(ABC):
"302.AI", "302.AI",
] ]
import litellm
litellm._turn_on_debug()
def __init__(self, key, model_name, base_url=None, **kwargs): def __init__(self, key, model_name, base_url=None, **kwargs):
self.timeout = int(os.environ.get("LM_TIMEOUT_SECONDS", 600)) self.timeout = int(os.environ.get("LM_TIMEOUT_SECONDS", 600))
self.provider = kwargs.get("provider", "") self.provider = kwargs.get("provider", "")

View File

@ -624,6 +624,10 @@ export default {
baseUrl: 'Basis-URL', baseUrl: 'Basis-URL',
baseUrlTip: baseUrlTip:
'Wenn Ihr API-Schlüssel von OpenAI stammt, ignorieren Sie dies. Andere Zwischenanbieter geben diese Basis-URL mit dem API-Schlüssel an.', 'Wenn Ihr API-Schlüssel von OpenAI stammt, ignorieren Sie dies. Andere Zwischenanbieter geben diese Basis-URL mit dem API-Schlüssel an.',
tongyiBaseUrlTip:
'Für chinesische Benutzer ist keine Eingabe erforderlich oder verwenden Sie https://dashscope.aliyuncs.com/compatible-mode/v1. Für internationale Benutzer verwenden Sie https://dashscope-intl.aliyuncs.com/compatible-mode/v1',
tongyiBaseUrlPlaceholder:
'(Nur für internationale Benutzer, bitte Hinweis beachten)',
modify: 'Ändern', modify: 'Ändern',
systemModelSettings: 'Standardmodelle festlegen', systemModelSettings: 'Standardmodelle festlegen',
chatModel: 'Chat-Modell', chatModel: 'Chat-Modell',

View File

@ -701,6 +701,9 @@ This auto-tagging feature enhances retrieval by adding another layer of domain-s
baseUrl: 'Base-Url', baseUrl: 'Base-Url',
baseUrlTip: baseUrlTip:
'If your API key is from OpenAI, just ignore it. Any other intermediate providers will give this base url with the API key.', 'If your API key is from OpenAI, just ignore it. Any other intermediate providers will give this base url with the API key.',
tongyiBaseUrlTip:
'For Chinese users, no need to fill in or use https://dashscope.aliyuncs.com/compatible-mode/v1. For international users, use https://dashscope-intl.aliyuncs.com/compatible-mode/v1',
tongyiBaseUrlPlaceholder: '(International users only, please see tip)',
modify: 'Modify', modify: 'Modify',
systemModelSettings: 'Set default models', systemModelSettings: 'Set default models',
chatModel: 'Chat model', chatModel: 'Chat model',
@ -972,14 +975,14 @@ This auto-tagging feature enhances retrieval by adding another layer of domain-s
addTools: 'Add Tools', addTools: 'Add Tools',
sysPromptDefultValue: ` sysPromptDefultValue: `
<role> <role>
You are a helpful assistant, an AI assistant specialized in problem-solving for the user. You are a helpful assistant, an AI assistant specialized in problem-solving for the user.
If a specific domain is provided, adapt your expertise to that domain; otherwise, operate as a generalist. If a specific domain is provided, adapt your expertise to that domain; otherwise, operate as a generalist.
</role> </role>
<instructions> <instructions>
1. Understand the users request. 1. Understand the users request.
2. Decompose it into logical subtasks. 2. Decompose it into logical subtasks.
3. Execute each subtask step by step, reasoning transparently. 3. Execute each subtask step by step, reasoning transparently.
4. Validate accuracy and consistency. 4. Validate accuracy and consistency.
5. Summarize the final result clearly. 5. Summarize the final result clearly.
</instructions>`, </instructions>`,
singleLineText: 'Single-line text', singleLineText: 'Single-line text',

View File

@ -340,6 +340,10 @@ export default {
baseUrl: 'URL base', baseUrl: 'URL base',
baseUrlTip: baseUrlTip:
'Si tu clave API es de OpenAI, ignora esto. Cualquier otro proveedor intermedio proporcionará esta URL base junto con la clave API.', 'Si tu clave API es de OpenAI, ignora esto. Cualquier otro proveedor intermedio proporcionará esta URL base junto con la clave API.',
tongyiBaseUrlTip:
'Para usuarios chinos, no es necesario rellenar o usar https://dashscope.aliyuncs.com/compatible-mode/v1. Para usuarios internacionales, usar https://dashscope-intl.aliyuncs.com/compatible-mode/v1',
tongyiBaseUrlPlaceholder:
'(Solo para usuarios internacionales, por favor ver consejo)',
modify: 'Modificar', modify: 'Modificar',
systemModelSettings: 'Establecer modelos predeterminados', systemModelSettings: 'Establecer modelos predeterminados',
chatModel: 'Modelo de chat', chatModel: 'Modelo de chat',

View File

@ -522,6 +522,10 @@ export default {
baseUrl: 'URL de base', baseUrl: 'URL de base',
baseUrlTip: baseUrlTip:
"Si votre clé API provient d'OpenAI, ignorez ceci. Tout autre fournisseur intermédiaire fournira cette URL de base avec la clé API.", "Si votre clé API provient d'OpenAI, ignorez ceci. Tout autre fournisseur intermédiaire fournira cette URL de base avec la clé API.",
tongyiBaseUrlTip:
'Pour les utilisateurs chinois, pas besoin de remplir ou utiliser https://dashscope.aliyuncs.com/compatible-mode/v1. Pour les utilisateurs internationaux, utilisez https://dashscope-intl.aliyuncs.com/compatible-mode/v1',
tongyiBaseUrlPlaceholder:
"(Utilisateurs internationaux uniquement, veuillez consulter l'astuce)",
modify: 'Modifier', modify: 'Modifier',
systemModelSettings: 'Définir les modèles par défaut', systemModelSettings: 'Définir les modèles par défaut',
chatModel: 'Modèle de chat', chatModel: 'Modèle de chat',
@ -783,7 +787,7 @@ export default {
'Un composant qui recherche sur duckduckgo.com, vous permettant de spécifier le nombre de résultats avec TopN. Il complète les bases de connaissances existantes.', 'Un composant qui recherche sur duckduckgo.com, vous permettant de spécifier le nombre de résultats avec TopN. Il complète les bases de connaissances existantes.',
searXNG: 'SearXNG', searXNG: 'SearXNG',
searXNGDescription: searXNGDescription:
'Un composant qui effectue des recherches via la URL de l\'instance de SearXNG que vous fournissez. Spécifiez TopN et l\'URL de l\'instance.', "Un composant qui effectue des recherches via la URL de l'instance de SearXNG que vous fournissez. Spécifiez TopN et l'URL de l'instance.",
channel: 'Canal', channel: 'Canal',
channelTip: channelTip:
"Effectuer une recherche de texte ou d'actualités sur l'entrée du composant", "Effectuer une recherche de texte ou d'actualités sur l'entrée du composant",

View File

@ -512,6 +512,10 @@ export default {
baseUrl: 'Base-Url', baseUrl: 'Base-Url',
baseUrlTip: baseUrlTip:
'Jika kunci API Anda berasal dari OpenAI, abaikan saja. Penyedia perantara lainnya akan memberikan base url ini dengan kunci API.', 'Jika kunci API Anda berasal dari OpenAI, abaikan saja. Penyedia perantara lainnya akan memberikan base url ini dengan kunci API.',
tongyiBaseUrlTip:
'Untuk pengguna Tiongkok, tidak perlu diisi atau gunakan https://dashscope.aliyuncs.com/compatible-mode/v1. Untuk pengguna internasional, gunakan https://dashscope-intl.aliyuncs.com/compatible-mode/v1',
tongyiBaseUrlPlaceholder:
'(Hanya untuk pengguna internasional, silakan lihat tip)',
modify: 'Ubah', modify: 'Ubah',
systemModelSettings: 'Tetapkan model default', systemModelSettings: 'Tetapkan model default',
chatModel: 'Model Obrolan', chatModel: 'Model Obrolan',

View File

@ -554,6 +554,9 @@ export default {
baseUrl: 'ベースURL', baseUrl: 'ベースURL',
baseUrlTip: baseUrlTip:
'APIキーがOpenAIからのものであれば無視してください。他の中間プロバイダーはAPIキーと共にこのベースURLを提供します。', 'APIキーがOpenAIからのものであれば無視してください。他の中間プロバイダーはAPIキーと共にこのベースURLを提供します。',
tongyiBaseUrlTip:
'中国ユーザーの場合、記入不要または https://dashscope.aliyuncs.com/compatible-mode/v1 を使用してください。国際ユーザーは https://dashscope-intl.aliyuncs.com/compatible-mode/v1 を使用してください',
tongyiBaseUrlPlaceholder: '(国際ユーザーのみ、ヒントをご覧ください)',
modify: '変更', modify: '変更',
systemModelSettings: 'デフォルトモデルを設定する', systemModelSettings: 'デフォルトモデルを設定する',
chatModel: 'チャットモデル', chatModel: 'チャットモデル',

View File

@ -504,6 +504,10 @@ export default {
baseUrl: 'URL Base', baseUrl: 'URL Base',
baseUrlTip: baseUrlTip:
'Se sua chave da API for do OpenAI, ignore isso. Outros provedores intermediários fornecerão essa URL base com a chave da API.', 'Se sua chave da API for do OpenAI, ignore isso. Outros provedores intermediários fornecerão essa URL base com a chave da API.',
tongyiBaseUrlTip:
'Para usuários chineses, não é necessário preencher ou usar https://dashscope.aliyuncs.com/compatible-mode/v1. Para usuários internacionais, use https://dashscope-intl.aliyuncs.com/compatible-mode/v1',
tongyiBaseUrlPlaceholder:
'(Apenas para usuários internacionais, consulte a dica)',
modify: 'Modificar', modify: 'Modificar',
systemModelSettings: 'Definir modelos padrão', systemModelSettings: 'Definir modelos padrão',
chatModel: 'Modelo de chat', chatModel: 'Modelo de chat',

View File

@ -671,6 +671,10 @@ export default {
baseUrl: 'Базовый URL', baseUrl: 'Базовый URL',
baseUrlTip: baseUrlTip:
'Если ваш API ключ от OpenAI, оставьте пустым. Другие провайдеры предоставляют базовый URL с API ключом.', 'Если ваш API ключ от OpenAI, оставьте пустым. Другие провайдеры предоставляют базовый URL с API ключом.',
tongyiBaseUrlTip:
'Для китайских пользователей не нужно заполнять, используйте https://dashscope.aliyuncs.com/compatible-mode/v1. Для международных пользователей используйте https://dashscope-intl.aliyuncs.com/compatible-mode/v1',
tongyiBaseUrlPlaceholder:
'(Только для международных пользователей, см. подсказку)',
modify: 'Изменить', modify: 'Изменить',
systemModelSettings: 'Установить модели по умолчанию', systemModelSettings: 'Установить модели по умолчанию',
chatModel: 'Модель чата', chatModel: 'Модель чата',

View File

@ -593,6 +593,9 @@ export default {
baseUrl: 'base-url', baseUrl: 'base-url',
baseUrlTip: baseUrlTip:
'如果您的 API 密鑰來自 OpenAI請忽略它。任何其他中間提供商都會提供帶有 API 密鑰的基本 URL。', '如果您的 API 密鑰來自 OpenAI請忽略它。任何其他中間提供商都會提供帶有 API 密鑰的基本 URL。',
tongyiBaseUrlTip:
'中國用戶無需填寫或使用 https://dashscope.aliyuncs.com/compatible-mode/v1。國際用戶請使用 https://dashscope-intl.aliyuncs.com/compatible-mode/v1',
tongyiBaseUrlPlaceholder: '(僅國際用戶,請參閱提示)',
modify: '修改', modify: '修改',
systemModelSettings: '設定預設模型', systemModelSettings: '設定預設模型',
chatModel: '聊天模型', chatModel: '聊天模型',

View File

@ -689,6 +689,9 @@ General实体和关系提取提示来自 GitHub - microsoft/graphrag基于
baseUrl: 'Base-Url', baseUrl: 'Base-Url',
baseUrlTip: baseUrlTip:
'如果您的 API 密钥来自 OpenAI请忽略它。 任何其他中间提供商都会提供带有 API 密钥的基本 URL。', '如果您的 API 密钥来自 OpenAI请忽略它。 任何其他中间提供商都会提供带有 API 密钥的基本 URL。',
tongyiBaseUrlTip:
'对于中国用户,不需要填写或使用 https://dashscope.aliyuncs.com/compatible-mode/v1。对于国际用户使用 https://dashscope-intl.aliyuncs.com/compatible-mode/v1。',
tongyiBaseUrlPlaceholder: '(仅国际用户需要)',
modify: '修改', modify: '修改',
systemModelSettings: '设置默认模型', systemModelSettings: '设置默认模型',
chatModel: '聊天模型', chatModel: '聊天模型',

View File

@ -88,10 +88,18 @@ const ApiKeyModal = ({
<Form.Item<FieldType> <Form.Item<FieldType>
label={t('baseUrl')} label={t('baseUrl')}
name="base_url" name="base_url"
tooltip={t('baseUrlTip')} tooltip={
llmFactory === LLMFactory.TongYiQianWen
? t('tongyiBaseUrlTip')
: t('baseUrlTip')
}
> >
<Input <Input
placeholder="https://api.openai.com/v1" placeholder={
llmFactory === LLMFactory.TongYiQianWen
? t('tongyiBaseUrlPlaceholder')
: 'https://api.openai.com/v1'
}
onKeyDown={handleKeyDown} onKeyDown={handleKeyDown}
/> />
</Form.Item> </Form.Item>