Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
B
bit-pm
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
燕伟桐
bit-pm
Commits
b45dff38
Unverified
提交
b45dff38
authored
5月 13, 2025
作者:
Will Chen
提交者:
GitHub
5月 13, 2025
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Inline model picker props (#146)
上级
843a097e
显示空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
17 行增加
和
24 行删除
+17
-24
ModelPicker.tsx
src/components/ModelPicker.tsx
+13
-10
ChatInput.tsx
src/components/chat/ChatInput.tsx
+2
-7
HomeChatInput.tsx
src/components/chat/HomeChatInput.tsx
+2
-7
没有找到文件。
src/components/ModelPicker.tsx
浏览文件 @
b45dff38
...
@@ -23,15 +23,14 @@ import { useLanguageModelsByProviders } from "@/hooks/useLanguageModelsByProvide
...
@@ -23,15 +23,14 @@ import { useLanguageModelsByProviders } from "@/hooks/useLanguageModelsByProvide
import
{
ChevronDown
}
from
"lucide-react"
;
import
{
ChevronDown
}
from
"lucide-react"
;
import
{
LocalModel
}
from
"@/ipc/ipc_types"
;
import
{
LocalModel
}
from
"@/ipc/ipc_types"
;
import
{
useLanguageModelProviders
}
from
"@/hooks/useLanguageModelProviders"
;
import
{
useLanguageModelProviders
}
from
"@/hooks/useLanguageModelProviders"
;
interface
ModelPickerProps
{
import
{
useSettings
}
from
"@/hooks/useSettings"
;
selectedModel
:
LargeLanguageModel
;
onModelSelect
:
(
model
:
LargeLanguageModel
)
=>
void
;
export
function
ModelPicker
()
{
}
const
{
settings
,
updateSettings
}
=
useSettings
();
const
onModelSelect
=
(
model
:
LargeLanguageModel
)
=>
{
updateSettings
({
selectedModel
:
model
});
};
export
function
ModelPicker
({
selectedModel
,
onModelSelect
,
}:
ModelPickerProps
)
{
const
[
open
,
setOpen
]
=
useState
(
false
);
const
[
open
,
setOpen
]
=
useState
(
false
);
// Cloud models from providers
// Cloud models from providers
...
@@ -97,8 +96,6 @@ export function ModelPicker({
...
@@ -97,8 +96,6 @@ export function ModelPicker({
return
selectedModel
.
name
;
return
selectedModel
.
name
;
};
};
const
modelDisplayName
=
getModelDisplayName
();
// Get auto provider models (if any)
// Get auto provider models (if any)
const
autoModels
=
const
autoModels
=
!
loading
&&
modelsByProviders
&&
modelsByProviders
[
"auto"
]
!
loading
&&
modelsByProviders
&&
modelsByProviders
[
"auto"
]
...
@@ -111,6 +108,12 @@ export function ModelPicker({
...
@@ -111,6 +108,12 @@ export function ModelPicker({
const
hasLMStudioModels
=
const
hasLMStudioModels
=
!
lmStudioLoading
&&
!
lmStudioError
&&
lmStudioModels
.
length
>
0
;
!
lmStudioLoading
&&
!
lmStudioError
&&
lmStudioModels
.
length
>
0
;
if
(
!
settings
)
{
return
null
;
}
const
selectedModel
=
settings
?.
selectedModel
;
const
modelDisplayName
=
getModelDisplayName
();
return
(
return
(
<
DropdownMenu
open=
{
open
}
onOpenChange=
{
setOpen
}
>
<
DropdownMenu
open=
{
open
}
onOpenChange=
{
setOpen
}
>
<
DropdownMenuTrigger
asChild
>
<
DropdownMenuTrigger
asChild
>
...
...
src/components/chat/ChatInput.tsx
浏览文件 @
b45dff38
...
@@ -65,7 +65,7 @@ export function ChatInput({ chatId }: { chatId?: number }) {
...
@@ -65,7 +65,7 @@ export function ChatInput({ chatId }: { chatId?: number }) {
const
posthog
=
usePostHog
();
const
posthog
=
usePostHog
();
const
[
inputValue
,
setInputValue
]
=
useAtom
(
chatInputValueAtom
);
const
[
inputValue
,
setInputValue
]
=
useAtom
(
chatInputValueAtom
);
const
textareaRef
=
useRef
<
HTMLTextAreaElement
>
(
null
);
const
textareaRef
=
useRef
<
HTMLTextAreaElement
>
(
null
);
const
{
settings
,
updateSettings
}
=
useSettings
();
const
{
settings
}
=
useSettings
();
const
appId
=
useAtomValue
(
selectedAppIdAtom
);
const
appId
=
useAtomValue
(
selectedAppIdAtom
);
const
{
refreshVersions
}
=
useVersions
(
appId
);
const
{
refreshVersions
}
=
useVersions
(
appId
);
const
{
streamMessage
,
isStreaming
,
setIsStreaming
,
error
,
setError
}
=
const
{
streamMessage
,
isStreaming
,
setIsStreaming
,
error
,
setError
}
=
...
@@ -341,12 +341,7 @@ export function ChatInput({ chatId }: { chatId?: number }) {
...
@@ -341,12 +341,7 @@ export function ChatInput({ chatId }: { chatId?: number }) {
</
div
>
</
div
>
<
div
className=
"pl-2 pr-1 flex items-center justify-between"
>
<
div
className=
"pl-2 pr-1 flex items-center justify-between"
>
<
div
className=
"pb-2"
>
<
div
className=
"pb-2"
>
<
ModelPicker
<
ModelPicker
/>
selectedModel=
{
settings
.
selectedModel
}
onModelSelect=
{
(
model
)
=>
updateSettings
({
selectedModel
:
model
})
}
/>
</
div
>
</
div
>
<
button
<
button
onClick=
{
()
=>
setShowTokenBar
(
!
showTokenBar
)
}
onClick=
{
()
=>
setShowTokenBar
(
!
showTokenBar
)
}
...
...
src/components/chat/HomeChatInput.tsx
浏览文件 @
b45dff38
...
@@ -20,7 +20,7 @@ export function HomeChatInput({
...
@@ -20,7 +20,7 @@ export function HomeChatInput({
const
posthog
=
usePostHog
();
const
posthog
=
usePostHog
();
const
[
inputValue
,
setInputValue
]
=
useAtom
(
homeChatInputValueAtom
);
const
[
inputValue
,
setInputValue
]
=
useAtom
(
homeChatInputValueAtom
);
const
textareaRef
=
useRef
<
HTMLTextAreaElement
>
(
null
);
const
textareaRef
=
useRef
<
HTMLTextAreaElement
>
(
null
);
const
{
settings
,
updateSettings
}
=
useSettings
();
const
{
settings
}
=
useSettings
();
const
{
isStreaming
}
=
useStreamChat
({
const
{
isStreaming
}
=
useStreamChat
({
hasChatId
:
false
,
hasChatId
:
false
,
});
// eslint-disable-line @typescript-eslint/no-unused-vars
});
// eslint-disable-line @typescript-eslint/no-unused-vars
...
@@ -146,12 +146,7 @@ export function HomeChatInput({
...
@@ -146,12 +146,7 @@ export function HomeChatInput({
)
}
)
}
</
div
>
</
div
>
<
div
className=
"px-2 pb-2"
>
<
div
className=
"px-2 pb-2"
>
<
ModelPicker
<
ModelPicker
/>
selectedModel=
{
settings
.
selectedModel
}
onModelSelect=
{
(
model
)
=>
updateSettings
({
selectedModel
:
model
})
}
/>
</
div
>
</
div
>
</
div
>
</
div
>
</
div
>
</
div
>
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论