diff --git a/.vscode/settings.json b/.vscode/settings.json index d60238c72..1409c1073 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,6 +5,7 @@ "AIbitat", "allm", "anythingllm", + "Apipie", "Astra", "Chartable", "cleancss", @@ -18,6 +19,7 @@ "elevenlabs", "Embeddable", "epub", + "fireworksai", "GROQ", "hljs", "huggingface", @@ -40,14 +42,13 @@ "pagerender", "Qdrant", "royalblue", - "searxng", "SearchApi", + "searxng", "Serper", "Serply", "streamable", "textgenwebui", "togetherai", - "fireworksai", "Unembed", "vectordbs", "Weaviate", diff --git a/docker/.env.example b/docker/.env.example index e67ac5ddd..55f3b2627 100644 --- a/docker/.env.example +++ b/docker/.env.example @@ -105,6 +105,10 @@ GID='1000' # FIREWORKS_AI_LLM_API_KEY='my-fireworks-ai-key' # FIREWORKS_AI_LLM_MODEL_PREF='accounts/fireworks/models/llama-v3p1-8b-instruct' +# LLM_PROVIDER='apipie' +# APIPIE_LLM_API_KEY='sk-123abc' +# APIPIE_LLM_MODEL_PREF='openrouter/llama-3.1-8b-instruct' + ########################################### ######## Embedding API SElECTION ########## ########################################### diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 18e9081d6..d9a51f17a 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -23,7 +23,6 @@ const WorkspaceChat = lazy(() => import("@/pages/WorkspaceChat")); const AdminUsers = lazy(() => import("@/pages/Admin/Users")); const AdminInvites = lazy(() => import("@/pages/Admin/Invitations")); const AdminWorkspaces = lazy(() => import("@/pages/Admin/Workspaces")); -const AdminSystem = lazy(() => import("@/pages/Admin/System")); const AdminLogs = lazy(() => import("@/pages/Admin/Logging")); const AdminAgents = lazy(() => import("@/pages/Admin/Agents")); const GeneralChats = lazy(() => import("@/pages/GeneralSettings/Chats")); @@ -172,10 +171,6 @@ export default function App() { path="/settings/workspace-chats" element={} /> - } - /> } diff --git a/frontend/src/components/LLMSelection/ApiPieOptions/index.jsx b/frontend/src/components/LLMSelection/ApiPieOptions/index.jsx new file mode 100644 index 000000000..9bb16ae3d --- /dev/null +++ b/frontend/src/components/LLMSelection/ApiPieOptions/index.jsx @@ -0,0 +1,101 @@ +import System from "@/models/system"; +import { useState, useEffect } from "react"; + +export default function ApiPieLLMOptions({ settings }) { + return ( +
+
+
+ + +
+ {!settings?.credentialsOnly && ( + + )} +
+
+ ); +} + +function APIPieModelSelection({ settings }) { + const [groupedModels, setGroupedModels] = useState({}); + const [loading, setLoading] = useState(true); + + useEffect(() => { + async function findCustomModels() { + setLoading(true); + const { models } = await System.customModels("apipie"); + if (models?.length > 0) { + const modelsByOrganization = models.reduce((acc, model) => { + acc[model.organization] = acc[model.organization] || []; + acc[model.organization].push(model); + return acc; + }, {}); + + setGroupedModels(modelsByOrganization); + } + + setLoading(false); + } + findCustomModels(); + }, []); + + if (loading || Object.keys(groupedModels).length === 0) { + return ( +
+ + +
+ ); + } + + return ( +
+ + +
+ ); +} diff --git a/frontend/src/components/Modals/ManageWorkspace/Documents/Directory/FileRow/index.jsx b/frontend/src/components/Modals/ManageWorkspace/Documents/Directory/FileRow/index.jsx index ea34b33a4..fc3546c17 100644 --- a/frontend/src/components/Modals/ManageWorkspace/Documents/Directory/FileRow/index.jsx +++ b/frontend/src/components/Modals/ManageWorkspace/Documents/Directory/FileRow/index.jsx @@ -31,7 +31,7 @@ export default function FileRow({ item, selected, toggleSelection }) { className="shrink-0 text-base font-bold w-4 h-4 mr-[3px]" weight="fill" /> -

+

{middleTruncate(item.title, 55)}

diff --git a/frontend/src/components/Modals/ManageWorkspace/Documents/Directory/FolderRow/index.jsx b/frontend/src/components/Modals/ManageWorkspace/Documents/Directory/FolderRow/index.jsx index bf1581e14..7e2dfffee 100644 --- a/frontend/src/components/Modals/ManageWorkspace/Documents/Directory/FolderRow/index.jsx +++ b/frontend/src/components/Modals/ManageWorkspace/Documents/Directory/FolderRow/index.jsx @@ -51,7 +51,7 @@ export default function FolderRow({ className="shrink-0 text-base font-bold w-4 h-4 mr-[3px]" weight="fill" /> -

+

{middleTruncate(item.name, 35)}

diff --git a/frontend/src/components/Modals/ManageWorkspace/Documents/WorkspaceDirectory/WorkspaceFileRow/index.jsx b/frontend/src/components/Modals/ManageWorkspace/Documents/WorkspaceDirectory/WorkspaceFileRow/index.jsx index cc267170b..505c4c22c 100644 --- a/frontend/src/components/Modals/ManageWorkspace/Documents/WorkspaceDirectory/WorkspaceFileRow/index.jsx +++ b/frontend/src/components/Modals/ManageWorkspace/Documents/WorkspaceDirectory/WorkspaceFileRow/index.jsx @@ -83,7 +83,7 @@ export default function WorkspaceFileRow({ className="shrink-0 text-base font-bold w-4 h-4 mr-[3px] ml-1" weight="fill" /> -

+

{middleTruncate(item.title, 50)}

diff --git a/frontend/src/components/SettingsButton/index.jsx b/frontend/src/components/SettingsButton/index.jsx index d4ecb259d..f79be1cd1 100644 --- a/frontend/src/components/SettingsButton/index.jsx +++ b/frontend/src/components/SettingsButton/index.jsx @@ -29,10 +29,8 @@ export default function SettingsButton() { return ( ( href: paths.settings.invites(), roles: ["admin", "manager"], }, - { - btnText: t("settings.system"), - href: paths.settings.system(), - roles: ["admin", "manager"], - }, ]} />