Introduction
2026 yılında en basit OFFLINE bir asistanın LLM (Chat Completion), RAG (Embedding ve Reranker) ve kendi başına çağırmasına karar vereceği araç çağrı yetkileri olmalıdır.
LlamaCPP için işe yarar komutlar;
llama-server --models-dir embeddings --embedding --pooling rank --host 0.0.0.0 --port 8081
llama-server --models-dir models --fit on -c 131072 -n -1 --host 0.0.0.0
Yeni LLaMACPP sürümlerinde --models-dir argümanı mevcuttur, router görevi gören bu argüman API isteği ile tıpkı diğer OpenAI apilerindeki gibi model ismi belirtebilememizi sağlar.
Daha sonra standard aşağıdaki endpointler ile çağrı yapılabilir;
/v1/chat/completions (openai benzeri)/v1/embeddings (openai benzeri)/v1/rerank (jinaai benzeri)
KV Cache Uyumluluğu
KV Cache, adı üstünde olduğu üzere mesaj tarihçesinin bellekte yüklü bulunması durumudur. Bu durumun sağlanması için;
- Mesaj tarihçesinin olması (System, User, Assistant, User ,Assistant...) ve döngünün doğru olması (kullanıcı önce, asistan sonra) gerekmektedir.
- Mesaj tarihçesindeki öğelerin gönderildikten ve işlendikten sonra işlenmemesi gerekmektedir. Yoksa KV Cache geçersiz olur. Ciddiyet, mesajın bulunduğu yere göre değişir.
Metadata
Kullanıcı gönderisinde çeşitli metadatalar bulunması gerekir, bunlar;
- Zaman
- RAG
- Araç Çağrı sonuçları
Olabilir. Bütün metadata XML tag'leri ile kaplı olmalıdır. Örneğin;
<time>...</time>
Veya
<tool_call_results>...</tool_call_results>
Veya birleşik;
<metadata>
<time>...</time>
<relevant_documents>...</relevant_documents>
</metadata>
Bunlar sadece örnektir.
Araç Çağrıları
"Tools:" parametresi (OPENAI API) asla kullanılmamalıdır (deneyimlerim hep kötü ve bazı modeller desteklemiyor) Onun yerine PROMPT edilmeli, model bu promtu takip ederek tool call'ı yine xml veya json içinde kendisi yazmalıdır. Bu sebepten dolayı jinja argümanı llamacpp ile kullanılmamalı veya kaçınılmalıdır. Bu aynı zamanda streaming ve tool call'ların aynı anda kullanılmasınıda sağlayacaktır.
'''tools
...
'''
veya
<tool_call>...</tool_call>
Bu çıktı, bir parser yazılarak parse edilmeli ve koşullar yerine getiriliyorsa araç çağrısı yapılmalıdır. Araçlar Model Context Protokolüne uygun olmalı ve Model Context Protocol kullanmalıdır. Araçlar MCP standartlarınca bir JSON da belirtilmeli ve sunucular buna göre otomatik keşfedilip bağlanılmalı ve bu sunucular modelin en başta sistem mesajında, araç çağrı kullanım talimatları ile birlikte verilmelidir.