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 { tick } from 'svelte'; | |
| import { Plus, Trash2 } from '@lucide/svelte'; | |
| import { Input } from '$lib/components/ui/input'; | |
| import { | |
| autoResizeTextarea, | |
| sanitizeKeyValuePairKey, | |
| sanitizeKeyValuePairValue | |
| } from '$lib/utils'; | |
| import { KEY_VALUE_PAIR_KEY_MAX_LENGTH, KEY_VALUE_PAIR_VALUE_MAX_LENGTH } from '$lib/constants'; | |
| import type { KeyValuePair } from '$lib/types'; | |
| interface Props { | |
| class?: string; | |
| pairs: KeyValuePair[]; | |
| onPairsChange: (pairs: KeyValuePair[]) => void; | |
| keyPlaceholder?: string; | |
| valuePlaceholder?: string; | |
| addButtonLabel?: string; | |
| emptyMessage?: string; | |
| sectionLabel?: string; | |
| sectionLabelOptional?: boolean; | |
| } | |
| let { | |
| class: className = '', | |
| pairs, | |
| onPairsChange, | |
| keyPlaceholder = 'Key', | |
| valuePlaceholder = 'Value', | |
| addButtonLabel = 'Add', | |
| emptyMessage = 'No items configured.', | |
| sectionLabel, | |
| sectionLabelOptional = true | |
| }: Props = $props(); | |
| // Pre-allocate the ref array so `bind:ref={keyInputRefs[index]}` never reads `undefined` | |
| // for in-range indices; the $effect below keeps it in sync when `pairs` grows. | |
| // svelte-ignore state_referenced_locally | |
| let keyInputRefs: (HTMLInputElement | null)[] = $state(pairs.map(() => null)); | |
| async function addPair() { | |
| // Capture the target index before mutating so deletions earlier in the | |
| // list can't make keyInputRefs.length drift past the newly-appended row. | |
| const newIndex = pairs.length; | |
| onPairsChange([...pairs, { key: '', value: '' }]); | |
| await tick(); | |
| keyInputRefs[newIndex]?.focus(); | |
| } | |
| function removePair(index: number) { | |
| onPairsChange(pairs.filter((_, i) => i !== index)); | |
| } | |
| function updatePairKey(index: number, rawKey: string) { | |
| const key = sanitizeKeyValuePairKey(rawKey); | |
| const newPairs = [...pairs]; | |
| newPairs[index] = { ...newPairs[index], key }; | |
| onPairsChange(newPairs); | |
| } | |
| function trimPairKey(index: number, key: string) { | |
| const trimmed = key.trim(); | |
| if (trimmed === key) return; | |
| const newPairs = [...pairs]; | |
| newPairs[index] = { ...newPairs[index], key: trimmed }; | |
| onPairsChange(newPairs); | |
| } | |
| function updatePairValue(index: number, rawValue: string) { | |
| const value = sanitizeKeyValuePairValue(rawValue); | |
| const newPairs = [...pairs]; | |
| newPairs[index] = { ...newPairs[index], value }; | |
| onPairsChange(newPairs); | |
| } | |
| function trimPairValue(index: number, value: string) { | |
| const trimmed = value.trim(); | |
| if (trimmed === value) return; | |
| const newPairs = [...pairs]; | |
| newPairs[index] = { ...newPairs[index], value: trimmed }; | |
| onPairsChange(newPairs); | |
| } | |
| // Keep keyInputRefs aligned with pairs length so bind:ref never sees `undefined`. | |
| // $effect.pre runs during traversal in tree order, before the {#each} block re-renders, | |
| // so newly-appended items always have a defined slot when their binding is set up. | |
| $effect.pre(() => { | |
| while (keyInputRefs.length < pairs.length) { | |
| keyInputRefs.push(null); | |
| } | |
| }); | |
| </script> | |
| <div class={className}> | |
| <div class="mb-2 flex items-center justify-between"> | |
| {#if sectionLabel} | |
| <span class="text-xs font-medium"> | |
| {sectionLabel} | |
| {#if sectionLabelOptional} | |
| <span class="text-muted-foreground">(optional)</span> | |
| {/if} | |
| </span> | |
| {/if} | |
| <button | |
| type="button" | |
| class="inline-flex cursor-pointer items-center gap-1 rounded-md px-1.5 py-1 text-xs text-muted-foreground hover:bg-muted hover:text-foreground" | |
| onclick={addPair} | |
| > | |
| <Plus class="h-3 w-3" /> | |
| {addButtonLabel} | |
| </button> | |
| </div> | |
| {#if pairs.length > 0} | |
| <div class="space-y-3"> | |
| {#each pairs as pair, index (index)} | |
| <div class="flex items-start gap-2"> | |
| <Input | |
| bind:ref={keyInputRefs[index]} | |
| type="text" | |
| placeholder={keyPlaceholder} | |
| value={pair.key} | |
| maxlength={KEY_VALUE_PAIR_KEY_MAX_LENGTH} | |
| oninput={(e) => updatePairKey(index, e.currentTarget.value)} | |
| onblur={(e) => trimPairKey(index, e.currentTarget.value)} | |
| class="flex-1" | |
| /> | |
| <textarea | |
| use:autoResizeTextarea | |
| placeholder={valuePlaceholder} | |
| value={pair.value} | |
| maxlength={KEY_VALUE_PAIR_VALUE_MAX_LENGTH} | |
| oninput={(e) => { | |
| updatePairValue(index, e.currentTarget.value); | |
| autoResizeTextarea(e.currentTarget); | |
| }} | |
| onblur={(e) => trimPairValue(index, e.currentTarget.value)} | |
| class="flex-1 resize-none rounded-md border border-input bg-transparent px-3 py-2 text-sm leading-5 placeholder:text-muted-foreground focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-none" | |
| rows="1" | |
| ></textarea> | |
| <button | |
| type="button" | |
| class="mt-1.5 shrink-0 cursor-pointer rounded-md p-1 text-muted-foreground hover:bg-destructive/10 hover:text-destructive" | |
| onclick={() => removePair(index)} | |
| aria-label="Remove item" | |
| > | |
| <Trash2 class="h-3.5 w-3.5" /> | |
| </button> | |
| </div> | |
| {/each} | |
| </div> | |
| {:else} | |
| <p class="text-xs text-muted-foreground">{emptyMessage}</p> | |
| {/if} | |
| </div> | |