mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-20 02:10:15 +01:00
- Separated Azure Assistants to its own endpoint - File Search / Vector Store integration is incomplete, but can toggle and use storage from playground - Code Interpreter resource files can be added but not deleted - GPT-4o is supported - Many improvements to the Assistants Endpoint overall data-provider v2 changes copy existing route as v1 chore: rename new endpoint to reduce comparison operations and add new azure filesource api: add azureAssistants part 1 force use of version for assistants/assistantsAzure chore: switch name back to azureAssistants refactor type version: string | number Ensure assistants endpoints have version set fix: isArchived type issue in ConversationListParams refactor: update assistants mutations/queries with endpoint/version definitions, update Assistants Map structure chore: FilePreview component ExtendedFile type assertion feat: isAssistantsEndpoint helper chore: remove unused useGenerations chore(buildTree): type issue chore(Advanced): type issue (unused component, maybe in future) first pass for multi-assistant endpoint rewrite fix(listAssistants): pass params correctly feat: list separate assistants by endpoint fix(useTextarea): access assistantMap correctly fix: assistant endpoint switching, resetting ID fix: broken during rewrite, selecting assistant mention fix: set/invalidate assistants endpoint query data correctly feat: Fix issue with assistant ID not being reset correctly getOpenAIClient helper function feat: add toast for assistant deletion fix: assistants delete right after create issue for azure fix: assistant patching refactor: actions to use getOpenAIClient refactor: consolidate logic into helpers file fix: issue where conversation data was not initially available v1 chat support refactor(spendTokens): only early return if completionTokens isNaN fix(OpenAIClient): ensure spendTokens has all necessary params refactor: route/controller logic fix(assistants/initializeClient): use defaultHeaders field fix: sanitize default operation id chore: bump openai package first pass v2 action service feat: retroactive domain parsing for actions added via v1 feat: delete db records of actions/assistants on openai assistant deletion chore: remove vision tools from v2 assistants feat: v2 upload and delete assistant vision images WIP first pass, thread attachments fix: show assistant vision files (save local/firebase copy) v2 image continue fix: annotations fix: refine annotations show analyze as error if is no longer submitting before progress reaches 1 and show file_search as retrieval tool fix: abort run, undefined endpoint issue refactor: consolidate capabilities logic and anticipate versioning frontend version 2 changes fix: query selection and filter add endpoint to unknown filepath add file ids to resource, deleting in progress enable/disable file search remove version log
87 lines
2.6 KiB
TypeScript
87 lines
2.6 KiB
TypeScript
import { EModelEndpoint } from 'librechat-data-provider';
|
|
import UnknownIcon from '~/components/Chat/Menus/Endpoints/UnknownIcon';
|
|
import {
|
|
AzureMinimalIcon,
|
|
OpenAIMinimalIcon,
|
|
LightningIcon,
|
|
MinimalPlugin,
|
|
BingAIMinimalIcon,
|
|
GoogleMinimalIcon,
|
|
CustomMinimalIcon,
|
|
AnthropicIcon,
|
|
Sparkles,
|
|
} from '~/components/svg';
|
|
import { cn } from '~/utils';
|
|
import { IconProps } from '~/common';
|
|
|
|
const MinimalIcon: React.FC<IconProps> = (props) => {
|
|
const { size = 30, error } = props;
|
|
|
|
let endpoint = 'default'; // Default value for endpoint
|
|
|
|
if (typeof props.endpoint === 'string') {
|
|
endpoint = props.endpoint;
|
|
}
|
|
|
|
const endpointIcons = {
|
|
[EModelEndpoint.azureOpenAI]: {
|
|
icon: <AzureMinimalIcon />,
|
|
name: props.chatGptLabel || 'ChatGPT',
|
|
},
|
|
[EModelEndpoint.openAI]: { icon: <OpenAIMinimalIcon />, name: props.chatGptLabel || 'ChatGPT' },
|
|
[EModelEndpoint.gptPlugins]: { icon: <MinimalPlugin />, name: 'Plugins' },
|
|
[EModelEndpoint.google]: { icon: <GoogleMinimalIcon />, name: props.modelLabel || 'Google' },
|
|
[EModelEndpoint.anthropic]: {
|
|
icon: <AnthropicIcon className="icon-md shrink-0 dark:text-white" />,
|
|
name: props.modelLabel || 'Claude',
|
|
},
|
|
[EModelEndpoint.custom]: {
|
|
icon: <CustomMinimalIcon />,
|
|
name: 'Custom',
|
|
},
|
|
[EModelEndpoint.bingAI]: { icon: <BingAIMinimalIcon />, name: 'BingAI' },
|
|
[EModelEndpoint.chatGPTBrowser]: { icon: <LightningIcon />, name: 'ChatGPT' },
|
|
[EModelEndpoint.assistants]: { icon: <Sparkles className="icon-sm" />, name: 'Assistant' },
|
|
[EModelEndpoint.azureAssistants]: { icon: <Sparkles className="icon-sm" />, name: 'Assistant' },
|
|
default: {
|
|
icon: (
|
|
<UnknownIcon
|
|
iconURL={props.iconURL}
|
|
endpoint={endpoint}
|
|
className="icon-sm"
|
|
context="nav"
|
|
/>
|
|
),
|
|
name: endpoint,
|
|
},
|
|
};
|
|
|
|
let { icon, name } = endpointIcons[endpoint] ?? endpointIcons.default;
|
|
if (props.iconURL && endpointIcons[props.iconURL]) {
|
|
({ icon, name } = endpointIcons[props.iconURL]);
|
|
}
|
|
|
|
return (
|
|
<div
|
|
data-testid="convo-icon"
|
|
title={name}
|
|
style={{
|
|
width: size,
|
|
height: size,
|
|
}}
|
|
className={cn(
|
|
'relative flex items-center justify-center rounded-sm text-black dark:text-white',
|
|
props.className || '',
|
|
)}
|
|
>
|
|
{icon}
|
|
{error && (
|
|
<span className="absolute right-0 top-[20px] -mr-2 flex h-4 w-4 items-center justify-center rounded-full border border-white bg-red-500 text-[10px] text-black dark:text-white">
|
|
!
|
|
</span>
|
|
)}
|
|
</div>
|
|
);
|
|
};
|
|
|
|
export default MinimalIcon;
|