Files
cherry-studio/src/renderer/src/components/ModelSelectButton.tsx
T
icarus de9cb2fbdb feat(model-selection): add api model selection support for agents
- Introduce SelectAgentModelButton component for agent model selection
- Add SelectApiModelPopup for displaying and selecting API models
- Implement apiModelAdapter to convert API models to adapted format
- Add model filtering by agent type in agentSession utils
- Update model select components to use new API model selection
2025-09-26 04:04:23 +08:00

40 lines
1.1 KiB
TypeScript

import { Model } from '@renderer/types'
import { Button, Tooltip, TooltipProps } from 'antd'
import { useCallback, useMemo } from 'react'
import ModelAvatar from './Avatar/ModelAvatar'
import { SelectModelPopup } from './Popups/SelectModelPopup'
type Props = {
model: Model
onSelectModel: (model: Model) => void
modelFilter?: (model: Model) => boolean
noTooltip?: boolean
tooltipProps?: TooltipProps
}
const ModelSelectButton = ({ model, onSelectModel, modelFilter, noTooltip, tooltipProps }: Props) => {
const onClick = useCallback(async () => {
const selectedModel = await SelectModelPopup.show({ model, filter: modelFilter })
if (selectedModel) {
onSelectModel?.(selectedModel)
}
}, [model, modelFilter, onSelectModel])
const button = useMemo(() => {
return <Button icon={<ModelAvatar model={model} size={22} />} type="text" shape="circle" onClick={onClick} />
}, [model, onClick])
if (noTooltip) {
return button
} else {
return (
<Tooltip title={model.name} {...tooltipProps}>
{button}
</Tooltip>
)
}
}
export default ModelSelectButton