HextaAI
Tüm HextaUI yapay zeka bloklarından oluşturulmuş eksiksiz bir yapay zeka sohbet uygulaması. Kenar çubuğunda sohbetler, kaynaklı düşünme, fark ve onaylı araç çağrıları, ajan çalışmadan önce gözden geçirdiğiniz bir plan, akışla gelen Markdown ve kod, ve sessiz ses modu; hepsi AI SDK mesaj parçalarıyla yönetilir.
HextaAI, tüm HextaUI yapay zeka bloklarından yapılmış eksiksiz bir yapay zeka sohbet uygulamasıdır. Chat Sidebar geçmişi, Chat Thread konuşmayı tutar, Prompt Input yazma alanıdır ve her yanıt parçalarından çizilir: akıl yürütme için Thinking, ajanın yaptıkları için Tool Calls, planı için Agent Todos, fark ve terminaller için Code Block, yanıt için Streaming Markdown. Artifact, modelin yaptığı web sayfalarını, belgeleri ve dosyaları sohbetin yanındaki bir panelde sürümleriyle açar ve küçük değişiklikler dosyayı yeniden yazmak yerine açık dosyaya yazılır. Voice Mode yazma alanından açılır ve kapattığınızda konuşmayı sohbete bırakır.
Çekirdek HextaMessageParts'tır. AI SDK'nın useChat'inin döndürdüğü mesaj parçalarını aynen alır, komşu akıl yürütme ve araç çağrılarını gruplar, yanıtın en üstünde tek bir canlı plan tutar ve metni, modelin bulduğu kaynaklara bağlı alıntılarla render eder. Okumalar, düzenlemeler, yazmalar, aramalar, web getirmeleri ve kabuk komutlarının her biri uygun bir görünüm alır ve kendi araçlarınız için renderer ekleyebilirsiniz.
Demo, gerçekçi parçaları çevrimdışı akıtan küçük bir motor olan ScriptedChats üzerinde çalışır. Bir öneri deneyin: bir fiyatlandırma sayfası yaptırın ve sohbetin yanında açılışını izleyin, bir soruyu araştırtın ve kaynakların geldiğini görün, bir özellik isteyin ve çalışmadan önce planı gözden geçirin, başarısız olup düzeltilen bir test çalıştırmasını onaylayın ya da kod ve tablolarla bir açıklama isteyin. Yanıtlar arka planda akmaya devam ederken durdurun, yeniden oluşturun, düzenleyin ve sohbetler arasında geçin; ardından ses modunu açıp konuşun.
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/hexta-ai
AI SDK ile
useChat mesajlarını doğrudan HextaMessageParts'a iletin. Araç onayları ve plan gözden geçirmeleri addToolApprovalResponse ile yanıtlanır ve düzenlenmiş bir plan modele onay gerekçesi olarak geri gider.
Kendi araçlarınız
Bir araç adını; türünü, konusunu ve içeriğini döndüren bir renderer'a eşleyin. Eşlemediğiniz araçlar yerleşik görünümlere ya da bir JSON görünümüne düşer.
Betikli demolar
ScriptedChats, gerçekçi hız, onaylar ve durdurma ile bir betikten AI SDK biçimli parçaları akıtır. Ürün turları, onboarding ve çevrimdışı demolar için kullanın.
Yapı
Dıştan içe doğru birleştirdiğiniz parçalar.
| Parça | Açıklama |
|---|---|
HextaMessageParts | Tek bir asistan mesajını parçalarından sırayla render eder: akıl yürütme, plan, araç çağrıları ve Markdown. |
defaultTools | read_file, list_files, grep, web_search, fetch, edit_file, write_file ve bash için yerleşik renderer'lar. |
ScriptedChats, useScriptedChat | Betiklerden AI SDK biçimli parçaları akıtan, durdurma, yeniden oluşturma, düzenleme, onay ve plan gözden geçirme destekli çevrimdışı bir motor. |
textOf, sourcesOf, toBlocks | Bir mesajdan metin ve kaynakları okuyan ve parçalarını renderer'ın yaptığı gibi gruplayan yardımcılar. |
HextaAIDemo | Tam uygulama: ScriptedChats'a bağlı Chat Sidebar, Chat Thread, Prompt Input ve Voice Mode. |
| Prop | Tür | Varsayılan |
|---|---|---|
partsMesajın parçaları: useChat'in döndürdüğü şekliyle text, reasoning, source-url, file ve araç parçaları. | MessagePart[] | – |
streamingBu mesajın hâlâ gelmekte olup olmadığı. Son akıl yürütme veya metin bloğu canlanır ve çalışan araçlar canlı kalır. | boolean | false |
stoppedÇalışan araçları iptal edilmiş olarak işaretler ve bekleyen bir plan gözden geçirmeyi gizler. | boolean | false |
toolsAraç adına göre renderer'lar. Her biri kind, subject, title, meta, content, exitCode veya error döndürür ve yerleşik görünümü geçersiz kılar. | Record<string, ToolRenderer> | {} |
onApprovalBiri onay bekleyen bir araç çağrısına izin verdiğinde veya reddettiğinde çağrılır. | (toolCallId, { approved, reason?, always? }) => void | – |
onPlanApproveBiri gözden geçirmeden planı çalıştırdığında, düzenlenmiş planla çağrılır. | (toolCallId, todos) => void | – |
onPlanCancelPlan gözden geçirme iptal edildiğinde çağrılır. | (toolCallId) => void | – |
reasoningDurationsHer akıl yürütme bloğunda geçen saniyeler; böylece “Thought for” yeniden yüklemeden sonra da doğru kalır. | number[] | – |
| Prop | Tür | Varsayılan |
|---|---|---|
new ScriptedChats(respond)Her mesajı yanıtlayan betiği seçer. | (prompt, files) => Script | – |
send(chatId, text, files?, options?)Bir kullanıcı mesajı ekler ve yanıtı akıtır. options: model, thinking ve tüm beklemeyi atlayan instant. | Promise<void> | – |
stop, regenerate, edit, append, removeYanıtı durdurun, sonuncuyu yineleyin, düzenlenmiş bir mesajdan yeniden gönderin, tamamlanmış mesajlar ekleyin ya da bir sohbeti bırakın. | methods | – |
decide(toolCallId, decision)Bekleyen bir onaya ya da plan gözden geçirmeye yanıt verir. Düzenlenmiş bir planı çalıştırmak için todos iletin. | void | – |
useScriptedChat(store, chatId)Bir bileşeni tek bir sohbete abone eder. | { messages, status, pinned } | – |
| Prop | Tür | Varsayılan |
|---|---|---|
think(text)Bir akıl yürütme parçasını akıtır. Thinking kapalıysa atlanır. | Promise<void> | – |
say(markdown)Gerçek bir model gibi, düzensiz parçalarla bir metin parçasını akıtır. | Promise<void> | – |
tool(name, input, { stream? })Bir araç çağrısı ekler, isteğe bağlı olarak tek bir girdi alanını akıtır. Tanıtıcı onaylayabilir, ilerletebilir, bitirebilir veya başarısız kılabilir. | Promise<ToolHandle> | – |
plan(todos)Gözden geçirme için bir plan gösterir ve bekler. Düzenlenmiş planı döndürür, iptal edilirse null. | Promise<Todo[] | null> | – |
todos(todos), source(page), pause(ms)Planı güncelleyin, bir kaynağı alıntılayın ya da bekleyin. | methods | – |
| Tuş | Action |
|---|---|
| ⌘K | Sohbetlerinizde arar. |
| ⌘⇧O | Yeni bir sohbet başlatır. |
| ⌘B | Kenar çubuğunu simgelere daraltır ya da telefonlarda tam ekran açar. |
| Enter | Mesajı gönderir. Shift+Enter yeni satır ekler. |
| ⌘↵ | Gözden geçirilirken planı çalıştırır ya da bekleyen bir araç çağrısına izin verir. |
| ⌘⌫ | Bekleyen araç çağrısını reddeder. |
| Esc | Yanıtı durdurur, bir menüyü kapatır ya da ses modunu bitirir. |
- Her parça, onu çizen bloğun erişilebilirliğini korur: thread yeni yanıtları polite olarak duyurur, araç çağrıları ve planlar durumlarını metin olarak sunar, alıntılar kaynaklarını adlandırır ve onaylar klavye kısayollu gerçek düğmelerdir.
- Önemli hiçbir şey yalnızca hareketle ya da renkle gösterilmez. Spinner'ların “Replying” gibi etiketleri vardır, arka planda biten sohbetler “Unread reply” etiketi alır ve farklar eklenen ve kaldırılan satırları renkle birlikte işaretlerle de belirtir.
- Akış, shader ve sheet animasyonlarının hepsi azaltılmış hareketi dikkate alır. Ses modu yanıtları sesli okumadan çalışır, altyazı gösterir ve mikrofon yoksa örnek bir konuşma oynatır.
Şunlarla geliştirildi
HextaAI bloğunun yapıldığı ücretsiz HextaUI bileşenleri. Her biri tek başına yüklenir.
Kod
5 dosya, components/blocks/hexta-ai konumuna eklendi.