Tool Calls
Bir ajanın ne yaptığını adım başına bir satırla gösterin. Okuma ve aramalar kısa bir özete katlanırken düzenlemeler, komutlar, onaylar ve hatalar görünür kalır. Her adım gerçek bir görünüme açılır: dosya, fark, terminal ya da sonuçlar. Onay yerine gerekçe verme seçeneği dahil, her AI SDK araç durumu kapsanır.
Ajanlar yanıt vermeden önce düzinelerce küçük adım atabilir. Her birini göstermek yanıtı gömer, gizlemek ise ajanı kara kutu gibi hissettirir. Tool Calls her adıma, “Read components/search.tsx” ya da “Searched for useResults, 3 results” gibi cümle gibi okunan sakin bir satır verir.
Art arda çalışan okumalar, aramalar ve sorgular “Explored 6 files” gibi tek bir özete katlanır. Bir şeyi değiştiren, karar gerektiren ya da başarısız olan her şey, çalışırken canlı bir zamanlayıcıyla kendi satırında kalır. Gerçek işi görmek için herhangi bir adımı açın: dosya, fark, terminal ya da sonuçlar.
Her AI SDK araç durumunun, onaylar dahil, kendi görünümü ve ifadesi vardır. Onaylama; Allow, Deny, Always allow ve sözlerinizi gerekçe olarak geri gönderen “Tell it what to do instead” seçeneklerini, klavyeden ⌘↵ ve ⌘⌫ ile sunar. getToolPartStatus araç parçalarını sizin için eşler ve hazır görünümler arama sonuçlarını, dosya listelerini, çoktan seçmeli soruları ve ham JSON'u kapsar.
Pro registry'yi components.json dosyasına ekleyin
components.json Token'ınızı ekleyin
Hesap sayfanızda bir token oluşturun ve
.env.localdosyasınaHEXTAUI_PRO_TOKENolarak ekleyin.Bloğu ekleyin
pnpm dlx shadcn@latest add @hextaui-pro/tool-calls
AI SDK ile
getToolPartStatus ile araç parçalarını adımlara dönüştürün ve her araç için bir kind ve view seçin. Sohbet akışı durunca stopped geçin; böylece yarıda kesilen bir çağrı sonsuza dek dönmek yerine Cancelled olarak görünür.
Komutları onaylama
Sunucuda bir aracı needsApproval ile işaretleyin ve addToolApprovalResponse ile yanıtlayın. Always allow programı hatırlar ve bir ret, yerine ne yapılacağını gerekçe olarak taşıyabilir. Adım odaktayken ⌘↵ ve ⌘⌫ çalışır.
Kullanıcıya sorma
Execute fonksiyonu olmayan bir istemci aracı yanıt bekler. Seçenekleri AskUser ile gösterin ve seçimi addToolOutput ile geri gönderin.
Yapı
Dıştan içe doğru birleştirdiğiniz parçalar.
| Parça | Açıklama |
|---|---|
ToolCalls | Liste. Sessiz çalışmaları gruplar ve adımlar arasında zamanlamayı paylaştırır. |
ToolCall | Bir adım: simge, cümle, meta, zamanlayıcı ve açıldığında içeriği. |
ToolGroup | Bir özet satırıyla katlanmış sakin adımlar dizisi. |
ToolApproval | Onay bekleyen bir adımın içinde gösterilen onayla, reddet ve yönlendir kartı. |
SearchResults, FileList, AskUser, ToolJson | Bir adımın içeriği olarak geçirilecek görünümler. |
ToolCalls
Ayrıca children dışındaki her ol prop'unu kabul eder.
| Prop | Tür | Varsayılan |
|---|---|---|
callsÇalıştıkları sırayla adımlar. | ToolCallProps[] | – |
groupSakin adım dizilerini katlar. Her adımı göstermek için false yapın. | boolean | true |
| Prop | Tür | Varsayılan |
|---|---|---|
idKararlı id, genellikle toolCallId. Zamanlama id başına tutulur. | string | – |
statusstreaming, running, waiting, approval, done, error, denied veya cancelled. | ToolStatus | – |
kindread, search, list, edit, write, run, web, fetch, ask veya other. Simgeyi ve fiili belirler. | ToolKind | "other" |
subjectÜzerinde işlem yaptığı şey: bir yol, sorgu, URL veya komut. | string | – |
nameAraç adı; kind değeri other olduğunda cümle için kullanılır. | string | – |
titleÜretilen cümleyi tamamen değiştirir. | string | – |
metaCümleden sonra “3 results” veya “+12 −3” gibi kısa sonuç. | ReactNode | – |
contentAdım açıldığında gösterilir. | ReactNode | – |
exitCodeÇalıştırma adımları için. 0 dışı adımı başarısız olarak işaretler ve açar. | number | – |
errorerror durumu için gösterilen mesaj. | string | – |
durationGeçmiş için saniye cinsinden saklanan süre. | number | – |
approvalOnaylar için gerekçe, sonuç ve her zaman izin ver etiketi. | ToolCallApproval | – |
defaultOpenAdımın açık başlayıp başlamayacağını geçersiz kılar. | boolean | – |
onApproveAllow veya Always allow ile çağrılır. | (options: { always: boolean }) => void | – |
onDenyDeny ile ya da “Tell it what to do instead” metniyle çağrılır. | (reason?: string) => void | – |
| Prop | Tür | Varsayılan |
|---|---|---|
reasonDüğmelerin üstünde gösterilen, onayın neden gerektiği. | string | – |
approvedVerildikten sonra yanıt. | boolean | – |
automaticBir kuralla onaylandı; bu yüzden kart gösterilmez. | boolean | – |
denialReasonReddedilen adımlarda gösterilen, kişinin bunun yerine istediği şey. | string | – |
alwaysLabelBu etiketle “Always allow …” gösterir, örneğin program adı. | string | – |
getToolPartStatus(part, options)
Bir AI SDK araç parçasını ToolStatus'a eşler.
| Prop | Tür | Varsayılan |
|---|---|---|
partmessage.parts içindeki parça. | ToolUIPart | DynamicToolUIPart | – |
options.stoppedSohbet durdu; bu yüzden tamamlanmamış çağrılar dönmek yerine Cancelled olarak görünür. | boolean | false |
options.waitingBir istemci aracı kişiyi bekliyor, örneğin AskUser. | boolean | false |
| Prop | Tür | Varsayılan |
|---|---|---|
questionSoru. | string | – |
optionsSeçenekler. | { value, label, description? }[] | – |
answerYanıtlandıktan sonra seçilen değer. | string | – |
onAnsweraddToolOutput ile geri gönderin. | (value: string) => void | – |
| Prop | Tür | Varsayılan |
|---|---|---|
queryHer eşleşmenin içinde vurgulanır. | string | – |
matchesEşleşmeler. | { path, line, text }[] | – |
limit“Show all” öncesinde gösterilir. | number | 6 |
| Tuş | Action |
|---|---|
| EnterSpace | Bir adımı ya da katlanmış bir grubu açar veya kapatır. |
| ⌘↵ | Odak içindeyken onay bekleyen bir adıma izin verir. |
| ⌘⌫ | Odak içindeyken onay bekleyen bir adımı reddeder. |
| Esc | “Tell it what to do instead” alanından göndermeden çıkar. |
- Adımlar sıralı bir listedir; bu sayede ekran okuyucular kaç adım olduğunu ve her birinin nerede durduğunu duyurur.
- Kişinin müdahalesini gerektiren adımlar, sorular ve hatalarla birlikte kibar (polite) bir canlı bölge üzerinden duyurulur; örneğin “Approval needed: Run pnpm test”. Rutin adımlar sessiz kalır, böylece ekran okuyucular gereksiz yere yüklenmez.
- Durum asla yalnızca renkle belirtilmez: her durumun kendi simgesi ve ifadesi vardır.
- Onay kısayolları bir alana yazarken yok sayılır ve yönlendirme alanı açıldığında kendine odaklanır, kapandığında odağı geri verir.
Şunlarla geliştirildi
Tool Calls bloğunun yapıldığı ücretsiz HextaUI bileşenleri. Her biri tek başına yüklenir.
Kod
8 dosya, components/blocks/tool-calls konumuna eklendi.