Բոլոր դասերը
AIԱռաջադեմ13 րոպե ընթերցումԱրժե իմանալ

AI agent-ներ

LLM-ներ, որոնք ցիկլով օգտագործում են tools՝ բազմաքայլ առաջադրանքներ ավարտելու համար, և ինչպես դրանք պահել անվտանգ ու օգտակար։

  • Tools
  • Planning
  • MCP
  • Guardrails
  • Evals
Քայլ 1/6
AI agent-ը ստանում է նպատակ, ոչ թե սցենար՝ «գտիր ինձ էժան թռիչք»։

30 վայրկյանում

AI agent-ը ցիկլով աշխատող լեզվական մոդել է․ այն նայում է նպատակին, որոշում, թե որ tool-ը կանչի, կարդում է արդյունքը և կրկնում, մինչև առաջադրանքը կատարվի։ Agent-ները կարող են որոնել, խմբագրել ֆայլեր, կանչել API-ներ կամ աշխատեցնել կոդ։ Դրանք հզոր են բաց, չսահմանված աշխատանքի համար, բայց վստահելի լինելու համար պետք են հստակ tools, սահմանափակումներ, իրավունքներ և գնահատում։

Իմ ամենօրյա stack-ում չէ․ գիտեմ հիմնական գաղափարները և մանրամասները կսովորեմ, երբ նախագիծը դա պահանջի։

Ինչու է սա կարևոր

  • Agent-ները կատարում են առաջադրանքներ, որոնք հնարավոր չէ նախապես script անել՝ բագի ուսումնասիրություն, տարբեր աղբյուրներով հետազոտություն, ticket-ների triage, որովհետև մոդելն ընտրում է հաջորդ քայլը՝ ելնելով գտածից։
  • Կոդավորող agent-ներն արդեն փոխել են ծրագրային թիմերի աշխատանքը, ուստի ինժեներներին պետք է հասկանալ, թե ինչպես են իրականում աշխատում ցիկլը, tools-ը և կոնտեքստը, ոչ թե միայն օգտագործել դրանք։
  • Model Context Protocol-ի (MCP) նման ստանդարտները էժան են դարձնում agent-ները ընկերության համակարգերին միացնելը, ինչը նաև անվտանգության նախագծումը դարձնում է հրատապ։
  • Թիմը agent է կառուցում միայն այն ժամանակ, երբ առաջադրանքը բազմաքայլ է, բավականաչափ արժեքավոր՝ ավելի բարձր արժեքն ու latency-ն արդարացնելու համար, և ունի սխալներ, որոնք հնարավոր է բռնել․ այլապես մեկ LLM կանչը կամ ֆիքսված workflow-ն ավելի լավ է։

Ինչպես է աշխատում

01Գաղափարը՝ մոդել ցիկլում՝ tools-ով

Chatbot-ը պատասխանում է մեկ անգամ։ Agent-ն աշխատում է կրտսեր գործընկերոջ պես, որին տրվել է նպատակ և գործիքների արկղ․ մտածում է հաջորդ քայլի մասին, օգտագործում է tool, նայում է արդյունքին և շարունակում, մինչև ավարտի կամ խրվի։ Տեխնիկապես դա tool-use API-ն է ցիկլում։ Ուղարկում եք նպատակը գումարած tool-երի սահմանումները, մոդելը պատասխանում է tool call-ով, ձեր կոդն այն աշխատեցնում է և հետ ուղարկում արդյունքը, կրկնում եք, մինչև մոդելն ավարտի իր հերթը։ «Պլանավորումը» հիմնականում մոդելի մտածելն է քայլերի միջև, երբեմն օգնում է նրան խնդրել սկզբում գրել պլան կամ to-do ցուցակ։ Agent-ի որակը կախված է չորս բանից՝ մոդելը, նրան տրված tools-ը, կոնտեքստը, որը նա տեսնում է, և guardrail-ները նրա շուրջ։ Anthropic-ի խորհուրդն արժե կրկնել՝ սկսեք ամենապարզ լուծումից և agent-ային բարդություն ավելացրեք միայն այն ժամանակ, երբ այն հստակ բարելավում է արդյունքները։

  • Workflow՝ ձեր կոդն է որոշում քայլերը, LLM-ը լրացնում է մասերը
  • Agent՝ LLM-ն է որոշում քայլերը, ձեր կոդը տրամադրում է tools և սահմանափակումներ
  • Production համակարգերի մեծ մասը համակցում է երկուսը

02Նվազագույն agent loop

Ահա հիմնական ցիկլը Claude Messages API-ով TypeScript-ում։ Այն շարունակում է կանչել մոդելը, քանի դեռ վերջինս tools է խնդրում, աշխատեցնում է յուրաքանչյուր պահանջված tool և բոլոր արդյունքները վերադարձնում մեկ user հաղորդագրությամբ։ Կարևոր մանրամասներ՝ քայլերի առավելագույն քանակ, որպեսզի շփոթված agent-ը չկարողանա անվերջ ցիկլել, սխալները վերադարձվում են մոդելին որպես tool result՝ is_error-ով, որպեսզի այն կարողանա հարմարվել՝ crash լինելու փոխարեն, և assistant-ի յուրաքանչյուր պատասխանի ամբողջ content-ը ավելացվում է պատմությանը, ոչ թե միայն տեքստը։ Իրական նախագծերում կարող եք օգտագործել SDK-ի tool runner helper-ը (որը ձեր փոխարեն վարում է այս ցիկլը), Claude Agent SDK-ն (Claude Code harness-ը որպես գրադարան՝ ներկառուցված ֆայլային, shell և վեբ tools-ով) կամ hosted տարբերակներ, ինչպիսին է Claude Managed Agents-ը։ Մյուս էկոհամակարգերն առաջարկում են նման SDK-ներ, բայց դրանց տակ ցիկլը նույնն է։

ts
const messages: Anthropic.MessageParam[] = [{ role: "user", content: goal }];
for (let step = 0; step < 20; step++) {
  const res = await client.messages.create({ model: "claude-opus-5-5", max_tokens: 8000, tools, messages });
  messages.push({ role: "assistant", content: res.content });
  if (res.stop_reason !== "tool_use") return res;
 
  const results: Anthropic.ToolResultBlockParam[] = [];
  for (const block of res.content) {
    if (block.type !== "tool_use") continue;
    try {
      const out = await runTool(block.name, block.input, currentUser); // your code, your auth
      results.push({ type: "tool_result", tool_use_id: block.id, content: JSON.stringify(out) });
    } catch (e) {
      results.push({ type: "tool_result", tool_use_id: block.id, content: String(e), is_error: true });
    }
  }
  messages.push({ role: "user", content: results });
}
throw new Error("Agent hit the step limit");

03Tools-ի նախագծում, որոնցից մոդելը կարող է լավ օգտվել

Tools-ը agent-ի ձեռքերն են, և agent-ների ձախողումների մեծ մասը tool-երի նախագծման ձախողումներ են։ Յուրաքանչյուր tool-ի տվեք մեկ հստակ գործառույթ, անուն, որն ասում է, թե ինչ է անում, և նկարագրություն, որը բացատրում է, թե երբ օգտագործել, ինչ է վերադարձնում և որոնք են տարածված թակարդները՝ կարծես նոր թիմակցի համար փաստաթուղթ եք գրում։ Նախընտրեք մի քանի բարձր մակարդակի tools («search_orders»՝ ֆիլտրերով) յուրաքանչյուր endpoint-ի շուրջ տասնյակ բարակ wrapper-ների փոխարեն։ Վերադարձրեք կոմպակտ, համապատասխան արդյունքներ․ 5 MB JSON dump ստացող agent-ը վատնում է կոնտեքստը և շփոթվում, ուստի pagination արեք, ամփոփեք և ներառեք id-ներ հաջորդ կանչերի համար։ Սխալները դարձրեք օգտակար («customer_id-ն չի գտնվել, սկզբում օգտագործիր search_customers»)։ Հնարավորության դեպքում գրող tools-ը դարձրեք idempotent և կարդացող tools-ն առանձնացրեք գրողներից, որպեսզի դրանց տարբեր իրավունքներ տաք։ Tools-ը փորձարկեք՝ դիտելով իրական transcript-ները․ որտեղ մոդելը սխալ է օգտագործում tool-ը, սովորաբար նկարագրությունն է պետք մշակել։

04MCP՝ agent-ներին համակարգերին միացնելը

Model Context Protocol-ը (MCP) բաց ստանդարտ է, որը ներկայացրել է Anthropic-ը և որն այժմ աջակցվում է բազմաթիվ AI գործիքներում և provider-ներում՝ AI հավելվածները tools-ին և տվյալներին միացնելու համար։ MCP server-ը ստանդարտ JSON-RPC պրոտոկոլով տրամադրում է tools (գործողություններ), resources (կարդալու տվյալներ) և prompts (կաղապարներ)՝ կամ լոկալ՝ stdio-ով, կամ հեռակա՝ HTTP-ով։ Ցանկացած MCP client՝ Claude Code, Claude հավելվածներ, IDE-ներ և այլ agent host-եր, կարող է այն օգտագործել առանց հատուկ «սոսնձող» կոդի։ Դա նշանակում է, որ «tickets» կամ «database» ինտեգրացիան գրում եք մեկ անգամ և վերաօգտագործում տարբեր agent-ներում։ Հեռակա MCP server-ները authorization-ի համար օգտագործում են OAuth, ուստի agent-ը գործում է օգտատիրոջ պատվիրակած, սահմանափակ իրավունքով։ Երրորդ կողմի MCP server-ներին վերաբերվեք որպես ցանկացած տեղադրվող dependency-ի՝ ստուգեք, թե ինչի հասանելիություն ունեն, pin արեք տարբերակները և նախընտրեք վստահելի հրատարակիչների server-ները։

json
{
  "mcpServers": {
    "tickets": {
      "command": "node",
      "args": ["./mcp/tickets-server.js"],
      "env": { "TICKETS_API_URL": "https://api.example.com" }
    }
  }
}

05Կոնտեքստ՝ agent-ի աշխատանքային հիշողությունը

Այն ամենը, ինչ agent-ը գիտի առաջադրանքի ընթացքում, ապրում է նրա context window-ում՝ հրահանգներ, tool-երի սահմանումներ, կանչերի և արդյունքների պատմություն։ Երկար առաջադրանքները լցնում են այն, և որակը նվազում է, երբ կոնտեքստը դառնում է «աղմկոտ»։ Լավ harness-ները ակտիվորեն կառավարում են կոնտեքստը։ System prompt-ը պահեք կենտրոնացված նպատակների, սահմանափակումների և աշխատանքի ստուգման եղանակի վրա։ Երբ tools-ը շատ են, բեռնեք դրանք ըստ պահանջի (tool search)։ Մաքրեք հին, ծավալուն tool result-ները, երբ դրանք այլևս պետք չեն (context editing), կամ ամփոփեք ավելի վաղ պատմությունը (compaction)։ Agent-ին տվեք scratchpad կամ memory ֆայլ նշումների համար, որոնք պետք է պահպանվեն՝ պլան, որոշումներ, առաջընթաց։ Մեծ առաջադրանքների համար աշխատանքը բաժանեք subagent-ների միջև․ յուրաքանչյուրը ուսումնասիրում է իր սեփական թարմ կոնտեքստում և հիմնական agent-ին վերադարձնում միայն կարճ արդյունք։ Այսպես են կոդավորող agent-ները շարունակում աշխատել մեծ repository-ների վրա՝ առանց ֆայլերի բովանդակության մեջ խեղդվելու։

06Guardrail-ներ և human-in-the-loop

Agent-ը կարող է իրական գործողություններ կատարել, ուստի սահմանափակումները նախագծում եք այնպես, ինչպես production հասանելիություն ունեցող նոր աշխատակցի համար։ Least privilege՝ տվեք միայն առաջադրանքին անհրաժեշտ tools-ը՝ օգտատիրոջ կամ նեղ service account-ի սահմաններով credentials-ով։ Իրավունքների մակարդակներ՝ միայն կարդացող tools-ն աշխատում են ազատ, գրելը պահանջում է հաստատում կամ աշխատում է sandbox-ում, ավերիչ գործողությունները (վճարումներ, ջնջումներ, email-ներ հաճախորդներին) միշտ պահանջում են մարդ։ Բյուջեներ՝ քայլերի սահմանափակում, token-ի կամ արժեքի բյուջե և wall-clock timeout-ներ։ Sandboxing՝ կոդը և shell հրամանները աշխատեցրեք մեկուսացված կոնտեյներներում՝ առանց գաղտնիքների և սահմանափակ ցանցով։ Ստուգում՝ ասեք agent-ին, թե ինչպես ստուգել իր աշխատանքը՝ աշխատեցնել թեստերը, նորից կարդալ արդյունքը, և հնարավորության դեպքում ինքներդ ստուգեք կոդում։ Աուդիտ՝ log արեք յուրաքանչյուր tool call՝ մուտքերով, ելքերով և այն ինքնությամբ, որի անունից գործել է։

  • Կարդալ՝ թույլատրել · Գրել՝ հաստատում կամ sandbox · Անդառնալի՝ մարդու հաստատում
  • Քայլերի, token-ի և ժամանակի բյուջեներ յուրաքանչյուր գործարկման համար
  • Գաղտնիքները մնում են tool-ի շերտում, երբեք prompt-ում

Օգտագործեք, երբ

  • Բաց առաջադրանքներ, որտեղ քայլերը կախված են նրանից, թե ինչ եք գտնում՝ debugging, հետազոտություն, տվյալների ուսումնասիրություն, codebase-ի փոփոխություններ։
  • Առաջադրանքներ՝ հաջողության ստուգման ներկառուցված եղանակով, օրինակ՝ թեստերն անցնում են, schema-ն վավերանում է կամ reviewer-ը հաստատում է։
  • Ներքին գործողություններ, որոնք համակցում են մի քանի համակարգ (ticket-ներ, log-եր, փաստաթղթեր), որտեղ մարդը այլապես պետք է «քլիքեր» բազմաթիվ գործիքներով։
  • Երկարատև ֆոնային աշխատանք, որտեղ մի քանի րոպեն և որոշ լրացուցիչ արժեքը ընդունելի են ավելի լավ արդյունքի համար։

Մի՛ օգտագործեք, երբ

  • Ֆիքսված, հայտնի քայլերով առաջադրանքներ․ մեկ-երկու LLM կանչով պարզ workflow-ն ավելի էժան է, արագ և հեշտ է փորձարկվում։
  • Բարձր ռիսկով անդառնալի գործողություններ՝ առանց մարդու հաստատման քայլի կամ հուսալի ավտոմատ ստուգման։
  • Latency-ի համար կրիտիկական օգտատիրոջ փոխազդեցություններ, որոնք պետք է պատասխանեն մեկ վայրկյանից պակաս ժամանակում։

Այլընտրանքներ

  • Մեկ LLM կանչ

    Լավ կոնտեքստով մեկ հարցումը կարգավորում է դասակարգումը, դուրսբերումը և ամփոփումը․ սկսեք այստեղից։

  • Ֆիքսված workflow (prompt chaining, routing)

    Ձեր կոդը քայլերն աշխատեցնում է հերթականությամբ և մասերի համար կանչում մոդելը․ կանխատեսելի է և փորձարկելի։

  • Դասական ավտոմատացում

    Script-ներ, cron job-եր և rules engine-ներ, երբ տրամաբանությունը հայտնի է և դետերմինիստիկ։

  • Hosted agent պլատֆորմներ

    Կառավարվող agent ծառայությունները (ներառյալ Anthropic-ի Managed Agents-ը) ձեր փոխարեն աշխատեցնում են ցիկլը և sandbox-ը՝ վերահսկողությունը փոխանակելով ավելի քիչ ենթակառուցվածքի հետ։

Լավագույն պրակտիկաներ

  1. Սկսեք ամենապարզ դիզայնից (մեկ կանչ կամ workflow) և անցեք agent-ի միայն այն ժամանակ, երբ eval-ները ցույց են տալիս, որ այն օգնում է։
  2. Tool-երի նկարագրությունները գրեք փաստաթղթի պես, վերադարձրեք կոմպակտ արդյունքներ և օգտակար սխալի հաղորդագրություններ։
  3. Authorization-ը կիրառեք tools-ի ներսում՝ իրական օգտատիրոջ ինքնությամբ, երբեք մի վստահեք մոդելի առաջարկած id-ներին։
  4. Դրեք քայլերի, token-ի և ժամանակի բյուջեներ, սահմանին հասնելիս կանգ առեք մաքուր և հաղորդեք առաջընթացը։
  5. Անդառնալի կամ արտաքին գործողությունների համար պահանջեք մարդու հաստատում, կոդի կատարումը դրեք sandbox-ում։
  6. Agent-ին տվեք իր աշխատանքը ստուգելու միջոց (թեստեր, validator-ներ) և ասեք օգտագործել այն։
  7. Log արեք ամբողջական transcript-ները և tool call-երը, իսկ ձախողումները վերածեք գնահատման case-երի։

Տարածված սխալներ

  • Բարդ multi-agent համակարգ կառուցել մի առաջադրանքի համար, որը կարող էր կատարել մեկ prompt-ը։
  • Տասնյակ raw API endpoint-ներ տրամադրել որպես tools՝ մեկ տողանոց նկարագրություններով։
  • API key-եր կամ բազայի գաղտնաբառեր դնել prompt-ի կամ tool result-ների մեջ։
  • Քայլերի սահմանափակում չունենալ, ուստի շփոթված agent-ը ցիկլում է և ամբողջ գիշեր այրում բյուջեն։
  • Agent-ներին գնահատել միայն մի քանի գեղեցիկ demo կարդալով՝ հստակ հաջողության չափանիշներով առաջադրանքների suite աշխատեցնելու փոխարեն։

Խորը վերլուծություն

07Context engineering երկարատև agent-ների համար

Երկար agent գործարկումը կոնտեքստի բյուջեի խնդիր է։ Յուրաքանչյուր քայլ ավելացնում է մոդելի մտածողությունը, tool call-ը և դրա արդյունքը․ մի քանի տասնյակ քայլից հետո window-ի մեծ մասը հնացած log-եր են։ Տեխնիկաները՝ մոտավորապես օգտագործման հերթականությամբ՝ tool-երի ելքերը դիզայնով պահեք փոքր (ամփոփումներ, pagination, id-ներ ամբողջական օբյեկտների փոխարեն), մաքրեք հին tool result-ները, որոնք մոդելին այլևս պետք չեն՝ պահելով այն փաստը, որ կանչը տեղի է ունեցել (context editing), պարբերաբար պատմությունը compact արեք ամփոփման մեջ, որից agent-ը շարունակում է, մնայուն վիճակը պահեք window-ից դուրս՝ առաջընթացի ֆայլ, առաջադրանքների ցուցակ, memory store, որպեսզի թարմ կոնտեքստը կարողանա վերսկսել, և ուսումնասիրությունը պատվիրակեք subagent-ներին, որոնք վերադարձնում են խտացված արդյունքներ։ Prompt caching-ը փոխազդում է այս ամենի հետ․ cache hit-երին պետք է կայուն prefix, ուստի պատմությանն ավելացրեք՝ այն վերագրելու փոխարեն, և կոնտեքստը խմբագրեք API-ի աջակցած մեխանիզմներով, ոչ թե ավելի վաղ հաղորդագրությունները փոփոխելով, ինչը ներկայիս մոդելներում կարող է նաև անվավեր դարձնել մոդելի պահպանված reasoning-ը։

08Prompt injection և «մահացու եռյակը»

Անվտանգության հետազոտողները նկարագրում են agent-ների համար վտանգավոր համակցություն՝ գաղտնի տվյալների հասանելիություն, անվստահելի բովանդակության ազդեցություն և տվյալներ դուրս ուղարկելու հնարավորություն (email tool, HTTP հարցում, նույնիսկ նկարի URL render անելը)։ Երեքի առկայության դեպքում չարամիտ վեբ էջը կամ փաստաթուղթը կարող է հրահանգել agent-ին կարդալ գաղտնիքները և արտահանել դրանք։ Քանի որ ոչ մի մոդել լիովին անխոցելի չէ injection-ի նկատմամբ, կոտրեք համակցությունը կառուցվածքային մակարդակում։ Հնարավորության դեպքում հեռացրեք մեկ «ոտքը»՝ sandbox-ում outbound ցանց չկա, կամ browsing-ի ժամանակ գաղտնի տվյալների հասանելիություն չկա։ Կիրառեք allow-list-եր դոմենների և ստացողների համար։ Պահանջեք հաստատում ցանկացած գործողության համար, որը տվյալներ է ուղարկում դուրս։ Credentials-ը պահեք tool-ի շերտում, որպեսզի մոդելը երբեք չտեսնի դրանք, և օգտագործեք յուրաքանչյուր օգտատիրոջ սահմանափակ token-ներ, որպեսզի վնասը սահմանափակվի այն բանով, ինչ այդ օգտատերը կարող էր անել։ Log և alert արեք անսովոր tool հաջորդականությունների դեպքում և eval suite-ի մաս կազմող injection-ով փաստաթղթերով red-team արեք ձեր agent-ը։

09MCP server-ի կառուցում

MCP server-ը փոքր ծրագիր է, որը հայտարարում է tools՝ JSON Schema մուտքերով, և մշակում կանչերը։ Պաշտոնական SDK-ներ կան TypeScript-ի, Python-ի և այլ լեզուների համար։ Լոկալ server-ները հաղորդակցվում են stdio-ով և ժառանգում օգտատիրոջ մեքենայի իրավունքները, հեռակա server-ներն օգտագործում են Streamable HTTP և պետք է իրականացնեն OAuth, որպեսզի յուրաքանչյուր օգտատեր տրամադրի սահմանափակ հասանելիություն։ Tools-ը նախագծեք agent-ների համար, ոչ թե API-ի ամբողջականության՝ քիչ tools, հստակ նկարագրություններ, կոմպակտ արդյունքներ։ Վավերացրեք յուրաքանչյուր մուտք և authorization-ը կիրառեք server-ի կողմում։ Տարբերակավորեք ձեր server-ը և փաստագրեք breaking change-երը, որովհետև agent-ները կախված են tool-երի անուններից և ձևերից։ Կառուցելուց առաջ ստուգեք MCP-ի ընթացիկ specification-ը և SDK-ի փաստաթղթերը, քանի որ պրոտոկոլը զարգանում է։

ts
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
 
const server = new McpServer({ name: "tickets", version: "1.0.0" });
 
server.registerTool(
  "get_ticket",
  {
    description: "Fetch one support ticket by id, including status and last 5 messages.",
    inputSchema: { id: z.string().describe("Ticket id, e.g. T-1042") },
  },
  async ({ id }) => {
    const t = await fetchTicket(id); // your API, your auth
    return { content: [{ type: "text", text: JSON.stringify(t) }] };
  },
);
 
await server.connect(new StdioServerTransport());

10Արժեքի և հուսալիության ինժեներիա

Agent-ի արժեքը մեկ քայլի token-ներն են բազմապատկած մեկ առաջադրանքի քայլերով, և երկուսն էլ աճում են աննկատ։ Չափեք արժեքը և հաջողությունը ըստ ավարտված առաջադրանքի, ոչ թե ըստ հարցման։ Լծակներ՝ prompt caching կայուն prefix-ի վրա (system prompt և tools), ինչը շատ կարևոր է, որովհետև յուրաքանչյուր քայլ նորից ուղարկում է պատմությունը, ավելի ցածր effort կամ ավելի փոքր մոդել subagent-ների և պարզ քայլերի համար, ավելի քիչ, բայց ավելի լավ tools, որպեսզի agent-ին ավելի քիչ կանչ պետք լինի, և task budget-ներ, որոնք թույլ են տալիս մոդելին ինքը կարգավորել տեմպը՝ քայլի կեսին կտրվելու փոխարեն։ Հուսալիության համար tools-ը դարձրեք idempotent և retry-ները անվտանգ, checkpoint արեք առաջընթացը, որպեսզի crash եղած գործարկումը կարողանա վերսկսել, դրեք wall-clock սահմանափակումներ և ոչ-«happy» stop reason-ները (max_tokens, refusal, քայլերի սահմանափակում) մշակեք հստակ արդյունքով՝ լռության փոխարեն։ Երկար առաջադրանքներն աշխատեցրեք որպես ֆոնային job-եր՝ կարգավիճակի թարմացումներով, ոչ թե HTTP հարցման ներսում։

Իրական իրավիճակներ

01

Ներքին ops agent support triage-ի համար

Խնդիր

Support-ը ուզում է օգնական, որը կարդում է նոր ticket-ը, ստուգում հաճախորդի վերջին պատվերները և log-երը և առաջարկում լուծում։ Այն երբեք չպետք է ինքնուրույն refund անի։

Ինչպես լուծել

Սկսեք որպես workflow՝ դասակարգեք ticket-ը, հետո աշխատեցրեք agent-ային ուսումնասիրության քայլ երեք միայն կարդացող tools-ով՝ get_ticket, search_orders (ticket-ի ստուգված customer id-ով), get_recent_errors։ Tools-ը կիրառում են support օպերատորի իրավունքները և վերադարձնում կոմպակտ ամփոփումներ։ Agent-ը ելքում տալիս է կառուցվածքային առաջարկ (ախտորոշում, ապացույցների id-ներ, առաջարկվող գործողություն)։ «propose_refund» tool-ը միայն ստեղծում է սևագիր, որը մարդը հաստատում է admin UI-ում։ Դրեք 15 քայլի սահմանափակում և token-ի բյուջե, log արեք transcript-ները և rollout-ից առաջ eval suite կառուցեք 50 անցյալ ticket-ներից՝ հայտնի լուծումներով։

02

Agent-ը ցիկլում է և այրում բյուջեն

Խնդիր

Հետազոտական agent-ը երբեմն աշխատում է մեկ ժամ՝ նորից ու նորից կանչելով search-ը մի փոքր տարբեր հարցումներով, և երբեք վերջնական պատասխան չի տալիս։

Ինչպես լուծել

Կարդացեք transcript-ները։ Սովորաբար հաջողության չափանիշներն անհասկանալի են, իսկ արդյունքները՝ աղմկոտ։ System prompt-ը վերագրեք կոնկրետ արդյունքով և կանգառի կանոնով («երբ ունենաս երեք անկախ աղբյուր, գրիր պատասխանը»)։ Search tool-ը թող վերադարձնի ավելի քիչ, կրկնություններից մաքրված արդյունքներ՝ snippet-ներով։ Ավելացրեք քայլերի սահմանափակում և token-ի բյուջե․ դրանց հասնելիս harness-ը մոդելից խնդրում է հնարավորինս լավ ամփոփում՝ լուռ ձախողվելու փոխարեն։ Խորը ընթերցանությունը պատվիրակեք subagent-ներին, որոնք վերադարձնում են կարճ արդյունքներ։ Այս «փախած» առաջադրանքներն ավելացրեք eval suite-ին և հետևեք մեկ առաջադրանքի քայլերին։

03

Կոդավորող agent-ի միացումը ընկերության գործիքներին

Խնդիր

Ծրագրավորողներն ուզում են, որ իրենց կոդավորող agent-ը կարդա ticket-ները և հարցումներ անի staging բազային։ Անվտանգության թիմը մտահոգված է credentials-ով և տվյալների արտահոսքով։

Ինչպես լուծել

Կառուցեք երկու փոքր MCP server՝ ticket server, որն օգտագործում է յուրաքանչյուր ծրագրավորողի OAuth token-ը միայն կարդալու scope-ներով, և database server, որը միանում է միայն կարդացող role-ով և միայն staging-ին, աշխատեցնում է պարամետրացված հարցումներ՝ տողերի սահմանափակումով և արգելափակում DDL-ը։ Credentials-ն ապրում են MCP server-ի environment-ում կամ secret manager-ում, երբեք prompt-ներում։ Server-ների տարբերակները pin արեք նախագծի ընդհանուր կոնֆիգում, փաստագրեք, թե յուրաքանչյուր tool ինչի հասանելիություն ունի, և log արեք հարցումները։ Production տվյալները մնում են լիովին անհասանելի․ եթե հետագայում պետք լինեն, կստանան առանձին, ստուգված server՝ masking-ով։

Արագ ուղեցույց

Հիմնական ցիկլի պայմանը
while (res.stop_reason === "tool_use") { run tools; send tool_result }
Tool-ի ձախողումը վերադարձնել մոդելին
{ type: "tool_result", tool_use_id, content: msg, is_error: true }
Զուգահեռ tool call-եր
Բոլոր tool_result բլոկները վերադարձրեք մեկ user հաղորդագրությամբ
Տեղադրել TypeScript MCP SDK-ն
npm install @modelcontextprotocol/sdk zod
Ավելացնել MCP server Claude Code-ին
claude mcp add tickets -- node ./mcp/tickets-server.js
Տեղադրել Claude Agent SDK-ն (TS)
npm install @anthropic-ai/claude-agent-sdk
Անվտանգ default բյուջեներ
max steps ≈ 20, token-ի բյուջե մեկ առաջադրանքի համար, wall-clock timeout
Իրավունքների մակարդակներ
read → թույլատրել; write → հաստատում/sandbox; անդառնալի → մարդու հաստատում
Հաջողության մետրիկ
հաջողության տոկոս ըստ առաջադրանքի, գումարած արժեք, քայլեր և ժամանակ ավարտված առաջադրանքի համար

Հարցեր և պատասխաններ

Q1Ո՞րն է տարբերությունը workflow-ի և agent-ի միջև։

Workflow-ում ձեր կոդն է սահմանում քայլերը․ օրինակ՝ դասակարգել ticket-ը, հետո ընտրել կաղապար, հետո սևագրել պատասխան։ LLM-ը լրացնում է յուրաքանչյուր քայլ, բայց ճանապարհը ֆիքսված է։ Agent-ում մոդելն է որոշում ճանապարհը՝ ընտրում է, թե որ tool-ը կանչի հաջորդը՝ ելնելով մինչ այժմ ստացված արդյունքներից, և քանի քայլ անի։ Workflow-ները կանխատեսելի են, ավելի էժան և հեշտ է դրանք փորձարկել, agent-ները ճկուն են և կարգավորում են առաջադրանքներ, որոնք չեք կարող նախապես ամբողջությամբ նկարագրել։ Production համակարգերից շատերը workflow-ներ են՝ մեկ agent-ային քայլով այնտեղ, որտեղ ճկունությունն իսկապես պետք է։

Q2Ի՞նչ է MCP-ն և ինչու է այն կարևոր։

Model Context Protocol-ը բաց ստանդարտ է AI հավելվածները արտաքին tools-ին և տվյալներին միացնելու համար։ MCP server-ը ստանդարտ ձևաչափով տրամադրում է tools, resources և prompts, և ցանկացած MCP-համատեղելի client կարող է օգտագործել այն։ Մինչ MCP-ն յուրաքանչյուր agent framework-ի պետք էր իր սեփական ինտեգրացիան յուրաքանչյուր համակարգի համար, հիմա կառուցում եք մեկ server, ասենք, ձեր ticket-ների համակարգի համար և վերաօգտագործում կոդավորող agent-ներում, chat հավելվածներում և IDE-ներում։ Այն նաև ստանդարտացնում է հեռակա authorization-ը OAuth-ով։ Հակառակ կողմն այն է, որ MCP server տեղադրելը agent-ին իրական հնարավորություններ է տալիս, ուստի այն պահանջում է նույն ստուգումը, ինչ ցանկացած dependency։

Q3Ինչպե՞ս կանխել, որ agent-ը վտանգավոր բան անի։

Նախագծեք զսպման, ոչ թե վստահության համար։ Agent-ին տվեք միայն առաջադրանքին անհրաժեշտ tools-ը՝ գործող օգտատիրոջ սահմաններով credentials-ով։ Authorization-ը կիրառեք յուրաքանչյուր tool-ի ներսում։ Tools-ը բաժանեք ըստ ռիսկի՝ կարդալը աշխատում է ավտոմատ, գրելը գնում է sandbox կամ պահանջում է հաստատում, անդառնալի գործողությունները պահանջում են մարդու հաստատում։ Կոդն աշխատեցրեք մեկուսացված կոնտեյներներում՝ առանց գաղտնիքների և սահմանափակ ցանցով։ Դրեք բյուջեներ քայլերի, token-ների և ժամանակի վրա։ Այն ամենին, ինչ agent-ը կարդում է՝ վեբ էջեր, ֆայլեր, email-ներ, վերաբերվեք որպես հնարավոր prompt injection պարունակողի։ Եվ log արեք յուրաքանչյուր գործողություն, որպեսզի կարողանաք աուդիտ անել և հետ գլորել։

Q4Ինչու՞ են agent-ները ամենից հաճախ ձախողվում։

Իրական agent transcript-ների վերանայումները սովորաբար մատնանշում են նույն պատճառները՝ անհասկանալի կամ համընկնող tools, ուստի մոդելն ընտրում է սխալը, չափազանց մեծ կամ աղմկոտ tool result-ներ, որոնք ողողում են կոնտեքստը, հրահանգներում բացակայող տեղեկություն, օրինակ՝ ինչ է նշանակում «ավարտված» կամ ինչպես ստուգել, feedback ազդանշանի բացակայություն, ուստի սխալները երբեք չեն նկատվում, և այնքան երկար կոնտեքստ, որ վաղ հրահանգները փաստացի մոռացվում են։ Ուղղումները հիմնականում ինժեներական են՝ ավելի լավ tool նկարագրություններ և ելքեր, բացահայտ հաջողության չափանիշներ, ստուգման քայլեր, կոնտեքստի կառավարում և գնահատման suite-եր, որոնք բռնում են regression-ները։

Q5Ինչպե՞ս եք գնահատում agent-ը։

Իրատեսական առաջադրանքների suite-ով, որոնցից յուրաքանչյուրն ունի հստակ, իդեալում ավտոմատ հաջողության ստուգում՝ թեստերն անցնում են, ճիշտ գրառումն է փոխվել, պատասխանը համընկնում է։ Յուրաքանչյուր առաջադրանք աշխատեցրեք մի քանի անգամ, որովհետև agent-ները ոչ-դետերմինիստիկ են, և հետևեք հաջողության տոկոսին, արժեքին, քայլերին և ժամանակին յուրաքանչյուր առաջադրանքի համար։ Ստուգեք նաև ճանապարհը, ոչ թե միայն արդյունքը․ արգելված tool call-երը, ավելորդ գրառումները կամ անտեսված հրահանգները ձախողումներ են, նույնիսկ եթե արդյունքը ճիշտ է թվում։ Բաց ելքերը գնահատեք rubric-ով՝ կալիբրացված մարդկային դատողության դեմ։ Suite-ը աշխատեցրեք prompt-ների, tools-ի կամ մոդելների յուրաքանչյուր փոփոխության դեպքում։

Q6Ե՞րբ եք օգտագործում մի քանի agent մեկի փոխարեն։

Երբ աշխատանքը բնականորեն բաժանվում է մասերի, որոնք կծանրաբեռնեին մեկ կոնտեքստը՝ բազմաթիվ աղբյուրների հետազոտություն, բազմաթիվ ֆայլերի վերանայում կամ անկախ ենթաառաջադրանքներ, որոնք կարող են զուգահեռ աշխատել։ Lead agent-ը պատվիրակում է subagent-ներին, որոնցից յուրաքանչյուրն ունի թարմ կոնտեքստ և նեղ առաջադրանք, և հետ ստանում կարճ ամփոփումներ։ Դա lead-ի կոնտեքստը մաքուր է պահում և կարող է արագացնել գործը։ Արժեքներն իրական են՝ ընդհանուր առմամբ ավելի շատ token-ներ, համակարգման overhead և ավելի դժվար debugging։ Հաջորդական առաջադրանքների համար, որոնք շատ կոնտեքստ են կիսում, սովորաբար ավելի լավ է մեկ լավ զինված agent-ը։

Սենիոր մակարդակի հարցեր

S1Ինչպե՞ս կնախագծեիք agent պլատֆորմ բազմաթիվ թիմեր ունեցող ընկերության համար։

Ես կառանձնացնեի երեք շերտ։ Ընդհանուր tool շերտ՝ MCP server-ներ յուրաքանչյուր համակարգի համար (ticket-ներ, CRM, data warehouse), որոնցից յուրաքանչյուրը պատկանում է համակարգի թիմին, օգտագործում է OAuth կամ յուրաքանչյուր օգտատիրոջ սահմանափակ credentials և ունի կենտրոնացված logging։ Harness շերտ՝ մեկ-երկու աջակցվող տարբերակ՝ SDK այն թիմերի համար, որոնք agent-ներ են ներդնում պրոդուկտներում, և hosted կամ ներքին runner ֆոնային agent-ների համար՝ ստանդարտ բյուջեներով, sandboxing-ով, հաստատման հոսքերով և transcript-ների պահպանմամբ։ Կառավարման շերտ՝ server-ների allow-list, տվյալների դասակարգման կանոններ (որ tools-ը կարող են համակցել գաղտնի տվյալները outbound գործողությունների հետ), production-ից առաջ գնահատման պահանջներ և արժեքի dashboard-ներ յուրաքանչյուր թիմի համար։ Փոխզիջումը արագությունն է ընդդեմ վերահսկողության․ չափազանց շատ կենտրոնական գործընթաց, և թիմերը «ստվերային» agent-ներ են կառուցում, չափազանց քիչ, և ստանում եք արտահոսած credentials և անսահմանափակ ծախս։ Ես անվտանգ ճանապարհը կդարձնեի ամենահեշտ ճանապարհը՝ միայն review-ներին ապավինելու փոխարեն։

S2Մեկ agent՝ բազմաթիվ tools-ով, թե՞ մի քանի մասնագիտացված agent․ որո՞նք են փոխզիջումները։

Մեկ agent-ը ամբողջ կոնտեքստը պահում է մեկ տեղում, ինչը իդեալական է, երբ քայլերը կախված են միմյանցից, օրինակ՝ կոդի փոփոխություն, որը դիպչում է կապված ֆայլերի։ Դրա սահմանները կոնտեքստի չափն ու tools-ի ծանրաբեռնվածությունն են․ մի քանի տասնյակ tool-ից հետո ընտրության որակը նվազում է, ինչը tool search-ը կարող է մեղմել։ Մի քանի agent-ն օգնում է, երբ աշխատանքը զուգահեռ է կամ ծանր է ընթերցանությամբ․ subagent-ները ուսումնասիրում են մաքուր կոնտեքստներում և վերադարձնում խտացված արդյունքներ, ուստի lead-ը տեսնում է միայն կարևորը, և wall-clock ժամանակը նվազում է։ Արժեքներ՝ ընդհանուր առմամբ ավելի շատ token-ներ, handoff-երի ժամանակ կորած տեղեկություն և ավելի դժվար debugging, քանի որ ձախողումները թաքնվում են առաջադրանքների ձևակերպումներում և ամփոփումներում։ Իմ կանոնը՝ սկսել մեկ agent-ով, subagent-ներ ավելացնել հստակ առանձնացվող, ընթերցանությամբ ծանր ենթաառաջադրանքների համար, խուսափել բարդ role-play հիերարխիաներից, քանի դեռ գնահատումը չի ապացուցել, որ դրանք օգնում են։

S3Ինչպե՞ս agent-ի վարքը բավականաչափ վերարտադրելի դարձնել debug-ի և աուդիտի համար։

Sampling-ի դեպքում լիարժեք վերարտադրելիությունն անհնար է, բայց կարելի է բավականաչափ մոտենալ։ Պահեք յուրաքանչյուր գործարկման ամբողջական transcript-ը՝ մոդելի id, effort կարգավորումներ, system prompt-ի տարբերակ, tool սահմանումների տարբերակ, յուրաքանչյուր tool-ի մուտք և ելք, և timestamp-ներ։ Հնարավորության դեպքում tools-ը դարձրեք դետերմինիստիկ և գրանցեք արտաքին պատասխանները, որպեսզի գործարկումը կարողանա replay արվել գրանցված արդյունքների դեմ։ Prompt-ները և tools-ը տարբերակավորեք կոդի պես և յուրաքանչյուր գործարկում կապեք commit-ի հետ։ Գնահատման առաջադրանքներն աշխատեցրեք մի քանի անգամ և հաղորդեք հաջողության տոկոսներ, ոչ թե առանձին արդյունքներ։ Աուդիտների համար log արեք այն ինքնությունը, որի անունից գործել է յուրաքանչյուր tool call, և հաստատման յուրաքանչյուր որոշում։ Փոխզիջումը պահեստավորումն ու գաղտնիությունն է․ transcript-ները պարունակում են զգայուն տվյալներ, ուստի կիրառեք պահպանման սահմանափակումներ, մուտքի վերահսկողություն և redaction՝ ճիշտ ինչպես հավելվածի log-երի դեպքում։

Բառարան

Agent
LLM, որը ցիկլով ընտրում և կանչում է tools, մինչև նպատակին հասնի։
Harness
Մոդելի շուրջ կոդը, որն աշխատեցնում է ցիկլը, կատարում tools-ը, կառավարում կոնտեքստը և կիրառում սահմանափակումները։
Tool
Ֆունկցիա, որը մոդելը կարող է պահանջել՝ նկարագրված անունով, նկարագրությամբ և մուտքի schema-ով։
MCP
Model Context Protocol՝ բաց ստանդարտ AI հավելվածներին tools և տվյալներ տրամադրելու համար։
Subagent
Առանձին agent գործարկում՝ սեփական թարմ կոնտեքստով, որին lead agent-ը տալիս է նեղ առաջադրանք։
Compaction
Ավելի վաղ զրույցի ամփոփում, որպեսզի երկարատև agent-ը կարողանա շարունակել իր context window-ի սահմաններում։
Human-in-the-loop
Դիզայն, որտեղ մարդը հաստատում կամ խմբագրում է agent-ի որոշ գործողություններ՝ նախքան դրանց ուժի մեջ մտնելը։
Sandbox
Մեկուսացված միջավայր, որտեղ agent-ի կոդն աշխատում է առանց գաղտնիքների կամ production համակարգերի հասանելիության։
Indirect prompt injection
Չարամիտ հրահանգներ՝ թաքցված բովանդակության մեջ, որը agent-ը կարդում է, օրինակ՝ վեբ էջեր, ֆայլեր կամ email-ներ։

Պրոդուկտի գաղափար ունե՞ք։Եկեք ստեղծենք այն։

Պատմեք ձեր գաղափարի, պրոդուկտի կամ թիմի մասին։ Սովորաբար պատասխանում եմ մեկ աշխատանքային օրվա ընթացքում։