Agent AI اتوماسیون هوشمند با Crewai

هوش مصنوعی به سرعت تکامل یافته است ، و یکی از امیدوار کننده ترین مفاهیم این انقلاب ، نماینده ای که داریدبشر این عوامل هوشمند نه تنها اطلاعات را پردازش می کنند ، بلکه تصمیمات مستقل می گیرند و با سیستم ها و کاربران فعالانه تعامل دارند. بیایید کشف کنیم که آنها چه هستند عامل AIS، نحوه کار آنها و چگونگی استفاده از آنها برای تبدیل اتوماسیون هوشمند و همچنین با استفاده از Crewai اعمال می شود.
یک عامل آنجا چیست؟
یکی نماینده ای که دارید (عامل هوش مصنوعی) این یک سیستم مبتنی بر هوش مصنوعی است که قادر به دستیابی به اهداف خاص برای دستیابی به اهداف خاص است. برخلاف چتر سنتی ، که فقط به دستورات پاسخ می دهد ، یک عامل در آنجا می تواند دلیل ، برنامه ریزی را برنامه ریزی کند و بدون مداخله مداوم انسان کارها را انجام دهد.
این عوامل را می توان برای اهداف مختلفی مانند:
- اتوماسیون فرآیند پیچیده: نظارت سیستم ، تصمیم گیری در زمان واقعی و بهینه سازی گردش کار.
- خدمات پیشرفته مشتری: عیب یابی ، توصیه های سفارشی و پشتیبانی فنی خودکار.
- تجزیه و تحلیل داده های هوشمند: جمع آوری ، فیلتر و تفسیر حجم داده های بزرگ برای تصمیم گیری استراتژیک.
یک عامل چگونه کار می کند؟
عامل برای دستیابی به رفتارهای خودمختار و هوشمند از فن آوری ها و رویکردهای مختلف استفاده می کند. برخی از مؤلفه های اصلی عبارتند از:
الف Modelos de Machine Learning E LLMS (مدل های بزرگ زبان): آنها از یادگیری ماشین برای پردازش زبان طبیعی ، تشخیص الگوهای و تصمیم گیری مبتنی بر داده استفاده می کنند.
ب. استدلال و برنامه ریزی: تکنیک هایی مانند برنامه ریزی خودکار اشمیه یادگیری تقویت کننده برای تعریف استراتژی ها و عمل خودمختار.
ج. تعامل با API ها و سیستم های خارجی: آنها برای جستجوی و پردازش اطلاعات به پایگاه داده ها ، CRM ها ، ERP ها و ابزارهای دیگر متصل می شوند.
د. حافظه و متن: بر خلاف دستیاران اصلی ، مأمورین می توانند سابقه تعامل را حفظ کرده و از هر تجربه بیاموزند و به مرور زمان کارآمدتر شوند.
برنامه های کاربردی
AIS Agent در صنایع و بخش های مختلف برای حل مشکلات به روشی نوآورانه به تصویب می رسد:
الف شرکت ها و اتوماسیون شرکت ها
شرکت ها از عوامل هوشمند برای خودکارسازی وظایف تکراری ، مدیریت گردش کار و بهبود کارآیی عملیاتی استفاده می کنند.
ب. دستیاران شخصی و خدمات مشتری
چت های سنتی به عوامل باهوش تر که می توانند زمینه را حفظ کنند ، نیازهای کاربر را پیش بینی کرده و توصیه های دقیق تری را ارائه می دهند.
ج. امنیت سایبری و تشخیص تهدید
با استفاده از هوش مصنوعی ، نمایندگان می توانند شبکه های زمان واقعی را رصد کنند ، الگوهای مشکوک را شناسایی کنند و به طور خودکار به حملات سایبری احتمالی پاسخ دهند.
د. تحقیق و توسعه
شرکت های فناوری و نوآوری از نماینده برای جستجوی اطلاعات ، سنتز گزارش ها و تسریع در توسعه محصولات و راه حل های جدید استفاده می کنند.
چالش در اجرای عامل
از آنجا که همه چیز گل نیست ، علی رغم مزایا ، چالش هایی برای غلبه بر تصویب عوامل هوش مصنوعی وجود دارد:
- حریم خصوصی و امنیت داده ها: از آنجا که این عوامل با حجم زیادی از اطلاعات سر و کار دارند ، اجرای اقدامات دقیق محافظت از داده ها ضروری است.
- اخلاق و شفافیت: از تعصب الگوریتمی خودداری کنید و اطمینان حاصل کنید که عوامل تصمیمات عادلانه و بی طرفانه می گیرند.
- پیچیدگی فنی: توسعه و آموزش عوامل هوش مصنوعی نیاز به تخصص یادگیری ماشین و ادغام سیستم های تجاری دارد.
- منابع محاسباتی: پردازش مدلهای پیشرفته نیاز به زیرساخت های قوی ، تأثیرگذاری بر هزینه ها و مقیاس پذیری دارد.
- توهیناز آنجا که مدل های هوش مصنوعی می توانند پاسخ های نادرست یا ساختگی ایجاد کنند ، خطر ارائه اطلاعات نادرست وجود دارد که می تواند بر قابلیت اطمینان نمایندگان در برنامه های مهم تأثیر بگذارد.
- عدم تعیین: از آنجا که هوش مصنوعی می تواند پاسخ های متفاوتی برای همان ورودی ایجاد کند ، این امر پیش بینی و سازگاری نتایج را دشوار می کند ، یک چالش برای برنامه هایی که نیاز به تصمیمات استاندارد دارند.
انواع عامل
سازمان ها برای تأمین نیازهای خاص از انواع مختلفی از عوامل هوشمند استفاده می کنند:
. عوامل رفلکس ساده
آنها بر اساس قوانین از پیش تعریف شده و داده های فوری عمل می کنند ، که برای کارهای ساده فقط بر اساس ادراک فعلی ایده آل هستند.
نمونه:
- یک سیستم پاسخ اتوماتیک که هنگام تشخیص کلمات کلیدی در درخواست های پشتیبانی ، رمزهای عبور را دوباره تعریف می کند.
- یک ترموستات تهویه مطبوع هنگامی که دمای جریان بیش از حد خاص باشد ، یک ماده رفلکس ساده است.
ب. عوامل رفلکس بر اساس مدل ها
آنها مکانیسم های تصمیم گیری پیشرفته تری دارند و پیامدهای خود را قبل از عمل ارزیابی می کنند و یک الگوی داخلی از محیط درک شده ایجاد می کنند.
نمونه:
- یک سیستم کنترل ترافیک که بر اساس جریان وسایل نقلیه شناسایی شده ، سیگنال های راهنمایی و رانندگی را تنظیم می کند.
w. اهداف مبتنی بر اهداف
آنها رویکردهای مختلفی را برای دستیابی به اهداف کارآمد ، با استفاده از سنسورها برای جمع آوری اطلاعات و در نظر گرفتن تاریخچه درک ، مقایسه می کنند.
نمونه:
- یک روبات خودکشی که یک انبار را برای جمع آوری و سازماندهی بسته ها بر اساس اهداف تحویل مرور می کند.
- هوش مصنوعی که شطرنج بازی می کند و تاریخ نمایشنامه ها را در نظر می گیرد و وضعیت فعلی هیئت مدیره تصمیم می گیرد که نمایشنامه بعدی یک عامل مبتنی بر مدل باشد.
د. نمایندگان مبتنی بر خدمات ابزار
آنها از الگوریتم ها برای به حداکثر رساندن مزایا برای کاربران استفاده می کنند و سناریوها را برای تصمیم گیری بهینه سازی تجزیه و تحلیل می کنند.
نمونه:
- نماینده ای که بر قیمت بلیط هواپیمایی نظارت می کند و بر اساس نسبت هزینه و فایده بهترین خرید را توصیه می کند.
- یک مشاور سرمایه گذاری هوش مصنوعی که گزینه های مختلف سرمایه گذاری را بر اساس بازده و خطرات احتمالی ارزیابی می کند ، یک عامل مبتنی بر عینی است.
و عوامل یادگیری
به طور مداوم بر اساس تجربیات گذشته ، با استفاده از بازخورد برای بهبود تصمیمات در طول زمان ، به آنها اجازه می دهد تا دانش جدیدی کسب کنند و رفتار خود را بر اساس تجربه تنظیم کنند.
نمونه:
- یک دستیار مجازی که ترجیحات کاربر را برای پیشنهاد محتوا یا تنظیم تنظیمات به طور خودکار یاد می گیرد.
- یک فیلتر هرزنامه که یاد می گیرد انواع جدیدی از ایمیل های هرزنامه را بر اساس بازخورد کاربر شناسایی کند ، یک عامل یادگیری است.
f. عوامل سلسله مراتبی
ساخته شده توسط چندین لایه سازماندهی ، که در آن عوامل بالاتر وظایف را به زیردستان برای بهینه سازی اعدام های پیچیده واگذار می کنند.
نمونه:
- یک سیستم مدیریت تدارکات که در آن نمایندگان انفرادی حمل و نقل ، موجودی و توزیع کالا را هماهنگ می کنند.
- در یک فرآیند تولید ، یک سیستم از عوامل سلسله مراتبی می تواند یک عامل سطح بالایی داشته باشد که اهداف تولید جهانی و عوامل سطح پایین را کنترل کند که دستگاه های فردی را کنترل می کنند.
خدمه چیست؟
Crewai مفهومی است که شامل ایجاد است تیم های AI Agents با مهارت های مکمل ، که برای دستیابی به اهداف خاص با هم کار می کنند. برخلاف یک مدل هوش مصنوعی واحد که سعی می کند همه چیز را به تنهایی حل کند ، کرجی مسئولیت های بین عوامل تخصصی ، بهبود دقت ، کارآیی و مقیاس پذیری راه حل ها را توزیع می کند.
چگونه کار می کند؟
ای کرجی بر اساس همکاری بین عواملجایی که هر یک نقش خاص را ایفا می کند. ساختار کلی شامل:
- نقش عوامل – هر نماینده دارای تخصصی است ، مانند پردازش داده ها ، تجزیه و تحلیل زمینه ، تولید متن یا تصمیم گیری.
- هماهنگی – یک سیستم مرکزی یا یک عامل پیشرو وظایف را توزیع کرده و ارتباط بین نمایندگان را مدیریت می کند.
- اعدام و بازخورد – نمایندگان بخش های کار خود را انجام می دهند و نتایج را برای اصلاح راه حل نهایی به اشتراک می گذارند.
مزایای خدمه
✅ راندمان بیشتر – توزیع وظایف در بین عوامل تخصصی عملکرد را بهبود می بخشد.
✅ خطای کاهش – کار مشترک اجازه می دهد تا بررسی های متقابل بین نمایندگان را انجام دهد.
✅ مقیاس پذیری – تیم های نماینده می توانند با نیازهای سیستم رشد یا سازگار شوند.
✅ تصمیم گیری بهبود یافته – تخصص عوامل منجر به تجزیه و تحلیل دقیق تر می شود.
چالش های خدمه
🚧 هماهنگی پیچیده اطمینان از همکاری عوامل به طور مؤثر می تواند به سیستم های ارتباطی پیشرفته نیاز داشته باشد.
🚧 استفاده از منابع – بسته به پیچیدگی ، اجرای ممکن است به قدرت محاسباتی بالایی نیاز داشته باشد.
🚧 تفسیر و قوام – ادغام پاسخ های مختلف می تواند تغییرات غیر منتظره ای در نتایج ایجاد کند.
دست در خمیر
به عنوان مثال ، ما عوامل زیر را با استفاده از Crewai ایجاد خواهیم کرد:
- نماینده ای برای نوشتن وبلاگ ؛
- نماینده ای که از زبان طبیعی برای ارائه نمایش داده ها در یک پایگاه داده استفاده می کند.
- یک عامل مترجم کد که دستورات را به زبان طبیعی دریافت می کند و آنها را در سیستم عامل اجرا می کند.
الزامات:
– پایتون> = 3.12 ؛
– مدیر بسته UV ؛
– داکر
نماینده در Crewai و متشکل از:
- نقش: اساسی است زیرا به هویت عامل می دهد. و نقش که عامل را در مورد مسئولیت های خود و آنچه از او انتظار می رود راهنمایی می کند. به عنوان مثال ، اگر عامل نقش “محقق” را داشته باشد ، می داند که باید بر جمع آوری اطلاعات و تجزیه و تحلیل داده ها تمرکز کند.
- هدف: این مانند شمال قطب نما برای عامل است. به عنوان مثال ، یک عامل با هدف “جمع آوری داده های بازار” برای یافتن ، تجزیه و تحلیل و تدوین اطلاعات مربوط به بازار ، بر کلیه فعالیت های شما متمرکز خواهد شد.
- پشت پرده: این ویژگی مانند تاریخ یک شخصیت در یک فیلم یا کتاب است. این زمینه و عمق را برای عامل فراهم می کند ، و اقدامات و تصمیمات خود را به گونه ای شکل می دهد که در “جهان” وی معنا پیدا کند. گره کرجی، ای پشت پرده از یک عامل برای ایجاد عوامل که نه تنها وظایف را انجام می دهند ، بسیار مهم است بلکه یک منطق داخلی برای اقدامات خود نیز دارند. در پشت پرده این بسیار مهم است زیرا مستقیماً بر نحوه رفتار و پاسخ دادن به موقعیت های مختلف تأثیر می گذارد. به عنوان مثال ، یک نماینده با سابقه “محقق دانشگاهی” با یک نماینده با تاریخ “کارآفرین” بسیار متفاوت از یک نماینده روبرو خواهد شد. اول ممکن است دقیق تر و دقیق تر باشد ، در حالی که مورد دوم می تواند نوآورانه تر و با ریسک باشد. این زمینه اضافی به تعریف انتظارات و پیش بینی رفتار عامل کمک می کند و اقدامات آنها را منسجم تر و قابل پیش بینی تر می کند.
ویژگی های دیگری نیز وجود دارد ، برای اطلاعات بیشتر به مستندات Crewai Docs بروید.
مثالهایی که در دسترس خواهم داشت در:
- Openai/GPT-4O-Mini
- Deepseek/Deepseek-Chat
- Ollama/Deepseek-R1: 8b
علاوه بر استفاده از سیستم عامل های آنلاین Openai اشمیه در اعماق از مکان در دستگاه من استفاده شد اولامابشر
نیازهای دستگاه من:
- سیستم عامل: Linux Mint 21.1 x86_64
- Nvidia GeForce GTX 1660 از 6 گیگابایت GDDR6
- 32 گیگابایت رم
- CPU: Intel I7-9750H (12) @ 4.500GHz
برای اجرای نمونه ها در ریشه پروژه:
- برای اجرای وبلاگ نوشتن:
uv run python ./blogs/main.py
- برای اجرای پرس و جو SQL در آنجا:
uv run python ./query/main.py
- برای اجرای مترجم:
uv run python ./query/main.py
1. نمایندگان برای نوشتن وبلاگ ؛
ایجاد تیم عامل واضح ، ساده و شهودی است. هر نماینده نقش خاصی دارد ، اهداف و وظایف فردی که باید انجام شود ، همه برای دستیابی به هدف نهایی به روشی مشترک و مؤثر تراز شده اند.
import os
from dotenv import load_dotenv
from crewai import Agent, Task, Crew, Process, LLM
from llm_model import LLMModel
from llm_type import LLMType
class CreateBlogWriter:
def __init__(self, type):
load_dotenv ()
llm_model = LLMModel()
self.llm = (
llm_model.open_ai_gpt_4o_mini() if LLMType(type) == LLMType.OPEN_AI_GPT_4O_MINI
else llm_model.deepseek(os.getenv("DEEPSEEK_API_KEY")) if LLMType(type) == LLMType.DEEPSEEK
else llm_model.ollama_deepseek()
)
self.create_crew()
def create_crew(self):
"""
Agentes
"""
self.planner = Agent(
role = "Planejador de Conteúdo",
goal = "Planejar conteúdo envolvente e factualmente preciso sobre {topic}",
backstory = "Você está trabalhando no planejamento de um artigo de blog "
"sobre o tema: {topic} no 'https://medium.com/'."
"Você coleta informações que ajudam o "
"público a aprender algo e tomar decisões informadas. "
"Você precisa preparar um esboço detalhado "
"com os tópicos e subtópicos relevantes que devem fazer parte do artigo de blog."
"Seu trabalho é a base para o Redator de Conteúdo escrever um artigo sobre este tema.",
llm = self.llm,
allow_delegation = False,
verbose = True
)
self.writer = Agent(
role = "Redator de Conteúdo",
goal = "Escrever um artigo de opinião perspicaz e factualmente preciso "
"sobre o tema: {topic}",
backstory = "Você está trabalhando na escrita de um "
"novo artigo de opinião sobre o tema: {topic} no 'https://medium.com/'. "
"Você baseia sua escrita no trabalho do Planejador de Conteúdo, que fornece um esboço e contexto relevante sobre o tema. "
"Você segue os principais objetivos e direção do esboço, conforme fornecido pelo Planejador de Conteúdo. "
"Você também fornece insights objetivos e imparciais e os embasa com informações fornecidas pelo Planejador de Conteúdo. "
"Você reconhece em seu artigo de opinião quando suas afirmações são opiniões e não declarações objetivas.",
allow_delegation = False,
llm = self.llm,
verbose = True
)
self.editor = Agent(
role = "Editor",
goal = "Editar um post de blog dado para alinhar com "
"o estilo de escrita da organização 'https://medium.com/'. ",
backstory = "Você é um editor que recebe um post de blog do Redator de Conteúdo. "
"Seu objetivo é revisar o post de blog para garantir que ele siga as melhores práticas jornalísticas,"
"forneça pontos de vista equilibrados ao apresentar opiniões ou afirmações, "
"e também evite tópicos controversos ou opiniões, sempre que possível.",
llm = self.llm,
allow_delegation = False,
verbose = True
)
"""
Tarefas
"""
self.plan = Task(
description = (
"1. Priorize as últimas tendências, principais players, "
"e notícias relevantes sobre {topic}.\n"
"2. Identifique o público-alvo, considerando "
"seus interesses e pontos de dor.\n"
"3. Desenvolva um esboço detalhado do conteúdo, incluindo "
"uma introdução, pontos principais e uma chamada para ação.\n"
"4. Inclua palavras-chave de SEO e dados ou fontes relevantes."
),
expected_output = "Um documento de plano de conteúdo abrangente "
"com um esboço, análise do público, palavras-chave de SEO e recursos.",
agent = self.planner,
)
self.write = Task(
description = (
"1. Use o plano de conteúdo para criar um post de blog envolvente "
"sobre {topic}.\n"
"2. Incorpore palavras-chave de SEO de forma natural.\n"
"3. As seções/Subtítulos são nomeadas de forma apropriada "
"e envolvente.\n"
"4. Certifique-se de que o post esteja estruturado com uma "
"introdução envolvente, corpo perspicaz, "
"e uma conclusão resumida.\n"
"5. Revise erros gramaticais e "
"alinhamento com a voz da marca.\n"
),
expected_output = "Um post de blog bem escrito "
"em formato markdown, pronto para publicação, cada seção deve ter 2 ou 3 parágrafos.",
agent = self.writer,
)
self.edit = Task(
description = ( "Revise o post de blog dado para verificar "
"erros gramaticais e alinhamento com a voz da marca."),
expected_output = "Um post de blog bem escrito em formato markdown, "
"pronto para publicação, cada seção deve ter 2 ou 3 parágrafos.",
agent = self.editor
)
"""
Crew
"""
self.crew = Crew(
agents = [self.planner, self.writer, self.editor],
tasks = [self.plan, self.write, self.edit],
process = Process.sequential,
verbose = True
)
def kickoff(self, topic):
result = self.crew.kickoff(inputs={"topic":topic})
return result
جریان
جریان نشان دهنده یک سیستم تولید محتوای ساختاری با استفاده از عوامل هوش مصنوعی برای خودکارسازی روند ایجاد یک مقاله وبلاگ است. این مبتنی بر خط لوله ای است که عوامل مختلف قبل از انتشار نقش های خاصی در برنامه ریزی ، نوشتن و ویرایش مطالب بازی می کنند.
اجزای اصلی
. عوامل (نمایندگان)
-
برنامه ریز محتوا (خودپرداز): مسئول ساخت یک طرح مفصل از مقاله ، شناسایی مباحث مربوطه ، روندها ، مخاطبان هدف و کلمات کلیدی سئو.
-
نویسنده محتوا (خود کار): بر اساس برنامه برنامه ریز ، مقاله ای به خوبی ساختار یافته با استفاده از کلمات کلیدی و دنبال کردن یک سبک جذاب و آموزنده می نویسد.
-
ویرایشگر (خود ویرایشگر): مقاله را مرور کنید تا اطمینان حاصل شود که با سبک پلتفرم ، تصحیح خطاها و تنظیم ساختار برای خوانایی بهتر مطابقت دارد.
ب. tarefas (کارها)
-
برنامه ریزی (خودپرداز): ایجاد پیش نویس مقاله ، تعریف مخاطب هدف و جمع آوری اطلاعات مربوطه.
-
نوشتن (خود را نوشتن): نوشتن مقاله بر اساس هواپیما ، اطمینان از ساختار منسجم و کاربرد سئو.
-
نسخه (خود.): بررسی مقاله برای اطمینان از کیفیت ، انسجام و تراز با صدای برند.
w. اعدام (خدمه)
-
سیستم به طور متوالی عوامل و وظایف را ارکستر می کند ، و اطمینان حاصل می کند که هر مرحله قبل از مرحله بعدی تکمیل می شود.
-
هر نماینده وظایف مربوطه خود را دریافت می کند و وظایف خود را انجام می دهد تا زمانی که مقاله برای انتشار آماده نشود.
د. گردش کار
-
ای برنامه ریز محتوا این موضوع را تجزیه و تحلیل می کند و یک طرح کلی با کلمات کلیدی ، مخاطبان هدف و بخش های مهم ایجاد می کند.
-
ای نویسنده محتوا از این طرح کلی برای نوشتن مقاله ، سازماندهی اطلاعات به خوبی و اطمینان از خواندن سیال استفاده می کند.
-
ویرایشگر ** بررسی ** متن برای اصلاح خطاها ، بهبود سبک و اطمینان از اینکه مقاله از استاندارد مورد انتظار پیروی می کند.
-
مقاله نهایی روند کامل را طی می کند و برای انتشار آماده است.
2. عامل که از زبان طبیعی برای انجام نمایش داده ها در یک پایگاه داده استفاده می کند
برای تولید مشاوره از هوش مصنوعی استفاده کنید SQL از توضیحات متنی کاربر بهینه شده است. این ترکیب عوامل هوشمند از کرجی و مدلهای بزرگ زبان (LLMS) برای تفسیر ساختار بانک و ساخت رقص کارآمد.
خروج:
🔍 Consulta SQL Gerada:
SELECT nome, preco
FROM produtos
WHERE preco > 100
ORDER BY preco
LIMIT 5;
nome preco
0 Bola de Futebol Pro 129.90
1 Controle Sem Fio Elite 249.90
2 Tênis Esportivo Ultra 259.90
3 Fone Bluetooth SoundX 299.90
4 Conjunto de Panelas 299.90
import os
from dotenv import load_dotenv
from crewai import Agent, Task, Crew, Process
from crewai_tools import FileReadTool
from llm_model import LLMModel
from llm_type import LLMType
class SQLQueryAI:
def __init__(self, type):
load_dotenv()
llm_model = LLMModel()
self.llm = (
llm_model.open_ai_gpt_4o_mini() if LLMType(type) == LLMType.OPEN_AI_GPT_4O_MINI
else llm_model.deepseek(os.getenv("DEEPSEEK_API_KEY")) if LLMType(type) == LLMType.DEEPSEEK
else llm_model.ollama_deepseek()
)
self.schema_tool = FileReadTool()
self.crew = None
self.create_crew()
def create_crew(self):
"""Agente especialista em SQL"""
self.sql_agent = Agent(
role="Especialista em SQL",
goal="Gerar consultas SQL precisas e otimizadas para diferentes bancos de dados.",
backstory=(
"Você é um renomado especialista em SQL, com conhecimento avançado em diversas bases de dados, incluindo Postgres, MySQL e SQL Server. "
"Sua missão é interpretar descrições textuais e transformá-las em consultas SQL eficientes, sempre considerando a estrutura do banco de dados."
),
tools=[self.schema_tool],
verbose=True,
memory=True,
llm=self.llm
)
"""Tarefa que o agente executará"""
self.task = Task(
description=(
r"""A partir do meu gerenciador {database_type},
no banco de dados '{database_name}',
e do esquema fornecido no arquivo
YAML localizado em {yaml_path},
gere uma consulta SQL otimizada para
atender ao seguinte pedido:
{user_request}.
Certifique-se de usar as tabelas e colunas
corretas conforme a estrutura do YAML.
O valor inserido em 'json_output' é {json_output}.
IMPORTANTE:
- **Formato de Retorno:**
Se 'json_output' for **True**, a consulta deve retornar os dados em formato JSON,
usando as funções apropriadas para cada banco de dados:
- **Postgres:** 'row_to_json()' ou 'json_agg()'
- **MySQL:** 'JSON_OBJECT()' ou 'JSON_ARRAYAGG()'
- **SQL Server:** 'FOR JSON AUTO'
- **Oracle:** 'JSON_OBJECT()'
Caso contrário, a consulta deve ser otimizada para um **retorno tabular tradicional**.
- **Otimização:**
- Sempre utilize **índices disponíveis** para melhorar a performance.
- Se houver junções ('JOINs'), prefira **chaves indexadas** para evitar scans desnecessários.
- Ordene os resultados de maneira lógica se necessário ('ORDER BY').
- **Considerações Específicas:**
- Evite selecionar colunas desnecessárias (`SELECT *` não é recomendado).
- Se a consulta precisar de filtros ('WHERE'), utilize os campos de indexação do banco de dados para maior eficiência.
- Para valores nulos, utilize funções adequadas como `COALESCE()` para garantir legibilidade no resultado.
"""
),
expected_output="Uma consulta SQL válida e otimizada para o banco de dados especificado.",
agent=self.sql_agent
)
self.crew = Crew(
agents=[self.sql_agent],
tasks=[self.task],
process=Process.sequential
)
def kickoff(self, inputs):
"""
Executa o processo de geração de consultas SQL.
Args:
inputs (dict): Dicionário contendo os parâmetros de entrada:
- database_type (str): Tipo do banco de dados (Postgres, MySQL, etc.).
- database_name (str): Nome do banco de dados.
- yaml_path (str): Caminho do arquivo YAML contendo a estrutura do banco.
- user_request (str): Pedido textual para gerar a consulta SQL.
- json_output (bool): Define se a consulta deve retornar um JSON ou um formato tabular.
Returns:
str: A consulta SQL gerada no formato esperado.
"""
result = self.crew.kickoff(inputs=inputs).raw
result = result.replace("sql","")
result = result.replace("", "")
return result
. تعریف عامل (SQL_AGENT)
self.sql_agent = Agent(
role="Especialista em SQL",
goal="Gerar consultas SQL precisas e otimizadas para diferentes bancos de dados.",
backstory=(
"Você é um renomado especialista em SQL, com conhecimento avançado em diversas bases de dados, incluindo Postgres, MySQL e SQL Server. "
"Sua missão é interpretar descrições textuais e transformá-las em consultas SQL eficientes, sempre considerando a estrutura do banco de dados."
),
tools=[self.schema_tool],
verbose=True,
memory=True,
llm=self.llm
)
-
یک عامل هوش مصنوعی به نام ایجاد می کند SQL_AGENT، که نقش متخصص در SQLبشر
-
عامل هدف روشنی دارد: برای ایجاد مشاوره SQL دقیق و بهینه شده
-
داستان او تقویت می کند که او دانش پیشرفته ای در آن دارد SQL و باید توضیحات متنی را به رقص کارآمد تبدیل کند.
-
عامل می تواند از ابزارها استفاده کند (ابزار) ، کجا self.schema_tool این ابزاری برای خواندن طرح پایگاه داده است (یال).
-
مدل زبان (LLM) انتخاب شده به گونه ای منتقل می شود که عامل هنگام تولید پاسخ ها از آن استفاده می کند.
گزینه ها:
- Verbose = درست است: باعث می شود عامل ارائه دهد سیاهه ها مفصل از اقدامات آنها
- حافظه = درست است: به نماینده اجازه می دهد تا اطلاعات بین اعدام ها را حفظ کند.
ب. تعریف کار (کار)
self.task = Task(
description=(
r"""A partir do meu gerenciador {database_type},
no banco de dados '{database_name}',
e do esquema fornecido no arquivo
YAML localizado em {yaml_path},
gere uma consulta SQL otimizada para
atender ao seguinte pedido:
{user_request}.
Certifique-se de usar as tabelas e colunas
corretas conforme a estrutura do YAML.
O valor inserido em `json_output` é {json_output}.
IMPORTANTE:
- **Formato de Retorno:**
Se `json_output` for **True**, a consulta deve retornar os dados em formato JSON,
usando as funções apropriadas para cada banco de dados:
- **Postgres:** `row_to_json()` ou `json_agg()`
- **MySQL:** `JSON_OBJECT()` ou `JSON_ARRAYAGG()`
- **SQL Server:** `FOR JSON AUTO`
- **Oracle:** `JSON_OBJECT()`
Caso contrário, a consulta deve ser otimizada para um **retorno tabular tradicional**.
- **Otimização:**
- Sempre utilize **índices disponíveis** para melhorar a performance.
- Se houver junções (`JOINs`), prefira **chaves indexadas** para evitar scans desnecessários.
- Ordene os resultados de maneira lógica se necessário (`ORDER BY`).
- **Considerações Específicas:**
- Evite selecionar colunas desnecessárias (`SELECT *` não é recomendado).
- Se a consulta precisar de filtros (`WHERE`), utilize os campos de indexação do banco de dados para maior eficiência.
- Para valores nulos, utilize funções adequadas como `COALESCE()` para garantir legibilidade no resultado.
"""
),
expected_output="Uma consulta SQL válida e otimizada para o banco de dados especificado.",
agent=self.sql_agent
)
وظیفه عامل را تعریف می کند (وظیفه) ، که برای ایجاد قرار ملاقات است SQL بهینه سازی شده بر اساس:
-
مدیر پایگاه داده (database_type، چگونه پس از یا mysql).
-
نام پایگاه داده (database_name).
-
پرونده یال حاوی طرح (yaml_path).
-
درخواست کاربر (user_request).
-
قالب خروج مورد انتظار (json_output).
دستورالعمل های مهم:
-
با json_output برای درست ، الف پرسش باید برگردد jsonبا استفاده از عملکرد مناسب برای پایگاه داده.
-
در غیر این صورت ، پرس و جو باید برای یک قالب جدولی سنتی بهینه شود.
نماینده باید از شیوه های خوب پیروی کند SQL:
-
از '* جلوگیری کنیدانتخاب **'.
-
برای بهبود عملکرد از فهرست ها استفاده کنید.
-
کلیدهای فهرست بندی شده را انتخاب کنید پیوستنبشر
-
فیلترهای کارآمد را با استفاده کنید کجابشر
-
برای استفاده همبستگی () برای مقابله با ارزشها تهیبشر
جریان کلی
-
شیء SQLquearyai آن را فوری می کند و یک مدل LLM (به عنوان GPT-4Oبا در اعماق یا اولاما) انتخاب شده است.
-
نماینده SQL_AGENT به عنوان یک متخصص در ایجاد شده است SQLبشر
یک کار تعریف شده است ، و به نماینده دستور می دهد تا مشاوره ایجاد کند SQL بهینه سازی شده
تیم (خدمه) تشکیل شده است ، از جمله عامل و وظیفه وی.
وقتی روش Kickoff (ورودی) نامیده می شود:
-
عامل پارامترها را دریافت می کند (database_typeبا database_nameبا yaml_pathبا user_requestبا json_output).
-
او طرح بانکی را در پرونده YAML می خواند.
-
ای LLM قرار ملاقات ایجاد می کند SQL به دنبال قوانین تعریف شده بهینه شده است.
-
نتیجه فرمت شده و به کاربر بازگردانده می شود.
3. نماینده مترجم کد ، که دستورات را به زبان طبیعی دریافت می کند و آنها را در سیستم عامل اجرا می کند
یک سیستم مبتنی بر کتابخانه را تعریف می کند کرجی، که در آن یک عامل تماس گرفت مهندس نرم افزار می توانید دستورات خط فرمان را اجرا کنید (کلوچه) به طور خودکار ، با استفاده از مترجم باز برای تفسیر و اجرای این دستورات.
from crewai import Agent, Task, Crew, Process, LLM
from cli_tool import CLITool
class Command:
def __init__(self):
self.llm = LLM(model="openai/gpt-4o-mini", )
self.cli = CLITool()
self.create_crew()
def create_crew(self):
"""Agent Software Engineer."""
self.software_engineer = Agent(
role="Software Engineer",
goal="Always use Executor Tool. Ability to perform CLI operations, write programs and execute using Exector Tool",
backstory='Expert in command line operations, creating and executing code.',
tools=[self.cli.execute_cli_command],
llm=self.llm,
verbose=True
)
self.software_engineer_task = Task(
description="Execute the command {command} using the Executor Tool.",
expected_output="The expected output of the executed CLI command.",
agent=self.software_engineer,
tools=[self.cli.execute_cli_command],
verbose=True
)
self.crew = Crew(
agents=[self.software_engineer],
tasks=[ self.software_engineer_task],
process=Process.sequential,
manager_llm=self.llm,
verbose=True
)
def kickoff(self, inputs):
result = self.crew.kickoff(inputs=inputs)
return result
ابزار CLI:
from crewai.tools import tool
from interpreter import interpreter
class CLITool:
interpreter.auto_run = True
interpreter.llm.model = "openai/gpt-4o-mini"
@tool("executor")
def execute_cli_command(command:str):
"""Create an Execute code using Open Interpreter."""
result = interpreter.chat(command)
return result
جریان:
. ایجاد عامل (نرم افزار_ مهندس)
ب. ایجاد کار (Software_engineer_task)
w. ایجاد تیم (خدمه)
-
گروه و وظیفه را گروه بندی کنید.
-
تضمین می کند که دستورات یک بار (یک فرآیند. پس از آن) اجرا می شوند.
-
از GPT-4O-Mini برای مدیریت اجرای استفاده می کند.
🛠 چگونه این کد در عمل کار می کند؟
مثال اجرای:
cmd = Command()
result = cmd.kickoff({"command": "ls -l"})
print(result)
-
نماینده دستور “LS -L” را دریافت می کند.
-
او از ابزار اجرای ابزار برای اجرای دستور استفاده می کند.
-
نتیجه اجرای (لیست پرونده ها) بازگردانده می شود.
آینده عامل AIS
گرایش این است که عامل به طور فزاینده ای پیچیده شود ، ترکیب IA مولد ، یادگیری تقویت کننده و تعامل چند حالته (متن ، صدا و تصویر) باشد. این عوامل تأثیر بسزایی در اتوماسیون و تجربه کاربر خواهند داشت.
از خدمات مشتری گرفته تا مدیریت تجارت و امنیت دیجیتال.
کد کامل: عامل AI
منابع
معماری برای هوشمند سازگار
سیستم
Docs Crewai
پردازش زبان طبیعی
کتاب هوش مصنوعی – یک رویکرد یادگیری ماشین
معلم و محقق Sandeco – IFG و UFG