Головна / Статті / Як зв'язати ШІ-інструменти в щоденний процес без безкінечних промптів

Як зв'язати ШІ-інструменти в щоденний процес без безкінечних промптів

Як перетворити розрізнені ШІ-інструменти на повторюваний конвеєр: уникнути накопичення помилок від ручних промптів, узяти простий оркестратор і спроєктувати, протестувати й перевірити кожен етап.

1270 слів

Користуватися одним ШІ-інструментом легко. Складніше зв'язати кілька так, щоб ланцюжок можна було запускати щодня і не стояти над ним. Якщо на кожному кроці доводиться знову набирати інструкції й перевіряти результат вручну, це не робочий процес, а повинність. Розберімо, як процес виглядає на практиці, де ламаються постійні промпти і як невеликий оркестратор тримає все докупи.

Що вважати робочим процесом

ШІ-процес (workflow) — це ланцюжок автоматичних кроків, які за допомогою ШІ доводять до кінця одне конкретне завдання. Уявіть конвеєр: кожен пост виконує одну операцію, зате добре, а готовий виріб виходить кращим, бо нікому не треба носити деталі між постами. У розробці це може бути рев'ю коду, генерація документації чи прогін тестів.

Головна ідея — розрізати велике розмите завдання на невеликі шматки, кожен з яких можна автоматизувати й налаштувати окремо.

Два терміни допоможуть не плутатися. Модель — це навчене математичне представлення задачі, яке робить прогнози чи ухвалює рішення на основі даних. Інструмент — це застосунок, що обгортає одну або кілька моделей заради конкретної роботи. Наприклад, інструмент для рев'ю коду може використовувати мовну модель, щоб прочитати диф і написати зауваження.

Мета не в окремих автоматизаціях. Потрібен один цілісний процес, де кілька інструментів передають одне одному результати й разом дають добрий підсумок. Найпростіший будівельний блок — функція, яка викликає serverless-функцію і повертає її відповідь:

// Import the required AWS SDK package
import { LambdaClient, InvokeCommand } from "@aws-sdk/client-lambda";
// Create a new Lambda client
const lambdaClient = new LambdaClient({ region: "us-west-2" });
// Define a function to invoke a Lambda function
async function invokeLambda(functionName: string) {
  // Create a new InvokeCommand
  const command = new InvokeCommand({
    FunctionName: functionName,
  });
  // Invoke the Lambda function
  const response = await lambdaClient.send(command);
  // Return the response
  return response;
}

Усі наступні приклади використовують цей хелпер, тож кожен ШІ-інструмент живе за власною функцією і викликається однаково.

Чим шкодять постійні промпти

Промпт — це вхідні дані або вказівка, що спрямовують модель до потрібного результату. Без чіткої вказівки модель відповідає посередньо, а іноді й зовсім некорисно. Ліки — ясний, короткий і точно сформульований запит, який показує моделі, що саме вам треба.

Допоможе аналогія. Ви їдете до ресторану в незнайомому місті, а у вас немає ні адреси, ні маршруту. Найімовірніше, блукатимете або приїдете не туди. Модель без точного промпту поводиться так само.

Промпт може бути зовсім простим об'єктом із текстом:

// Define a function to prompt an AI model
function promptAIModel(promptText: string) {
  // Create a new prompt object
  const prompt = {
    text: promptText,
  };
// Return the prompt object
  return prompt;
}
// Example usage:
const prompt = promptAIModel("Generate a summary of the code review results");
console.log(prompt);

Справжня проблема з'являється, коли це доводиться робити знову і знову, вручну, на кожному етапі. Дрібні помилки першого кроку потрапляють у другий, там розростаються, і наприкінці результат уже нікуди не годиться. Такий ефект снігової кулі називають накопиченою помилкою, і саме через нього робота «промпт за промптом» не масштабується. Промпти треба написати один раз, один раз перевірити й далі запускати автоматично.

Як поєднати інструменти

Щоб звести промпти до мінімуму, інструменти об'єднують через оркестратор. Це застосунок, який запускає кілька ШІ-інструментів по черзі й збирає їхні результати в одну відповідь. Тут один крок робить рев'ю коду, наступний генерує документацію, а оркестратор зливає обидві відповіді в один об'єкт:

// Import the required AWS SDK package
import { LambdaClient, InvokeCommand } from "@aws-sdk/client-lambda";
// Define a function to orchestrate an AI workflow
async function orchestrateWorkflow() {
  // Invoke the first AI tool (e.g., code review)
  const codeReviewResponse = await invokeLambda("code-review-function");
  // Invoke the second AI tool (e.g., documentation generation)
  const documentationResponse = await invokeLambda("documentation-generation-function");
  // Combine the outputs of the two AI tools
  const workflowOutput = {
    codeReview: codeReviewResponse,
    documentation: documentationResponse,
  };
  // Return the workflow output
  return workflowOutput;
}

Зберіть усе так — і матимете один повторюваний процес, де друкувати вам майже нічого не доведеться.

Конкретний приклад: рев'ю плюс документація

Поширений реальний сценарій — автоматичне рев'ю коду разом із генерацією документації. Беруть участь три частини: інструмент рев'ю, інструмент документації та оркестратор, що їх координує. Якщо рев'ю робить Claude, документацію пише Cursor, а виклики по черзі запускає Lambda-функція, сполучний код виглядає так:

// Define a function to integrate Claude, Cursor, and Lambda into an AI workflow
async function integrateAIWorkflow() {
  // Invoke the Claude AI tool for code review
  const claudeResponse = await invokeLambda("claude-function");
// Invoke the Cursor AI tool for documentation generation
  const cursorResponse = await invokeLambda("cursor-function");
  // Use Lambda to orchestrate the workflow
  const lambdaResponse = await invokeLambda("workflow-orchestrator-function");
  // Return the workflow output
  return lambdaResponse;
}

Той самий підхід працює далеко за межами програмування. Аналіз даних, звіти й багато інших задач теж розкладаються на етапи, які передають роботу один одному.

Як спроєктувати свій процес

Надійним процес роблять три звички.

  1. Спершу чітко визначте цілі. Запишіть, що процес має видавати: від цього залежать усі інші рішення.
  2. Добирайте інструменти під кожен етап. Обирайте їх під конкретне завдання, а не за брендом, і не змушуйте один інструмент робити все.
  3. Тестуйте й перевіряйте процес повністю. Переконайтеся, що результат добрий і що помилки непомітно не розростаються від кроку до кроку.

Усе це можна вкласти в одну функцію проєктування: цілі, список інструментів і реальний прогін оркестратора для перевірки.

// Define a function to design an AI workflow
async function designWorkflow() {
  // Define clear goals and objectives for the workflow
  const workflowGoals = {
    objective: "Automate code review and documentation generation",
  };
// Choose the right AI tools for the workflow
  const aiTools = ["Claude", "Cursor", "Lambda"];
  // Test and validate the workflow
  const workflowOutput = await orchestrateWorkflow();
  // Return the workflow design
  return {
    goals: workflowGoals,
    tools: aiTools,
    output: workflowOutput,
  };
}

Якщо пройти ці кроки, вийде процес, що дає якісний результат із мінімумом помилок.

Коротко

  • Робочий процес — це ланцюжок автоматичних кроків, який доводить до кінця одне визначене завдання.
  • Користь — у цілісному процесі, що об'єднує кілька інструментів, а не в автоматизації окремих задач поодинці.
  • Постійні ручні промпти призводять до накопичення помилок і слабших результатів.
  • Оркестратор, що об'єднує інструменти, зменшує кількість потрібних промптів.
  • Починайте з ясних цілей, добирайте інструменти під кожен етап і тестуйте весь прогін.
  • Підхід працює в розробці, аналізі даних і багатьох інших галузях.

Перш ніж довіряти прикладам коду в продакшені, звірте їх з офіційною документацією кожного інструмента: деталі SDK змінюються.