diff --git a/electron-builder.yml b/electron-builder.yml
index ce48c92848..a092c7137f 100644
--- a/electron-builder.yml
+++ b/electron-builder.yml
@@ -65,9 +65,15 @@ afterSign: scripts/notarize.js
releaseInfo:
releaseNotes: |
本次更新:
+ 增加流式输出开关
+ Windows 安装程序支持修改安装位置了
+ 服务商和小程序图标更新
+ 增加 ocoolAI 服务商
+ 小程序增加 HuggingChat
+ Gemini 模型回复安全级别关闭
+ 修复 macOS 切换窗口透明不生效问题
+ 修复消息回复完成界面会自动滚动到最底部的问题
+ 近期更新:
全新应用图标
模型图标更新
- 近期更新:
- 支持话题导出为图片
- 支持粘贴图片和文件到聊天输入框
- 支持将对话移动到其他智能体了
+ 支持 Linux ARM 架构
diff --git a/src/renderer/src/assets/images/apps/huggingchat.svg b/src/renderer/src/assets/images/apps/huggingchat.svg
new file mode 100644
index 0000000000..49765f6468
--- /dev/null
+++ b/src/renderer/src/assets/images/apps/huggingchat.svg
@@ -0,0 +1,14 @@
+
diff --git a/src/renderer/src/config/minapps.ts b/src/renderer/src/config/minapps.ts
index 784bb309c9..98770c0588 100644
--- a/src/renderer/src/config/minapps.ts
+++ b/src/renderer/src/config/minapps.ts
@@ -5,6 +5,7 @@ import BaicuanAppLogo from '@renderer/assets/images/apps/baixiaoying.webp'
import DevvAppLogo from '@renderer/assets/images/apps/devv.png'
import DoubaoAppLogo from '@renderer/assets/images/apps/doubao.png'
import GeminiAppLogo from '@renderer/assets/images/apps/gemini.png'
+import HuggingChatLogo from '@renderer/assets/images/apps/huggingchat.svg'
import KimiAppLogo from '@renderer/assets/images/apps/kimi.jpg'
import MetasoAppLogo from '@renderer/assets/images/apps/metaso.webp'
import PerplexityAppLogo from '@renderer/assets/images/apps/perplexity.webp'
@@ -191,6 +192,13 @@ const _apps: MinAppType[] = [
logo: ZhihuAppLogo,
url: 'https://zhida.zhihu.com/',
bodered: true
+ },
+ {
+ id: 'hugging-chat',
+ name: 'HuggingChat',
+ logo: HuggingChatLogo,
+ url: 'https://huggingface.co/chat/',
+ bodered: true
}
]
diff --git a/src/renderer/src/providers/AnthropicProvider.ts b/src/renderer/src/providers/AnthropicProvider.ts
index e1432a0eed..feef21d1a0 100644
--- a/src/renderer/src/providers/AnthropicProvider.ts
+++ b/src/renderer/src/providers/AnthropicProvider.ts
@@ -72,15 +72,16 @@ export default class AnthropicProvider extends BaseProvider {
userMessages.shift()
}
+ const body: MessageCreateParamsNonStreaming = {
+ model: model.id,
+ messages: userMessages,
+ max_tokens: maxTokens || DEFAULT_MAX_TOKENS,
+ temperature: assistant?.settings?.temperature,
+ system: assistant.prompt
+ }
+
if (!streamOutput) {
- const message = await this.sdk.messages.create({
- model: model.id,
- messages: userMessages,
- max_tokens: maxTokens || DEFAULT_MAX_TOKENS,
- temperature: assistant?.settings?.temperature,
- system: assistant.prompt,
- stream: false
- })
+ const message = await this.sdk.messages.create({ ...body, stream: false })
return onChunk({
text: message.content[0].type === 'text' ? message.content[0].text : '',
usage: message.usage
@@ -89,14 +90,7 @@ export default class AnthropicProvider extends BaseProvider {
return new Promise((resolve, reject) => {
const stream = this.sdk.messages
- .stream({
- model: model.id,
- messages: userMessages,
- max_tokens: maxTokens || DEFAULT_MAX_TOKENS,
- temperature: assistant?.settings?.temperature,
- system: assistant.prompt,
- stream: true
- })
+ .stream({ ...body, stream: true })
.on('text', (text) => {
if (window.keyv.get(EVENT_NAMES.CHAT_COMPLETION_PAUSED)) {
stream.controller.abort()
diff --git a/src/renderer/src/providers/OpenAIProvider.ts b/src/renderer/src/providers/OpenAIProvider.ts
index 733845bb8d..cfa3be8e7d 100644
--- a/src/renderer/src/providers/OpenAIProvider.ts
+++ b/src/renderer/src/providers/OpenAIProvider.ts
@@ -130,10 +130,10 @@ export default class OpenAIProvider extends BaseProvider {
const stream = await this.sdk.chat.completions.create({
model: model.id,
messages: [systemMessage, ...userMessages].filter(Boolean) as ChatCompletionMessageParam[],
- stream: isSupportStreamOutput,
temperature: assistant?.settings?.temperature,
max_tokens: maxTokens,
- keep_alive: this.keepAliveTime
+ keep_alive: this.keepAliveTime,
+ stream: isSupportStreamOutput
})
if (!isSupportStreamOutput) {