Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion backend/consts/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -265,4 +265,4 @@
os.getenv("LLM_SLOW_TOKEN_RATE_THRESHOLD", "10.0")) # tokens per second

# APP Version
APP_VERSION = "v1.7.4"
APP_VERSION = "v1.7.4.1"
10 changes: 9 additions & 1 deletion doc/docs/zh/opensource-memorial-wall.md
Original file line number Diff line number Diff line change
Expand Up @@ -149,4 +149,12 @@ Nexent的自然语言生成Agent以及多智能体协同是我一直在研究的

::: tip yblu - 2025-10-14
第一次接触智能体编排,是为了参加华为ICT大赛而了解 Nexent 的。 没想到入门比想象中容易,文档也写得很清晰。
:::
:::

::: tip hud0567 - 2025-10-17
第一次接触这个平台 入门超级艰难 很智能化
:::

::: info jjcc6 - 2025-10-15
希望能参加ict大赛长长见识,提高水平~
:::
Original file line number Diff line number Diff line change
Expand Up @@ -480,11 +480,11 @@ export const ModelAddDialog = ({ isOpen, onClose, onSuccess }: ModelAddDialogPro
{/* API Key */}
<div>
<label htmlFor="apiKey" className="block mb-1 text-sm font-medium text-gray-700">
{t('model.dialog.label.apiKey')} <span className="text-red-500">*</span>
{t('model.dialog.label.apiKey')} {form.isBatchImport && <span className="text-red-500">*</span>}
</label>
<Input.Password
id="apiKey"
placeholder={form.isBatchImport ? t('model.dialog.placeholder.apiKeyRequired') : t('model.dialog.placeholder.apiKey')}
placeholder={t('model.dialog.placeholder.apiKey')}
value={form.apiKey}
onChange={(e) => handleFormChange("apiKey", e.target.value)}
/>
Expand Down
14 changes: 8 additions & 6 deletions frontend/components/ui/markdownRenderer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -336,12 +336,14 @@ const convertLatexDelimiters = (content: string): string => {
if (!content.includes('\\(') && !content.includes('\\[')) {
return content;
}

return content
// Convert \( ... \) to $ ... $ (inline math)
.replace(/\\\(([\s\S]*?)\\\)/g, '$$1$')
// Convert \[ ... \] to $$ ... $$ (display math)
.replace(/\\\[([\s\S]*?)\\\]/g, '$$$$1$$\n');

return (
content
// Convert \( ... \) to $ ... $ (inline math)
.replace(/\\\(([\s\S]*?)\\\)/g, (_match, inner) => `$${inner}$`)
// Convert \[ ... \] to $$ ... $$ (display math)
.replace(/\\\[([\s\S]*?)\\\]/g, (_match, inner) => `$$${inner}$$\n`)
);
};

export const MarkdownRenderer: React.FC<MarkdownRendererProps> = ({
Expand Down
3 changes: 1 addition & 2 deletions frontend/public/locales/en/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -529,8 +529,7 @@
"model.dialog.placeholder.displayName": "Enter display name for the model",
"model.dialog.placeholder.url": "Enter model URL, e.g. https://api.openai.com/v1",
"model.dialog.placeholder.url.embedding": "Enter model URL, e.g. https://api.openai.com/v1/embeddings",
"model.dialog.placeholder.apiKey": "Enter API Key (optional)",
"model.dialog.placeholder.apiKeyRequired": "Enter API Key ",
"model.dialog.placeholder.apiKey": "Enter API Key",
"model.dialog.placeholder.maxTokens": "Enter maximum tokens",
"model.dialog.settings.title": "Model Settings",
"model.dialog.settings.label.maxTokens": "Max Tokens",
Expand Down
3 changes: 1 addition & 2 deletions frontend/public/locales/zh/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -530,8 +530,7 @@
"model.dialog.placeholder.displayName": "请输入模型的展示名称",
"model.dialog.placeholder.url": "请输入模型URL, 例如: https://api.openai.com/v1",
"model.dialog.placeholder.url.embedding": "请输入模型URL, 例如: https://api.openai.com/v1/embeddings",
"model.dialog.placeholder.apiKey": "请输入API Key(可选)",
"model.dialog.placeholder.apiKeyRequired": "请输入API Key",
"model.dialog.placeholder.apiKey": "请输入API Key",
"model.dialog.placeholder.maxTokens": "请输入最大Token数",
"model.dialog.settings.title": "模型设置",
"model.dialog.settings.label.maxTokens": "最大Token数",
Expand Down