الوحدة 10 — مشروع: فريق تحرير وثائقيّ
نجمع في هذه الوحدة كلّ ما تعلّمناه في مشروع كامل: تسليم وثيقة منتَج من عشر صفحات، جاهزة للمراجعة البشريّة والنشر. سنقيس الجودة، ونقارن ثلاثة حلول (فريقنا، وكيل واحد، كاتب بشريّ)، ونستخلص متى تستحقّ المقاربة التوظيف الفعليّ.
المدخلات والمخرَج المطلوب
المدخلات: ملفّ Markdown من 40 صفحة يصف مواصفات منتَج SaaS جديد (نظام إدارة مشاريع). يحوي: قائمة وظائف، فئات مستخدمين، متطلّبات وظيفيّة، قيود تقنيّة.
المخرَج: وثيقة عرض للمنتَج من ~10 صفحات (~5 000 كلمة)، بأسلوب رسميّ، تُقدَّم للعملاء المحتملين. تشمل: وصف موجز، الوظائف الرئيسيّة، حالات استخدام، مقار نة مع منافسَين، أسعار، أسئلة متكرّرة.
البنية الكاملة للفريق
from crewai import Agent, Task, Crew, Process
from crewai_tools import FileReadTool, SerperDevTool
from langchain_openai import ChatOpenAI
llm_lourd = ChatOpenAI(model="gpt-4o", temperature=0.2)
llm_ecrit = ChatOpenAI(model="gpt-4o", temperature=0.4)
llm_leger = ChatOpenAI(model="gpt-4o-mini", temperature=0)
analyste = Agent(
role="محلّل مواصفات منتَج",
goal="استخراج الوظائف والفئات وحالات الاستخدام من المواصفات",
backstory="مهندس منتَج بخبرة عشر سنوات في تحليل SaaS",
llm=llm_lourd,
tools=[FileReadTool(file_path="./specs.md")],
max_iter=6,
allow_delegation=False,
verbose=True,
)
redacteur = Agent(
role="محرّر عرض منتَج",
goal="كتابة وثيقة عشر صفحات بأسلوب رسميّ للعملاء",
backstory="محرّر توثيقات لواجهات برمجيّة عامّة منذ 2015",
llm=llm_ecrit,
tools=[SerperDevTool()],
max_iter=8,
allow_delegation=False,
)
relecteur = Agent(
role="مراجِع تقنيّ ولغويّ",
goal="التحقّق من الاتّساق والدقّة، وإصدار قائمة تصحيحات مُرقَّمة",
backstory="مراجِع لغويّ لفرق توثيق منذ سبع سنوات",
llm=llm_lourd,
tools=[FileReadTool(file_path="./guide-style.md")],
max_iter=5,
allow_delegation=False,
)
responsable = Agent(
role="مسؤول التحرير",
goal="إصدار قرار نهائيّ ونشر الوثيقة إن كانت جاهزة",
backstory="مدير توثيق يوازن آراء الفريق ويقرّر التسليم",
llm=llm_leger,
max_iter=6,
allow_delegation=True,
)