برنامه نویسی

استفاده از RAG برای ساخت عوامل IDE شما

در دوران پس از انقلاب GPT، بسیاری از ما توسعه دهندگان شروع به استفاده از ابزارهای دارای LLM در گردش کار توسعه خود کرده ایم. امروزه با استفاده از این ابزارهای LLM می توانید کارهای توسعه جدید و پیچیده را در یک بازه زمانی کوتاه تکمیل کنید.

تا زمانی که شروع به استفاده از آنها برای هر چیزی که مربوط به APIها یا SDKهای جدید یا آخرین نسخه آنها باشد، اینجا جایی است که آنها کوتاهی می کنند.

رفع نواقص با RAG

در CommandDash (قبلاً Welltested)، تیم ما در تولید کد کار کرده است. مانند سایر سازمان‌ها در این زمینه، ما چالش‌ها را شناختیم و به طور فعال راه‌حل‌هایی را توسعه دادیم.

بنابراین، با Dash Agent Framework، ما ساخت یک سیستم RAG قوی را برای مقابله با این مسائل از همان مرحله اولیه آغاز کردیم.

RAG چیست؟

Retrieval-Augmented Generation (RAG) یک تکنیک قدرتمند است که قابلیت های LLM ها را با مراجع مرتبط ترکیب می کند تا پاسخ ها را غنی کند. این منابع مرتبط معمولاً از منابع دانش خارجی مانند پایگاه‌های داده اسناد و موارد دیگر مشتق می‌شوند.

معماری RAG-enabled Architecture

RAG قابلیت‌های LLM را به‌ویژه هنگام کار با بسته‌ها و فریم‌ورک‌های جدید به‌طور چشمگیری افزایش می‌دهد. با دسترسی به اطلاعات به‌روز از اسناد، نمونه‌های کد و سایر منابع، LLM‌های مبتنی بر RAG می‌توانند:

  • پاسخ های دقیق و متنی ارائه دهید: LLMها به جای تکیه بر داده های از پیش آموزش دیده می توانند به آخرین اسناد و نمونه های کد برای ارائه اطلاعات دقیق و مرتبط دسترسی داشته باشند.
  • سازگاری با فناوری های در حال توسعه: با تکامل API ها و SDK ها، RAG می تواند با به روز رسانی مداوم پایگاه دانش خود از منابع رسمی، سرعت خود را حفظ کند.

در این وبلاگ با استفاده از Dash Agent یک عامل IDE قدرتمند برای PandasAI می سازیم. سپس بعداً متوجه خواهیم شد که چگونه استفاده از RAG می تواند به طور قابل توجهی پاسخ های LLM را بهبود بخشد.

Building PandasAI Agent

PandasAI یک پلتفرم پایتون است که به شما کمک می‌کند تا در مورد داده‌هایتان به زبان طبیعی سؤال کنید. این قابلیت‌های هوش مصنوعی مولد را در پانداها ادغام می‌کند تا به شما امکان می‌دهد بدون زحمت بینش‌ها را استخراج کنید.

نسخه ی نمایشی PandasAI

اکنون که با PandasAI آشنا شدید. بیایید سفر خود را برای ساخت عامل PandasAI خودمان آغاز کنیم. وظیفه این نماینده کمک به توسعه دهندگان در ساخت و ادغام کد PandasAI به طور موثر خواهد بود.

مراحل پیش نیاز

1. فلاتر/دارت را نصب کنید
Dash Agent بر اساس زبان دارت ساخته شده است. اگر قبلاً این کار را نکرده‌اید، دستورالعمل‌های رسمی نصب فلاتر را در اینجا دنبال کنید.

2. dash_cli را نصب کنید
اکنون ابزار خط فرمان dash_cli را نصب کنید که به شما امکان می‌دهد عوامل خود را در بازار CommandDash ایجاد و منتشر کنید. ترمینال خود را باز کنید و دستور زیر را اجرا کنید:

dart pub global activate dash_cli 
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پروژه PandasAI را ایجاد کنید

در مرحله بعد، پروژه pandas_ai را ایجاد خواهید کرد. اینجا جایی است که شما تنظیمات عامل خود را تعریف می کنید. دستور زیر را در ترمینال اجرا کنید:

dash_cli create pandas_ai
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این یک پروژه عامل خط تیره ایجاد می کند که شامل ساختمان عامل کد الگو است. سپس، پروژه را در IDE دلخواه خود که در آن افزونه flutter نصب شده است، باز کنید.

افزودن منابع داده های عامل

هسته یک عامل مبتنی بر RAG در پایگاه دانش آن است که به عنوان منابع داده شناخته می شود. این منابع زمینه و اطلاعاتی را برای درک و پاسخ به درخواست‌های کاربر در اختیار نماینده قرار می‌دهند.

برای عامل PandasAI خود، داده ها را از منابع زیر جمع آوری خواهیم کرد:

حرکت به lib/data_sources در پروژه خود فایل کنید و کد موجود را با:

import 'package:dash_agent/data/datasource.dart';
import 'package:dash_agent/data/filters/filter.dart';
import 'package:dash_agent/data/objects/file_data_object.dart';
import 'package:dash_agent/data/objects/project_data_object.dart';
import 'package:dash_agent/data/objects/web_data_object.dart';

// Indexes all the documentation related data
class DocsDataSource extends DataSource {
  @override
  List<FileDataObject> get fileObjects => [];

  @override
  List<ProjectDataObject> get projectObjects => [];

  @override
  List<WebDataObject> get webObjects => [
        WebDataObject.fromSiteMap('https://docs.pandas-ai.com/sitemap.xml'),
        WebDataObject.fromSiteMap(
            'https://www.xml-sitemaps.com/download/pandasai-docs.readthedocs.io-a2835e7d4/sitemap.xml?view=1'),
      ];
}

// Indexes all the example code and issues related data
class ExampleDataSource extends DataSource {
  final accessToken = 'your_personal_github_access_token';
  @override
  List<FileDataObject> get fileObjects => [];

  @override
  List<ProjectDataObject> get projectObjects => [];

  @override
  List<WebDataObject> get webObjects => [
        WebDataObject.fromGithub(
            'https://github.com/sinaptik-ai/pandas-ai', accessToken,
            codeFilter: CodeFilter(pathRegex: r'^examples\/.*')),
        WebDataObject.fromGithub(
            'https://github.com/ismailtachafine/PandasAI-CSV-Analysis',
            accessToken,
            codeFilter: CodeFilter(pathRegex: r'.*\.py$')),
        WebDataObject.fromGithub(
            'https://github.com/kBrutal/CSV_ChatBot', accessToken,
            codeFilter: CodeFilter(pathRegex: r'.*\.py$')),
        WebDataObject.fromGithub(
            'https://github.com/InsightEdge01/GroqMultiCSVChatPandasAI',
            accessToken,
            codeFilter: CodeFilter(pathRegex: r'.*\.py$')),
        WebDataObject.fromGithub(
            'https://github.com/InsightEdge01/MutipleCSVChatllama3Pandasai',
            accessToken,
            codeFilter: CodeFilter(pathRegex: r'.*\.py$')),
        WebDataObject.fromGithub(
            'https://github.com/TirendazAcademy/PandasAI-Tutorials',
            accessToken,
            codeFilter: CodeFilter(pathRegex: r'.*\.py$')),
      ];
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

کد بالا منابع منابعی را به اشتراک می‌گذارد که هم اسناد و هم نمونه‌ها باید نمایه شوند. جدا از لینک منابع، شما هم ارائه کرده اید accessToken و codeFilter:

  • accessToken: در طول پردازش، سرور CommandDash داده ها را برای ایندکس می کند WebDataObject.fromGithub از طریق API رسمی Github. برای واکشی کارآمد داده ها از API GitHub، توکن شخصی github مورد نیاز است و می توان آن را به راحتی با بازدید از صفحه توکن ها تولید کرد.
  • CodeFilter: این فیلتر چارچوب را قادر می سازد تا فایل های کد را بر اساس regex به اشتراک گذاشته شده به صورت انتخابی فهرست بندی کند. این اختیاری است.

توجه داشته باشید: رمز دسترسی شخصی شما داده های بسیار حساسی است. لطفاً مطمئن شوید که آن را با کسی به اشتراک نگذارید یا آن را به هر منبع عمومی فشار دهید.

می توانید در مورد آن بیشتر بدانید WebDataObject و ویژگی های مرتبط با جزئیات در مستندات CommandDash.

افزودن اعلان سیستم عامل و متادیتا

در مرحله بعد، دستور سیستم و ابرداده عامل را به آن اضافه می کنید AgentConfiguration کلاس هدایت به lib/agent.dart فایل و کد موجود را جایگزین کنید:

import 'package:dash_agent/configuration/metadata.dart';
import 'package:dash_agent/data/datasource.dart';
import 'package:dash_agent/configuration/command.dart';
import 'package:dash_agent/configuration/dash_agent.dart';
import 'data_sources.dart';

class PandasAI extends AgentConfiguration {
  final docsDataSource = DocsDataSource();
  final exampleDataSource = ExampleDataSource();

  // Add the metadata information about PandasAI agent
  @override
  Metadata get metadata => Metadata(
      name: 'Pandas AI',
      avatarProfile: 'assets/logo.jpeg',
      tags: ['LLM Framework', 'Data Analysis']);

  // Add the systemPrompt for dash agent's commandless mode (also know as chat mode). 
  // System prompt is a key component for conversational-style agents. As it provides 
  // the initial context and guidance regarding the agent's purpose and functionality to the LLM.
  @override
  String get registerSystemPrompt =>
      '''You are a Pandas AI assistant inside user's IDE. PandasAI is a Python library that makes it easy to ask questions to your data in natural language.

      You will be provided with latest docs and examples relevant to user questions and you have to help them achieve their desired results. Output code and quote links and say I don't know when the docs don't cover the user's query.''';

  // Add the data sources that needs to indexed for RAG purposes.
  @override
  List<DataSource> get registerDataSources =>
      [docsDataSource, exampleDataSource];

  @override
  List<Command> get registerSupportedCommands => [];
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

کد بالا اساساً همه چیز را برای عامل PandasAI به هم می چسباند – منبع داده، ابرداده، فرمان سیستم، دستورات و غیره که برای ساخت عامل dash مورد نیاز است.

برای جزئیات بیشتر مربوط به AgentConfiguration لطفا چارچوب dash_agent را بخوانید.

در نهایت، به bin/main.dart فایل و کد موجود را جایگزین کنید:

import 'package:dash_agent/dash_agent.dart';
import 'package:pandas_ai/agent.dart';

/// Entry point used by the [dash-cli] to extract your agent
/// configuration during publishing.
Future<void> main() async {
  await processAgent(PandasAI());
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

خودشه. نماینده شما اکنون پیکربندی شده و آماده استفاده است. در مرحله بعد، آن را منتشر خواهید کرد تا بتوان آن را آزمایش کرد و با سایر برنامه‌نویسان نیز به اشتراک گذاشت.

انتشار PandasAI Agent

برای انتشار نماینده خود باید با استفاده از GitHub auth وارد dash_cli شوید. برای ورود دستور زیر را در ترمینال اجرا کنید:

dash_cli login
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در نهایت دستور زیر را در ترمینال از پوشه ریشه پروژه pandas_ai خود اجرا کنید تا عامل منتشر شود:

dash_cli publish
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این تنظیمات را تأیید می کند و اگر همه چیز خوب به نظر می رسد. انتشار نماینده شما را برنامه ریزی می کند. هنگامی که عامل شما آماده استفاده است. ایمیلی مبنی بر تایید انتشار موفقیت آمیز دریافت خواهید کرد و PandasAI در CommandDash Marketplace قابل مشاهده خواهد بود:

عامل PandaAI dash در بازار CommandDash

چه خبر بعدی

تبریک می گویم! 🎉 اکنون می دانید که چگونه با استفاده از چارچوب Dash Agent عوامل قدرتمند ایجاد کنید. این عوامل از قدرت RAG و LLM استفاده می کنند. ما از دیدن عوامل خلاقانه ای که با Dash Agent خواهید ساخت، هیجان زده هستیم.

همچنین فراموش نکنید که عامل PandasAI را امتحان کنید، که در حال حاضر در افزونه CommandDash برای VS Code موجود است. اینجا را بررسی کن.

در ادامه، در وبلاگ آینده خود خواهیم دید که PandasAI چقدر خوب عمل می کند. گوش به زنگ باشید!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا