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 { onMount } from 'svelte'; | |
| import { beforeNavigate, afterNavigate } from '$app/navigation'; | |
| import { ChatMessage, ChatMessageUserPending } from '$lib/components/app'; | |
| import { setChatActionsContext } from '$lib/contexts'; | |
| import { MessageRole } from '$lib/enums'; | |
| import { chatStore } from '$lib/stores/chat.svelte'; | |
| import { | |
| chatPendingMessageContent, | |
| chatPendingMessageExtras, | |
| chatClearPendingMessage, | |
| chatInjectPendingMessage | |
| } from '$lib/stores/chat.svelte'; | |
| import { conversationsStore, activeConversation } from '$lib/stores/conversations.svelte'; | |
| import { config } from '$lib/stores/settings.svelte'; | |
| import { | |
| agenticPendingSteeringMessageContent, | |
| agenticPendingSteeringMessageExtras, | |
| agenticClearSteeringMessage, | |
| agenticInjectSteeringMessage | |
| } from '$lib/stores/agentic.svelte'; | |
| import { | |
| copyToClipboard, | |
| formatMessageForClipboard, | |
| getMessageSiblings, | |
| hasAgenticContent | |
| } from '$lib/utils'; | |
| interface Props { | |
| messages?: DatabaseMessage[]; | |
| onUserAction?: () => void; | |
| onMessagesReady?: (messageCount: number) => void; | |
| } | |
| let { messages = [], onUserAction, onMessagesReady }: Props = $props(); | |
| let allConversationMessages = $state<DatabaseMessage[]>([]); | |
| let isVisible = $state(false); | |
| let previousConversationId = $state<string | null>(null); | |
| let previousRouteId = $state<string | null>(null); | |
| const currentConfig = config(); | |
| setChatActionsContext({ | |
| copy: async (message: DatabaseMessage) => { | |
| const asPlainText = Boolean(currentConfig.copyTextAttachmentsAsPlainText); | |
| const clipboardContent = formatMessageForClipboard( | |
| message.content, | |
| message.extra, | |
| asPlainText | |
| ); | |
| await copyToClipboard(clipboardContent, 'Message copied to clipboard'); | |
| }, | |
| delete: async (message: DatabaseMessage) => { | |
| await chatStore.deleteMessage(message.id); | |
| refreshAllMessages(); | |
| }, | |
| navigateToSibling: async (siblingId: string) => { | |
| await conversationsStore.navigateToSibling(siblingId); | |
| }, | |
| editWithBranching: async ( | |
| message: DatabaseMessage, | |
| newContent: string, | |
| newExtras?: DatabaseMessageExtra[] | |
| ) => { | |
| onUserAction?.(); | |
| await chatStore.editMessageWithBranching(message.id, newContent, newExtras); | |
| refreshAllMessages(); | |
| }, | |
| editWithReplacement: async ( | |
| message: DatabaseMessage, | |
| newContent: string, | |
| shouldBranch: boolean | |
| ) => { | |
| onUserAction?.(); | |
| await chatStore.editAssistantMessage(message.id, newContent, shouldBranch); | |
| refreshAllMessages(); | |
| }, | |
| editUserMessagePreserveResponses: async ( | |
| message: DatabaseMessage, | |
| newContent: string, | |
| newExtras?: DatabaseMessageExtra[] | |
| ) => { | |
| onUserAction?.(); | |
| await chatStore.editUserMessagePreserveResponses(message.id, newContent, newExtras); | |
| refreshAllMessages(); | |
| }, | |
| regenerateWithBranching: async (message: DatabaseMessage, modelOverride?: string) => { | |
| onUserAction?.(); | |
| await chatStore.regenerateMessageWithBranching(message.id, modelOverride); | |
| refreshAllMessages(); | |
| }, | |
| continueAssistantMessage: async (message: DatabaseMessage) => { | |
| onUserAction?.(); | |
| await chatStore.continueAssistantMessage(message.id); | |
| refreshAllMessages(); | |
| }, | |
| forkConversation: async ( | |
| message: DatabaseMessage, | |
| options: { name: string; includeAttachments: boolean } | |
| ) => { | |
| await conversationsStore.forkConversation(message.id, options); | |
| } | |
| }); | |
| function refreshAllMessages() { | |
| const conversation = activeConversation(); | |
| if (conversation) { | |
| conversationsStore.getConversationMessages(conversation.id).then((messages) => { | |
| allConversationMessages = messages; | |
| }); | |
| } else { | |
| allConversationMessages = []; | |
| } | |
| } | |
| // Track conversation changes to trigger transition even on same route | |
| $effect(() => { | |
| const conversation = activeConversation(); | |
| const currentId = conversation?.id ?? null; | |
| if (currentId !== previousConversationId && previousConversationId !== null) { | |
| // Conversation changed - trigger fade out/in | |
| isVisible = false; | |
| requestAnimationFrame(() => { | |
| refreshAllMessages(); | |
| previousConversationId = currentId; | |
| requestAnimationFrame(() => { | |
| isVisible = true; | |
| }); | |
| }); | |
| } else { | |
| previousConversationId = currentId; | |
| if (conversation) { | |
| refreshAllMessages(); | |
| } | |
| } | |
| }); | |
| $effect(() => { | |
| void allConversationMessages; | |
| onMessagesReady?.(displayMessages.length); | |
| }); | |
| onMount(() => { | |
| requestAnimationFrame(() => { | |
| isVisible = true; | |
| }); | |
| }); | |
| beforeNavigate((navigation) => { | |
| isVisible = false; | |
| previousRouteId = navigation.from?.route.id ?? null; | |
| }); | |
| afterNavigate(() => { | |
| requestAnimationFrame(() => { | |
| isVisible = true; | |
| }); | |
| }); | |
| let displayMessages = $derived.by(() => { | |
| if (!messages.length) { | |
| return []; | |
| } | |
| const filteredMessages = currentConfig.showSystemMessage | |
| ? messages | |
| : messages.filter((msg) => msg.type !== MessageRole.SYSTEM); | |
| // Build display entries, grouping agentic sessions into single entries. | |
| // An agentic session = assistant(with tool_calls) → tool → assistant → tool → ... → assistant(final) | |
| const result: Array<{ | |
| message: DatabaseMessage; | |
| toolMessages: DatabaseMessage[]; | |
| isLastAssistantMessage: boolean; | |
| siblingInfo: ChatMessageSiblingInfo; | |
| }> = []; | |
| for (let i = 0; i < filteredMessages.length; i++) { | |
| const msg = filteredMessages[i]; | |
| // Skip tool messages - they're grouped with preceding assistant | |
| if (msg.role === MessageRole.TOOL) continue; | |
| const toolMessages: DatabaseMessage[] = []; | |
| if (msg.role === MessageRole.ASSISTANT && hasAgenticContent(msg)) { | |
| let j = i + 1; | |
| while (j < filteredMessages.length) { | |
| const next = filteredMessages[j]; | |
| if (next.role === MessageRole.TOOL) { | |
| toolMessages.push(next); | |
| j++; | |
| } else if (next.role === MessageRole.ASSISTANT) { | |
| toolMessages.push(next); | |
| j++; | |
| } else { | |
| break; | |
| } | |
| } | |
| i = j - 1; | |
| } else if (msg.role === MessageRole.ASSISTANT) { | |
| let j = i + 1; | |
| while (j < filteredMessages.length && filteredMessages[j].role === MessageRole.TOOL) { | |
| toolMessages.push(filteredMessages[j]); | |
| j++; | |
| } | |
| } | |
| const siblingInfo = getMessageSiblings(allConversationMessages, msg.id); | |
| result.push({ | |
| message: msg, | |
| toolMessages, | |
| isLastAssistantMessage: false, | |
| siblingInfo: siblingInfo || { | |
| message: msg, | |
| siblingIds: [msg.id], | |
| currentIndex: 0, | |
| totalSiblings: 1 | |
| } | |
| }); | |
| } | |
| // Mark the last assistant message | |
| for (let i = result.length - 1; i >= 0; i--) { | |
| if (result[i].message.role === MessageRole.ASSISTANT) { | |
| result[i].isLastAssistantMessage = true; | |
| break; | |
| } | |
| } | |
| return result; | |
| }); | |
| </script> | |
| <div | |
| class="transition-opacity duration-500 ease-out | |
| {isVisible ? 'opacity-100' : 'opacity-0'} | |
| {previousRouteId === '/(chat)/chat/[id]' ? '' : 'delay-300'}" | |
| > | |
| {#each displayMessages as { message, toolMessages, isLastAssistantMessage, siblingInfo } (message.id)} | |
| <ChatMessage | |
| class="mx-auto mt-12 w-full max-w-3xl" | |
| {message} | |
| {toolMessages} | |
| {isLastAssistantMessage} | |
| {siblingInfo} | |
| /> | |
| {/each} | |
| {#if activeConversation() && agenticPendingSteeringMessageContent(activeConversation()!.id)} | |
| {@const convId = activeConversation()!.id} | |
| {@const pendingContent = agenticPendingSteeringMessageContent(convId)} | |
| {#if pendingContent} | |
| <ChatMessageUserPending | |
| class="mx-auto mt-12 w-full max-w-[48rem]" | |
| content={pendingContent} | |
| extras={agenticPendingSteeringMessageExtras(convId)} | |
| onSendImmediately={() => chatStore.abortCurrentFlow(convId)} | |
| onEdit={(newContent, extras) => agenticInjectSteeringMessage(convId, newContent, extras)} | |
| onDelete={() => agenticClearSteeringMessage(convId)} | |
| /> | |
| {/if} | |
| {:else if activeConversation() && chatPendingMessageContent(activeConversation()!.id)} | |
| {@const convId = activeConversation()!.id} | |
| {@const pendingContent = chatPendingMessageContent(convId)} | |
| {#if pendingContent} | |
| <ChatMessageUserPending | |
| class="mx-auto mt-12 w-full max-w-[48rem]" | |
| content={pendingContent} | |
| extras={chatPendingMessageExtras(convId)} | |
| onSendImmediately={() => chatStore.abortCurrentFlow(convId)} | |
| onEdit={(newContent, extras) => chatInjectPendingMessage(convId, newContent, extras)} | |
| onDelete={() => chatClearPendingMessage(convId)} | |
| /> | |
| {/if} | |
| {/if} | |
| </div> | |