Dokümanlar menüsü
Semantik tool-arama (toolSearch)
Onlarca/yüzlerce tool arasından son user mesajına embedding benzerliğiyle en alakalı topK tool'u seçen processor; seçim ctx.step ile journal'lanır → resume/replay'de embed yeniden çağrılmaz.
Ne işe yarar / ne zaman kullanılır#
Bir agent'ın onlarca ya da yüzlerce tool'u olduğunda hepsini modele göstermek iki soruna yol açar: bağlam şişer (token maliyeti) ve seçim kalitesi düşer. toolSearch bir processTools processor'ıdır: son user mesajını bir sorgu sinyali olarak alır, tool adı+açıklamalarını embedding'e çevirir, kosinüs benzerliğiyle en alakalı topK aracı seçer, sonra modeli yalnızca onlarla koşturur — zaten kayıtlı araçların üstünde semantik arama ToolSearchProcessor/Skills semantik tool-arama paritesidir.
Seçim non-deterministiktir (embed çağrısı içerir) — bu yüzden seçilen tool adları ctx.step ile journal'lanır. Resume/replay'de embed yeniden çağrılmaz; model tam olarak aynı tool alt kümesini görür. Journal'daki seçimde artık var olmayan tool adları sessizce atlanır (tool seti değişse bile replay kırılmaz).
Kullanım#
Processor'ı createGnl'in ortak processors:'ına ya da tek bir agent'a verin. Güvenli-taraf davranışı: sorgu sinyali yoksa ya da tool sayısı zaten topK'yi aşmıyorsa daraltma yapmaz (hepsi görünür kalır).
import { toolSearch } from '@gnldev/processors';
const gnl = createGnl({
storage,
processors: [
toolSearch({
embed, // text → number[] (wires into the AI SDK embed)
topK: 8, // how many of the most relevant tools to show the model (default 8)
always: ['final'],// always included (never scored, never counted toward topK)
minScore: 0.2, // anything below this similarity is dropped even if it would fit in topK
}),
],
agents: { assistant: { model, tools: bigToolset /* 100+ tool */ } },
});Determinizm ve güvenli taraf#
Seçim ctx.step('tool-search', ...) içinde koşar → journal'a yalnız nihai tool adları yazılır. Eşit skorda tool adına göre stabil sıralama uygulanır (tekrar-üretilebilirlik).processTools yüzeyi bu iş için async'e genişletildi ve ctx.input eklendi — geriye dönük uyumlu.
always ile her zaman görünmesi gereken çekirdek araçları (ör. bir final/tamamla tool'u) skorlamanın dışında tutarsınız; bunlar topK bütçesini harcamaz.API referansı#
toolSearch(ToolSearchOptions) → Processor. processTools içinde son user mesajına en yakın topK tool'u seçer; seçim journal'lı.
ToolSearchOptions{ embed, topK?=8, always?, minScore? } — embed zorunlu; always skorlanmaz, minScore eşiği eler.
Processor@gnldev/durable processor sözleşmesi; toolSearch processTools kancasını uygular.