Skip to main content
Beceriler ve ajanlar şu anda alfa aşamasında. Özellik işlevsel ancak hâlâ gelişmekte.
Uygulamalar, çalışma alanı içinde yer alan yapay zekâ yeteneklerini — yeniden kullanılabilir yetenek yönergeleri ve özel sistem istemlerine sahip ajanları — tanımlayabilir.
Yetenekler, yapay zekâ ajanlarının çalışma alanınızda kullanabileceği yeniden kullanılabilir yönergeleri ve kabiliyetleri tanımlar. Yerleşik doğrulamayla yetenekleri tanımlamak için defineSkill() kullanın:
src/skills/example-skill.ts
Önemli noktalar:
  • name, yetenek için benzersiz bir tanımlayıcı dizedir (kebab-case önerilir).
  • label, UI’de gösterilen, insan tarafından okunabilir addır.
  • content, yetenek yönergelerini içerir — bu, yapay zekâ ajanının kullandığı metindir.
  • icon (isteğe bağlı), UI’de gösterilen simgeyi ayarlar.
  • description (isteğe bağlı), yeteneğin amacı hakkında ek bağlam sağlar.
Ajanlar, çalışma alanınız içinde bulunan yapay zekâ asistanlarıdır. Özel bir sistem istemiyle ajanlar oluşturmak için defineAgent() kullanın:
src/agents/example-agent.ts
Önemli noktalar:
  • name, ajan için benzersiz bir tanımlayıcı dizedir (kebab-case önerilir).
  • label, UI’de gösterilen görünen addır.
  • prompt, ajanın davranışını tanımlayan sistem istemidir.
  • description (isteğe bağlı), ajanın ne yaptığı hakkında bağlam sağlar.
  • icon (isteğe bağlı), UI’de gösterilen simgeyi ayarlar.
  • modelId (isteğe bağlı), ajanın kullandığı varsayılan yapay zekâ modelini geçersiz kılar.
  • responseFormat (isteğe bağlı), ajan çıktısının şeklini kontrol eder. Serbest biçimli metin için varsayılan olarak { type: 'text' } kullanılır. Yapılandırılmış JSON çıktısını zorunlu kılmak için { type: 'json', schema } kullanın.
Varsayılan olarak bir ajan serbest biçimli metin döndürür. Yapılandırılmış çıktı almak için, responseFormat değerini { type: 'json' } yapın ve bir schema sağlayın:
src/agents/structured-agent.ts
Şema notları:
  • Şema düz bir nesnedir: her özelliğin type değeri, ilkel bir tür (string, number veya boolean) olmalıdır. İç içe nesneler ve diziler desteklenmez.
  • Her özellik üzerindeki description (isteğe bağlı), modele oraya ne koyması gerektiği konusunda yol gösterir.
  • required (isteğe bağlı), modelin her zaman döndürmesi gereken özellikleri listeler.
  • additionalProperties: false (isteğe bağlı), properties içinde tanımlanmamış herhangi bir özelliği yasaklar.
runAgent(), bir mantık işlevinin uygulamanızın ajanlarından birini (kendi yetenekleri ve araçlarıyla) çalıştırmasına olanak tanır. Ajanı, defineAgent() işlevine ilettiğiniz universalIdentifier ile belirleyin: Ya bir prompt dizesi ya da bir messages konuşma geçmişi iletin — ikisini birden değil:
src/logic-functions/run-enricher.ts
Çok turlu botlar (Slack, Discord, Teams, …) için, tek bir prompt yerine iş parçacığı geçmişini messages olarak iletin:
src/logic-functions/reply-in-thread.ts
Önemli noktalar:
  • prompt (string) veya messages’tan (1 ila 100 adet { role: 'user' | 'assistant', content: string } girişi) yalnızca birini sağlayın.
  • Ajan senkron olarak çalışır ve kendi araçları aracılığıyla kayıtları kendisi okuyup/güncelleyebilir — işlem tamamlandığında runAgent() çözümlenir.
  • Bir uygulama yalnızca kendi ajanlarını çalıştırabilir.
  • Uygulamanın varsayılan rolü, AI izin bayrağını vermelidir — permissionFlagUniversalIdentifiers içine SystemPermissionFlag.AI ekleyin (veya canAccessAllTools: true olarak ayarlayın). Bu olmadan, runAgent() bir izin hatasıyla başarısız olur.
  • Mantık işlevi için cömert bir timeoutSeconds değeri ayarlayın — ajan çalışmaları birkaç saniye sürebilir.
  • Çalışma tamamlandığında success değeri true olur ve result boş olmayan bir değerdir; başarısızlık durumunda success değeri false olur, result değeri null olur ve error nedenini tutar (örneğin, çalışma ortasında çalışma alanının AI kredileri bittiğinde).
src/roles/default-role.ts
Döngülerden kaçının: Bir *.updated veritabanı olayı tetikleyicisinden runAgent() çağırırsanız ve ajan aynı kaydı güncelliyorsa, tetikleyiciyi, ajan tarafından asla yazılmayan bir alana (örneğin kaynak URL) göre updatedFields ile kapsamlandırın veya runAgent() çağırmadan önce herhangi bir hedef alanın hâlâ boş olup olmadığına göre koruma ekleyin.