Bu rehberde: Tek adımlık yapay zekâ işlerini öğrenirsiniz: metin yazma, metinden bilgi çıkarma, sınıflandırma, çeviri, görsel üretme ve bilgi bankasında arama. Ajanlardan daha ucuz ve hızlıdırlar.
⏱ 12 dakika
Kısaca
Yapay zekâ araçları, ajan gibi adım adım düşünmez; her öğe için tek bir istek gönderir ve sonucu öğeye yazar. Örneğin: gelen her mesajı "satış / destek / spam" diye etiketlemek veya her gönderiyi İngilizceye çevirmek. Basit ve tekrarlı işlerde ajan yerine bu kutuları kullanın; maliyet çok daha düşüktür.


Teknik ayrıntılar
AI Tools kategorisi, ajan döngüsü olmadan tek bir model çağrısı yapan "ilkel" node'ları içerir. Bir ajan (agent.*) araç kullanır, adım adım düşünür ve rapor üretir; bir AI node'u ise her item için tek bir istek gönderir ve sonucu item'ın json'una yazar. Bu yüzden AI node'ları daha ucuz, daha hızlı ve daha öngörülebilirdir. Tipik kullanım: sınıflandırma ile yönlendirme, metinden yapılandırılmış veri çıkarma, çeviri, özet, görsel üretimi ve bilgi bankasından bağlam çekme (RAG).
Tüm AI node'ları item başına çalışır: 20 item gelirse 20 model çağrısı yapılır. Girdi alanlarına {{ $json.alan }} ile erişirsiniz; sonuç, outputKey parametresiyle adlandırdığınız alana eklenir ve item'ın diğer alanları korunur.
| Node | Tip | Girdi | Çıktı handle'ları | Entegrasyon | Model |
|---|---|---|---|---|---|
| LLM: Generate text | ai.generate | 1 | main | – | Evet |
| LLM: Extract structured data | ai.extract | 1 | main | – | Evet |
| LLM: Classify | ai.classify | 1 | kategori başına bir handle (dinamik) | – | Evet |
| LLM: Translate | ai.translate | 1 | main | – | Evet |
| AI: Görsel üret | ai.imagePrompt | 1 | main | – (OpenAI Images; platform anahtarı veya OPENAI BYOK) | Hayır |
| Knowledge base search | ai.knowledgeSearch | 1 | main | – (Bilgi Bankası) | Hayır |
Ortak parametreler: Model ve Effort
usesModel: true olan node'larda denetçi panelinin Gelişmiş (advanced) grubunda iki ortak parametre bulunur:
| Anahtar | Etiket | Tür | Zorunlu | Varsayılan | Notlar |
|---|---|---|---|---|---|
modelId | Model | model | Hayır | boş | group: advanced. Boş bırakılırsa sırayla: iş akışı settings.defaultModelId → organizasyon varsayılanı (Ayarlar (Settings) → Modeller) → platform varsayılanı claude-opus-5. FREE planda yalnızca ekonomi modelleri seçilebilir. |
effort | Effort | select | Hayır | medium | group: advanced. low (hızlı, ucuz), medium, high, xhigh. Yalnızca ai.generate bu parametreyi taşır. |
ai.extract, ai.classify ve ai.translate yalnızca modelId alır. ai.imagePrompt ve ai.knowledgeSearch dil modeli kullanmaz; model parametresi yoktur.
Her çağrının token kullanımı ve maliyeti node çalıştırmasına yazılır (usage.costUsd) ve iş akışının settings.budgetUsd limitine sayılır. Limit aşılırsa çalıştırma FAILED olur ve budget.exceeded olayı yayınlanır. Fiyatlar ve seçim önerileri için Model seçimi.
LLM: Generate text (ai.generate)
Bir prompt şablonunu her item için çözümler, modele gönderir ve yanıt metnini outputKey alanına yazar. Özet, yeniden yazma, başlık üretme, kısa cevap gibi tek adımlı işler için kullanın.
| Anahtar | Etiket | Tür | Zorunlu | Varsayılan | Notlar |
|---|---|---|---|---|---|
system | System prompt | text | Hayır | – | Marka sesi, dil ve format kuralları. {{ $project.name }} gibi ifadeler kullanılabilir. |
prompt | Prompt | text | Evet | – | Item başına çözümlenir. Örnek: Summarise: {{ $json.text }} |
outputKey | Output field | string | Hayır | text | Yanıtın yazılacağı json alanı. Var olan bir alan adı verirseniz üzerine yazılır. |
maxTokens | Max tokens | number | Hayır | 4000 | group: advanced. Çıktı token üst sınırı; uzun yanıtlarda kesilmeyi önlemek için artırın. |
modelId | Model | model | Hayır | boş | group: advanced |
effort | Effort | select | Hayır | medium | group: advanced |
Çıktı: girdi item'ı + json[outputKey] (string). Model yanıtı düz metindir; JSON istiyorsanız ai.extract kullanın.
Örnek 1 – sayfa özeti:
data.fetchPage (url: {{ $json.url }})
→ ai.generate (system: "Türkçe yaz, en fazla 3 madde.",
prompt: "Aşağıdaki sayfayı özetle:\n\n{{ $json.text }}",
outputKey: "summary", modelId: claude-haiku-4-5)
→ utility.report (title: "Özet: {{ $json.title }}", contentMarkdown: {{ $json.summary }})
Örnek 2 – yorum yanıtı taslağı:
social.getComments (platform: INSTAGRAM)
→ ai.generate (prompt: "Şu yoruma marka sesiyle 1 cümlelik yanıt yaz: {{ $json.text }}", outputKey: "reply")
→ social.replyComment (commentId: {{ $json.commentId }}, text: {{ $json.reply }})
LLM: Extract structured data (ai.extract)
Serbest metinden, verdiğiniz JSON şemasına uyan bir nesne çıkarır. Model yapılandırılmış çıktı (structured outputs) modunda çalışır; sonuç her zaman şemaya uygun geçerli JSON'dur. Form mesajlarını, e-postaları, sohbet metinlerini ve sayfa içeriklerini alanlara ayırmak için kullanın.
| Anahtar | Etiket | Tür | Zorunlu | Varsayılan | Notlar |
|---|---|---|---|---|---|
prompt | Instructions | text | Evet | – | Ne çıkarılacağını ve kaynak metni içerir: Şu mesajdan bilgileri çıkar: {{ $json.text }} |
schema | JSON schema | json | Evet | – | JSON Schema (draft 2020-12 alt kümesi). type: object ile başlayın; required ve enum kullanın. |
outputKey | Output field | string | Hayır | data | Çıkarılan nesnenin yazılacağı alan. |
modelId | Model | model | Hayır | boş | group: advanced |
Örnek şema:
{
"type": "object",
"properties": {
"name": { "type": "string" },
"company": { "type": "string" },
"budget": { "type": "number", "description": "Aylık bütçe, USD" },
"intent": { "type": "string", "enum": ["buy", "info", "support"] },
"phone": { "type": "string" }
},
"required": ["name", "intent"]
}
Çıktı: girdi item'ı + json[outputKey] (şemaya uyan nesne). Metinde bulunmayan zorunlu olmayan alanlar null döner. Alanlara {{ $json.data.company }} ile erişirsiniz.
Örnek – WhatsApp mesajından lead:
trigger.messageReceived (channels: [WHATSAPP])
→ ai.extract (prompt: "Mesajdan iletişim ve niyet bilgisini çıkar: {{ $json.text }}", schema: yukarıdaki, outputKey: "data")
→ logic.if (condition: {{ $json.data.intent === 'buy' }})
true → leads.create (mapping: name: {{ $json.data.name }}, phone: {{ $json.contactId }}, company: {{ $json.data.company }})
LLM: Classify (ai.classify)
Her item'ı verdiğiniz kategorilerden birine atar ve o kategoriye ait çıkış handle'ına yönlendirir. Katalogda outputs: ["main"] görünse de editör, categories listesindeki her giriş için ayrı bir çıkış handle'ı çizer; handle adı kategori adıyla aynıdır. Kategori listesini değiştirdiğinizde handle'lar yeniden oluşturulur; kaldırılan kategoriye bağlı kenarlar (edge) silinir.
| Anahtar | Etiket | Tür | Zorunlu | Varsayılan | Notlar |
|---|---|---|---|---|---|
input | Text to classify | expression | Evet | {{ $json.text }} | Sınıflandırılacak metin. |
categories | Categories | list | Evet | ["sales", "support", "spam", "other"] | Her giriş bir çıkış handle'ı olur. Küçük harf ve ASCII kullanın; $node ifadelerinde kolaylık sağlar. |
instructions | Extra instructions | text | Hayır | – | Kategori tanımları ve sınır durumları: "Fiyat soran mesajlar sales sayılır." |
outputKey | Output field | string | Hayır | category | Seçilen kategori adının yazılacağı alan. |
modelId | Model | model | Hayır | boş | group: advanced |
Çıktı: item, json[outputKey] = kategori adı ile birlikte yalnızca ilgili handle'a gider. Diğer handle'lar o item için boş kalır; bir handle'a hiç item düşmezse bağlı olduğu dal atlanır (SKIPPED). Bir "diğer" kategorisi ekleyin; aksi halde model uymayan metni en yakın kategoriye zorlar.
Örnek – gelen mesajı yönlendirme:
trigger.messageReceived
→ ai.classify (input: {{ $json.text }}, categories: [sales, support, spam, other],
instructions: "Randevu, fiyat, teklif isteyenler sales. Sipariş, kargo, iade sorunları support.",
modelId: claude-haiku-4-5)
sales → leads.create → utility.notify (title: "Satış mesajı: {{ $json.contactName }}")
support → agent.chatbot
spam → utility.noop
other → messaging.handoff
LLM: Translate (ai.translate)
Seçtiğiniz alanları hedef dile çevirir; marka tonunu, hashtag'leri ve {{ }} yer tutucularını korumaya çalışır. Çok dilli içerik takvimleri ve gelen mesajları ortak dile çekmek için uygundur.
| Anahtar | Etiket | Tür | Zorunlu | Varsayılan | Notlar |
|---|---|---|---|---|---|
fields | Fields to translate | list | Hayır | ["body"] | Çevrilecek json alanları. Alan yoksa veya boşsa atlanır. |
targetLanguage | Target language | string | Evet | en | ISO 639-1 kodu (en, tr, de) veya dil adı. |
modelId | Model | model | Hayır | boş | group: advanced |
Çıktı: item, listelenen alanların çevrilmiş halleriyle. Alanlar yerinde değiştirilir; orijinali saklamak için önce data.set ile kopyalayın (body_tr: {{ $json.body }}).
Örnek: agent.contentCreator → ai.translate (fields: [body, title], targetLanguage: en) → social.publish (platform: LINKEDIN).
AI: Görsel üret (ai.imagePrompt)
Prompt'tan görsel üretir ve sonucu item'ın binary alanına ekler. Sosyal içerik akışlarında agent.contentCreator'ın imagePrompt alanını kullanmak için tasarlanmıştır. İçerik sayfasındaki Görsel üret ile aynı hattı kullanır: kısa açıklamanız önce bir sanat yönetmeni adımında (ekonomik bir Claude modeli) ayrıntılı bir görsel tarifine çevrilir (item'daki body / text bağlam olarak kullanılır), ardından gpt-image-2.5-flare yüksek kalitede üretir. Görsel JPEG olarak kaydedilir; Instagram içerik yayınlama API'si PNG kabul etmediği için doğrudan Instagram'a gönderilebilir. Görsel çağrısı OpenAI anahtarı ile yapılır: organizasyonda OpenAI API key (BYOK) entegrasyonu varsa o, yoksa platform anahtarı kullanılır.
| Anahtar | Etiket | Tür | Zorunlu | Varsayılan | Notlar |
|---|---|---|---|---|---|
prompt | Prompt | expression | Evet | {{ $json.imagePrompt }} | Görsel açıklaması. Marka renklerini ve stilini prompt'a yazın; metin içeren görsellerden kaçının. |
size | Size | select | Hayır | 1024x1024 | 1024x1024 (kare, Instagram/X), 1024x1536 (dikey, Pinterest/Reels kapak), 1536x1024 (yatay, LinkedIn/YouTube). |
binaryKey | Binary key | string | Hayır | image | Görselin binary altında yazılacağı anahtar. |
Çıktı item'ı:
{
"json": { "platform": "INSTAGRAM", "body": "...", "imagePrompt": "...", "imageUrl": "https://.../3f2c….jpg" },
"binary": {
"image": { "mimeType": "image/jpeg", "url": "https://.../3f2c….jpg" }
}
}
Görsel, çalıştırma yükünü küçük tutmak için depolamaya yüklenir ve url ile taşınır. Sonraki node'larda {{ $json.imageUrl }} veya {{ $item.binary.image.url }} ile erişirsiniz; social.publish görseli kendiliğinden ekler, mediaUrls boş kalabilir.
Prompt boş çözümlenirse (item'da imagePrompt yoksa) item görselsiz olarak aynen geçer ve çalıştırma günlüğüne not düşülür. Görsel zorunlu platformlar (Instagram, Pinterest) için bu item'ları logic.filter (condition: {{ !!$json.imagePrompt }}) ile ayırın.
Örnek – Günlük sosyal medya içerik akışı şablonu:
trigger.schedule (0 8 * * 1-5)
→ agent.contentCreator (includeImagePrompts: true)
→ ai.imagePrompt (prompt: {{ $json.imagePrompt }}, size: 1024x1024, binaryKey: image)
→ utility.approval (title: "Approve {{ $json.platform }} post")
approved → agent.socialPublisher
Knowledge base search (ai.knowledgeSearch)
Bilgi Bankası (Knowledge) altında yüklediğiniz belgeler üzerinde anlamsal arama yapar ve en alakalı parçaları (chunk) item'a ekler. Chatbot yanıtlarını, e-posta taslaklarını ve SSS cevaplarını kendi belgelerinize dayandırmak (RAG) için kullanın.
| Anahtar | Etiket | Tür | Zorunlu | Varsayılan | Notlar |
|---|---|---|---|---|---|
knowledgeBaseId | Knowledge base | kb | Evet | – | Projenin bilgi bankalarından biri (açılır liste). |
query | Query | expression | Evet | {{ $json.text }} | Arama sorgusu; genellikle kullanıcının mesajı. |
topK | Results | number | Hayır | 5 | Döndürülecek parça sayısı. 3–8 arası pratik; fazlası prompt'u şişirir. |
Çıktı: girdi item'ı + json.results (bulunan parçalar) + json.context (parçaların birleştirilmiş metni, doğrudan komuta koymak için):
{
"text": "İade süresi kaç gün?",
"results": [
{ "content": "İade talepleri teslimattan itibaren 14 gün içinde...", "score": 0.87, "documentTitle": "İade Politikası.pdf" },
{ "content": "Kargo ücreti iadelerde...", "score": 0.71, "documentTitle": "SSS.md" }
]
}
score 0–1 arası benzerlik puanıdır; düşük puanlı parçaları data.code ile eleyebilirsiniz. Bilgi bankası boşsa veya eşleşme yoksa chunks boş dizi olur; item yine main'e geçer.
Örnek – belge tabanlı yanıt:
trigger.messageReceived
→ ai.knowledgeSearch (knowledgeBaseId: <Ürün dokümanları>, query: {{ $json.text }}, topK: 4)
→ ai.generate (system: "Yalnızca verilen bağlama dayanarak yanıt ver; bilmiyorsan 'ekibe aktarıyorum' de.",
prompt: "Bağlam:\n{{ $json.context }}\n\nSoru: {{ $json.text }}", outputKey: "reply")
→ messaging.send (channel: {{ $json.channel }}, to: {{ $json.contactId }}, text: {{ $json.reply }})
İpuçları ve sınırlar
- Item sayısı kadar model çağrısı yapılır. Büyük listelerde önce
logic.limitveyalogic.filterile daraltın; sınıflandırma ve çıkarma için ekonomi modelleri (claude-haiku-4-5,gpt-5-mini) genellikle yeterlidir. - Maliyet tahmini (item başına ~4K giriş / ~0.4K çıkış token): Haiku 4.5 ≈ $0.006, Sonnet 5 ≈ $0.012, Opus 5 ≈ $0.03. Uzun sayfa metinlerinde giriş token'ı hızla artar;
data.fetchPage.maxCharsile kırpın. outputKeymevcut bir alanı ezer. Ajan çıktılarıyla çakışmamak içinsummary,reply,datagibi belirgin adlar seçin.ai.extractşemasındarequiredalanları azaltın; metinde olmayan zorunlu alanlar modeli uydurmaya zorlar.enumkullanmak yönlendirme koşullarını (logic.if,logic.switch) güvenilir kılar.ai.classifyhandle adları kategori adlarıdır; kategori adını değiştirmek bağlı kenarları koparır. Yeni kategori eklerken kenarları yeniden bağlayın.ai.imagePromptçıktısıbinaryiçindedir;data.setilekeepOnlySet: trueyaparsanızjsonsıfırlanır amabinarykorunur.data.codeiçinde döndürdüğünüz nesneyebinary: it.binaryeklemeyi unutmayın, aksi halde görsel kaybolur.- Bilgi bankası araması yalnızca iş akışının projesine ait bilgi bankalarını görür. Belge yükleme ve indeksleme Bilgi Bankası sayfasından yapılır; indeksleme bitmeden arama boş dönebilir.
- Test modunda (
testMode: true) AI node'ları gerçek çağrı yapar ve maliyet oluşturur; yalnızca dış etkili node'lar (yayın, mesaj) dry-run olur.
Sık sorulan sorular
Ajan mı yapay zekâ aracı mı kullanmalıyım? Tek adımlık işlerde (sınıflandırma, çeviri, özet) yapay zekâ aracı. Araştırma, araç kullanımı veya çok adımlı karar gerekiyorsa ajan.
20 öğe gelirse 20 kez mi ücret öderim? Evet; her öğe için bir istek yapılır. Önce Süz veya Sınırla ile daraltın.
Görsel üretimi için ne gerekir? Bir OpenAI anahtarı (platform veya kendi anahtarınız).