AI Engineering Academy · Pelajaran

Corak Penyusun-Ejen Sampingan

Laksanakan corak penyusun-ejen sampingan, iaitu ejen perancang memecahkan tugas kepada subtugas, mewakilkannya kepada ejen pakar dan mensintesiskan hasil mereka menjadi keluaran akhir.

Pelajaran 2 daripada 413 langkah

Corak Penyusun-Ejen Sampingan ialah pelajaran AI Engineering Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran AI Engineering Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus AI Engineering Academy merangkumi sejumlah 4 pelajaran.

Model Mental Pengatur Cara-Subejen

Corak pengatur cara-subejen ialah seni bina berbilang ejen yang paling banyak digunakan. Ejen pengatur cara menerima matlamat peringkat tinggi, menguraikannya kepada subtugas, mewakilkan setiap subtugas kepada subejen khusus, mengumpulkan hasil dan mensintesiskan keluaran akhir. Anggap pengatur cara sebagai pengurus projek dan subejen sebagai pakar domain dalam pasukan.

Tanggungjawab Pengatur Cara

Pengatur cara mempunyai tiga tanggungjawab utama: penguraian (memecahkan matlamat kepada subtugas yang konkrit dan boleh dilaksanakan), pewakilan (menetapkan setiap subtugas kepada pakar yang betul) dan sintesis (menggabungkan hasil subejen menjadi keputusan yang koheren). Pengatur cara itu sendiri menjalankan kerja khusus domain yang minimum — nilainya terletak pada penyelarasan.

from openai import OpenAI

client = OpenAI()

def orchestrator(goal: str) -> dict:
    # Step 1: Decompose
    plan = client.chat.completions.create(
        model='gpt-4o',
        messages=[
            {'role': 'system', 'content': 'You are a task planner. Decompose the goal into subtasks. Return JSON with keys: researcher_task, writer_task, coder_task.'},
            {'role': 'user', 'content': goal}
        ],
        response_format={'type': 'json_object'}
    )
    return plan.choices[0].message.content

Mereka Bentuk Subejen Khusus

Setiap subejen dioptimumkan untuk satu tanggungjawab. Pengkhususan bermaksud: arahan sistem yang tertumpu dan mentakrifkan peranan, set kecil alat (3–5) yang hanya berkaitan dengan peranan tersebut, serta tetingkap konteks yang mengandungi maklumat yang diperlukan untuk subtugas itu sahaja. Ejen yang tertumpu membuat keputusan yang lebih baik dan lebih mudah dinilai serta dinyahpepijat.

def create_researcher_agent():
    return {
        'model': 'gpt-4o',
        'system': '''You are a research specialist. Your only job is to find accurate,
            cited information. Return structured findings with sources.
            Do NOT write prose or code - only research findings.''',
        'tools': ['search_web', 'fetch_url', 'query_arxiv'],  # 3 tools only
        'max_iterations': 10
    }

def create_writer_agent():
    return {
        'model': 'gpt-4o',
        'system': '''You are a technical writer. Transform research findings into clear,
            engaging prose. You receive structured data and return polished text.''',
        'tools': ['format_markdown', 'check_readability'],  # 2 tools only
        'max_iterations': 5
    }

Protokol Pewakilan

Untuk delegasi berfungsi, orkestra mesti menghantar paket tugas yang tersusun dengan baik kepada setiap subejen. Sesuatu paket tugas merangkumi: matlamat khusus untuk subejen tersebut, konteks berkaitan yang diperlukan (bukan keseluruhan sejarah perbualan), format output yang dijangka dan sebarang kekangan. Paket tugas yang tidak tersusun dengan baik ialah punca paling lazim kegagalan antara orkestra dengan subejen.

from dataclasses import dataclass
from typing import Optional

@dataclass
class TaskPacket:
    task_id: str
    assignee: str          # which subagent receives this
    goal: str              # specific, actionable goal
    context: str           # only relevant background
    output_format: str     # JSON schema or description
    constraints: list[str] # e.g. ['max 500 words', 'cite sources']
    deadline_steps: int    # max iterations allowed

def delegate(packet: TaskPacket, subagent_fn) -> str:
    prompt = f'Goal: {packet.goal}\nContext: {packet.context}\nOutput format: {packet.output_format}\nConstraints: {packet.constraints}'
    return subagent_fn(prompt)

Mengumpul dan Menggabungkan Hasil

Setelah subejen menyelesaikan tugas mereka, orkestra mesti menggabungkan hasil tersebut. Ini bukan sekadar penyambungan. Orkestra mesti menyelesaikan percanggahan antara output subejen, melengkapkan jurang, mengekalkan gaya atau format yang konsisten dan menghasilkan keputusan akhir yang padu secara keseluruhan. Langkah penggabungan ialah bahagian yang paling memerlukan keupayaan penaakulan orkestra.

def synthesize_results(research: str, draft: str, code: str, goal: str) -> str:
    synthesis_prompt = f'''You are given outputs from three specialist agents.
    Your job is to synthesize them into one coherent final answer for this goal: {goal}

    RESEARCH FINDINGS:
    {research}

    WRITTEN DRAFT:
    {draft}

    CODE EXAMPLES:
    {code}

    Resolve any conflicts, fill gaps, and produce a unified final response.
    '''
    response = client.chat.completions.create(
        model='gpt-4o',
        messages=[{'role': 'user', 'content': synthesis_prompt}]
    )
    return response.choices[0].message.content

Delegasi Berjujukan berbanding Selari

Orkestra boleh mendelegasikan tugas secara berjujukan (output satu subejen menjadi input kepada subejen seterusnya) atau secara selari (beberapa subejen bekerja serentak). Delegasi berjujukan lebih mudah dan sesuai apabila langkah kemudian bergantung pada hasil terdahulu. Delegasi selari lebih pantas apabila subtugas tidak bersandar antara satu sama lain dan boleh dijalankan secara serentak, yang sering mengurangkan masa sebenar sebanyak 3-5 kali ganda.

import asyncio

# Sequential: writer needs research first
async def sequential_pipeline(goal):
    research = await researcher_agent(goal)
    draft = await writer_agent(research)  # depends on research
    return draft

# Parallel: all three tasks are independent
async def parallel_pipeline(topics):
    tasks = [
        researcher_agent(topics[0]),
        researcher_agent(topics[1]),
        researcher_agent(topics[2])
    ]
    results = await asyncio.gather(*tasks)  # runs simultaneously
    return orchestrator_synthesize(results)

Mengendalikan Kegagalan Subejen

Subejen kadangkala akan gagal — mereka mungkin mengembalikan output yang tidak sah, melebihi had lelaran atau menghadapi ralat. Orkestra mesti mengendalikan kegagalan ini dengan baik. Strategi lazim termasuk: mencuba semula dengan paket tugas yang diperjelas, menggunakan pendekatan yang lebih mudah sebagai pilihan sandaran, melangkau subtugas yang gagal dan mencatatnya dalam output akhir atau merujuknya kepada semakan manusia.

def delegate_with_retry(packet: TaskPacket, subagent_fn, max_retries=2):
    for attempt in range(max_retries + 1):
        try:
            result = subagent_fn(packet)
            validate_output(result, packet.output_format)
            return result
        except ValidationError as e:
            if attempt < max_retries:
                # Clarify the task for retry
                packet.goal += f'\n\nPrevious attempt failed: {str(e)}. Please fix.'
                print(f'Retry {attempt + 1} for task {packet.task_id}')
            else:
                return {'error': str(e), 'task_id': packet.task_id, 'status': 'failed'}

Memberikan Arahan yang Baik kepada Orkestra

Arahan sistem orkestra amat penting untuk menentukan kualiti keseluruhan aliran kerja. Arahan itu hendaklah mentakrifkan dengan jelas: subejen yang tersedia dan bidang pengkhususan setiap satunya, cara memformatkan paket tugas, masa untuk menjalankan subtugas secara selari berbanding berjujukan, cara mengendalikan hasil yang tidak lengkap atau bercanggah dan perkara yang dianggap sebagai output akhir yang berjaya.

ORCHESTRATOR_SYSTEM_PROMPT = '''
You coordinate a team of specialist agents to complete complex tasks.

Available agents:
- researcher: Finds and cites factual information. Input: question string. Output: JSON with findings and sources.
- writer: Writes polished prose from structured data. Input: JSON findings. Output: markdown text.
- coder: Writes Python code. Input: natural language spec. Output: Python code string.

Workflow:
1. Analyze the goal and decide which agents are needed.
2. Identify dependencies: can any tasks run in parallel?
3. Delegate tasks with clear, specific goals.
4. Validate each result before proceeding.
5. Synthesize all results into a unified final answer.
'''

Pengasingan Konteks ialah Satu Ciri

Satu kelebihan utama corak orkestra-subejen ialah pengasingan konteks. Setiap subejen hanya melihat maklumat yang berkaitan dengan subtugasnya, bukan keseluruhan sejarah projek. Ini mengekalkan saiz tetingkap konteks setiap subejen pada tahap kecil dan menghalang kehabisan konteks yang sering menjejaskan ejen tunggal. Orkestra mengekalkan gambaran global, manakala subejen mengekalkan pandangan tempatan yang berfokus.

Pengesanan dan Kebolehcerapan

Sistem berbilang ejen lebih sukar dinyahpepijat berbanding ejen tunggal kerana kegagalan boleh berlaku pada mana-mana langkah delegasi. Sentiasa tambahkan pencatatan berstruktur untuk menjejaki: tugas yang didelegasikan, subejen yang menerimanya, input dan output, tempoh setiap tugas serta sama ada percubaan semula diperlukan. Alat seperti LangSmith dan Langfuse menyokong visualisasi jejak berbilang ejen.

import time

def logged_delegate(packet: TaskPacket, subagent_fn):
    start = time.time()
    print(f'[DELEGATE] task_id={packet.task_id} assignee={packet.assignee}')
    print(f'[INPUT] {packet.goal[:100]}...')
    
    result = subagent_fn(packet)
    elapsed = time.time() - start
    
    print(f'[RESULT] task_id={packet.task_id} elapsed={elapsed:.2f}s')
    print(f'[OUTPUT] {str(result)[:100]}...')
    return result

Corak Dunia Sebenar: Penjana Laporan

Contoh nyata corak orkestra-subejen ialah penjana laporan analisis persaingan. Orkestra menerima arahan 'Tulis analisis pesaing untuk Syarikat X'. Ia mendelegasikan: subtugas penyelidikan kepada ejen penyelidik (mencari harga, ciri dan ulasan), subtugas analisis kepada ejen penganalisis (mengenal pasti kekuatan dan kelemahan) serta subtugas pemformatan kepada ejen penulis (menghasilkan laporan akhir). Setiap pakar melakukan perkara yang paling dikuasainya.

Semakan Pantas

Uji pemahaman anda tentang corak orkestra-subejen daripada pelajaran ini.

Ulang Kaji Pelajaran

Dalam pelajaran ini, anda telah mempelajari bahawa: corak orkestra-subejen menggunakan ejen penyelaras untuk menguraikan dan mendelegasikan kerja kepada pakar, paket tugas mesti mentakrifkan matlamat, konteks dan format output yang dijangka dengan jelas agar delegasi dapat berfungsi, dan pengasingan konteks mengekalkan saiz tetingkap setiap subejen pada tahap kecil sementara orkestra mengekalkan gambaran global. Seterusnya, kita akan membina aliran kerja berbilang ejen dengan LangGraph.

Percuma untuk bermula

Pelajari Python dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
30
Pelajaran
120

Soalan Lazim

Adakah pelajaran “Corak Penyusun-Ejen Sampingan” percuma?

Ya — teks penuh “Corak Penyusun-Ejen Sampingan” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus AI Engineering Academy, tingkat taraf kepada CoddyKit PRO. Kursus AI Engineering Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Corak Penyusun-Ejen Sampingan”?

Laksanakan corak penyusun-ejen sampingan, iaitu ejen perancang memecahkan tugas kepada subtugas, mewakilkannya kepada ejen pakar dan mensintesiskan hasil mereka menjadi keluaran akhir. Anda berlatih AI Engineering Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan AI Engineering Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran AI Engineering Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.

Berapa lamakah pelajaran “Corak Penyusun-Ejen Sampingan” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran AI Engineering Academy ini?

Ya. Setiap pelajaran AI Engineering Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Mengapa Ejen Tunggal Terbatas
  2. Corak Penyusun-Ejen Sampingan
  3. Membina Saluran Paip Berbilang Ejen dengan LangGraph
  4. Memori Dikongsi dan Komunikasi Antara Ejen
← Kembali ke AI Engineering Academy