{count, plural, one {Kurs} other {Kurs}}
Her ne kadar üretken yapay zekâ uygulamaları büyük ilgi görmüş olsa da, verimli ve tutarlı uygulamalar geliştirme ve bunları dağıtma zorluğu hâlâ çözülmesi gereken bir konudur.
Llama Stack, Meta tarafından geliştirilen açık kaynaklı bir proje olarak bu karmaşıklığı ele alır.
Llama Stack, standartlaştırılmış bir çerçeve ve modüler API’ler sunarak daha hızlı ve sorunsuz bir geliştirme deneyimi sağlar. Üretken yapay zekâ uygulamalarını pazara sunmak için gereken yapı taşlarını tanımlar ve standartlaştırır.
Bu yazıda, adım adım yönergelerle Llama Stack’e nasıl başlayacağınızı göstereceğim. Üretime AI uygulaması dağıtmaya hazırlanan bir geliştiriciyseniz, sürekli geliştiği için Llama Stack deposuna mutlaka başvurun.
Yapay Zeka Uygulamaları Geliştirin
Llama Stack Nedir?
Llama Stack, Meta’nın Llama modelleri üzerine inşa edilen üretken yapay zekâ uygulamalarının geliştirilmesini ve dağıtımını kolaylaştırmak için oluşturulmuş bir çerçevedir. Bunu, çıkarım, güvenlik, bellek yönetimi ve ajan yetenekleri gibi görevler için standartlaştırılmış API’ler ve bileşenler sunarak başarır.
İşte hedefleri ve faydaları:
- Standartlaştırma: API seti, geliştiricilerin kullanabileceği tutarlı bir arayüz ve çalışma ortamı sunar ve yeni modeller kullanıma sunulduğunda uygulamalarını hızla uyarlamalarına olanak tanır.
- Sinerji: Karmaşık işlevleri API’lere soyutlayarak çeşitli araçlar ve bileşenler arasında işbirliğini, modülerlik ve esneklik lehine, mümkün kılar.
- Sorunsuz geliştirme: Llama Stack, temel işlevleri önceden tanımlayarak ve dağıtımı hızlandırarak yalın bir geliştirme yaşam döngüsü için araçlar sunar.

Kaynak: Meta AI
Llama Stack Bileşenleri ve API’leri
Llama Stack, üretken yapay zekâ uygulaması geliştirirken belirli görev kümelerini hedefleyen çeşitli API’lerle birlikte gelir.
Çıkarım API’si
Çıkarım API’si, metin üretimi ya da çok modlu Llama varyantlarını yönlendirir. Temel özellikleri şunlardır:
- Top-k örnekleme gibi çeşitli kod çözme stratejilerini destekler.
- Yüksek ölçekli uygulamalar için yararlı olan toplu istekleri yönetir ve yanıtları akış olarak iletir.
API, geliştiricilerin uygulama gereksinimlerine göre model davranışını kontrol etmesini sağlayan çeşitli yapılandırmalar tanımlar (ör. FP8 veya BF16 kuantizasyonu gibi).
Güvenlik API’si
Güvenlik API’si, içerikleri denetleyerek ve zararlı ya da potansiyel önyargılı çıktıları filtreleyerek yapay zekâ modellerinin sorumlu biçimde dağıtımı için geliştirilmiştir. İhlal düzeylerini (ör. INFO, WARN, ERROR) tanımlayacak şekilde yapılandırılabilir ve kullanıcılara uygulanabilir iletiler döndürebilir.
Bellek API’si
Bellek API’si geçmiş etkileşimleri koruma ve onlara atıfta bulunma olanağı sunarak bağlamsal farkındalığı olan, daha tutarlı konuşmalar oluşturmayı sağlar. Çeşitli bellek yapılandırmaları, geliştiricilere uygulama ihtiyaçlarına göre depolama türlerini seçme imkânı verir. Temel özellikleri şunlardır:
- Vektör, anahtar-değer, anahtar sözcük ve grafik gibi çoklu yapılandırmalar sağlayarak esnek bellek depolama imkânı tanır; bunlar esasen konuşma anılarını saklama yöntemleridir.
- Bellek bankaları içinde belgelerin eklenmesine, sorgulanmasına, güncellenmesine ve silinmesine izin verir. Sorgu sonuçları, alaka düzeyi puanlarına sahip parçalar olarak döndürülür.
Ajan API’si
Ajan API’si, LLM’lerin harici araçlar ve işlevler kullanmasını sağlayarak web araması, kod yürütme veya bellek getirme gibi görevleri yerine getirmelerine olanak tanır. API, geliştiricilerin belirli araçlar ve hedeflerle ajanlar yapılandırmasına izin verir. Her turu birden çok adımdan oluşan çok turlu etkileşimleri destekler. Temel özellikleri şunlardır:
- Şu entegre araçlarla birlikte gelir: brave_search, wolfram_alpha, photogen ve code_interpreter. Bu araçları, istekleri karşılamak veya model bağlamında kod yürütmek için kullanabiliriz.
- Uzun vadeli bağlamı güçlendirmek için ilgili bilgileri getirmek üzere Bellek API’siyle birlikte çalışır.
- Modeller, çıkarım, araç yürütme, bellek getirme ve güvenlik kontrolleri gibi birden çok adım üzerinden görevleri yerine getirebilir.
Diğer API’ler
Llama Stack’in sunduğu diğer API’ler şunlardır:
- Değerlendirme API’si: model performansının değerlendirilmesinde kullanılır.
- Eğitim sonrası API: ince ayar yöntemleri (LORA, DORA vb.) ile modellerin belirli görevler veya veriler için uyarlanmasına yardımcı olur.
- Sentetik veri üretimi API’si: Modelleri eğitmek için sentetik veri kümeleri oluşturulmasına yardımcı olur.
- Ödül puanlama API’si: Modelin eylemlerine veya kararlarına ödül puanları atamak için pekiştirmeli öğrenme senaryolarında kullanışlıdır.
Llama Stack Nasıl Kurulur ve Yapılandırılır
Bu çerçevenin genel fikrine ve yeteneklerine aşina olmak için Llama Stack üzerinde örnek bir proje uygulayacağız.
Başlamadan önce lütfen şunlara dikkat edin:
- Llama Stack hızla gelişmektedir ve istemcinizi uygularken hatalarla karşılaşmanız beklenir; bu yüzden depodaki belgeleri referans almak ve olası sorunları bildirmek önemlidir. Örneğin bu makalenin yazıldığı tarihte, bazı işletim sistemi kaynaklı sorunlar nedeniyle Windows üzerinde Llama Stack konteynerini çalıştıramadım; geliştirici ekip bu konuda çalışacaktır.
- Platformun ücretsiz sürümü docker konteyneri oluşturmayı desteklemediği için Google Colab üzerinde Llama Stack kullanamazsınız.
Llama komut satırı arayüzünü (CLI) kurarak başlayalım.
1. Llama CLI
Llama Stack, dağıtımları yönetmek, modelleri kurmak ve ortamları yapılandırmak için bir Komut Satırı Arayüzü (CLI) sağlar. Atmamız gereken kurulum adımları şunlardır:
a. Sanal bir ortam oluşturun ve etkinleştirin:
conda create -n llama_stack python=3.10
conda activate llama_stack
b. Llama Stack deposunu klonlayın:
git clone <https://github.com/meta-llama/llama-stack.git>
cd llama-stack
c. Gerekli bağımlılıkları kurun:
pip install llama-stack
pip install -r requirements.txt
2. Docker konteynerlerini kullanma
Docker konteynerleri, Llama Stack sunucusunun ve ajan API sağlayıcılarının dağıtımını basitleştirir. Kolay kurulum için önceden oluşturulmuş Docker imajları mevcuttur:
docker pull llamastack/llamastack-local-gpu
llama stack build
llama stack configure llamastack-local-gpu
Bu komutlar Docker imajını çeker, derler ve yığını yapılandırır.
Llama Stack API’leriyle Nasıl Uygulama Geliştirilir
Llama Stack API’lerini kullanarak temel bir sohbet botu oluşturalım. İzlememiz gereken adımlar şunlardır:
1. Llama Stack sunucusunu başlatın
Sunucuyu 5000 numaralı portta çalıştıracağız. API’lerle çalışmadan önce sunucunun çalıştığından emin olun:
llama stack run local-gpu --port 5000
2. Çıkarım API’sini kullanın
Llama Stack’i kurduktan sonra, API’leriyle etkileşime geçmek için istemci kodunu kullanabilirsiniz. Kullanıcı girdisine dayalı yanıtlar üretmek için Çıkarım API’sini kullanın:
from llama_stack_client import LlamaStackClient
client = LlamaStackClient(base_url="<http://localhost:5000>")
user_input = "Hello! How are you?"
response = client.inference.chat_completion(
model="Llama3.1-8B-Instruct",
messages=[{"role": "user", "content": user_input}],
stream=False
)
print("Bot:", response.text)
Not: Kurulumunuzda mevcut olan gerçek model adıyla "Llama3.1-8B-Instruct" ifadesini değiştirin.
3. Güvenlik API’sini entegre edin
Yanıtları denetlemek ve uygun olmalarını sağlamak için Güvenlik API’sini uygulayın:
safety_response = client.safety.run_shield(
messages=[{"role": "assistant", "content": response.text}],
shield_type="llama_guard",
params={}
)
if safety_response.violation:
print("Unsafe content detected.")
else:
print("Bot:", response.text)
4. Bellek API’si ile bellek ekleyin
Sohbet botunun bağlam farkındalığını, konuşma geçmişini depolayıp geri çağırarak oluşturun:
### building a memory bank that can be used to store and retrieve context.
bank = client.memory.create_memory_bank(
name="chat_memory",
config=VectorMemoryBankConfig(
type="vector",
embedding_model="all-MiniLM-L6-v2",
chunk_size_in_tokens=512,
overlap_size_in_tokens=64,
)
)
5. Bileşenleri zincirleyin
API’leri daha da birleştirerek sağlam bir sohbet botu oluşturabiliriz:
- Çıkarım API’si: Yanıt üretir.
- Güvenlik API’si: Uygunsuz içeriği filtreler.
- Bellek API’si: Konuşma bağlamını korur.
Tam örnek
Tüm adımları tamamladıktan sonra tam kod aşağıdadır:
import uuid
client = LlamaStackClient(base_url="<http://localhost:5000>")
### create a memory bank at the start
bank = client.memory.create_memory_bank(
name="chat_memory",
config=VectorMemoryBankConfig(
type="vector",
embedding_model="all-MiniLM-L6-v2",
chunk_size_in_tokens=512,
overlap_size_in_tokens=64,
)
)
def get_bot_response(user_input):
### retrieving conversation history
query_response = client.memory.query_documents(
bank_id=bank.bank_id,
query=[user_input],
params={"max_chunks": 10}
)
history = [chunk.content for chunk in query_response.chunks]
### preparing messages with history
messages = [{"role": "user", "content": user_input}]
if history:
messages.insert(0, {"role": "system", "content": "\\n".join(history)})
### generate response
response = client.inference.chat_completion(
model="llama-2-7b-chat",
messages=messages,
stream=False
)
bot_response = response.text
### safety check
safety_response = client.safety.run_shield(
messages=[{"role": "assistant", "content": bot_response}],
shield_type="llama_guard",
params={}
)
if safety_response.violation:
return "I'm sorry, but I can't assist with that request."
### memory storing
documents = [
MemoryBankDocument(
document_id=str(uuid.uuid4()),
content=user_input,
mime_type="text/plain"
),
MemoryBankDocument(
document_id=str(uuid.uuid4()),
content=bot_response,
mime_type="text/plain"
)
]
client.memory.insert_documents(
bank_id=bank.bank_id,
documents=documents
)
return bot_response
### putting all together
while True:
user_input = input("You: ")
if user_input.lower() == "bye":
break
bot_response = get_bot_response(user_input)
print("Bot:", bot_response)
Llama Stack Örnekleri ve Katkılar
Llama Stack kullanarak uygulama geliştirmenize örnekler görmek ve hızlı bir başlangıç yapmak için Meta, örnek uygulamalara göz atabileceğiniz llama-stack-apps deposunu sağlamıştır. Çerçeveyi mutlaka inceleyin ve kendinizi aşina kılın.
Bir açık kaynak projesi olarak Llama Stack, topluluk katkılarıyla yaşar. API’ler hızla evrilmektedir ve proje, geliştiricilerden gelen geri bildirim ve katılımlara açıktır; bu da platformun geleceğinin şekillenmesine yardımcı olur. Llama Stack’i denerseniz, projenizi bir örnek olarak paylaşmanız veya belgelere katkıda bulunmanız diğer geliştiricilere yardımcı olabilir.
Sonuç
Bu makale boyunca, Llama Stack’e adım adım yönergelerle nasıl başlanacağını inceledik.
AI uygulamalarınızı dağıtmaya ilerlerken, en son güncellemeler ve iyileştirmeler için Llama Stack deposunu takip etmeyi unutmayın.
Llama ekosistemi hakkında daha fazla bilgi için aşağıdaki kaynaklara göz atın:
Yapay Zeka alanında yüksek lisans öğrencisi ve yapay zeka teknik yazarı. En yeni yapay zeka teknolojilerine dair içgörüler paylaşıyorum, ML araştırmalarını erişilebilir kılıyor ve sizi ön planda tutmak için karmaşık YZ konularını sadeleştiriyorum.

