মাল্টি-এজেন্ট সিস্টেম তৈরি করা

বড় ভাষা মডেলের একটি শক্তিশালী প্রয়োগ হল এলএলএম-চালিত এজেন্ট। এজেন্ট হল এমন একটি সিস্টেম যা জটিল কাজগুলিকে পরিকল্পনা করে কীভাবে কাজগুলিকে ছোট করে ভাগ করতে পারে এবং ( টুল কলিংয়ের সাহায্যে) এমন কাজগুলি সম্পাদন করতে পারে যা ডাটাবেস বা এমনকি শারীরিক ডিভাইসের মতো বাহ্যিক সংস্থানগুলির সাথে যোগাযোগ করে।

এখানে একটি একক প্রম্পট এবং বিভিন্ন সরঞ্জাম ব্যবহার করে নির্মিত একটি খুব সাধারণ গ্রাহক পরিষেবা এজেন্টের কিছু উদ্ধৃতি রয়েছে:

const menuLookupTool = ai.defineTool(
  {
    name: 'menuLookupTool',
    description: 'use this tool to look up the menu for a given date',
    inputSchema: z.object({
      date: z.string().describe('the date to look up the menu for'),
    }),
    outputSchema: z.string().describe('the menu for a given date'),
  },
  async (input) => {
    // Retrieve the menu from a database, website, etc.
    // ...
  }
);

const reservationTool = ai.defineTool(
  {
    name: 'reservationTool',
    description: 'use this tool to try to book a reservation',
    inputSchema: z.object({
      partySize: z.coerce.number().describe('the number of guests'),
      date: z.string().describe('the date to book for'),
    }),
    outputSchema: z
      .string()
      .describe(
        "true if the reservation was successfully booked and false if there's" +
          ' no table available for the requested time'
      ),
  },
  async (input) => {
    // Access your database to try to make the reservation.
    // ...
  }
);
const chat = ai.chat({
  model: gemini15Pro,
  system:
    "You are an AI customer service agent for Pavel's Cafe. Use the tools " +
    'available to you to help the customer. If you cannot help the ' +
    'customer with the available tools, politely explain so.',
  tools: [menuLookupTool, reservationTool],
});

উপরে দেখানোর মতো একটি সাধারণ স্থাপত্য যথেষ্ট হতে পারে যখন আপনার এজেন্টের শুধুমাত্র কয়েকটি ক্ষমতা থাকে। যাইহোক, উপরের সীমিত উদাহরণের জন্যও, আপনি দেখতে পাচ্ছেন যে এমন কিছু ক্ষমতা রয়েছে যা গ্রাহকরা আশা করতে পারে: উদাহরণস্বরূপ, গ্রাহকের বর্তমান রিজার্ভেশন তালিকাভুক্ত করা, একটি রিজার্ভেশন বাতিল করা ইত্যাদি। আপনি এই অতিরিক্ত ক্ষমতাগুলি বাস্তবায়নের জন্য আরও বেশি সংখ্যক সরঞ্জাম তৈরি করার সাথে সাথে আপনি কিছু সমস্যায় পড়তে শুরু করেন:

  • আপনি যত বেশি টুল যোগ করবেন, আপনি কাজের জন্য সঠিক টুলটিকে ধারাবাহিকভাবে এবং সঠিকভাবে নিয়োগ করার মডেলের ক্ষমতাকে তত বেশি প্রসারিত করবেন।
  • কিছু কাজ একটি একক টুল কলের পরিবর্তে ব্যবহারকারী এবং এজেন্টের মধ্যে আরও বেশি ফোকাস করে পরিবেশন করা যেতে পারে।
  • কিছু কাজ একটি বিশেষ প্রম্পট থেকে উপকৃত হতে পারে। উদাহরণ স্বরূপ, যদি আপনার এজেন্ট একজন অসন্তুষ্ট গ্রাহককে সাড়া দেয়, তাহলে আপনি তার স্বরকে আরও ব্যবসার মত হতে চাইতে পারেন, যেখানে যে এজেন্ট গ্রাহককে শুরুতে অভিনন্দন জানায় তার স্বর আরও বন্ধুত্বপূর্ণ এবং হালকা মনে হতে পারে।

জটিল এজেন্ট তৈরি করার সময় উদ্ভূত এই সমস্যাগুলি মোকাবেলা করার জন্য আপনি একটি পদ্ধতি ব্যবহার করতে পারেন তা হল অনেক বিশেষ এজেন্ট তৈরি করা এবং তাদের কাছে কাজ অর্পণ করার জন্য একটি সাধারণ উদ্দেশ্য এজেন্ট ব্যবহার করা। Genkit এই আর্কিটেকচারটিকে সমর্থন করে আপনাকে প্রম্পটগুলিকে সরঞ্জাম হিসাবে নির্দিষ্ট করার অনুমতি দিয়ে। প্রতিটি প্রম্পট একটি একক বিশেষায়িত এজেন্টের প্রতিনিধিত্ব করে, যার কাছে উপলব্ধ সরঞ্জামগুলির নিজস্ব সেট রয়েছে এবং সেই এজেন্টগুলি আপনার একক অর্কেস্ট্রেশন এজেন্টের কাছে সরঞ্জাম হিসাবে উপলব্ধ, যা ব্যবহারকারীর সাথে প্রাথমিক ইন্টারফেস।

পূর্ববর্তী উদাহরণের একটি প্রসারিত সংস্করণ একটি মাল্টি-এজেন্ট সিস্টেম হিসাবে দেখতে কেমন হতে পারে তা এখানে:

// Define a prompt that represents a specialist agent
const reservationAgent = ai.definePrompt(
  {
    name: 'reservationAgent',
    description: 'Reservation Agent can help manage guest reservations',
    tools: [reservationTool, reservationCancelationTool, reservationListTool],
  },
  '{{role "system"}} Help guests make and manage reservations'
);

// Or load agents from .prompt files
const menuInfoAgent = ai.prompt('menuInfoAgent');
const complaintAgent = ai.prompt('complaintAgent');

// The triage agent is the agent that users interact with initially
const triageAgent = ai.definePrompt(
  {
    name: 'triageAgent',
    description: 'Triage Agent',
    tools: [reservationAgent, menuInfoAgent, complaintAgent],
  },
  `{{role "system"}} You are an AI customer service agent for Pavel's Cafe.
  Greet the user and ask them how you can help. If appropriate, transfer to an
  agent that can better handle the request. If you cannot help the customer with
  the available tools, politely explain so.`
);
// Start a chat session, initially with the triage agent
const chat = ai.chat(triageAgent);