OpenAgentAGI
YamlBlocks

Loop Block YAML Schema

Loop блокийн YAML тохиргооны лавлах

Схемийн тодорхойлолт

type: object
required:
  - type
  - name
  - connections
properties:
  type:
    type: string
    enum: [loop]
    description: Блокийн төрлийг тодорхойлох таних тэмдэг
  name:
    type: string
    description: Loop блокийн дэлгэцэнд харагдах нэр
  inputs:
    type: object
    description: Заавал биш. Хэрэв орхивол анхдагч утгууд ашиглагдана.
    properties:
      loopType:
        type: string
        enum: [for, forEach]
        description: Гүйцэтгэх давталтын төрөл
        default: for
      iterations:
        type: number
        description: Давталтын тоо ( `for` төрлийн давталтад )
        default: 5
        minimum: 1
        maximum: 1000
      collection:
        type: string
        description: Давталт хийх цуглуулга ( `forEach` төрлийн давталтад )
        default: ""
      maxConcurrency:
        type: number
        description: Зэрэгцээ гүйцэтгэх дээд тоо
        default: 1
        minimum: 1
        maximum: 10
  connections:
    type: object
    properties:
      # Давхарласан формат (зөвлөмж болгосон)
      loop:
        type: object
        properties:
          start:
            type: string
            description: Давталтын дотор гүйцэтгэх блокийн ID
          end:
            type: string
            description: Давталт дууссаны дараах блокийн ID (заавал биш)
      # Шууд handle формат (өөр хувилбар)
      loop-start-source:
        type: string | string[]
        description: Давталтын дотор гүйцэтгэх блокийн ID (шууд формат)
      loop-end-source:
        type: string | string[]
        description: Давталт дууссаны дараах блокийн ID (шууд формат, заавал биш)
      error:
        type: string
        description: Алдаа боловсруулах блокийн ID
    note: Давхарласан `loop` форматыг ЭСВЭЛ `loop-start-source` шууд форматыг ашиглана, хоёуланг нь хамтад нь бүү ашигла

Холболтын тохиргоо

Loop блок нь хоёр төрлийн холболтын форматыг дэмжинэ.

Шууд Handle формат (Өөр хувилбар)

Copy code
connections:
  loop-start-source: <string>           # Давталтын дотор гүйцэтгэх блокийн ID
  loop-end-source: <string>             # Давталт дууссаны дараах блокийн ID (заавал биш)
  error: <string>                       # Алдаа боловсруулах блокийн ID (заавал биш)

Хоёр формат нь ижил зарчмаар ажиллана. Аль тохиромжтойг нь сонгон ашиглаж болно.

Хүүхэд блокийн тохиргоо Loop-ийн доторх блокууд нь parentId-г тухайн loop блокийн ID-р тохируулсан байх ёстой. extent шинж чанар автоматаар 'parent' утгатай болдог тул заавал заах шаардлагагүй.

Copy code
loop-1:
  type: loop
  name: "Process Items"
  inputs:
    loopType: forEach
    collection: <start.items>
  connections:
    loop:
      start: process-item
      end: final-results

# Loop доторх хүүхэд блок
process-item:
  type: agent
  name: "Process Item"
  parentId: loop-1                      # Loop блокийг заана
  inputs:
    systemPrompt: "Process this item"
    userPrompt: <loop.currentItem>
    model: gpt-4o
    apiKey: '{{OPENAI_API_KEY}}'

Жишээнүүд

For Loop (Тогтмол тооны давталт)

countdown-loop:
  type: loop
  name: "Countdown Loop"
  inputs:
    loopType: for
    iterations: 5
  connections:
    loop:
      start: countdown-agent
      end: countdown-complete

countdown-agent:
  type: agent
  name: "Countdown Agent"
  parentId: countdown-loop
  inputs:
    systemPrompt: "Generate a countdown message"
    userPrompt: "Count down from 5. Current number: <loop.index>"
    model: gpt-4o
    apiKey: '{{OPENAI_API_KEY}}'

ForEach Loop (Цуглуулга боловсруулах)

Copy code
email-processor-loop:
  type: loop
  name: "Email Processor Loop"
  inputs:
    loopType: forEach
    collection: <start.emails>
  connections:
    loop:
      start: process-single-email
      end: all-emails-processed

process-single-email:
  type: agent
  name: "Process Single Email"
  parentId: email-processor-loop
  inputs:
    systemPrompt: "Classify and respond to this email"
    userPrompt: "Email content: <loop.currentItem>"
    model: gpt-4o
    apiKey: '{{OPENAI_API_KEY}}'

Олон салбар блоктой давталт Loop

Copy code
data-analysis-loop:
  type: loop
  name: "Data Analysis Loop"
  inputs:
    loopType: forEach
    collection: <data-fetcher.records>
    maxConcurrency: 3
  connections:
    loop:
      start: validate-record
      end: generate-report
    error: handle-loop-error
(кодын агуулга өөрчлөгдөөгүй)

Зэрэгцээ боловсруулалттай Loop

Copy code
parallel-processing-loop:
  type: loop
  name: "Parallel Processing Loop"
  inputs:
    loopType: forEach
    collection: <start.tasks>
    maxConcurrency: 5
  connections:
    loop:
      start: process-task
      end: aggregate-results

Шууд Handle формат ашигласан жишээ

my-loop:
  type: loop
  name: "Process Items"
  inputs:
    loopType: forEach
    collection: <start.items>
  connections:
    loop-start-source: process-item
    loop-end-source: final-results
    error: handle-error

Хамгийн энгийн Loop жишээ (Анхдагч утгууд)

inputs хэсгийг бүрэн орхиж болно. Энэ тохиолдолд loopType: 'for', iterations: 5 гэж автоматаар тохируулагдана.

simple-loop:
  type: loop
  name: "Simple Loop"
  connections:
    loop-start-source: process-step
    loop-end-source: complete

Энэ loop нь анхдагчаар 5 удаа давтагдана.

Loop хувьсагчууд

Loop-ийн доторх бүх хүүхэд блокуудад дараах тусгай хувьсагчууд ашиглагдана.

<loop.index>        # Одоогийн давталтын индекс (0-оос эхэлнэ)
<loop.currentItem>  # Одоогоор боловсруулж буй элемент (forEach-д)
<loop.items>        # Бүх цуглуулга (forEach-д)

Гаралтын лавлагаа

Loop дууссаны дараа дараах байдлаар нийлбэр үр дүнг ашиглаж болно.

final-processor:
  inputs:
    all-results: <loop-name.results>    # Бүх давталтын үр дүнгийн массив
    total-count: <loop-name.count>      # Гүйцэтгэсэн давталтын тоо

Шилдэг туршлагууд

Хэт урт гүйцэтгэлээс зайлсхийхийн тулд давталтын хязгаарыг зохистой тогтоох

Цуглуулга боловсруулахад forEach, тогтмол тоонд for ашиглах

I/O ихтэй ажиллагаанд maxConcurrency ашиглах талаар бодолцох

Найдвартай ажиллагаанд алдаа боловсруулах холболт заавал нэмэх

Loop-ийн доторх блокуудад ойлгомжтой, тодорхой нэр өгөх

Том цуглуулгад орохоос өмнө жижиг өгөгдлөөр турших

Том цуглуулгын үед гүйцэтгэлийн хугацааг хянах

Loop Block YAML Schema