🎉 feat: Code Interpreter API and Agents Release (#4860)

* feat: Code Interpreter API & File Search Agent Uploads

chore: add back code files

wip: first pass, abstract key dialog

refactor: influence checkbox on key changes

refactor: update localization keys for 'execute code' to 'run code'

wip: run code button

refactor: add throwError parameter to loadAuthValues and getUserPluginAuthValue functions

feat: first pass, API tool calling

fix: handle missing toolId in callTool function and return 404 for non-existent tools

feat: show code outputs

fix: improve error handling in callTool function and log errors

fix: handle potential null value for filepath in attachment destructuring

fix: normalize language before rendering and prevent null return

fix: add loading indicator in RunCode component while executing code

feat: add support for conditional code execution in Markdown components

feat: attachments

refactor: remove bash

fix: pass abort signal to graph/run

refactor: debounce and rate limit tool call

refactor: increase debounce delay for execute function

feat: set code output attachments

feat: image attachments

refactor: apply message context

refactor: pass `partIndex`

feat: toolCall schema/model/methods

feat: block indexing

feat: get tool calls

chore: imports

chore: typing

chore: condense type imports

feat: get tool calls

fix: block indexing

chore: typing

refactor: update tool calls mapping to support multiple results

fix: add unique key to nav link for rendering

wip: first pass, tool call results

refactor: update query cache from successful tool call mutation

style: improve result switcher styling

chore: note on using \`.toObject()\`

feat: add agent_id field to conversation schema

chore: typing

refactor: rename agentMap to agentsMap for consistency

feat: Agent Name as chat input placeholder

chore: bump agents

📦 chore: update @langchain dependencies to latest versions to match agents package

📦 chore: update @librechat/agents dependency to version 1.8.0

fix: Aborting agent stream removes sender; fix(bedrock): completion removes preset name label

refactor: remove direct file parameter to use req.file, add `processAgentFileUpload` for image uploads

feat: upload menu

feat: prime message_file resources

feat: implement conversation access validation in chat route

refactor: remove file parameter from processFileUpload and use req.file instead

feat: add savedMessageIds set to track saved message IDs in BaseClient, to prevent unnecessary double-write to db

feat: prevent duplicate message saves by checking savedMessageIds in AgentController

refactor: skip legacy RAG API handling for agents

feat: add files field to convoSchema

refactor: update request type annotations from Express.Request to ServerRequest in file processing functions

feat: track conversation files

fix: resendFiles, addPreviousAttachments handling

feat: add ID validation for session_id and file_id in download route

feat: entity_id for code file uploads/downloads

fix: code file edge cases

feat: delete related tool calls

feat: add stream rate handling for LLM configuration

feat: enhance system content with attached file information

fix: improve error logging in resource priming function

* WIP: PoC, sequential agents

WIP: PoC Sequential Agents, first pass content data + bump agents package

fix: package-lock

WIP: PoC, o1 support, refactor bufferString

feat: convertJsonSchemaToZod

fix: form issues and schema defining erroneous model

fix: max length issue on agent form instructions, limit conversation messages to sequential agents

feat: add abort signal support to createRun function and AgentClient

feat: PoC, hide prior sequential agent steps

fix: update parameter naming from config to metadata in event handlers for clarity, add model to usage data

refactor: use only last contentData, track model for usage data

chore: bump agents package

fix: content parts issue

refactor: filter contentParts to include tool calls and relevant indices

feat: show function calls

refactor: filter context messages to exclude tool calls when no tools are available to the agent

fix: ensure tool call content is not undefined in formatMessages

feat: add agent_id field to conversationPreset schema

feat: hide sequential agents

feat: increase upload toast duration to 10 seconds

* refactor: tool context handling & update Code API Key Dialog

feat: toolContextMap

chore: skipSpecs -> useSpecs

ci: fix handleTools tests

feat: API Key Dialog

* feat: Agent Permissions Admin Controls

feat: replace label with button for prompt permission toggle

feat: update agent permissions

feat: enable experimental agents and streamline capability configuration

feat: implement access control for agents and enhance endpoint menu items

feat: add welcome message for agent selection in localization

feat: add agents permission to access control and update version to 0.7.57

* fix: update types in useAssistantListMap and useMentions hooks for better null handling

* feat: mention agents

* fix: agent tool resource race conditions when deleting agent tool resource files

* feat: add error handling for code execution with user feedback

* refactor: rename AdminControls to AdminSettings for clarity

* style: add gap to button in AdminSettings for improved layout

* refactor: separate agent query hooks and check access to enable fetching

* fix: remove unused provider from agent initialization options, creates issue with custom endpoints

* refactor: remove redundant/deprecated modelOptions from AgentClient processes

* chore: update @librechat/agents to version 1.8.5 in package.json and package-lock.json

* fix: minor styling issues + agent panel uniformity

* fix: agent edge cases when set endpoint is no longer defined

* refactor: remove unused cleanup function call from AppService

* fix: update link in ApiKeyDialog to point to pricing page

* fix: improve type handling and layout calculations in SidePanel component

* fix: add missing localization string for agent selection in SidePanel

* chore: form styling and localizations for upload filesearch/code interpreter

* fix: model selection placeholder logic in AgentConfig component

* style: agent capabilities

* fix: add localization for provider selection and improve dropdown styling in ModelPanel

* refactor: use gpt-4o-mini > gpt-3.5-turbo

* fix: agents configuration for loadDefaultInterface and update related tests

* feat: DALLE Agents support
This commit is contained in:
Danny Avila 2024-12-04 15:48:13 -05:00 committed by GitHub
parent affcebd48c
commit 1a815f5e19
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
189 changed files with 5056 additions and 1815 deletions

View file

@ -528,7 +528,7 @@ export default {
com_endpoint_preset_default_item: 'الافتراضي:',
com_endpoint_preset_default_none: 'لا يوجد إعداد مسبق افتراضي نشط.',
com_endpoint_preset_title: 'إعداد مسبق',
com_endpoint_preset_saved: 'تم الحفظ!',
com_ui_saved: 'تم الحفظ!',
com_endpoint_preset_default: 'أصبح الإعداد المسبق الافتراضي الآن.',
com_endpoint_preset_selected: 'الإعداد المسبق نشط!',
com_endpoint_preset_selected_title: 'مُحدَّد!',
@ -644,7 +644,7 @@ export default {
com_agents_file_search_info:
'عند التمكين، سيتم إعلام الوكيل بأسماء الملفات المدرجة أدناه بالضبط، مما يتيح له استرجاع السياق ذي الصلة من هذه الملفات.',
com_ui_agent_already_shared_to_all: 'هذا المساعد مشارك بالفعل مع جميع المستخدمين',
com_agents_execute_code: 'تنفيذ الشفرة',
com_ui_run_code: 'تنفيذ الشفرة',
com_ui_no_changes: 'لا توجد تغييرات للتحديث',
com_ui_agent_editing_allowed: 'يمكن للمستخدمين الآخرين تعديل هذا الوكيل بالفعل',
com_ui_error_connection: 'خطأ في الاتصال بالخادم، حاول تحديث الصفحة.',

View file

@ -548,7 +548,7 @@ export default {
com_endpoint_preset_default_item: 'Padrão:',
com_endpoint_preset_default_none: 'Nenhum preset padrão ativo.',
com_endpoint_preset_title: 'Preset',
com_endpoint_preset_saved: 'Salvo!',
com_ui_saved: 'Salvo!',
com_endpoint_preset_default: 'é agora o preset padrão.',
com_endpoint_preset: 'preset',
com_endpoint_presets: 'presets',

View file

@ -509,7 +509,7 @@ export default {
com_endpoint_preset_default_item: 'Standard:',
com_endpoint_preset_default_none: 'Keine Standardvoreinstellung aktiv.',
com_endpoint_preset_title: 'Voreinstellung',
com_endpoint_preset_saved: 'Gespeichert!',
com_ui_saved: 'Gespeichert!',
com_endpoint_preset_default: 'ist jetzt die Standardvoreinstellung.',
com_endpoint_preset: 'Voreinstellung',
com_endpoint_presets: 'Voreinstellungen',
@ -801,7 +801,7 @@ export default {
com_ui_endpoint: 'Endpunkt',
com_ui_region: 'Region',
com_ui_model_parameters: 'Modell-Parameter',
com_agents_execute_code: 'Code ausführen',
com_ui_run_code: 'Code ausführen',
com_ui_provider: 'Anbieter',
com_ui_model_save_success: 'Modellparameter erfolgreich gespeichert',
com_ui_select_region: 'Wähle eine Region',

View file

@ -3,6 +3,10 @@
// file deepcode ignore HardcodedNonCryptoSecret: No hardcoded secrets present in this file
export default {
com_ui_enter_api_key: 'Enter API Key',
com_ui_librechat_code_api_title: 'Run AI Code',
com_ui_librechat_code_api_subtitle: 'Secure. Multi-language. Input/Output Files.',
com_ui_librechat_code_api_key: 'Get your LibreChat Code Interpreter API key',
com_nav_convo_menu_options: 'Conversation Menu Options',
com_ui_artifacts: 'Artifacts',
com_ui_artifacts_toggle: 'Toggle Artifacts UI',
@ -102,6 +106,7 @@ export default {
com_agents_description_placeholder: 'Optional: Describe your Agent here',
com_agents_instructions_placeholder: 'The system instructions that the agent uses',
com_agents_search_name: 'Search agents by name',
com_sidepanel_select_agent: 'Select an Agent',
com_agents_update_error: 'There was an error updating your agent.',
com_agents_create_error: 'There was an error creating your agent.',
com_agents_missing_provider_model: 'Please select a provider and model before creating an agent.',
@ -111,8 +116,11 @@ export default {
com_agents_enable_file_search: 'Enable File Search',
com_agents_file_search_info:
'When enabled, the agent will be informed of the exact filenames listed below, allowing it to retrieve relevant context from these files.',
com_agents_code_interpreter_title: 'Code Interpreter',
com_agents_by_librechat: 'by LibreChat',
com_agents_code_interpreter:
'When enabled, allows your agent to leverage the LibreChat Code Interpreter API to run generated code, including file processing, securely. Requires a valid API key.',
com_agents_file_search_disabled: 'Agent must be created before uploading files for File Search.',
com_agents_execute_code: 'Run Code',
com_ui_agent_already_shared_to_all: 'This agent is already shared to all users',
com_ui_agent_editing_allowed: 'Other users can already edit this agent',
com_ui_no_changes: 'No changes to update',
@ -177,6 +185,7 @@ export default {
com_ui_select_provider: 'Select a provider',
com_ui_select_provider_first: 'Select a provider first',
com_ui_select_search_model: 'Search model by name',
com_ui_select_search_provider: 'Search provider by name',
com_ui_select_search_region: 'Search region by name',
com_ui_select_search_plugin: 'Search plugin by name',
com_ui_use_prompt: 'Use prompt',
@ -184,6 +193,9 @@ export default {
com_ui_next: 'Next',
com_ui_stop: 'Stop',
com_ui_upload_files: 'Upload files',
com_ui_upload_image_input: 'Upload Image',
com_ui_upload_file_search: 'Upload for File Search',
com_ui_upload_code_files: 'Upload for Code Interpreter',
com_ui_prompt: 'Prompt',
com_ui_prompts: 'Prompts',
com_ui_prompt_name: 'Prompt Name',
@ -236,6 +248,8 @@ export default {
com_ui_read_aloud: 'Read aloud',
com_ui_copied: 'Copied!',
com_ui_copy_code: 'Copy code',
com_ui_run_code: 'Run Code',
com_ui_run_code_error: 'There was an error running the code',
com_ui_copy_to_clipboard: 'Copy to clipboard',
com_ui_copied_to_clipboard: 'Copied to clipboard',
com_ui_fork: 'Fork',
@ -331,6 +345,9 @@ export default {
com_ui_prompts_allow_share_global: 'Allow sharing Prompts to all users',
com_ui_prompt_shared_to_all: 'This prompt is shared to all users',
com_ui_prompt_update_error: 'There was an error updating the prompt',
com_ui_agents_allow_share_global: 'Allow sharing Agents to all users',
com_ui_agents_allow_use: 'Allow using Agents',
com_ui_agents_allow_create: 'Allow creating Agents',
com_ui_prompt_already_shared_to_all: 'This prompt is already shared to all users',
com_ui_description_placeholder: 'Optional: Enter a description to display for the prompt',
com_ui_command_placeholder: 'Optional: Enter a command for the prompt or name will be used.',
@ -574,7 +591,7 @@ export default {
com_endpoint_preset_default_item: 'Default:',
com_endpoint_preset_default_none: 'No default preset active.',
com_endpoint_preset_title: 'Preset',
com_endpoint_preset_saved: 'Saved!',
com_ui_saved: 'Saved!',
com_endpoint_preset_default: 'is now the default preset.',
com_endpoint_preset: 'preset',
com_endpoint_presets: 'presets',
@ -610,6 +627,7 @@ export default {
com_endpoint_skip_hover:
'Enable skipping the completion step, which reviews the final answer and generated steps',
com_endpoint_config_key: 'Set API Key',
com_endpoint_agent_placeholder: 'Please select an Agent',
com_endpoint_assistant_placeholder: 'Please select an Assistant from the right-hand Side Panel',
com_endpoint_config_placeholder: 'Set your Key in the Header menu to chat.',
com_endpoint_config_key_for: 'Set API Key for',
@ -651,6 +669,7 @@ export default {
com_nav_font_size_lg: 'Large',
com_nav_font_size_xl: 'Extra Large',
com_nav_welcome_assistant: 'Please Select an Assistant',
com_nav_welcome_agent: 'Please Select an Agent',
com_nav_welcome_message: 'How can I help you today?',
com_nav_auto_scroll: 'Auto-Scroll to latest message on chat open',
com_nav_user_msg_markdown: 'Render user messages as markdown',

View file

@ -350,7 +350,7 @@ export default {
com_endpoint_preset_default_item: 'Predeterminado:',
com_endpoint_preset_default_none: 'No hay configuración preestablecida predeterminada activa.',
com_endpoint_preset_title: 'Configuración preestablecida',
com_endpoint_preset_saved: '¡Guardado!',
com_ui_saved: '¡Guardado!',
com_endpoint_preset_default: 'es ahora la configuración preestablecida predeterminada.',
com_endpoint_preset: 'configuración preestablecida',
com_endpoint_presets: 'configuraciones preestablecidas',
@ -716,7 +716,7 @@ export default {
com_agents_file_search_disabled:
'Es necesario crear el Agente antes de subir archivos para la Búsqueda de Archivos.',
com_agents_execute_code: 'Ejecutar código',
com_ui_run_code: 'Ejecutar código',
com_ui_agent_already_shared_to_all: 'Este asistente ya está compartido con todos los usuarios',

View file

@ -489,7 +489,7 @@ export default {
com_endpoint_preset_default_item: 'Oletus:',
com_endpoint_preset_default_none: 'Oletus-esiasetusta ei ole käytössä',
com_endpoint_preset_title: 'Esiasetus',
com_endpoint_preset_saved: 'Tallennettu!',
com_ui_saved: 'Tallennettu!',
com_endpoint_preset_default: 'on nyt oletus-esiasetus.',
com_endpoint_preset: 'esiasetus',
com_endpoint_presets: 'esiasetukset',

View file

@ -257,7 +257,7 @@ export default {
com_endpoint_preset_default_item: 'Par défaut :',
com_endpoint_preset_default_none: 'Aucun préréglage par défaut actif.',
com_endpoint_preset_title: 'Préréglage',
com_endpoint_preset_saved: 'Enregistré!',
com_ui_saved: 'Enregistré!',
com_endpoint_preset_default: 'est maintenant le préréglage par défaut.',
com_endpoint_preset: 'préréglage',
com_endpoint_presets: 'préréglages',
@ -794,7 +794,7 @@ export default {
com_agents_enable_file_search: 'Activer la recherche de fichiers',
com_agents_file_search_info:
'Lorsque cette option est activée, l\'agent sera informé des noms exacts des fichiers listés ci-dessous, lui permettant d\'extraire le contexte pertinent de ces fichiers.',
com_agents_execute_code: 'Exécuter le code',
com_ui_run_code: 'Exécuter le code',
com_agents_file_search_disabled:
'L\'agent doit être créé avant de pouvoir télécharger des fichiers pour la Recherche de Fichiers.',
com_ui_agent_already_shared_to_all: 'Cet agent est déjà partagé avec tous les utilisateurs',

View file

@ -283,7 +283,7 @@ export default {
com_endpoint_preset_default_item: 'ברירת מחדל:',
com_endpoint_preset_default_none: 'אין ברירת מחדל פעילה.',
com_endpoint_preset_title: 'הגדרה מראש',
com_endpoint_preset_saved: 'שמור!',
com_ui_saved: 'שמור!',
com_endpoint_preset_default: 'הוא כעת ברירת המחדל המוגדרת מראש.',
com_endpoint_preset: 'preset',
com_endpoint_presets: 'presets',

View file

@ -248,7 +248,7 @@ export default {
com_endpoint_preset_default_item: 'Default:',
com_endpoint_preset_default_none: 'Tidak ada preset default yang aktif.',
com_endpoint_preset_title: 'Preset',
com_endpoint_preset_saved: 'Tersimpan!',
com_ui_saved: 'Tersimpan!',
com_endpoint_preset_default: 'sekarang menjadi preset default.',
com_endpoint_preset: 'preset',
com_endpoint_presets: 'presets',

View file

@ -402,7 +402,7 @@ export default {
com_endpoint_preset_default_item: 'Predefinita:',
com_endpoint_preset_default_none: 'Nessuna preimpostazione predefinita attiva.',
com_endpoint_preset_title: 'Preimpostazione',
com_endpoint_preset_saved: 'Salvata!',
com_ui_saved: 'Salvata!',
com_endpoint_preset_default: 'è ora la preimpostazione predefinita.',
com_endpoint_preset: 'preimpostazione',
com_endpoint_presets: 'preimpostazioni',
@ -676,7 +676,7 @@ export default {
com_agents_enable_file_search: 'Abilita Ricerca File',
com_agents_file_search_info:
'Quando abilitato, l\'agente verrà informato dei nomi esatti dei file elencati di seguito, permettendogli di recuperare il contesto pertinente da questi file.',
com_agents_execute_code: 'Esegui Codice',
com_ui_run_code: 'Esegui Codice',
com_agents_file_search_disabled:
'L\'Agente deve essere creato prima di caricare file per la Ricerca File.',
com_ui_agent_already_shared_to_all: 'Questo assistente è già condiviso con tutti gli utenti',

View file

@ -541,7 +541,7 @@ export default {
com_endpoint_preset_default_item: 'デフォルト:',
com_endpoint_preset_default_none: '現在有効なプリセットはありません。',
com_endpoint_preset_title: 'プリセット',
com_endpoint_preset_saved: '保存しました!',
com_ui_saved: '保存しました!',
com_endpoint_preset_default: 'が有効化されました。',
com_endpoint_preset: 'プリセット',
com_endpoint_presets: 'プリセット',
@ -834,7 +834,7 @@ export default {
'ファイル検索用のファイルをアップロードする前に、エージェントを作成する必要があります。',
com_agents_file_search_info:
'有効にすると、エージェントは以下に表示されているファイル名を正確に認識し、それらのファイルから関連する情報を取得することができます。',
com_agents_execute_code: 'コードを実行',
com_ui_run_code: 'コードを実行',
com_ui_agent_editing_allowed: 'このエージェントは他のユーザーが既に編集可能です',
com_ui_agent_already_shared_to_all: 'このアシスタントは既に全ユーザーに共有されています',
com_ui_no_changes: '更新する変更はありません',

View file

@ -859,7 +859,7 @@ export default {
com_endpoint_preset_default_item: '기본값:',
com_endpoint_preset_default_none: '기본 프리셋이 설정되지 않았습니다.',
com_endpoint_preset_title: '프리셋',
com_endpoint_preset_saved: '저장되었습니다!',
com_ui_saved: '저장되었습니다!',
com_endpoint_preset_default: '이제 기본 프리셋입니다.',
com_endpoint_preset_selected: '프리셋 활성화됨',
com_endpoint_preset_selected_title: '활성화됨',
@ -1020,7 +1020,7 @@ export default {
com_agents_file_search_disabled:
'파일 검색을 위해 파일을 업로드하기 전에 에이전트를 먼저 생성해야 합니다',
com_agents_execute_code: '코드 실행',
com_ui_run_code: '코드 실행',
com_ui_agent_already_shared_to_all: '이 에이전트는 이미 모든 사용자와 공유되어 있습니다',

View file

@ -251,7 +251,7 @@ export default {
com_endpoint_preset_default_item: 'По умолчанию:',
com_endpoint_preset_default_none: 'Активных пресетов по умолчанию нет.',
com_endpoint_preset_title: 'Пресет',
com_endpoint_preset_saved: 'Сохранено!',
com_ui_saved: 'Сохранено!',
com_endpoint_preset_default: 'теперь пресет "По умолчаанию".',
com_endpoint_preset: 'пресет',
com_endpoint_presets: 'пресеты',
@ -699,7 +699,7 @@ export default {
com_agents_file_search_disabled: 'Для загрузки файлов в Поиск необходимо сначала создать агента',
com_agents_execute_code: 'Выполнить код',
com_ui_run_code: 'Выполнить код',
com_ui_agent_editing_allowed: 'Другие пользователи уже могут редактировать этого ассистента',

View file

@ -450,7 +450,7 @@ export default {
com_endpoint_preset_default_item: 'Varsayılan:',
com_endpoint_preset_default_none: 'Aktif varsayılan hazır ayar yok.',
com_endpoint_preset_title: 'Hazır Ayar',
com_endpoint_preset_saved: 'Kaydedildi!',
com_ui_saved: 'Kaydedildi!',
com_endpoint_preset_default: 'şu anda varsayılan hazır ayar.',
com_endpoint_preset: 'hazır ayar',
com_endpoint_presets: 'hazır ayarlar',

View file

@ -514,7 +514,7 @@ export default {
com_endpoint_preset_default_item: '默认:',
com_endpoint_preset_default_none: '无默认预设可用。',
com_endpoint_preset_title: '预设',
com_endpoint_preset_saved: '保存成功!',
com_ui_saved: '保存成功!',
com_endpoint_preset_default: '现在是默认预设。',
com_endpoint_preset: '预设',
com_endpoint_presets: '预设',
@ -806,7 +806,7 @@ export default {
com_agents_file_search_info:
'启用后系统会告知Agent以下列出的具体文件名使其能够从这些文件中检索相关内容。',
com_agents_execute_code: '运行代码',
com_ui_run_code: '运行代码',
com_agents_file_search_disabled: '必须先创建Agent才能上传文件用于文件搜索。',

View file

@ -502,7 +502,7 @@ export default {
com_endpoint_preset_default_item: '預設值',
com_endpoint_preset_default_none: '無啟用的預設設定。',
com_endpoint_preset_title: '預設項目',
com_endpoint_preset_saved: '已儲存!',
com_ui_saved: '已儲存!',
com_endpoint_preset_default: '現在是預設的預設設定。',
com_endpoint_preset_selected: '已選擇預設設定!',
com_endpoint_preset_selected_title: '已選取!',
@ -612,7 +612,7 @@ export default {
com_agents_missing_provider_model: '請在建立代理前選擇供應商和模型。',
com_agents_enable_file_search: '啟用檔案搜尋',
com_agents_file_search_disabled: '必須先建立代理才能上傳檔案進行檔案搜尋。',
com_agents_execute_code: '執行程式碼',
com_ui_run_code: '執行程式碼',
com_agents_no_access: '您沒有權限編輯此助理',
com_ui_no_changes: '沒有需要更新的變更',
com_ui_agent_already_shared_to_all: '此助理已與所有使用者共享',