Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

knowledge.tsx 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import type { ActionItem, KnowledgeSearchResult } from './types'
  2. import type { DataSet } from '@/models/datasets'
  3. import { fetchDatasets } from '@/service/datasets'
  4. import { Folder } from '../../base/icons/src/vender/solid/files'
  5. import cn from '@/utils/classnames'
  6. const EXTERNAL_PROVIDER = 'external' as const
  7. const isExternalProvider = (provider: string): boolean => provider === EXTERNAL_PROVIDER
  8. const parser = (datasets: DataSet[]): KnowledgeSearchResult[] => {
  9. return datasets.map((dataset) => {
  10. const path = isExternalProvider(dataset.provider) ? `/datasets/${dataset.id}/hitTesting` : `/datasets/${dataset.id}/documents`
  11. return {
  12. id: dataset.id,
  13. title: dataset.name,
  14. description: dataset.description,
  15. type: 'knowledge' as const,
  16. path,
  17. icon: (
  18. <div className={cn(
  19. 'flex shrink-0 items-center justify-center rounded-md border-[0.5px] border-[#E0EAFF] bg-[#F5F8FF] p-2.5',
  20. !dataset.embedding_available && 'opacity-50 hover:opacity-100',
  21. )}>
  22. <Folder className='h-5 w-5 text-[#444CE7]' />
  23. </div>
  24. ),
  25. data: dataset,
  26. }
  27. })
  28. }
  29. export const knowledgeAction: ActionItem = {
  30. key: '@knowledge',
  31. shortcut: '@kb',
  32. title: 'Search Knowledge Bases',
  33. description: 'Search and navigate to your knowledge bases',
  34. // action,
  35. search: async (_, searchTerm = '', _locale) => {
  36. try {
  37. const response = await fetchDatasets({
  38. url: '/datasets',
  39. params: {
  40. page: 1,
  41. limit: 10,
  42. keyword: searchTerm,
  43. },
  44. })
  45. const datasets = response?.data || []
  46. return parser(datasets)
  47. }
  48. catch (error) {
  49. console.warn('Knowledge search failed:', error)
  50. return []
  51. }
  52. },
  53. }