Üretken yapay zekanın merkezinde yapay zeka modelleri yer alır. Üretken modellerin en belirgin iki örneği büyük dil modelleri (LLM'ler) ve resim oluşturma modelleridir. Bu modeller, istem adı verilen bir giriş alır (genellikle metin, resim veya her ikisinin bir kombinasyonu) ve bu girişten metin, resim, hatta ses veya video çıkışı oluşturur.
Bu modellerin çıktıları şaşırtıcı derecede inandırıcı olabilir: Büyük dil modelleri, bir insan tarafından yazılmış gibi görünen metinler oluşturur ve resim oluşturma modelleri, gerçek fotoğraflara veya insanlar tarafından oluşturulan sanat eserlerine çok benzeyen resimler üretebilir.
Ayrıca LLM'ler, basit metin oluşturmanın ötesinde görevler de yapabileceklerini kanıtlamıştır:
- Bilgisayar programları yazma
- Daha büyük bir görevi tamamlamak için gereken alt görevleri planlama
- Düzenlenmemiş verileri düzenleme
- Bir metin kümesinden bilgi verilerini anlama ve ayıklama.
- Etkinliğin metin açıklamasına göre otomatik etkinlikleri takip etme ve gerçekleştirme.
Birkaç farklı sağlayıcıdan birçok model seçeneği mevcuttur. Her modelin kendine özgü güçlü ve zayıf yönleri vardır. Bir model bir görevde çok iyi olabilir ancak diğerlerinde daha düşük performans gösterebilir. Üretken yapay zekadan yararlanan uygulamalar, genellikle görevlere bağlı olarak birden fazla farklı modelden yararlanabilir.
Uygulama geliştirici olarak, üretken yapay zeka modelleriyle genellikle doğrudan değil, web API'si olarak sunulan hizmetler aracılığıyla etkileşim kurarsınız. Bu hizmetler genellikle benzer işlevlere sahip olsa da hepsini farklı ve uyumlu olmayan API'ler aracılığıyla sağlar. Birden fazla model hizmetinden yararlanmak istiyorsanız her birinin özel SDK'larını kullanmanız gerekir. Bu SDK'lar birbiriyle uyumlu olmayabilir. Ayrıca, bir modelden en yeni ve en yetenekli modele geçmek isterseniz bu entegrasyonu baştan oluşturmanız gerekebilir.
Genkit, halihazırda kullanıma hazır birkaç uygulamayla, üretken yapay zeka model hizmetinin herhangi birine erişmeyle ilgili ayrıntıları soyutlayan tek bir arayüz sunarak bu sorunu giderir. Yapay zeka destekli uygulamanızı Genkit'i temel alarak oluşturmak, ilk üretken yapay zeka çağrınızı yapma sürecini basitleştirir ve yeni modeller ortaya çıktıkça birden fazla modeli birleştirmeyi veya bir modeli başka bir modelle değiştirmeyi de aynı derecede kolaylaştırır.
Başlamadan önce
Bu sayfadaki kod örneklerini çalıştırmak istiyorsanız önce Başlangıç kılavuzundaki adımları tamamlayın. Tüm örneklerde, Genkit'i projenize bağımlı olarak yüklemiş olduğunuz varsayılmaktadır.
Genkit tarafından desteklenen modeller
Genkit, üretken yapay zeka model hizmetinin her birini kullanabilecek kadar esnek olacak şekilde tasarlanmıştır. Temel kitaplıkları, modellerle çalışma için ortak arayüzü tanımlar ve model eklentileri, belirli bir model ve API'siyle çalışmayla ilgili uygulama ayrıntılarını tanımlar.
Genkit ekibi, Vertex AI, Google Üretken Yapay Zeka ve Ollama tarafından sağlanan modellerle çalışmak için eklentileri yönetir:
- Google Cloud Vertex AI eklentisi aracılığıyla Gemini LLM ailesi
- Google AI eklentisi aracılığıyla Gemini LLM ailesi.
- Ollama eklentisi aracılığıyla Gemma 3, Llama 4 ve daha birçok açık model (Ollama sunucusunu kendiniz barındırmanız gerekir).
Model eklentilerini yükleme ve yapılandırma
İçerik üretmeye başlamak için Genkit'i kullanmadan önce bir model eklentisi yüklemeniz ve yapılandırmanız gerekir. Başlangıç kılavuzundan geldiyseniz bu işlemi zaten yapmışsınızdır. Aksi takdirde, devam etmeden önce Başlayın kılavuzunu veya ilgili eklentinin dokümanlarını inceleyip oradaki adımları uygulayın.
genkit.Generate()
işlevi
Genkit'te, üretken yapay zeka modelleriyle etkileşim kurduğunuz birincil arayüz genkit.Generate()
işlevidir.
En basit genkit.Generate()
çağrısı, kullanmak istediğiniz modeli ve bir metin istemini belirtir:
import (
"context"
"log"
"github.com/firebase/genkit/go/ai"
"github.com/firebase/genkit/go/genkit"
"github.com/firebase/genkit/go/plugins/googlegenai"
)
func main() {
ctx := context.Background()
g, err := genkit.Init(ctx,
genkit.WithPlugins(&googlegenai.GoogleAI{}),
genkit.WithDefaultModel("googleai/gemini-2.0-flash"),
)
if err != nil {
log.Fatal(err)
}
resp, err := genkit.Generate(ctx, g,
ai.WithPrompt("Invent a menu item for a pirate themed restaurant."),
)
if err != nil {
log.Fatal(err)
}
log.Println(resp.Text())
}
Bu kısa örneği çalıştırdığınızda, bazı hata ayıklama bilgileri ve ardından genkit.Generate()
çağrısının çıktısı yazdırılır. Bu çıktı genellikle aşağıdaki örnekteki gibi Markdown metnidir:
## The Blackheart's Bounty
**A hearty stew of slow-cooked beef, spiced with rum and molasses, served in a
hollowed-out cannonball with a side of crusty bread and a dollop of tangy
pineapple salsa.**
**Description:** This dish is a tribute to the hearty meals enjoyed by pirates
on the high seas. The beef is tender and flavorful, infused with the warm spices
of rum and molasses. The pineapple salsa adds a touch of sweetness and acidity,
balancing the richness of the stew. The cannonball serving vessel adds a fun and
thematic touch, making this dish a perfect choice for any pirate-themed
adventure.
Komut dosyasını tekrar çalıştırdığınızda farklı bir sonuç alırsınız.
Önceki kod örneği, oluşturma isteğini Genkit örneğini yapılandırırken belirttiğiniz varsayılan modele gönderdi.
Tek bir genkit.Generate()
çağrısı için bir model de belirtebilirsiniz:
resp, err := genkit.Generate(ctx, g,
ai.WithModelName("googleai/gemini-2.5-pro"),
ai.WithPrompt("Invent a menu item for a pirate themed restaurant."),
)
Model dize tanımlayıcısı providerid/modelid
şeklindedir. Burada sağlayıcı kimliği (bu örnekte googleai
) eklentiyi tanımlar ve model kimliği, bir modelin belirli bir sürümü için eklentiye özgü bir dize tanımlayıcısıdır.
Bu örneklerde önemli bir nokta da gösterilmektedir: Üretken yapay zeka modeli çağrıları yapmak için genkit.Generate()
'ü kullandığınızda, kullanmak istediğiniz modeli değiştirmek için model parametresine farklı bir değer göndermeniz yeterlidir. Yerel model SDK'ları yerine genkit.Generate()
'ü kullanarak uygulamanızda çeşitli farklı modelleri daha kolay kullanma ve gelecekte modelleri değiştirme esnekliğine sahip olursunuz.
Şimdiye kadar yalnızca en basit genkit.Generate()
çağrılarının örneklerini gördünüz.
Ancak genkit.Generate()
, üretken modellerle daha gelişmiş etkileşimler için de bir arayüz sağlar. Bu arayüzü aşağıdaki bölümlerde görebilirsiniz.
Sistem istemleri
Bazı modeller, modele kullanıcıdan gelen mesajlara nasıl yanıt vermesini istediğinizle ilgili talimatlar veren bir sistem istemi sağlama özelliğini destekler. Modelin benimsemesini istediğiniz karakter, yanıtlarının üslubu ve biçimi gibi özellikleri belirtmek için sistem isteminden yararlanabilirsiniz.
Kullandığınız model sistem istemlerini destekliyorsa WithSystem()
seçeneğiyle bir istem sağlayabilirsiniz:
resp, err := genkit.Generate(ctx, g,
ai.WithSystem("You are a food industry marketing consultant."),
ai.WithPrompt("Invent a menu item for a pirate themed restaurant."),
)
Sistem istemlerini desteklemeyen modeller için WithSystem()
, isteği sistem istemi gibi görünecek şekilde değiştirerek sistemi simüle eder.
Model parametreleri
genkit.Generate()
işlevi, modelin içeriği nasıl oluşturduğunu kontrol eden isteğe bağlı ayarları belirtebileceğiniz bir WithConfig()
seçeneği alır:
resp, err := genkit.Generate(ctx, g,
ai.WithModelName("googleai/gemini-2.0-flash"),
ai.WithPrompt("Invent a menu item for a pirate themed restaurant."),
ai.WithConfig(&googlegenai.GeminiConfig{
MaxOutputTokens: 500,
StopSequences: ["<end>", "<fin>"],
Temperature: 0.5,
TopP: 0.4,
TopK: 50,
}),
)
Desteklenen tam parametreler, modele ve model API'sine bağlıdır. Ancak önceki örnekteki parametreler neredeyse her modelde ortaktır. Bu parametrelerin açıklaması aşağıda verilmiştir:
Çıkış uzunluğunu kontrol eden parametreler
MaxOutputTokens
LLM'ler jeton adı verilen birimlerde çalışır. Jetonlar genellikle belirli bir karakter dizisiyle eşlenir ancak her zaman eşlenmez. Bir modeli istemle beslediğinizde ilk adımlarından biri, istem dizenizin bir jeton dizisine ayrıştırılmasıdır. Ardından LLM, jetonlaştırılmış girişten bir jeton dizisi oluşturur. Son olarak, jeton dizisi tekrar metne dönüştürülür. Bu, çıkışınızdır.
Maksimum çıkış jetonu sayısı parametresi, LLM kullanılarak oluşturulacak jeton sayısıyla ilgili bir sınır belirler. Her model farklı bir kelime parçalayıcı kullanabilir ancak genel kural olarak, tek bir İngilizce kelimenin 2 ila 4 jetondan oluştuğunu kabul edebilirsiniz.
Daha önce de belirtildiği gibi, bazı jetonlar karakter dizileriyle eşlenemeyebilir. Bu tür örneklerden biri, genellikle dizinin sonunu belirten bir jetonun olmasıdır: Bir LLM bu jetonu oluşturduğunda daha fazla jeton oluşturmayı durdurur. Bu nedenle, bir LLM'nin "dur" jetonu oluşturduğu için maksimumdan daha az jeton oluşturması mümkündür ve genellikle böyle olur.
StopSequences
Oluşturulduğunda LLM çıkışının sonunu belirten jetonları veya jeton sıralarını ayarlamak için bu parametreyi kullanabilirsiniz. Burada kullanılacak doğru değerler genellikle modelin nasıl eğitildiğine bağlıdır ve genellikle model eklentisi tarafından belirlenir. Ancak modelden başka bir durak sırası oluşturmasını istediyseniz bunu burada belirtebilirsiniz.
Jetonları değil, karakter dizilerini belirttiğinizi unutmayın. Çoğu durumda, modelin dize ayırıcısının tek bir jetonla eşleştirdiği bir karakter dizisi belirtirsiniz.
"Reklam öğesi"ni kontrol eden parametreler
Sıcaklık, en yüksek p ve en yüksek k parametreleri birlikte modelin ne kadar "yaratıcı" olmasını istediğinizi kontrol eder. Bu bölümde, bu parametrelerin ne anlama geldiğine dair çok kısa açıklamalar verilmiştir. Ancak daha önemli olan nokta şudur: Bu parametreler, LLM'nin çıktısının karakterini ayarlamak için kullanılır. Bunlar için en uygun değerler hedeflerinize ve tercihlerinize bağlıdır ve büyük olasılıkla yalnızca deneme yoluyla bulunabilir.
Sıcaklık
LLM'ler temelde jeton öngörme makineleridir. LLM'ler, belirli bir jeton dizisi (ör. istem) için kelime hazinesindeki her jetonun, dizide bir sonraki jeton olma olasılığını tahmin eder. Sıcaklık, bu tahminlerin 0 ile 1 arasında bir olasılığa normalleştirilmeden önce bölündüğü ölçeklendirme faktörüdür.
Düşük sıcaklık değerleri (0,0 ile 1,0 arasında) jetonlar arasındaki olasılık farkını artırır. Bu da modelin, daha önce olasılık olarak düşük olarak değerlendirdiği bir jeton oluşturma olasılığını daha da azaltır. Bu durum genellikle daha az yaratıcı bir sonuç olarak algılanır. 0, 0 teknik olarak geçerli bir değer olmasa da birçok model bunu, modelin belirlenebilir şekilde davranması ve yalnızca en olası jetonu dikkate alması gerektiğini belirten bir değer olarak değerlendirir.
Yüksek sıcaklık değerleri (1,0'dan büyük değerler), jetonlar arasındaki olasılık farklılıklarını sıkıştırır.Sonuç olarak model, daha önce olası olmadığı değerlendirilen jetonları üretme olasılığını artırır. Bu, genellikle daha yaratıcı bir sonuç olarak algılanır. Bazı model API'leri genellikle 2, 0 olan maksimum bir sıcaklık uygular.
TopP
Top-p, modelin dikkate almasını istediğiniz olası jeton sayısını kontrol eden, jetonların kümülatif olasılığını belirten 0,0 ile 1,0 arasında bir değerdir. Örneğin, 1,0 değeri, mümkün olan her jetonun dikkate alınması anlamına gelir (ancak her jetonun olasılığı yine de dikkate alınır). 0,4 değerinin kullanılması, yalnızca olasılıkları toplamı 0,4 olan en olası jetonların dikkate alınması ve kalan jetonların dikkate alınmaması anlamına gelir.
TopK
Top-k, modelin dikkate almasını istediğiniz olası jeton sayısını da kontrol eden bir tam sayı değeridir. Ancak bu kez maksimum jeton sayısını açıkça belirtir. 1 değerinin belirtilmesi, modelin belirlenebilir şekilde davranması gerektiği anlamına gelir.
Model parametreleriyle deneme yapma
Geliştirici kullanıcı arayüzünü kullanarak bu parametrelerin farklı model ve istem kombinasyonlarının oluşturduğu çıkış üzerindeki etkisini deneyebilirsiniz. Geliştirici kullanıcı arayüzünü genkit start
komutuyla başlattığınızda, projenizde yapılandırılmış eklentiler tarafından tanımlanan tüm modeller otomatik olarak yüklenir. Kodda bu değişiklikleri tekrar tekrar yapmak zorunda kalmadan farklı istemleri ve yapılandırma değerlerini hızlıca deneyebilirsiniz.
Modeli yapılandırmasıyla eşleme
Her sağlayıcının veya hatta belirli bir modelin kendi yapılandırma şeması olabileceği veya belirli ayarları gerektirebileceği göz önüne alındığında, WithModelName()
ve WithConfig()
'ü kullanarak ayrı seçenekler belirlemek hataya açık olabilir.
Bir modeli yapılandırmasıyla eşlemek için, bunun yerine oluşturma çağrısına iletebileceğiniz bir model referansı oluşturabilirsiniz:
model := googlegenai.GoogleAIModelRef("gemini-2.0-flash", &googlegenai.GeminiConfig{
MaxOutputTokens: 500,
StopSequences: ["<end>", "<fin>"],
Temperature: 0.5,
TopP: 0.4,
TopK: 50,
})
resp, err := genkit.Generate(ctx, g,
ai.WithModel(model),
ai.WithPrompt("Invent a menu item for a pirate themed restaurant."),
)
if err != nil {
log.Fatal(err)
}
Model referansının kurucusu, doğru yapılandırma türünün sağlanmasını zorunlu kılar. Bu da eşleşmemelerin azalmasına neden olabilir.
Yapılandırılmış çıkış
Üretken yapay zekayı uygulamanızda bir bileşen olarak kullanırken genellikle çıktının düz metin dışında bir biçimde olmasını istersiniz. Yalnızca kullanıcıya göstermek için içerik oluşturuyor olsanız bile yapılandırılmış çıkıştan, içeriği kullanıcıya daha çekici bir şekilde sunmak için yararlanabilirsiniz. Ancak üretken yapay zekanın daha gelişmiş uygulamaları için (ör. modelin çıkışının programatik kullanımı veya bir modelin çıkışının başka bir modele beslenmesi) yapılandırılmış çıkış şarttır.
Genkit'te, genkit.Generate()
işlevini çağırırken bir çıkış türü belirterek modelden yapılandırılmış çıkış isteyebilirsiniz:
type MenuItem struct {
Name string `json:"name"`
Description string `json:"description"`
Calories int `json:"calories"`
Allergens []string `json:"allergens"`
}
resp, err := genkit.Generate(ctx, g,
ai.WithPrompt("Invent a menu item for a pirate themed restaurant."),
ai.WithOutputType(MenuItem{}),
)
if err != nil {
log.Fatal(err) // One possible error is that the response does not conform to the type.
}
Model çıkış türleri, invopop/jsonschema
paketi kullanılarak JSON şeması olarak belirtilir. Bu, statik Go türleri ile üretken yapay zeka modellerinin öngörülemeyen çıkışı arasındaki boşluğu dolduran çalışma zamanı tür denetimi sağlar. Bu sistem, başarılı bir oluşturma çağrısının her zaman Go türlerinize uygun bir çıkış döndüreceği gerçeğine güvenebilen kod yazmanıza olanak tanır.
genkit.Generate()
içinde bir çıkış türü belirttiğinizde Genkit arka planda birkaç işlem yapar:
- İstem, seçilen çıkış biçimiyle ilgili ek bilgilerle desteklenir. Bu, modele tam olarak ne tür bir içerik oluşturmak istediğinizi belirtme (örneğin, yalnızca bir menü öğesi önermekle kalmayıp açıklama, alerjen listesi vb. oluşturma) yan etkisine de sahiptir.
- Çıktının şemaya uygun olduğunu doğrular.
- Model çıktısını bir Go türüne dönüştürür.
Başarılı bir oluşturma çağrısından yapılandırılmış çıktı almak için model yanıtında Output()
işlevini aşağıdaki türde boş bir değerle çağırın:
var item MenuItem
if err := resp.Output(&item); err != nil {
log.Fatalf(err)
}
log.Printf("%s (%d calories, %d allergens): %s\n",
item.Name, item.Calories, len(item.Allergens), item.Description)
Alternatif olarak, daha kısa bir arama için genkit.GenerateData()
'ü kullanabilirsiniz:
item, resp, err := genkit.GenerateData[MenuItem](ctx, g,
ai.WithPrompt("Invent a menu item for a pirate themed restaurant."),
)
if err != nil {
log.Fatal(err)
}
log.Printf("%s (%d calories, %d allergens): %s\n",
item.Name, item.Calories, len(item.Allergens), item.Description)
Bu işlev, çıkış türü parametresini gerektirir ancak WithOutputType()
seçeneğini otomatik olarak ayarlar ve değeri döndürmeden önce resp.Output()
işlevini çağırır.
Hataları işleme
Önceki örnekte, genkit.Generate()
çağrısının hatayla sonuçlanabileceğini unutmayın. Olası bir hata, model şemaya uygun çıkış oluşturamadığında ortaya çıkabilir. Bu tür hatalarla başa çıkmak için en iyi strateji, tam olarak kullanım alanınıza bağlıdır. Bununla birlikte, aşağıdaki genel ipuçlarını kullanabilirsiniz:
Farklı bir model deneyin. Yapılandırılmış çıkışın başarılı olması için modelin JSON biçiminde çıkış oluşturabilmesi gerekir. Gemini gibi en güçlü LLM'ler bunu yapacak kadar çok yönlüdür. Ancak Ollama ile kullanacağınız yerel modellerden bazıları gibi daha küçük modeller, özel olarak eğitilmedikçe güvenilir bir şekilde yapılandırılmış çıkış üretemeyebilir.
Şemayı basitleştirin. LLM'ler karmaşık veya derin iç içe yerleştirilmiş türler oluşturmakta sorun yaşayabilir. Yapılandırılmış verileri güvenilir bir şekilde oluşturamıyorsanız net adlar, daha az alan veya düzleştirilmiş bir yapı kullanmayı deneyin.
genkit.Generate()
aramasını yeniden deneyin. Seçtiğiniz model yalnızca nadiren uygun çıkış oluşturamıyorsa hatayı bir ağ hatası gibi ele alabilir ve isteği bir tür artımlı geri çekilme stratejisi kullanarak yeniden deneyebilirsiniz.
Akış
Büyük miktarlarda metin oluştururken, çıktıyı oluşturulduğu sırada sunarak (yayınlayarak) kullanıcılarınıza daha iyi bir deneyim sunabilirsiniz. Akış işleminin kullanıldığı bilinen bir örnek, çoğu LLM sohbet uygulamasında görülebilir: Kullanıcılar, modelin mesajlarına verdiği yanıtları oluşturulurken okuyabilir. Bu da uygulamanın algılanan yanıt hızını artırır ve akıllı bir kişiyle sohbet etme yanılsamasını güçlendirir.
Genkit'te WithStreaming()
seçeneğini kullanarak çıkışı aktarabilirsiniz:
resp, err := genkit.Generate(ctx, g,
ai.WithPrompt("Suggest a complete menu for a pirate themed restaurant."),
ai.WithStreaming(func(ctx context.Context, chunk *ai.ModelResponseChunk) error {
// Do something with the chunk...
log.Println(chunk.Text())
return nil
}),
)
if err != nil {
log.Fatal(err)
}
log.Println(resp.Text())
Çok modlu giriş
Şimdiye kadar gördüğünüz örneklerde, model istemleri olarak metin dizeleri kullanılmıştır. Bu, üretken yapay zeka modellerini istemde bulunmanın en yaygın yolu olmaya devam etse de birçok model, istem olarak diğer medyaları da kabul edebilir. Medya istemleri genellikle modele medyada bir işlem yapmasını (ör. bir resme altyazı ekleme veya ses kaydını metne dönüştürme) talimat veren metin istemleriyle birlikte kullanılır.
Medya girişini kabul etme özelliği ve kullanabileceğiniz medya türleri tamamen modele ve API'sine bağlıdır. Örneğin, Gemini 2.0 model serisi istem olarak resim, video ve ses kabul edebilir.
Destekleyen bir modele medya istemi sağlamak için genkit.Generate()
'e basit bir metin istemi yerine bir medya bölümü ve bir metin bölümünden oluşan bir dizi gönderin. Bu örnekte, herkese açık bir HTTPS URL'si kullanılarak bir resim belirtilmektedir.
resp, err := genkit.Generate(ctx, g,
ai.WithModelName("googleai/gemini-2.0-flash"),
ai.WithMessages(
NewUserMessage(
NewMediaPart("image/jpeg", "https://example.com/photo.jpg"),
NewTextPart("Compose a poem about this image."),
),
),
)
Medya verilerini, veri URL'si olarak kodlayarak da doğrudan iletebilirsiniz. Örneğin:
image, err := ioutil.ReadFile("photo.jpg")
if err != nil {
log.Fatal(err)
}
resp, err := genkit.Generate(ctx, g,
ai.WithModelName("googleai/gemini-2.0-flash"),
ai.WithMessages(
NewUserMessage(
NewMediaPart("image/jpeg", "data:image/jpeg;base64," + base64.StdEncoding.EncodeToString(image)),
NewTextPart("Compose a poem about this image."),
),
),
)
Medya girişini destekleyen tüm modeller hem veri URL'lerini hem de HTTPS URL'lerini destekler. Bazı model eklentileri diğer medya kaynakları için destek ekler. Örneğin, Vertex AI eklentisi Cloud Storage (gs://
) URL'lerini de kullanmanıza olanak tanır.
Sonraki adımlar
Genkit hakkında daha fazla bilgi
- Uygulama geliştirici olarak üretken yapay zeka modellerinin çıkışını etkilemenin birincil yolu istemlerdir. Genkit'in etkili istemler geliştirmenize ve bunları kod tabanınızda yönetmenize nasıl yardımcı olduğunu öğrenmek için Dotprompt ile istemleri yönetme başlıklı makaleyi okuyun.
genkit.Generate()
, üretken yapay zeka destekli her uygulamanın çekirdeği olsa da gerçek dünyadaki uygulamalar genellikle üretken yapay zeka modelini çağırmadan önce ve çağırdıktan sonra ek çalışma gerektirir. Bu durumu yansıtmak için Genkit, işlevler gibi tanımlanan ancak gözlemlenebilirlik ve basitleştirilmiş dağıtım gibi ek özellikler ekleyen akışlar kavramını sunar. Daha fazla bilgi edinmek için Yapay zeka iş akışlarını tanımlama başlıklı makaleyi inceleyin.
Gelişmiş LLM kullanımı
Uygulamanızın LLM'lerden daha da fazla yararlanmak için kullanabileceği teknikler vardır.
- LLM'lerin yeteneklerini geliştirmenin bir yolu, sizden daha fazla bilgi isteebilecekleri veya sizden bir işlem yapmalarını isteyebilecekleri yöntemlerin listesini onlara sunmaktır. Bu işleme araç çağırma veya işlev çağırma denir. Bu özelliği desteklemek için eğitilen modeller, bir istemin özel biçimlendirilmiş bir yanıtıyla yanıt verebilir. Bu yanıt, çağıran uygulamaya bir işlem yapmasını ve sonucu orijinal istemle birlikte LLM'ye geri göndermesini belirtir. Genkit, hem istem oluşturma hem de bir aracı çağırma uygulamasının çağrı-yanıt döngüsü öğelerini otomatikleştiren kitaplık işlevlerine sahiptir. Daha fazla bilgi için Araç arama başlıklı makaleyi inceleyin.
- Almayla artırılmış üretim (RAG), bir modelin çıktısına alana özgü bilgileri eklemek için kullanılan bir tekniktir. Bu, istem diline aktarılmadan önce istem içine alakalı bilgilerin eklenmesi ile yapılır. Tam bir RAG uygulaması için metin yerleştirme oluşturma modelleri, vektör veritabanları ve büyük dil modelleri gibi çeşitli teknolojileri bir araya getirmeniz gerekir. Genkit'in bu çeşitli öğeleri koordine etme sürecini nasıl basitleştirdiğini öğrenmek için Almayla artırılmış üretim (RAG) başlıklı makaleyi inceleyin.