Safetensors
GGUF
Turkish
llama
Llama-3
instruct
finetune
chatml
gpt4
synthetic data
distillation
function calling
json mode
axolotl
roleplaying
chat
Instructions to use tda45/TdAI with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- llama-cpp-python
How to use tda45/TdAI with llama-cpp-python:
# !pip install llama-cpp-python from llama_cpp import Llama llm = Llama.from_pretrained( repo_id="tda45/TdAI", filename="llama.cpp/models/ggml-vocab-aquila.gguf", )
output = llm( "Once upon a time,", max_tokens=512, echo=True ) print(output)
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use tda45/TdAI with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf tda45/TdAI # Run inference directly in the terminal: llama cli -hf tda45/TdAI
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf tda45/TdAI # Run inference directly in the terminal: llama cli -hf tda45/TdAI
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf tda45/TdAI # Run inference directly in the terminal: ./llama-cli -hf tda45/TdAI
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf tda45/TdAI # Run inference directly in the terminal: ./build/bin/llama-cli -hf tda45/TdAI
Use Docker
docker model run hf.co/tda45/TdAI
- LM Studio
- Jan
- Ollama
How to use tda45/TdAI with Ollama:
ollama run hf.co/tda45/TdAI
- Unsloth Studio
How to use tda45/TdAI with Unsloth Studio:
Install Unsloth Studio (macOS, Linux, WSL)
curl -fsSL https://unsloth.ai/install.sh | sh # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for tda45/TdAI to start chatting
Install Unsloth Studio (Windows)
irm https://unsloth.ai/install.ps1 | iex # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for tda45/TdAI to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for tda45/TdAI to start chatting
- Atomic Chat new
- Docker Model Runner
How to use tda45/TdAI with Docker Model Runner:
docker model run hf.co/tda45/TdAI
- Lemonade
How to use tda45/TdAI with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull tda45/TdAI
Run and chat with the model
lemonade run user.TdAI-{{QUANT_TAG}}List all available models
lemonade list
| <script lang="ts"> | |
| import '../app.css'; | |
| import { base } from '$app/paths'; | |
| import { browser } from '$app/environment'; | |
| import { goto } from '$app/navigation'; | |
| import { page } from '$app/state'; | |
| import { untrack } from 'svelte'; | |
| import { onMount } from 'svelte'; | |
| import { SidebarNavigation, DialogConversationTitleUpdate } from '$lib/components/app'; | |
| import { DialogMcpServerRecommendations } from '$lib/components/app/dialogs'; | |
| import { PwaMetaTags, PwaRefreshAlert } from '$lib/components/pwa'; | |
| import { pwaAssetsHead } from 'virtual:pwa-assets/head'; | |
| import { chatStore } from '$lib/stores/chat.svelte'; | |
| import { conversationsStore } from '$lib/stores/conversations.svelte'; | |
| import * as Tooltip from '$lib/components/ui/tooltip'; | |
| import { isRouterMode, serverStore } from '$lib/stores/server.svelte'; | |
| import { config, settingsStore } from '$lib/stores/settings.svelte'; | |
| import { ModeWatcher } from 'mode-watcher'; | |
| import { ROUTES } from '$lib/constants/routes'; | |
| import { RouterService } from '$lib/services/router.service'; | |
| import { Toaster } from 'svelte-sonner'; | |
| import { modelsStore } from '$lib/stores/models.svelte'; | |
| import { mcpStore } from '$lib/stores/mcp.svelte'; | |
| import { TOOLTIP_DELAY_DURATION } from '$lib/constants'; | |
| import { FAVICON_PATHS, FAVICON_SELECTORS } from '$lib/constants/pwa'; | |
| import { useKeyboardShortcuts } from '$lib/hooks/use-keyboard-shortcuts.svelte'; | |
| import { usePwa } from '$lib/hooks/use-pwa.svelte'; | |
| import { useMcpRecommendations } from '$lib/hooks/use-mcp-recommendations.svelte'; | |
| import { conversations } from '$lib/stores/conversations.svelte'; | |
| import { isMobile } from '$lib/stores/viewport.svelte'; | |
| import { theme } from '$lib/stores/theme.svelte'; | |
| import { buildInfoStore } from '$lib/stores/build-info.svelte'; | |
| import { SETTINGS_KEYS } from '$lib/constants'; | |
| let { children } = $props(); | |
| let innerHeight = $state<number | undefined>(); | |
| let innerWidth = $state(browser ? window.innerWidth : 0); | |
| const mcpRecommendations = useMcpRecommendations(); | |
| let chatSidebar: | |
| | { | |
| activateSearchMode?: () => void; | |
| editActiveConversation?: () => void; | |
| } | |
| | undefined = $state(); | |
| let showBuildVersion = $derived(config()[SETTINGS_KEYS.SHOW_BUILD_VERSION] as boolean); | |
| let titleUpdateDialogOpen = $state(false); | |
| let titleUpdateCurrentTitle = $state(''); | |
| let titleUpdateNewTitle = $state(''); | |
| let titleUpdateResolve: ((value: boolean) => void) | null = null; | |
| // Keep the hook object intact: destructuring needRefreshByStorage reads the getter once and freezes it | |
| const pwa = usePwa(); | |
| const { needRefresh, updateServiceWorker } = pwa; | |
| function updateFavicon() { | |
| const dark = theme.isSystemDark; | |
| let icoLink = document.querySelector(FAVICON_SELECTORS.ICO_48X48) as HTMLLinkElement | null; | |
| if (icoLink) { | |
| icoLink.href = dark ? FAVICON_PATHS.ICO_DARK : FAVICON_PATHS.ICO_LIGHT; | |
| } | |
| let svgLink = document.querySelector(FAVICON_SELECTORS.SVG_ANY) as HTMLLinkElement | null; | |
| if (svgLink) { | |
| svgLink.href = dark ? FAVICON_PATHS.SVG_DARK : FAVICON_PATHS.SVG_LIGHT; | |
| } | |
| } | |
| function navigateToConversation(direction: -1 | 1) { | |
| const allConvs = conversations(); | |
| if (allConvs.length === 0) return; | |
| const currentId = page.params.id; | |
| if (!currentId) { | |
| goto(RouterService.chat(allConvs[direction === 1 ? 0 : allConvs.length - 1].id)); | |
| return; | |
| } | |
| const idx = allConvs.findIndex((c) => c.id === currentId); | |
| if (idx === -1) return; | |
| const targetIdx = idx + direction; | |
| if (targetIdx >= 0 && targetIdx < allConvs.length) { | |
| goto(RouterService.chat(allConvs[targetIdx].id)); | |
| } else { | |
| goto(ROUTES.NEW_CHAT); | |
| } | |
| } | |
| // Global keyboard shortcuts | |
| const { handleKeydown } = useKeyboardShortcuts({ | |
| editActiveConversation: () => chatSidebar?.editActiveConversation?.(), | |
| navigateToPrevConversation: () => navigateToConversation(-1), | |
| navigateToNextConversation: () => navigateToConversation(1) | |
| }); | |
| function checkApiKey() { | |
| const apiKey = config().apiKey; | |
| // No API key configured — server doesn't require auth, no need to validate. | |
| // This mirrors the early return in validateApiKey() to avoid redundant /props requests. | |
| if (!apiKey || apiKey.trim() === '') { | |
| return; | |
| } | |
| untrack(() => { | |
| if ( | |
| (page.route.id === '/(chat)' || page.route.id === '/(chat)/chat/[id]') && | |
| page.status !== 401 && | |
| page.status !== 403 | |
| ) { | |
| const headers: Record<string, string> = { | |
| 'Content-Type': 'application/json', | |
| Authorization: `Bearer ${apiKey.trim()}` | |
| }; | |
| fetch(`${base}/props`, { headers }) | |
| .then((response) => { | |
| if (response.status === 401 || response.status === 403) { | |
| window.location.reload(); | |
| } | |
| }) | |
| .catch((e) => { | |
| console.error('Error checking API key:', e); | |
| }); | |
| } | |
| }); | |
| } | |
| function handleTitleUpdateCancel() { | |
| titleUpdateDialogOpen = false; | |
| if (titleUpdateResolve) { | |
| titleUpdateResolve(false); | |
| titleUpdateResolve = null; | |
| } | |
| } | |
| function handleTitleUpdateConfirm() { | |
| titleUpdateDialogOpen = false; | |
| if (titleUpdateResolve) { | |
| titleUpdateResolve(true); | |
| titleUpdateResolve = null; | |
| } | |
| } | |
| onMount(() => { | |
| updateFavicon(); | |
| // snapshot of every backend running stream on first load, populates the sidebar spinners | |
| // so the user sees each conv that has a live inference, even ones not opened yet | |
| void chatStore.syncRemoteRunningStreams(); | |
| }); | |
| // refresh that snapshot when the tab returns to the foreground, a stream may have advanced | |
| // or ended while it was hidden. snapshot only, no polling | |
| function handleVisibilityChange() { | |
| if (document.visibilityState !== 'visible') return; | |
| void chatStore.syncRemoteRunningStreams(); | |
| } | |
| $effect(() => { | |
| void theme.isSystemDark; | |
| updateFavicon(); | |
| }); | |
| // Initialize server properties on app load (run once) | |
| $effect(() => { | |
| // Only fetch if we don't already have props | |
| if (!serverStore.props) { | |
| untrack(() => { | |
| serverStore.fetch(); | |
| }); | |
| } | |
| }); | |
| // Sync settings when server props are loaded | |
| $effect(() => { | |
| const serverProps = serverStore.props; | |
| if (serverProps) { | |
| untrack(() => { | |
| settingsStore.syncWithServerDefaults(); | |
| }); | |
| } | |
| }); | |
| // Inject custom CSS at runtime through an action on the head style node | |
| // textContent keeps the value as text, never parsed as HTML | |
| function customCss(node: HTMLStyleElement) { | |
| $effect(() => { | |
| node.textContent = (config().customCss as string | undefined) ?? ''; | |
| }); | |
| } | |
| // Fetch router models when in router mode (for status and modalities) | |
| // Wait for models to be loaded first, run only once | |
| let routerModelsFetched = false; | |
| $effect(() => { | |
| const isRouter = isRouterMode(); | |
| const modelsCount = modelsStore.models.length; | |
| // Only fetch router models once when we have models loaded and in router mode | |
| if (isRouter && modelsCount > 0 && !routerModelsFetched) { | |
| routerModelsFetched = true; | |
| untrack(() => { | |
| modelsStore.fetchRouterModels(); | |
| }); | |
| } | |
| }); | |
| // Live model status and load progress via the /models/sse feed (router mode) | |
| $effect(() => { | |
| if (!browser) return; | |
| if (!isRouterMode()) return; | |
| untrack(() => { | |
| modelsStore.subscribeStatus(); | |
| }); | |
| return () => { | |
| modelsStore.unsubscribeStatus(); | |
| }; | |
| }); | |
| // Background MCP server health checks on app load | |
| // Fetch enabled servers from settings and run health checks in background | |
| $effect(() => { | |
| if (!browser) return; | |
| const mcpServers = mcpStore.getServers(); | |
| // Only run health checks if we have enabled servers with URLs | |
| const enabledServers = mcpServers.filter((s) => s.enabled && s.url.trim()); | |
| if (enabledServers.length > 0) { | |
| untrack(() => { | |
| // Run health checks in background (don't await) | |
| mcpStore.runHealthChecksForServers(enabledServers, false).catch((error) => { | |
| console.warn('[layout] MCP health checks failed:', error); | |
| }); | |
| }); | |
| } | |
| }); | |
| // Monitor API key changes and redirect to error page if removed or changed when required | |
| $effect(() => { | |
| checkApiKey(); | |
| }); | |
| // Set up title update confirmation callback | |
| $effect(() => { | |
| conversationsStore.setTitleUpdateConfirmationCallback( | |
| async (currentTitle: string, newTitle: string) => { | |
| return new Promise<boolean>((resolve) => { | |
| titleUpdateCurrentTitle = currentTitle; | |
| titleUpdateNewTitle = newTitle; | |
| titleUpdateResolve = resolve; | |
| titleUpdateDialogOpen = true; | |
| }); | |
| } | |
| ); | |
| }); | |
| </script> | |
| <svelte:head> | |
| {#if pwaAssetsHead.themeColor} | |
| <meta name="theme-color" content={pwaAssetsHead.themeColor.content} /> | |
| {/if} | |
| {#if config().customCss} | |
| <style use:customCss></style> | |
| {/if} | |
| {#each pwaAssetsHead.links as link (link.href)} | |
| <link {...link} /> | |
| {/each} | |
| <PwaMetaTags /> | |
| </svelte:head> | |
| <svelte:window onkeydown={handleKeydown} bind:innerHeight bind:innerWidth /> | |
| <svelte:document onvisibilitychange={handleVisibilityChange} /> | |
| <Tooltip.Provider delayDuration={TOOLTIP_DELAY_DURATION}> | |
| <div class="flex flex-col md:flex-row"> | |
| <SidebarNavigation | |
| onSearchClick={() => { | |
| if (isMobile.current) { | |
| goto(ROUTES.SEARCH); | |
| } else if (chatSidebar?.activateSearchMode) { | |
| chatSidebar.activateSearchMode(); | |
| } | |
| }} | |
| /> | |
| <div class="flex-1"> | |
| {@render children?.()} | |
| </div> | |
| </div> | |
| <ModeWatcher /> | |
| <Toaster richColors /> | |
| <DialogConversationTitleUpdate | |
| bind:open={titleUpdateDialogOpen} | |
| currentTitle={titleUpdateCurrentTitle} | |
| newTitle={titleUpdateNewTitle} | |
| onConfirm={handleTitleUpdateConfirm} | |
| onCancel={handleTitleUpdateCancel} | |
| /> | |
| <DialogMcpServerRecommendations | |
| open={mcpRecommendations.open} | |
| onOpenChange={mcpRecommendations.handleOpenChange} | |
| /> | |
| </Tooltip.Provider> | |
| <!-- PWA update prompt + version --> | |
| <div class="fixed right-4 bottom-4 z-9999 flex flex-col items-end gap-1"> | |
| {#if showBuildVersion && buildInfoStore.value} | |
| <span class="text-[10px] tabular-nums text-muted-foreground">{buildInfoStore.value}</span> | |
| {/if} | |
| <PwaRefreshAlert | |
| needRefresh={$needRefresh || pwa.needRefreshByStorage} | |
| forceReload={pwa.needRefreshByStorage} | |
| {updateServiceWorker} | |
| /> | |
| </div> | |