Unverified Commit 58ef52b4 authored by Yeuoly's avatar Yeuoly

feat: tool model authorization

parent 8672f98a
...@@ -15,6 +15,7 @@ from core.model_runtime.entities.model_entities import ModelType, ModelFeature ...@@ -15,6 +15,7 @@ from core.model_runtime.entities.model_entities import ModelType, ModelFeature
from core.entities.model_entities import ModelStatus from core.entities.model_entities import ModelStatus
from core.provider_manager import ProviderManager, ProviderConfiguration, ProviderModelBundle from core.provider_manager import ProviderManager, ProviderConfiguration, ProviderModelBundle
from core.model_manager import ModelInstance from core.model_manager import ModelInstance
from core.errors.error import ProviderTokenNotInitError
class ModelToolProviderConfiguration(BaseModel): class ModelToolProviderConfiguration(BaseModel):
""" """
...@@ -142,7 +143,10 @@ class ModelToolProviderController(ToolProviderController): ...@@ -142,7 +143,10 @@ class ModelToolProviderController(ToolProviderController):
model_type_instance=model_type_instance model_type_instance=model_type_instance
) )
model_instance = ModelInstance(provider_model_bundle, model.model) try:
model_instance = ModelInstance(provider_model_bundle, model.model)
except ProviderTokenNotInitError:
model_instance = None
tools.append(ModelTool( tools.append(ModelTool(
identity=ToolIdentity( identity=ToolIdentity(
......
...@@ -55,7 +55,7 @@ const Header: FC<Props> = ({ ...@@ -55,7 +55,7 @@ const Header: FC<Props> = ({
<div <div
className={cn('cursor-pointer', 'ml-1 shrink-0 flex items-center h-8 border border-gray-200 rounded-lg px-3 space-x-2 shadow-xs')} className={cn('cursor-pointer', 'ml-1 shrink-0 flex items-center h-8 border border-gray-200 rounded-lg px-3 space-x-2 shadow-xs')}
onClick={() => { onClick={() => {
if (collection.type === CollectionType.builtIn) if (collection.type === CollectionType.builtIn || collection.type === CollectionType.model)
onShowAuth() onShowAuth()
}} }}
> >
......
...@@ -8,6 +8,7 @@ import type { Collection, CustomCollectionBackend, Tool } from '../types' ...@@ -8,6 +8,7 @@ import type { Collection, CustomCollectionBackend, Tool } from '../types'
import Loading from '../../base/loading' import Loading from '../../base/loading'
import { ArrowNarrowRight } from '../../base/icons/src/vender/line/arrows' import { ArrowNarrowRight } from '../../base/icons/src/vender/line/arrows'
import Toast from '../../base/toast' import Toast from '../../base/toast'
import { ConfigurateMethodEnum } from '../../header/account-setting/model-provider-page/declarations'
import Header from './header' import Header from './header'
import Item from './item' import Item from './item'
import AppIcon from '@/app/components/base/app-icon' import AppIcon from '@/app/components/base/app-icon'
...@@ -16,6 +17,8 @@ import { fetchCustomCollection, removeBuiltInToolCredential, removeCustomCollect ...@@ -16,6 +17,8 @@ import { fetchCustomCollection, removeBuiltInToolCredential, removeCustomCollect
import EditCustomToolModal from '@/app/components/tools/edit-custom-collection-modal' import EditCustomToolModal from '@/app/components/tools/edit-custom-collection-modal'
import type { AgentTool } from '@/types/app' import type { AgentTool } from '@/types/app'
import { MAX_TOOLS_NUM } from '@/config' import { MAX_TOOLS_NUM } from '@/config'
import { useModalContext } from '@/context/modal-context'
import { useProviderContext } from '@/context/provider-context'
type Props = { type Props = {
collection: Collection | null collection: Collection | null
...@@ -45,7 +48,30 @@ const ToolList: FC<Props> = ({ ...@@ -45,7 +48,30 @@ const ToolList: FC<Props> = ({
const isModel = collection?.type === CollectionType.model const isModel = collection?.type === CollectionType.model
const needAuth = collection?.allow_delete || collection?.type === CollectionType.model const needAuth = collection?.allow_delete || collection?.type === CollectionType.model
const { setShowModelModal } = useModalContext()
const [showSettingAuth, setShowSettingAuth] = useState(false) const [showSettingAuth, setShowSettingAuth] = useState(false)
const { modelProviders: providers } = useProviderContext()
const showSettingAuthModal = () => {
if (isModel) {
const provider = providers.find(item => item.provider === collection?.id)
if (provider) {
setShowModelModal({
payload: {
currentProvider: provider,
currentConfigurateMethod: ConfigurateMethodEnum.predefinedModel,
currentCustomConfigrationModelFixedFields: undefined,
},
onSaveCallback: () => {
onRefreshData()
},
})
}
}
else {
setShowSettingAuth(true)
}
}
const [customCollection, setCustomCollection] = useState<CustomCollectionBackend | null>(null) const [customCollection, setCustomCollection] = useState<CustomCollectionBackend | null>(null)
useEffect(() => { useEffect(() => {
...@@ -114,7 +140,7 @@ const ToolList: FC<Props> = ({ ...@@ -114,7 +140,7 @@ const ToolList: FC<Props> = ({
icon={icon} icon={icon}
collection={collection} collection={collection}
loc={loc} loc={loc}
onShowAuth={() => setShowSettingAuth(true)} onShowAuth={() => showSettingAuthModal()}
onShowEditCustomCollection={() => setIsShowEditCustomCollectionModal(true)} onShowEditCustomCollection={() => setIsShowEditCustomCollectionModal(true)}
/> />
<div className={cn(isInToolsPage ? 'px-6 pt-4' : 'px-4 pt-3')}> <div className={cn(isInToolsPage ? 'px-6 pt-4' : 'px-4 pt-3')}>
...@@ -127,7 +153,7 @@ const ToolList: FC<Props> = ({ ...@@ -127,7 +153,7 @@ const ToolList: FC<Props> = ({
<div>·</div> <div>·</div>
<div <div
className='flex items-center text-[#155EEF] cursor-pointer' className='flex items-center text-[#155EEF] cursor-pointer'
onClick={() => setShowSettingAuth(true)} onClick={() => showSettingAuthModal()}
> >
<div>{t('tools.auth.setup')}</div> <div>{t('tools.auth.setup')}</div>
<ArrowNarrowRight className='ml-0.5 w-3 h-3' /> <ArrowNarrowRight className='ml-0.5 w-3 h-3' />
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment