mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-07-06 07:29:24 +00:00
feat: adopt directory-based docs versioning with Edge channel
Switch docs.crewai.com from navigation-only versioning (every version selector entry rendered the same docs/<lang>/* source files) to Mintlify's directory-based versioning so each version selector entry renders its own snapshot. Add an "Edge" channel under docs/edge/<lang>/* that always reflects main HEAD for unreleased work, eliminating pre-release leakage onto frozen release labels. External links to canonical /<lang>/* URLs are preserved via wildcard redirects that always land on the current default version. Layout: - docs/edge/<lang>/* rolling source (you edit here) - docs/edge/enterprise-api.*.yaml - docs/v<X.Y.Z>/<lang>/* frozen, immutable snapshots - docs/v<X.Y.Z>/enterprise-api.*.yaml - docs/images/ shared, append-only - docs/docs.json nav + redirects URLs follow the Mintlify-idiomatic shape: /edge/<lang>/<page> for Edge, /v<X.Y.Z>/<lang>/<page> for every frozen snapshot. The wildcard redirects /<lang>/:slug* -> /<default>/<lang>/:slug* keep stale links working, and every freeze rewrites them (plus all per-section/per-page redirects) so destinations always resolve to the current default without depending on a second redirect hop. Release flow integration (devtools release): - New module crewai_devtools.docs_versioning.freeze() materialises docs/v<X.Y.Z>/ from docs/edge/, rewrites openapi: refs inside the snapshot, inserts the version into every language block in docs.json, and refreshes all redirect destinations. - _update_docs_and_create_pr() in cli.py now calls that freeze during Phase 2 of devtools release. Edge changelogs are updated first (so the snapshot freeze picks them up), then the snapshot is staged alongside docs.json, branched as docs/freeze-v<X.Y.Z>, and the PR is titled [docs-freeze] docs: snapshot and changelog for v<X.Y.Z> — the title prefix the new CI guard reads. - The PR still gates tag, GitHub release, PyPI publish, and the enterprise release as before; no new PRs are added. - Pre-releases (1.X.YaN, 1.X.YbN, ...) skip the snapshot — they ride Edge — and the docs PR title omits the [docs-freeze] prefix. - docs_check (AI-generated docs scaffolding) writes to docs/edge/<lang>/* so newly-generated unreleased docs land in Edge and never accidentally touch a frozen snapshot. Migration scripts (one-shot): - scripts/docs/freeze_historical_versions.py reconstructs all 16 historical snapshots (v1.10.0 .. v1.14.7) from git tags via git archive | tar, rewriting openapi: MDX refs so each snapshot reads its own enterprise-api YAML rather than the live one. - scripts/docs/prefix_version_paths.py one-shot-migrates docs.json: rewrites every page path in 16 versioned blocks to point under docs/v<X.Y.Z>/, inserts a new Edge entry per language, tags v1.14.7 as Latest (default), prunes pages whose target file doesn't exist in the snapshot (e.g. docs/ar/ didn't exist before v1.12.0), and writes the wildcard + per-section redirects. - scripts/docs/freeze_current_edge.py is now a thin CLI wrapper around docs_versioning.freeze for manual one-off freezes (e.g. retroactively snapshotting a forgotten release). CI guards (.github/workflows/docs-snapshots.yml): - Frozen snapshots under docs/v[0-9]*/ are immutable; only PRs whose title contains [docs-freeze] (i.e. release-cut PRs generated by devtools release or the manual wrapper) may modify them. - Images under docs/images/ are append-only since snapshots share a single image directory. Deleting or renaming an image breaks every historical snapshot that still references it. Restored docs/images/crewai-otel-export.png from PR #3673; it was deleted in PR #4908 but v1.10.0 / v1.10.1 snapshots still reference it. Restoring instead of editing the snapshots preserves historical rendering fidelity and validates the new append-only rule retroactively. Tests: - lib/devtools/tests/test_docs_versioning.py covers the freeze: file copy, openapi rewrite, version insertion, default demotion, redirect upserts, per-section redirect rewriting, idempotency, and invalid inputs. Verified locally with mintlify broken-links: 0 broken links across the full site (Edge + 16 frozen versions, 4 locales). AGENTS.md (repo root) is the contributor guide for the new model; RELEASING.md is the release-cut runbook; README's Contribution section links to both. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
150
docs/edge/ar/observability/arize-phoenix.mdx
Normal file
150
docs/edge/ar/observability/arize-phoenix.mdx
Normal file
@@ -0,0 +1,150 @@
|
||||
---
|
||||
title: Arize Phoenix
|
||||
description: تكامل Arize Phoenix مع CrewAI باستخدام OpenTelemetry و OpenInference
|
||||
icon: magnifying-glass-chart
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# تكامل Arize Phoenix
|
||||
|
||||
يوضح هذا الدليل كيفية دمج **Arize Phoenix** مع **CrewAI** باستخدام OpenTelemetry عبر حزمة [OpenInference](https://github.com/openinference/openinference) SDK. بنهاية هذا الدليل، ستتمكن من تتبع وكلاء CrewAI وتصحيح أخطاء وكلائك بسهولة.
|
||||
|
||||
> **ما هو Arize Phoenix؟** [Arize Phoenix](https://phoenix.arize.com) هو منصة مراقبة LLM توفر التتبع والتقييم لتطبيقات الذكاء الاصطناعي.
|
||||
|
||||
[](https://www.youtube.com/watch?v=Yc5q3l6F7Ww)
|
||||
|
||||
## البدء
|
||||
|
||||
سنمر عبر مثال بسيط لاستخدام CrewAI ودمجه مع Arize Phoenix عبر OpenTelemetry باستخدام OpenInference.
|
||||
|
||||
يمكنك أيضاً الوصول إلى هذا الدليل على [Google Colab](https://colab.research.google.com/github/Arize-ai/phoenix/blob/main/tutorials/tracing/crewai_tracing_tutorial.ipynb).
|
||||
|
||||
### الخطوة 1: تثبيت الاعتماديات
|
||||
|
||||
```bash
|
||||
pip install openinference-instrumentation-crewai crewai crewai-tools arize-phoenix-otel
|
||||
```
|
||||
|
||||
### الخطوة 2: إعداد متغيرات البيئة
|
||||
|
||||
قم بإعداد مفاتيح API لـ Phoenix Cloud وإعداد OpenTelemetry لإرسال التتبعات إلى Phoenix. Phoenix Cloud هو إصدار مستضاف من Arize Phoenix، لكنه ليس مطلوباً لاستخدام هذا التكامل.
|
||||
|
||||
يمكنك الحصول على مفتاح Serper API المجاني [هنا](https://serper.dev/).
|
||||
|
||||
```python
|
||||
import os
|
||||
from getpass import getpass
|
||||
|
||||
# Get your Phoenix Cloud credentials
|
||||
PHOENIX_API_KEY = getpass("🔑 Enter your Phoenix Cloud API Key: ")
|
||||
|
||||
# Get API keys for services
|
||||
OPENAI_API_KEY = getpass("🔑 Enter your OpenAI API key: ")
|
||||
SERPER_API_KEY = getpass("🔑 Enter your Serper API key: ")
|
||||
|
||||
# Set environment variables
|
||||
os.environ["PHOENIX_CLIENT_HEADERS"] = f"api_key={PHOENIX_API_KEY}"
|
||||
os.environ["PHOENIX_COLLECTOR_ENDPOINT"] = "https://app.phoenix.arize.com" # Phoenix Cloud, change this to your own endpoint if you are using a self-hosted instance
|
||||
os.environ["OPENAI_API_KEY"] = OPENAI_API_KEY
|
||||
os.environ["SERPER_API_KEY"] = SERPER_API_KEY
|
||||
```
|
||||
|
||||
### الخطوة 3: تهيئة OpenTelemetry مع Phoenix
|
||||
|
||||
قم بتهيئة OpenInference OpenTelemetry instrumentation SDK لبدء التقاط التتبعات وإرسالها إلى Phoenix.
|
||||
|
||||
```python
|
||||
from phoenix.otel import register
|
||||
|
||||
tracer_provider = register(
|
||||
project_name="crewai-tracing-demo",
|
||||
auto_instrument=True,
|
||||
)
|
||||
```
|
||||
|
||||
### الخطوة 4: إنشاء تطبيق CrewAI
|
||||
|
||||
سننشئ تطبيق CrewAI حيث يتعاون وكيلان للبحث وكتابة مقال مدونة حول تطورات الذكاء الاصطناعي.
|
||||
|
||||
```python
|
||||
from crewai import Agent, Crew, Process, Task
|
||||
from crewai_tools import SerperDevTool
|
||||
from openinference.instrumentation.crewai import CrewAIInstrumentor
|
||||
from phoenix.otel import register
|
||||
|
||||
# setup monitoring for your crew
|
||||
tracer_provider = register(
|
||||
endpoint="http://localhost:6006/v1/traces")
|
||||
CrewAIInstrumentor().instrument(skip_dep_check=True, tracer_provider=tracer_provider)
|
||||
search_tool = SerperDevTool()
|
||||
|
||||
# Define your agents with roles and goals
|
||||
researcher = Agent(
|
||||
role="Senior Research Analyst",
|
||||
goal="Uncover cutting-edge developments in AI and data science",
|
||||
backstory="""You work at a leading tech think tank.
|
||||
Your expertise lies in identifying emerging trends.
|
||||
You have a knack for dissecting complex data and presenting actionable insights.""",
|
||||
verbose=True,
|
||||
allow_delegation=False,
|
||||
tools=[search_tool],
|
||||
)
|
||||
writer = Agent(
|
||||
role="Tech Content Strategist",
|
||||
goal="Craft compelling content on tech advancements",
|
||||
backstory="""You are a renowned Content Strategist, known for your insightful and engaging articles.
|
||||
You transform complex concepts into compelling narratives.""",
|
||||
verbose=True,
|
||||
allow_delegation=True,
|
||||
)
|
||||
|
||||
# Create tasks for your agents
|
||||
task1 = Task(
|
||||
description="""Conduct a comprehensive analysis of the latest advancements in AI in 2024.
|
||||
Identify key trends, breakthrough technologies, and potential industry impacts.""",
|
||||
expected_output="Full analysis report in bullet points",
|
||||
agent=researcher,
|
||||
)
|
||||
|
||||
task2 = Task(
|
||||
description="""Using the insights provided, develop an engaging blog
|
||||
post that highlights the most significant AI advancements.
|
||||
Your post should be informative yet accessible, catering to a tech-savvy audience.
|
||||
Make it sound cool, avoid complex words so it doesn't sound like AI.""",
|
||||
expected_output="Full blog post of at least 4 paragraphs",
|
||||
agent=writer,
|
||||
)
|
||||
|
||||
# Instantiate your crew with a sequential process
|
||||
crew = Crew(
|
||||
agents=[researcher, writer], tasks=[task1, task2], verbose=1, process=Process.sequential
|
||||
)
|
||||
|
||||
# Get your crew to work!
|
||||
result = crew.kickoff()
|
||||
|
||||
print("######################")
|
||||
print(result)
|
||||
```
|
||||
|
||||
### الخطوة 5: عرض التتبعات في Phoenix
|
||||
|
||||
بعد تشغيل الوكيل، يمكنك عرض التتبعات المولدة من تطبيق CrewAI في Phoenix. سترى خطوات مفصلة لتفاعلات الوكلاء واستدعاءات LLM، مما يساعدك في التصحيح والتحسين.
|
||||
|
||||
سجل الدخول إلى حساب Phoenix Cloud الخاص بك وانتقل إلى المشروع الذي حددته في معامل `project_name`. سترى عرض زمني للتتبع مع جميع تفاعلات الوكلاء واستخدامات الأدوات واستدعاءات LLM.
|
||||
|
||||

|
||||
|
||||
|
||||
### معلومات التوافق
|
||||
- Python 3.8+
|
||||
- CrewAI >= 0.86.0
|
||||
- Arize Phoenix >= 7.0.1
|
||||
- OpenTelemetry SDK >= 1.31.0
|
||||
|
||||
|
||||
### المراجع
|
||||
- [وثائق Phoenix](https://docs.arize.com/phoenix/) - نظرة عامة على منصة Phoenix.
|
||||
- [وثائق CrewAI](https://docs.crewai.com/) - نظرة عامة على إطار عمل CrewAI.
|
||||
- [وثائق OpenTelemetry](https://opentelemetry.io/docs/) - دليل OpenTelemetry
|
||||
- [OpenInference GitHub](https://github.com/openinference/openinference) - الكود المصدري لـ OpenInference SDK.
|
||||
232
docs/edge/ar/observability/braintrust.mdx
Normal file
232
docs/edge/ar/observability/braintrust.mdx
Normal file
@@ -0,0 +1,232 @@
|
||||
---
|
||||
title: Braintrust
|
||||
description: تكامل Braintrust مع CrewAI باستخدام تتبع وتقييم OpenTelemetry
|
||||
icon: magnifying-glass-chart
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# تكامل Braintrust
|
||||
|
||||
يوضح هذا الدليل كيفية دمج **Braintrust** مع **CrewAI** باستخدام OpenTelemetry للتتبع والتقييم الشامل. بنهاية هذا الدليل، ستتمكن من تتبع وكلاء CrewAI ومراقبة أدائهم وتقييم مخرجاتهم باستخدام منصة المراقبة القوية من Braintrust.
|
||||
|
||||
> **ما هو Braintrust؟** [Braintrust](https://www.braintrust.dev) هو منصة تقييم ومراقبة للذكاء الاصطناعي توفر تتبعاً شاملاً وتقييماً ومراقبة لتطبيقات الذكاء الاصطناعي مع تتبع تجارب مدمج وتحليلات أداء.
|
||||
|
||||
## البدء
|
||||
|
||||
سنمر عبر مثال بسيط لاستخدام CrewAI ودمجه مع Braintrust عبر OpenTelemetry للمراقبة والتقييم الشامل.
|
||||
|
||||
### الخطوة 1: تثبيت الاعتماديات
|
||||
|
||||
```bash
|
||||
uv add braintrust[otel] crewai crewai-tools opentelemetry-instrumentation-openai opentelemetry-instrumentation-crewai python-dotenv
|
||||
```
|
||||
|
||||
### الخطوة 2: إعداد متغيرات البيئة
|
||||
|
||||
قم بإعداد مفاتيح API لـ Braintrust وإعداد OpenTelemetry لإرسال التتبعات إلى Braintrust. ستحتاج إلى مفتاح API من Braintrust ومفتاح API من OpenAI.
|
||||
|
||||
```python
|
||||
import os
|
||||
from getpass import getpass
|
||||
|
||||
# Get your Braintrust credentials
|
||||
BRAINTRUST_API_KEY = getpass("🔑 Enter your Braintrust API Key: ")
|
||||
|
||||
# Get API keys for services
|
||||
OPENAI_API_KEY = getpass("🔑 Enter your OpenAI API key: ")
|
||||
|
||||
# Set environment variables
|
||||
os.environ["BRAINTRUST_API_KEY"] = BRAINTRUST_API_KEY
|
||||
os.environ["BRAINTRUST_PARENT"] = "project_name:crewai-demo"
|
||||
os.environ["OPENAI_API_KEY"] = OPENAI_API_KEY
|
||||
```
|
||||
|
||||
### الخطوة 3: تهيئة OpenTelemetry مع Braintrust
|
||||
|
||||
قم بتهيئة أداة Braintrust OpenTelemetry لبدء التقاط التتبعات وإرسالها إلى Braintrust.
|
||||
|
||||
```python
|
||||
import os
|
||||
from typing import Any, Dict
|
||||
|
||||
from braintrust.otel import BraintrustSpanProcessor
|
||||
from crewai import Agent, Crew, Task
|
||||
from crewai.llm import LLM
|
||||
from opentelemetry import trace
|
||||
from opentelemetry.instrumentation.crewai import CrewAIInstrumentor
|
||||
from opentelemetry.instrumentation.openai import OpenAIInstrumentor
|
||||
from opentelemetry.sdk.trace import TracerProvider
|
||||
|
||||
def setup_tracing() -> None:
|
||||
"""Setup OpenTelemetry tracing with Braintrust."""
|
||||
current_provider = trace.get_tracer_provider()
|
||||
if isinstance(current_provider, TracerProvider):
|
||||
provider = current_provider
|
||||
else:
|
||||
provider = TracerProvider()
|
||||
trace.set_tracer_provider(provider)
|
||||
|
||||
provider.add_span_processor(BraintrustSpanProcessor())
|
||||
CrewAIInstrumentor().instrument(tracer_provider=provider)
|
||||
OpenAIInstrumentor().instrument(tracer_provider=provider)
|
||||
|
||||
|
||||
setup_tracing()
|
||||
```
|
||||
|
||||
### الخطوة 4: إنشاء تطبيق CrewAI
|
||||
|
||||
سننشئ تطبيق CrewAI حيث يتعاون وكيلان للبحث وكتابة مقال مدونة حول تطورات الذكاء الاصطناعي، مع تفعيل التتبع الشامل.
|
||||
|
||||
```python
|
||||
from crewai import Agent, Crew, Process, Task
|
||||
from crewai_tools import SerperDevTool
|
||||
|
||||
def create_crew() -> Crew:
|
||||
"""Create a crew with multiple agents for comprehensive tracing."""
|
||||
llm = LLM(model="gpt-4o-mini")
|
||||
search_tool = SerperDevTool()
|
||||
|
||||
researcher = Agent(
|
||||
role="Senior Research Analyst",
|
||||
goal="Uncover cutting-edge developments in AI and data science",
|
||||
backstory="""You work at a leading tech think tank.
|
||||
Your expertise lies in identifying emerging trends.
|
||||
You have a knack for dissecting complex data and presenting actionable insights.""",
|
||||
verbose=True,
|
||||
allow_delegation=False,
|
||||
llm=llm,
|
||||
tools=[search_tool],
|
||||
)
|
||||
|
||||
writer = Agent(
|
||||
role="Tech Content Strategist",
|
||||
goal="Craft compelling content on tech advancements",
|
||||
backstory="""You are a renowned Content Strategist, known for your insightful and engaging articles.
|
||||
You transform complex concepts into compelling narratives.""",
|
||||
verbose=True,
|
||||
allow_delegation=True,
|
||||
llm=llm,
|
||||
)
|
||||
|
||||
research_task = Task(
|
||||
description="""Conduct a comprehensive analysis of the latest advancements in {topic}.
|
||||
Identify key trends, breakthrough technologies, and potential industry impacts.""",
|
||||
expected_output="Full analysis report in bullet points",
|
||||
agent=researcher,
|
||||
)
|
||||
|
||||
writing_task = Task(
|
||||
description="""Using the insights provided, develop an engaging blog
|
||||
post that highlights the most significant {topic} advancements.
|
||||
Your post should be informative yet accessible, catering to a tech-savvy audience.
|
||||
Make it sound cool, avoid complex words so it doesn't sound like AI.""",
|
||||
expected_output="Full blog post of at least 4 paragraphs",
|
||||
agent=writer,
|
||||
context=[research_task],
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[researcher, writer],
|
||||
tasks=[research_task, writing_task],
|
||||
verbose=True,
|
||||
process=Process.sequential
|
||||
)
|
||||
|
||||
return crew
|
||||
|
||||
def run_crew():
|
||||
"""Run the crew and return results."""
|
||||
crew = create_crew()
|
||||
result = crew.kickoff(inputs={"topic": "AI developments"})
|
||||
return result
|
||||
|
||||
if __name__ == "__main__":
|
||||
result = run_crew()
|
||||
print(result)
|
||||
```
|
||||
|
||||
### الخطوة 5: عرض التتبعات في Braintrust
|
||||
|
||||
بعد تشغيل طاقمك، يمكنك عرض تتبعات شاملة في Braintrust من خلال وجهات نظر مختلفة:
|
||||
|
||||
<Tabs>
|
||||
<Tab title="التتبع">
|
||||
<Frame>
|
||||
<img src="/images/braintrust-trace-view.png" alt="عرض تتبع Braintrust"/>
|
||||
</Frame>
|
||||
</Tab>
|
||||
|
||||
<Tab title="الجدول الزمني">
|
||||
<Frame>
|
||||
<img src="/images/braintrust-timeline-view.png" alt="عرض الجدول الزمني Braintrust"/>
|
||||
</Frame>
|
||||
</Tab>
|
||||
|
||||
<Tab title="المحادثة">
|
||||
<Frame>
|
||||
<img src="/images/braintrust-thread-view.png" alt="عرض المحادثة Braintrust"/>
|
||||
</Frame>
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
### الخطوة 6: التقييم عبر SDK (التجارب)
|
||||
|
||||
يمكنك أيضاً تشغيل التقييمات باستخدام Braintrust Eval SDK. هذا مفيد لمقارنة الإصدارات أو تسجيل المخرجات. فيما يلي مثال Python باستخدام فئة `Eval`:
|
||||
|
||||
```python
|
||||
# eval_crew.py
|
||||
from braintrust import Eval
|
||||
from autoevals import Levenshtein
|
||||
|
||||
def evaluate_crew_task(input_data):
|
||||
"""Task function that wraps our crew for evaluation."""
|
||||
crew = create_crew()
|
||||
result = crew.kickoff(inputs={"topic": input_data["topic"]})
|
||||
return str(result)
|
||||
|
||||
Eval(
|
||||
"AI Research Crew",
|
||||
{
|
||||
"data": lambda: [
|
||||
{"topic": "artificial intelligence trends 2024"},
|
||||
{"topic": "machine learning breakthroughs"},
|
||||
{"topic": "AI ethics and governance"},
|
||||
],
|
||||
"task": evaluate_crew_task,
|
||||
"scores": [Levenshtein],
|
||||
},
|
||||
)
|
||||
```
|
||||
|
||||
قم بإعداد مفتاح API الخاص بك وشغّل:
|
||||
|
||||
```bash
|
||||
export BRAINTRUST_API_KEY="YOUR_API_KEY"
|
||||
braintrust eval eval_crew.py
|
||||
```
|
||||
|
||||
راجع [دليل Braintrust Eval SDK](https://www.braintrust.dev/docs/start/eval-sdk) لمزيد من التفاصيل.
|
||||
|
||||
### الميزات الرئيسية لتكامل Braintrust
|
||||
|
||||
- **تتبع شامل**: تتبع جميع تفاعلات الوكلاء واستخدام الأدوات واستدعاءات LLM
|
||||
- **مراقبة الأداء**: مراقبة أوقات التنفيذ واستخدام الرموز ومعدلات النجاح
|
||||
- **تتبع التجارب**: مقارنة إعدادات الطاقم والنماذج المختلفة
|
||||
- **التقييم الآلي**: إعداد مقاييس تقييم مخصصة لمخرجات الطاقم
|
||||
- **تتبع الأخطاء**: مراقبة وتصحيح حالات الفشل عبر عمليات تنفيذ الطاقم
|
||||
- **تحليل التكاليف**: تتبع استخدام الرموز والتكاليف المرتبطة
|
||||
|
||||
### معلومات التوافق
|
||||
- Python 3.8+
|
||||
- CrewAI >= 0.86.0
|
||||
- Braintrust >= 0.1.0
|
||||
- OpenTelemetry SDK >= 1.31.0
|
||||
|
||||
### المراجع
|
||||
- [وثائق Braintrust](https://www.braintrust.dev/docs) - نظرة عامة على منصة Braintrust
|
||||
- [تكامل Braintrust CrewAI](https://www.braintrust.dev/docs/integrations/crew-ai) - دليل التكامل الرسمي مع CrewAI
|
||||
- [Braintrust Eval SDK](https://www.braintrust.dev/docs/start/eval-sdk) - تشغيل التجارب عبر SDK
|
||||
- [وثائق CrewAI](https://docs.crewai.com/) - نظرة عامة على إطار عمل CrewAI
|
||||
- [وثائق OpenTelemetry](https://opentelemetry.io/docs/) - دليل OpenTelemetry
|
||||
- [Braintrust GitHub](https://github.com/braintrustdata/braintrust) - الكود المصدري لـ Braintrust SDK
|
||||
109
docs/edge/ar/observability/datadog.mdx
Normal file
109
docs/edge/ar/observability/datadog.mdx
Normal file
@@ -0,0 +1,109 @@
|
||||
---
|
||||
title: تكامل Datadog
|
||||
description: تعلم كيفية دمج Datadog مع CrewAI لإرسال تتبعات مراقبة LLM إلى Datadog.
|
||||
icon: dog
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# دمج Datadog مع CrewAI
|
||||
|
||||
سيوضح هذا الدليل كيفية دمج **[Datadog LLM Observability](https://docs.datadoghq.com/llm_observability/)** مع **CrewAI** باستخدام [أداة Datadog للتجهيز التلقائي](https://docs.datadoghq.com/llm_observability/instrumentation/auto_instrumentation?tab=python). بنهاية هذا الدليل، ستتمكن من إرسال تتبعات مراقبة LLM إلى Datadog وعرض تشغيلات وكلاء CrewAI في [عرض التنفيذ الوكيلي](https://docs.datadoghq.com/llm_observability/monitoring/agent_monitoring) من Datadog LLM Observability.
|
||||
|
||||
## ما هو Datadog LLM Observability؟
|
||||
|
||||
[Datadog LLM Observability](https://www.datadoghq.com/product/llm-observability/) يساعد مهندسي الذكاء الاصطناعي وعلماء البيانات ومطوري التطبيقات على تطوير وتقييم ومراقبة تطبيقات LLM بسرعة. حسّن جودة المخرجات والأداء والتكاليف والمخاطر الإجمالية بثقة مع تجارب منظمة وتتبع شامل عبر وكلاء الذكاء الاصطناعي والتقييمات.
|
||||
|
||||
## البدء
|
||||
|
||||
### تثبيت الاعتماديات
|
||||
|
||||
```shell
|
||||
pip install ddtrace crewai crewai-tools
|
||||
```
|
||||
|
||||
### تعيين متغيرات البيئة
|
||||
|
||||
إذا لم يكن لديك مفتاح API من Datadog، يمكنك [إنشاء حساب](https://www.datadoghq.com/) و[الحصول على مفتاح API](https://docs.datadoghq.com/account_management/api-app-keys/#api-keys).
|
||||
|
||||
ستحتاج أيضاً إلى تحديد اسم تطبيق ML في متغيرات البيئة التالية. تطبيق ML هو تجميع لتتبعات LLM Observability المرتبطة بتطبيق محدد قائم على LLM.
|
||||
|
||||
```shell
|
||||
export DD_API_KEY=<YOUR_DD_API_KEY>
|
||||
export DD_SITE=<YOUR_DD_SITE>
|
||||
export DD_LLMOBS_ENABLED=true
|
||||
export DD_LLMOBS_ML_APP=<YOUR_ML_APP_NAME>
|
||||
export DD_LLMOBS_AGENTLESS_ENABLED=true
|
||||
export DD_APM_TRACING_ENABLED=false
|
||||
```
|
||||
|
||||
بالإضافة إلى ذلك، قم بإعداد مفاتيح API لمزودي LLM
|
||||
|
||||
```shell
|
||||
export OPENAI_API_KEY=<YOUR_OPENAI_API_KEY>
|
||||
export ANTHROPIC_API_KEY=<YOUR_ANTHROPIC_API_KEY>
|
||||
export GEMINI_API_KEY=<YOUR_GEMINI_API_KEY>
|
||||
...
|
||||
```
|
||||
|
||||
### إنشاء تطبيق وكيل CrewAI
|
||||
|
||||
```python
|
||||
# crewai_agent.py
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
from crewai_tools import (
|
||||
WebsiteSearchTool
|
||||
)
|
||||
|
||||
web_rag_tool = WebsiteSearchTool()
|
||||
|
||||
writer = Agent(
|
||||
role="Writer",
|
||||
goal="You make math engaging and understandable for young children through poetry",
|
||||
backstory="You're an expert in writing haikus but you know nothing of math.",
|
||||
tools=[web_rag_tool],
|
||||
)
|
||||
|
||||
task = Task(
|
||||
description=("What is {multiplication}?"),
|
||||
expected_output=("Compose a haiku that includes the answer."),
|
||||
agent=writer
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[writer],
|
||||
tasks=[task],
|
||||
share_crew=False
|
||||
)
|
||||
|
||||
output = crew.kickoff(dict(multiplication="2 * 2"))
|
||||
```
|
||||
|
||||
### تشغيل التطبيق مع التجهيز التلقائي من Datadog
|
||||
|
||||
مع تعيين [متغيرات البيئة](#تعيين-متغيرات-البيئة)، يمكنك الآن تشغيل التطبيق مع التجهيز التلقائي من Datadog.
|
||||
|
||||
```shell
|
||||
ddtrace-run python crewai_agent.py
|
||||
```
|
||||
|
||||
### عرض التتبعات في Datadog
|
||||
|
||||
بعد تشغيل التطبيق، يمكنك عرض التتبعات في [عرض تتبعات Datadog LLM Observability](https://app.datadoghq.com/llm/traces)، باختيار اسم تطبيق ML الذي اخترته من القائمة المنسدلة أعلى اليسار.
|
||||
|
||||
النقر على تتبع سيعرض لك تفاصيل التتبع، بما في ذلك إجمالي الرموز المستخدمة وعدد استدعاءات LLM والنماذج المستخدمة والتكلفة المقدرة.
|
||||
|
||||
<Frame>
|
||||
<img src="/images/datadog-llm-observability-1.png" alt="عرض تتبع Datadog LLM Observability" />
|
||||
</Frame>
|
||||
|
||||
بالإضافة إلى ذلك، يمكنك عرض رسم بياني لتنفيذ التتبع، الذي يوضح تدفق التحكم والبيانات للتتبع.
|
||||
|
||||
<Frame>
|
||||
<img src="/images/datadog-llm-observability-2.png" alt="عرض تدفق تنفيذ وكيل Datadog LLM Observability" />
|
||||
</Frame>
|
||||
|
||||
## المراجع
|
||||
|
||||
- [Datadog LLM Observability](https://www.datadoghq.com/product/llm-observability/)
|
||||
- [التجهيز التلقائي لـ CrewAI من Datadog LLM Observability](https://docs.datadoghq.com/llm_observability/instrumentation/auto_instrumentation?tab=python#crew-ai)
|
||||
86
docs/edge/ar/observability/galileo.mdx
Normal file
86
docs/edge/ar/observability/galileo.mdx
Normal file
@@ -0,0 +1,86 @@
|
||||
---
|
||||
title: Galileo
|
||||
description: تكامل Galileo مع CrewAI للتتبع والتقييم
|
||||
icon: telescope
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## نظرة عامة
|
||||
|
||||
يوضح هذا الدليل كيفية دمج **Galileo** مع **CrewAI** للتتبع الشامل وهندسة التقييم. بنهاية هذا الدليل، ستتمكن من تتبع وكلاء CrewAI ومراقبة أدائهم وتقييم سلوكهم باستخدام منصة المراقبة القوية من Galileo.
|
||||
|
||||
> **ما هو Galileo؟** [Galileo](https://galileo.ai) هو منصة تقييم ومراقبة للذكاء الاصطناعي توفر تتبعاً شاملاً وتقييماً ومراقبة لتطبيقات الذكاء الاصطناعي. تمكّن الفرق من التقاط البيانات الحقيقية وإنشاء حواجز قوية وتشغيل تجارب منهجية مع تتبع تجارب مدمج وتحليلات أداء.
|
||||
|
||||
## البدء
|
||||
|
||||
يتبع هذا البرنامج التعليمي [البدء السريع مع CrewAI](/ar/quickstart) ويوضح كيفية إضافة [CrewAIEventListener](https://v2docs.galileo.ai/sdk-api/python/reference/handlers/crewai/handler) من Galileo كمعالج أحداث.
|
||||
|
||||
> **ملاحظة** يفترض هذا البرنامج التعليمي أنك أكملت [البدء السريع مع CrewAI](/ar/quickstart).
|
||||
|
||||
### الخطوة 1: تثبيت الاعتماديات
|
||||
|
||||
ثبّت الاعتماديات المطلوبة لتطبيقك:
|
||||
|
||||
```bash
|
||||
uv add galileo
|
||||
```
|
||||
|
||||
### الخطوة 2: أضف إلى ملف .env من [البدء السريع مع CrewAI](/ar/quickstart)
|
||||
|
||||
```bash
|
||||
# Your Galileo API key
|
||||
GALILEO_API_KEY="your-galileo-api-key"
|
||||
|
||||
# Your Galileo project name
|
||||
GALILEO_PROJECT="your-galileo-project-name"
|
||||
|
||||
# The name of the Log stream you want to use for logging
|
||||
GALILEO_LOG_STREAM="your-galileo-log-stream "
|
||||
```
|
||||
|
||||
### الخطوة 3: إضافة مستمع أحداث Galileo
|
||||
|
||||
لتفعيل التسجيل مع Galileo، تحتاج إلى إنشاء مثيل من `CrewAIEventListener`. استورد حزمة معالج CrewAI من Galileo بإضافة الكود التالي في أعلى ملف main.py:
|
||||
|
||||
```python
|
||||
from galileo.handlers.crewai.handler import CrewAIEventListener
|
||||
```
|
||||
|
||||
في بداية دالة التشغيل، أنشئ مستمع الأحداث:
|
||||
|
||||
```python
|
||||
def run():
|
||||
# Create the event listener
|
||||
CrewAIEventListener()
|
||||
# The rest of your existing code goes here
|
||||
```
|
||||
|
||||
عند إنشاء مثيل المستمع، يتم تسجيله تلقائياً مع CrewAI.
|
||||
|
||||
### الخطوة 4: شغّل طاقمك
|
||||
|
||||
شغّل طاقمك باستخدام CrewAI CLI:
|
||||
|
||||
```bash
|
||||
crewai run
|
||||
```
|
||||
|
||||
### الخطوة 5: عرض التتبعات في Galileo
|
||||
|
||||
بمجرد انتهاء طاقمك، سيتم تفريغ التتبعات وستظهر في Galileo.
|
||||
|
||||

|
||||
|
||||
## فهم تكامل Galileo
|
||||
|
||||
يتكامل Galileo مع CrewAI عن طريق تسجيل مستمع أحداث يلتقط أحداث تنفيذ الطاقم (مثل إجراءات الوكلاء واستدعاءات الأدوات واستجابات النماذج) ويعيد توجيهها إلى Galileo للمراقبة والتقييم.
|
||||
|
||||
### فهم مستمع الأحداث
|
||||
|
||||
إنشاء مثيل `CrewAIEventListener()` هو كل ما يلزم لتفعيل Galileo لتشغيل CrewAI. عند الإنشاء، يقوم المستمع بـ:
|
||||
|
||||
- التسجيل تلقائياً مع CrewAI
|
||||
- قراءة إعدادات Galileo من متغيرات البيئة
|
||||
- تسجيل جميع بيانات التشغيل في مشروع Galileo وتدفق السجل المحدد بواسطة `GALILEO_PROJECT` و `GALILEO_LOG_STREAM`
|
||||
|
||||
لا يلزم أي إعداد إضافي أو تغييرات في الكود.
|
||||
167
docs/edge/ar/observability/langdb.mdx
Normal file
167
docs/edge/ar/observability/langdb.mdx
Normal file
@@ -0,0 +1,167 @@
|
||||
---
|
||||
title: تكامل LangDB
|
||||
description: إدارة وتأمين وتحسين سير عمل CrewAI مع بوابة LangDB AI — الوصول إلى أكثر من 350 نموذجاً وتوجيه تلقائي وتحسين التكاليف ومراقبة كاملة.
|
||||
icon: database
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# مقدمة
|
||||
|
||||
توفر [بوابة LangDB AI](https://langdb.ai) واجهات API متوافقة مع OpenAI للاتصال بنماذج لغة كبيرة متعددة وتعمل كمنصة مراقبة تجعل تتبع سير عمل CrewAI شاملاً وسهلاً مع توفير الوصول إلى أكثر من 350 نموذج لغة. مع استدعاء `init()` واحد، يتم التقاط جميع تفاعلات الوكلاء وتنفيذ المهام واستدعاءات LLM، مما يوفر مراقبة شاملة وبنية تحتية جاهزة للإنتاج لتطبيقاتك.
|
||||
|
||||
<Frame caption="مثال تتبع LangDB CrewAI">
|
||||
<img src="/images/langdb-1.png" alt="مثال تتبع LangDB CrewAI" />
|
||||
</Frame>
|
||||
|
||||
**تحقق من:** [عرض مثال التتبع المباشر](https://app.langdb.ai/sharing/threads/3becbfed-a1be-ae84-ea3c-4942867a3e22)
|
||||
|
||||
## الميزات
|
||||
|
||||
### قدرات بوابة AI
|
||||
- **الوصول إلى أكثر من 350 LLM**: الاتصال بجميع نماذج اللغة الرئيسية من خلال تكامل واحد
|
||||
- **النماذج الافتراضية**: إنشاء إعدادات نماذج مخصصة مع معاملات وقواعد توجيه محددة
|
||||
- **MCP الافتراضي**: تفعيل التوافق والتكامل مع أنظمة MCP لتعزيز اتصال الوكلاء
|
||||
- **حواجز الحماية**: تنفيذ تدابير السلامة وضوابط الامتثال لسلوك الوكلاء
|
||||
|
||||
### المراقبة والتتبع
|
||||
- **تتبع تلقائي**: استدعاء `init()` واحد يلتقط جميع تفاعلات CrewAI
|
||||
- **رؤية شاملة**: مراقبة سير عمل الوكلاء من البداية إلى النهاية
|
||||
- **تتبع استخدام الأدوات**: تتبع الأدوات التي يستخدمها الوكلاء ونتائجها
|
||||
- **مراقبة استدعاءات النماذج**: رؤى مفصلة لتفاعلات LLM
|
||||
- **تحليلات الأداء**: مراقبة زمن الاستجابة واستخدام الرموز والتكاليف
|
||||
- **دعم التصحيح**: تنفيذ خطوة بخطوة لاستكشاف الأخطاء
|
||||
- **المراقبة في الوقت الفعلي**: لوحة معلومات التتبعات والمقاييس الحية
|
||||
|
||||
## تعليمات الإعداد
|
||||
|
||||
<Steps>
|
||||
<Step title="تثبيت LangDB">
|
||||
ثبّت عميل LangDB مع علامة ميزة CrewAI:
|
||||
```bash
|
||||
pip install 'pylangdb[crewai]'
|
||||
```
|
||||
</Step>
|
||||
<Step title="تعيين متغيرات البيئة">
|
||||
قم بإعداد بيانات اعتماد LangDB:
|
||||
```bash
|
||||
export LANGDB_API_KEY="<your_langdb_api_key>"
|
||||
export LANGDB_PROJECT_ID="<your_langdb_project_id>"
|
||||
export LANGDB_API_BASE_URL='https://api.us-east-1.langdb.ai'
|
||||
```
|
||||
</Step>
|
||||
<Step title="تهيئة التتبع">
|
||||
استورد وهيّئ LangDB قبل إعداد كود CrewAI:
|
||||
```python
|
||||
from pylangdb.crewai import init
|
||||
# Initialize LangDB
|
||||
init()
|
||||
```
|
||||
</Step>
|
||||
<Step title="إعداد CrewAI مع LangDB">
|
||||
قم بإعداد LLM مع رؤوس LangDB:
|
||||
```python
|
||||
from crewai import Agent, Task, Crew, LLM
|
||||
import os
|
||||
|
||||
# Configure LLM with LangDB headers
|
||||
llm = LLM(
|
||||
model="openai/gpt-4o",
|
||||
api_key=os.getenv("LANGDB_API_KEY"),
|
||||
base_url=os.getenv("LANGDB_API_BASE_URL"),
|
||||
extra_headers={"x-project-id": os.getenv("LANGDB_PROJECT_ID")}
|
||||
)
|
||||
```
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## مثال سريع للبدء
|
||||
|
||||
```python
|
||||
import os
|
||||
from pylangdb.crewai import init
|
||||
from crewai import Agent, Task, Crew, LLM
|
||||
|
||||
init()
|
||||
|
||||
def create_llm(model):
|
||||
return LLM(
|
||||
model=model,
|
||||
api_key=os.environ.get("LANGDB_API_KEY"),
|
||||
base_url=os.environ.get("LANGDB_API_BASE_URL"),
|
||||
extra_headers={"x-project-id": os.environ.get("LANGDB_PROJECT_ID")}
|
||||
)
|
||||
|
||||
researcher = Agent(
|
||||
role="Research Specialist",
|
||||
goal="Research topics thoroughly",
|
||||
backstory="Expert researcher with skills in finding information",
|
||||
llm=create_llm("openai/gpt-4o"),
|
||||
verbose=True
|
||||
)
|
||||
|
||||
task = Task(
|
||||
description="Research the given topic and provide a comprehensive summary",
|
||||
agent=researcher,
|
||||
expected_output="Detailed research summary with key findings"
|
||||
)
|
||||
|
||||
crew = Crew(agents=[researcher], tasks=[task])
|
||||
result = crew.kickoff()
|
||||
print(result)
|
||||
```
|
||||
|
||||
## عرض التتبعات في LangDB
|
||||
|
||||
بعد تشغيل تطبيق CrewAI، يمكنك عرض تتبعات مفصلة في لوحة معلومات LangDB:
|
||||
|
||||
<Frame caption="لوحة معلومات تتبع LangDB">
|
||||
<img src="/images/langdb-2.png" alt="لوحة معلومات تتبع LangDB تعرض سير عمل CrewAI" />
|
||||
</Frame>
|
||||
|
||||
### ما ستراه
|
||||
|
||||
- **تفاعلات الوكلاء**: التدفق الكامل لمحادثات الوكلاء وتسليم المهام
|
||||
- **استخدام الأدوات**: الأدوات التي تم استدعاؤها ومدخلاتها ومخرجاتها
|
||||
- **استدعاءات النماذج**: تفاعلات LLM المفصلة مع المطالبات والاستجابات
|
||||
- **مقاييس الأداء**: تتبع زمن الاستجابة واستخدام الرموز والتكاليف
|
||||
- **الجدول الزمني للتنفيذ**: عرض خطوة بخطوة لسير العمل بالكامل
|
||||
|
||||
## استكشاف الأخطاء وإصلاحها
|
||||
|
||||
### المشاكل الشائعة
|
||||
|
||||
- **عدم ظهور تتبعات**: تأكد من استدعاء `init()` قبل أي استيرادات CrewAI
|
||||
- **أخطاء المصادقة**: تحقق من مفتاح API ومعرف المشروع في LangDB
|
||||
|
||||
## الموارد
|
||||
|
||||
<CardGroup cols={3}>
|
||||
<Card title="وثائق LangDB" icon="book" href="https://docs.langdb.ai">
|
||||
الوثائق والأدلة الرسمية لـ LangDB
|
||||
</Card>
|
||||
<Card title="أدلة LangDB" icon="graduation-cap" href="https://docs.langdb.ai/guides">
|
||||
برامج تعليمية خطوة بخطوة لبناء وكلاء AI
|
||||
</Card>
|
||||
<Card title="أمثلة GitHub" icon="github" href="https://github.com/langdb/langdb-samples/tree/main/examples/crewai">
|
||||
أمثلة تكامل CrewAI الكاملة
|
||||
</Card>
|
||||
<Card title="لوحة معلومات LangDB" icon="chart-line" href="https://app.langdb.ai">
|
||||
الوصول إلى تتبعاتك وتحليلاتك
|
||||
</Card>
|
||||
<Card title="كتالوج النماذج" icon="list" href="https://app.langdb.ai/models">
|
||||
تصفح أكثر من 350 نموذج لغة متاح
|
||||
</Card>
|
||||
<Card title="ميزات المؤسسات" icon="building" href="https://docs.langdb.ai/enterprise">
|
||||
خيارات الاستضافة الذاتية وقدرات المؤسسات
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
## الخطوات التالية
|
||||
|
||||
غطى هذا الدليل أساسيات دمج بوابة LangDB AI مع CrewAI. لتعزيز سير عمل الذكاء الاصطناعي بشكل أكبر، استكشف:
|
||||
|
||||
- **النماذج الافتراضية**: إنشاء إعدادات نماذج مخصصة مع استراتيجيات توجيه
|
||||
- **حواجز الحماية والسلامة**: تنفيذ تصفية المحتوى وضوابط الامتثال
|
||||
- **النشر في الإنتاج**: إعداد خطط احتياطية وإعادة المحاولة وتوازن الأحمال
|
||||
|
||||
لمزيد من الميزات المتقدمة وحالات الاستخدام، زُر [وثائق LangDB](https://docs.langdb.ai) أو استكشف [كتالوج النماذج](https://app.langdb.ai/models) لاكتشاف جميع النماذج المتاحة.
|
||||
109
docs/edge/ar/observability/langfuse.mdx
Normal file
109
docs/edge/ar/observability/langfuse.mdx
Normal file
@@ -0,0 +1,109 @@
|
||||
---
|
||||
title: تكامل Langfuse
|
||||
description: تعلم كيفية دمج Langfuse مع CrewAI عبر OpenTelemetry باستخدام OpenLit
|
||||
icon: vials
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# دمج Langfuse مع CrewAI
|
||||
|
||||
يوضح هذا الدفتر كيفية دمج **Langfuse** مع **CrewAI** باستخدام OpenTelemetry عبر حزمة **OpenLit** SDK. بنهاية هذا الدفتر، ستتمكن من تتبع تطبيقات CrewAI مع Langfuse لتحسين المراقبة والتصحيح.
|
||||
|
||||
> **ما هو Langfuse؟** [Langfuse](https://langfuse.com) هو منصة هندسة LLM مفتوحة المصدر. توفر قدرات التتبع والمراقبة لتطبيقات LLM، مما يساعد المطورين على التصحيح والتحليل والتحسين. يتكامل Langfuse مع أدوات وأطر عمل متنوعة عبر تكاملات أصلية وOpenTelemetry وواجهات API/SDKs.
|
||||
|
||||
[](https://langfuse.com/watch-demo)
|
||||
|
||||
## البدء
|
||||
|
||||
سنمر عبر مثال بسيط لاستخدام CrewAI ودمجه مع Langfuse عبر OpenTelemetry باستخدام OpenLit.
|
||||
|
||||
### الخطوة 1: تثبيت الاعتماديات
|
||||
|
||||
```python
|
||||
%pip install langfuse openlit crewai crewai_tools
|
||||
```
|
||||
|
||||
### الخطوة 2: إعداد متغيرات البيئة
|
||||
|
||||
عيّن مفاتيح API لـ Langfuse وإعدادات تصدير OpenTelemetry لإرسال التتبعات إلى Langfuse. يرجى الرجوع إلى [وثائق Langfuse OpenTelemetry](https://langfuse.com/docs/opentelemetry/get-started) لمزيد من المعلومات.
|
||||
|
||||
```python
|
||||
import os
|
||||
|
||||
# Get keys for your project from the project settings page: https://cloud.langfuse.com
|
||||
os.environ["LANGFUSE_PUBLIC_KEY"] = "pk-lf-..."
|
||||
os.environ["LANGFUSE_SECRET_KEY"] = "sk-lf-..."
|
||||
os.environ["LANGFUSE_HOST"] = "https://cloud.langfuse.com" # 🇪🇺 EU region
|
||||
# os.environ["LANGFUSE_HOST"] = "https://us.cloud.langfuse.com" # 🇺🇸 US region
|
||||
|
||||
|
||||
# Your OpenAI key
|
||||
os.environ["OPENAI_API_KEY"] = "sk-proj-..."
|
||||
```
|
||||
|
||||
مع تعيين متغيرات البيئة، يمكننا الآن تهيئة عميل Langfuse. تهيئ `get_client()` عميل Langfuse باستخدام بيانات الاعتماد المقدمة في متغيرات البيئة.
|
||||
|
||||
```python
|
||||
from langfuse import get_client
|
||||
|
||||
langfuse = get_client()
|
||||
|
||||
# Verify connection
|
||||
if langfuse.auth_check():
|
||||
print("Langfuse client is authenticated and ready!")
|
||||
else:
|
||||
print("Authentication failed. Please check your credentials and host.")
|
||||
```
|
||||
|
||||
### الخطوة 3: تهيئة OpenLit
|
||||
|
||||
قم بتهيئة OpenLit OpenTelemetry instrumentation SDK لبدء التقاط تتبعات OpenTelemetry.
|
||||
|
||||
```python
|
||||
import openlit
|
||||
|
||||
openlit.init()
|
||||
```
|
||||
|
||||
### الخطوة 4: إنشاء تطبيق CrewAI بسيط
|
||||
|
||||
سننشئ تطبيق CrewAI بسيط حيث يتعاون عدة وكلاء للإجابة على سؤال المستخدم.
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew
|
||||
|
||||
from crewai_tools import (
|
||||
WebsiteSearchTool
|
||||
)
|
||||
|
||||
web_rag_tool = WebsiteSearchTool()
|
||||
|
||||
writer = Agent(
|
||||
role="Writer",
|
||||
goal="You make math engaging and understandable for young children through poetry",
|
||||
backstory="You're an expert in writing haikus but you know nothing of math.",
|
||||
tools=[web_rag_tool],
|
||||
)
|
||||
|
||||
task = Task(description=("What is {multiplication}?"),
|
||||
expected_output=("Compose a haiku that includes the answer."),
|
||||
agent=writer)
|
||||
|
||||
crew = Crew(
|
||||
agents=[writer],
|
||||
tasks=[task],
|
||||
share_crew=False
|
||||
)
|
||||
```
|
||||
|
||||
### الخطوة 5: عرض التتبعات في Langfuse
|
||||
|
||||
بعد تشغيل الوكيل، يمكنك عرض التتبعات المولدة من تطبيق CrewAI في [Langfuse](https://cloud.langfuse.com). سترى خطوات مفصلة لتفاعلات LLM، مما يساعدك في التصحيح والتحسين.
|
||||
|
||||

|
||||
|
||||
_[مثال تتبع عام في Langfuse](https://cloud.langfuse.com/project/cloramnkj0002jz088vzn1ja4/traces/e2cf380ffc8d47d28da98f136140642b?timestamp=2025-02-05T15%3A12%3A02.717Z&observation=3b32338ee6a5d9af)_
|
||||
|
||||
## المراجع
|
||||
|
||||
- [وثائق Langfuse OpenTelemetry](https://langfuse.com/docs/opentelemetry/get-started)
|
||||
73
docs/edge/ar/observability/langtrace.mdx
Normal file
73
docs/edge/ar/observability/langtrace.mdx
Normal file
@@ -0,0 +1,73 @@
|
||||
---
|
||||
title: تكامل Langtrace
|
||||
description: كيفية مراقبة التكلفة وزمن الاستجابة وأداء وكلاء CrewAI باستخدام Langtrace، أداة مراقبة خارجية.
|
||||
icon: chart-line
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# نظرة عامة على Langtrace
|
||||
|
||||
Langtrace هو أداة مفتوحة المصدر خارجية تساعدك في إعداد المراقبة والتقييمات لنماذج اللغة الكبيرة (LLMs) وأطر عمل LLM وقواعد بيانات المتجهات.
|
||||
على الرغم من أنها ليست مبنية مباشرة في CrewAI، يمكن استخدام Langtrace جنباً إلى جنب مع CrewAI للحصول على رؤية عميقة في التكلفة وزمن الاستجابة وأداء وكلاء CrewAI.
|
||||
يتيح لك هذا التكامل تسجيل المعاملات الفائقة ومراقبة تراجعات الأداء وإنشاء عملية للتحسين المستمر لوكلائك.
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
## تعليمات الإعداد
|
||||
|
||||
<Steps>
|
||||
<Step title="التسجيل في Langtrace">
|
||||
سجّل بزيارة [https://langtrace.ai/signup](https://langtrace.ai/signup).
|
||||
</Step>
|
||||
<Step title="إنشاء مشروع">
|
||||
عيّن نوع المشروع إلى `CrewAI` وقم بتوليد مفتاح API.
|
||||
</Step>
|
||||
<Step title="تثبيت Langtrace في مشروع CrewAI">
|
||||
استخدم الأمر التالي:
|
||||
|
||||
```bash
|
||||
pip install langtrace-python-sdk
|
||||
```
|
||||
</Step>
|
||||
<Step title="استيراد Langtrace">
|
||||
استورد وهيّئ Langtrace في بداية نصك البرمجي، قبل أي استيرادات CrewAI:
|
||||
|
||||
```python
|
||||
from langtrace_python_sdk import langtrace
|
||||
langtrace.init(api_key='<LANGTRACE_API_KEY>')
|
||||
|
||||
# Now import CrewAI modules
|
||||
from crewai import Agent, Task, Crew
|
||||
```
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
### الميزات وتطبيقاتها على CrewAI
|
||||
|
||||
1. **تتبع رموز LLM والتكاليف**
|
||||
|
||||
- مراقبة استخدام الرموز والتكاليف المرتبطة لكل تفاعل وكيل CrewAI.
|
||||
|
||||
2. **رسم بياني للتتبع لخطوات التنفيذ**
|
||||
|
||||
- تصور تدفق تنفيذ مهام CrewAI، بما في ذلك زمن الاستجابة والسجلات.
|
||||
- مفيد لتحديد الاختناقات في سير عمل الوكلاء.
|
||||
|
||||
3. **تنظيم مجموعات البيانات مع التعليق اليدوي**
|
||||
|
||||
- إنشاء مجموعات بيانات من مخرجات مهام CrewAI للتدريب أو التقييم المستقبلي.
|
||||
|
||||
4. **إدارة إصدارات المطالبات**
|
||||
|
||||
- تتبع الإصدارات المختلفة من المطالبات المستخدمة في وكلاء CrewAI.
|
||||
- مفيد لاختبار A/B وتحسين أداء الوكلاء.
|
||||
|
||||
5. **ساحة المطالبات مع مقارنات النماذج**
|
||||
|
||||
- اختبار ومقارنة مطالبات ونماذج مختلفة لوكلاء CrewAI قبل النشر.
|
||||
|
||||
6. **الاختبارات والتقييمات**
|
||||
|
||||
- إعداد اختبارات آلية لوكلاء ومهام CrewAI.
|
||||
221
docs/edge/ar/observability/maxim.mdx
Normal file
221
docs/edge/ar/observability/maxim.mdx
Normal file
@@ -0,0 +1,221 @@
|
||||
---
|
||||
title: "تكامل Maxim"
|
||||
description: "بدء مراقبة وتقييم ومراقبة الوكلاء"
|
||||
icon: "infinity"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# نظرة عامة على Maxim
|
||||
|
||||
يوفر Maxim AI مراقبة شاملة للوكلاء وتقييماً ومراقبة لتطبيقات CrewAI. مع تكامل Maxim بسطر واحد، يمكنك بسهولة تتبع وتحليل تفاعلات الوكلاء ومقاييس الأداء والمزيد.
|
||||
|
||||
## الميزات
|
||||
|
||||
### إدارة المطالبات
|
||||
|
||||
تمكّنك قدرات إدارة المطالبات في Maxim من إنشاء وتنظيم وتحسين المطالبات لوكلاء CrewAI. بدلاً من ترميز التعليمات مباشرة، استفد من SDK الخاص بـ Maxim لاسترداد وتطبيق مطالبات مُدارة بالإصدارات ديناميكياً.
|
||||
|
||||
<Tabs>
|
||||
<Tab title="ساحة المطالبات">
|
||||
أنشئ وصقل وجرّب وانشر مطالباتك عبر الساحة. نظّم مطالباتك باستخدام المجلدات والإصدارات، وجرّب مع حالات العالم الحقيقي عن طريق ربط الأدوات والسياق، وانشر بناءً على منطق مخصص.
|
||||
|
||||
<img src='https://raw.githubusercontent.com/akmadan/crewAI/docs_maxim_observability/docs/images/maxim_playground.png'> </img>
|
||||
</Tab>
|
||||
<Tab title="إصدارات المطالبات">
|
||||
مع بناء الفرق لتطبيقات الذكاء الاصطناعي، يُعد جزء كبير من التجريب هو التكرار على هيكل المطالبات. للتعاون بفعالية وتنظيم التغييرات بوضوح، يسمح Maxim بإصدارات المطالبات ومقارنة التشغيلات عبر الإصدارات.
|
||||
|
||||
<img src='https://raw.githubusercontent.com/akmadan/crewAI/docs_maxim_observability/docs/images/maxim_versions.png'> </img>
|
||||
</Tab>
|
||||
<Tab title="مقارنة المطالبات">
|
||||
التكرار على المطالبات أثناء تطوير تطبيق الذكاء الاصطناعي يحتاج تجارب عبر النماذج وهياكل المطالبات وغيرها. لمقارنة الإصدارات واتخاذ قرارات مستنيرة، تسمح ساحة المقارنة بعرض جنب إلى جنب للنتائج.
|
||||
|
||||
## **لماذا تستخدم مقارنة المطالبات؟**
|
||||
|
||||
تجمع مقارنة المطالبات عدة مطالبات فردية في عرض واحد، مما يمكّن من نهج مبسط لسير عمل متنوع:
|
||||
|
||||
1. **مقارنة النماذج**: تقييم أداء نماذج مختلفة على نفس المطالبة.
|
||||
2. **تحسين المطالبات**: مقارنة إصدارات مختلفة لتحديد الصياغة الأكثر فعالية.
|
||||
3. **اتساق عبر النماذج**: ضمان مخرجات متسقة عبر نماذج مختلفة لنفس المطالبة.
|
||||
4. **قياس الأداء**: تحليل مقاييس مثل زمن الاستجابة والتكلفة وعدد الرموز عبر نماذج ومطالبات مختلفة.
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
### المراقبة والتقييمات
|
||||
|
||||
يوفر Maxim AI مراقبة وتقييماً شاملاً لوكلاء CrewAI، مما يساعدك في فهم ما يحدث بالضبط أثناء كل تنفيذ.
|
||||
|
||||
<Tabs>
|
||||
<Tab title="تتبع الوكلاء">
|
||||
تتبع دورة حياة وكيلك الكاملة، بما في ذلك استدعاءات الأدوات ومسارات الوكلاء وتدفقات القرار بسهولة.
|
||||
|
||||
<img src='https://raw.githubusercontent.com/akmadan/crewAI/docs_maxim_observability/docs/images/maxim_agent_tracking.png'> </img>
|
||||
</Tab>
|
||||
<Tab title="التحليلات + التقييمات">
|
||||
شغّل تقييمات مفصلة على التتبعات الكاملة أو العقد الفردية مع دعم لـ:
|
||||
|
||||
- التفاعلات متعددة الخطوات وتحليل التتبع الدقيق
|
||||
- تقييمات على مستوى الجلسة
|
||||
- محاكاة لاختبار العالم الحقيقي
|
||||
|
||||
<img src='https://raw.githubusercontent.com/akmadan/crewAI/docs_maxim_observability/docs/images/maxim_trace_eval.png'> </img>
|
||||
|
||||
<CardGroup cols={3}>
|
||||
<Card title="تقييمات تلقائية على السجلات" icon="e" href="https://www.getmaxim.ai/docs/observe/how-to/evaluate-logs/auto-evaluation">
|
||||
<p>
|
||||
تقييم السجلات الملتقطة تلقائياً من واجهة المستخدم بناءً على المرشحات والعينات
|
||||
</p>
|
||||
</Card>
|
||||
<Card title="تقييمات بشرية على السجلات" icon="hand" href="https://www.getmaxim.ai/docs/observe/how-to/evaluate-logs/human-evaluation">
|
||||
<p>
|
||||
استخدام التقييم البشري أو التصنيف لتقييم جودة سجلاتك
|
||||
</p>
|
||||
</Card>
|
||||
<Card title="تقييمات على مستوى العقد" icon="road" href="https://www.getmaxim.ai/docs/observe/how-to/evaluate-logs/node-level-evaluation">
|
||||
<p>
|
||||
تقييم أي مكون من تتبعك أو سجلك للحصول على رؤى حول سلوك وكيلك
|
||||
</p>
|
||||
</Card>
|
||||
</CardGroup>
|
||||
---
|
||||
</Tab>
|
||||
<Tab title="التنبيهات">
|
||||
عيّن حدوداً على **الأخطاء والتكلفة واستخدام الرموز وتغذية المستخدم الراجعة وزمن الاستجابة** واحصل على تنبيهات فورية عبر Slack أو PagerDuty.
|
||||
|
||||
<img src='https://raw.githubusercontent.com/akmadan/crewAI/docs_maxim_observability/docs/images/maxim_alerts_1.png'> </img>
|
||||
</Tab>
|
||||
<Tab title="لوحات المعلومات">
|
||||
تصور التتبعات عبر الزمن ومقاييس الاستخدام وزمن الاستجابة ومعدلات الأخطاء بسهولة.
|
||||
|
||||
<img src='https://raw.githubusercontent.com/akmadan/crewAI/docs_maxim_observability/docs/images/maxim_dashboard_1.png'> </img>
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## البدء
|
||||
|
||||
### المتطلبات الأساسية
|
||||
|
||||
- إصدار Python >= 3.10
|
||||
- حساب Maxim ([سجّل هنا](https://getmaxim.ai/))
|
||||
- توليد مفتاح API من Maxim
|
||||
- مشروع CrewAI
|
||||
|
||||
### التثبيت
|
||||
|
||||
ثبّت Maxim SDK عبر pip:
|
||||
|
||||
```python
|
||||
pip install maxim-py
|
||||
```
|
||||
|
||||
أو أضفه إلى ملف `requirements.txt`:
|
||||
|
||||
```
|
||||
maxim-py
|
||||
```
|
||||
|
||||
### الإعداد الأساسي
|
||||
|
||||
### 1. إعداد متغيرات البيئة
|
||||
|
||||
```python
|
||||
### Environment Variables Setup
|
||||
|
||||
# Create a `.env` file in your project root:
|
||||
|
||||
# Maxim API Configuration
|
||||
MAXIM_API_KEY=your_api_key_here
|
||||
MAXIM_LOG_REPO_ID=your_repo_id_here
|
||||
```
|
||||
|
||||
### 2. استيراد الحزم المطلوبة
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew, Process
|
||||
from maxim import Maxim
|
||||
from maxim.logger.crewai import instrument_crewai
|
||||
```
|
||||
|
||||
### 3. تهيئة Maxim بمفتاح API
|
||||
|
||||
```python {8}
|
||||
# Instrument CrewAI with just one line
|
||||
instrument_crewai(Maxim().logger())
|
||||
```
|
||||
|
||||
### 4. إنشاء وتشغيل تطبيق CrewAI كالمعتاد
|
||||
|
||||
```python
|
||||
# Create your agent
|
||||
researcher = Agent(
|
||||
role='Senior Research Analyst',
|
||||
goal='Uncover cutting-edge developments in AI',
|
||||
backstory="You are an expert researcher at a tech think tank...",
|
||||
verbose=True,
|
||||
llm=llm
|
||||
)
|
||||
|
||||
# Define the task
|
||||
research_task = Task(
|
||||
description="Research the latest AI advancements...",
|
||||
expected_output="",
|
||||
agent=researcher
|
||||
)
|
||||
|
||||
# Configure and run the crew
|
||||
crew = Crew(
|
||||
agents=[researcher],
|
||||
tasks=[research_task],
|
||||
verbose=True
|
||||
)
|
||||
|
||||
try:
|
||||
result = crew.kickoff()
|
||||
finally:
|
||||
maxim.cleanup() # Ensure cleanup happens even if errors occur
|
||||
```
|
||||
|
||||
هذا كل شيء! سيتم الآن تسجيل جميع تفاعلات وكلاء CrewAI وستكون متاحة في لوحة معلومات Maxim.
|
||||
|
||||
تحقق من دفتر Google Colab هذا كمرجع سريع - [الدفتر](https://colab.research.google.com/drive/1ZKIZWsmgQQ46n8TH9zLsT1negKkJA6K8?usp=sharing)
|
||||
|
||||
## عرض تتبعاتك
|
||||
|
||||
بعد تشغيل تطبيق CrewAI:
|
||||
|
||||
1. سجل الدخول إلى [لوحة معلومات Maxim](https://app.getmaxim.ai/login)
|
||||
2. انتقل إلى مستودعك
|
||||
3. اعرض تتبعات الوكلاء المفصلة، بما في ذلك:
|
||||
- محادثات الوكلاء
|
||||
- أنماط استخدام الأدوات
|
||||
- مقاييس الأداء
|
||||
- تحليلات التكاليف
|
||||
|
||||
<img src='https://raw.githubusercontent.com/akmadan/crewAI/docs_maxim_observability/docs/images/crewai_traces.gif'> </img>
|
||||
|
||||
## استكشاف الأخطاء وإصلاحها
|
||||
|
||||
### المشاكل الشائعة
|
||||
|
||||
- **عدم ظهور تتبعات**: تأكد من صحة مفتاح API ومعرف المستودع
|
||||
- تأكد من استدعاء **`instrument_crewai()`** **_قبل_** تشغيل طاقمك
|
||||
- عيّن `debug=True` في استدعاء `instrument_crewai()` لإظهار أي أخطاء داخلية:
|
||||
|
||||
```python
|
||||
instrument_crewai(logger, debug=True)
|
||||
```
|
||||
- أعدّ وكلاءك مع `verbose=True` لالتقاط سجلات مفصلة
|
||||
- تحقق مرة أخرى من أن `instrument_crewai()` يُستدعى **قبل** إنشاء أو تنفيذ الوكلاء
|
||||
|
||||
## الموارد
|
||||
|
||||
<CardGroup cols="3">
|
||||
<Card title="وثائق CrewAI" icon="book" href="https://docs.crewai.com/">
|
||||
وثائق CrewAI الرسمية
|
||||
</Card>
|
||||
<Card title="وثائق Maxim" icon="book" href="https://getmaxim.ai/docs">
|
||||
وثائق Maxim الرسمية
|
||||
</Card>
|
||||
<Card title="Maxim Github" icon="github" href="https://github.com/maximhq">
|
||||
Maxim Github
|
||||
</Card>
|
||||
</CardGroup>
|
||||
206
docs/edge/ar/observability/mlflow.mdx
Normal file
206
docs/edge/ar/observability/mlflow.mdx
Normal file
@@ -0,0 +1,206 @@
|
||||
---
|
||||
title: تكامل MLflow
|
||||
description: ابدأ بسرعة في مراقبة وكلائك باستخدام MLflow.
|
||||
icon: bars-staggered
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# نظرة عامة على MLflow
|
||||
|
||||
[MLflow](https://mlflow.org/) هو منصة مفتوحة المصدر لمساعدة ممارسي تعلم الآلة والفرق في التعامل مع تعقيدات عملية تعلم الآلة.
|
||||
|
||||
يوفر ميزة التتبع التي تعزز قابلية مراقبة نماذج اللغة الكبيرة (LLM) في تطبيقات الذكاء الاصطناعي التوليدي الخاصة بك من خلال التقاط معلومات تفصيلية حول تنفيذ خدمات تطبيقك.
|
||||
يوفر التتبع طريقة لتسجيل المدخلات والمخرجات والبيانات الوصفية المرتبطة بكل خطوة وسيطة في الطلب، مما يتيح لك تحديد مصدر الأخطاء والسلوكيات غير المتوقعة بسهولة.
|
||||
|
||||

|
||||
|
||||
### الميزات
|
||||
|
||||
- **لوحة معلومات التتبع**: راقب أنشطة وكلاء crewAI الخاصين بك من خلال لوحات معلومات تفصيلية تتضمن المدخلات والمخرجات والبيانات الوصفية للنطاقات.
|
||||
- **التتبع الآلي**: تكامل مؤتمت بالكامل مع crewAI، يمكن تفعيله عبر تشغيل `mlflow.crewai.autolog()`.
|
||||
- **أدوات التتبع اليدوي بأقل مجهود**: خصّص أدوات التتبع من خلال واجهات برمجة التطبيقات عالية المستوى من MLflow مثل المزخرفات وأغلفة الدوال ومديري السياق.
|
||||
- **التوافق مع OpenTelemetry**: يدعم تتبع MLflow تصدير التتبعات إلى جامع OpenTelemetry، الذي يمكن استخدامه بعد ذلك لتصدير التتبعات إلى خلفيات متنوعة مثل Jaeger وZipkin وAWS X-Ray.
|
||||
- **تغليف ونشر الوكلاء**: قم بتغليف ونشر وكلاء crewAI الخاصين بك إلى خادم استدلال مع مجموعة متنوعة من أهداف النشر.
|
||||
- **استضافة آمنة لنماذج LLM**: استضف نماذج LLM متعددة من مزودين مختلفين في نقطة نهاية موحدة من خلال بوابة MLflow.
|
||||
- **التقييم**: قيّم وكلاء crewAI الخاصين بك باستخدام مجموعة واسعة من المقاييس عبر واجهة برمجة تطبيقات مريحة `mlflow.evaluate()`.
|
||||
|
||||
## تعليمات الإعداد
|
||||
|
||||
<Steps>
|
||||
<Step title="تثبيت حزمة MLflow">
|
||||
```shell
|
||||
# The crewAI integration is available in mlflow>=2.19.0
|
||||
pip install mlflow
|
||||
```
|
||||
</Step>
|
||||
<Step title="بدء خادم تتبع MLflow">
|
||||
```shell
|
||||
# This process is optional, but it is recommended to use MLflow tracking server for better visualization and broader features.
|
||||
mlflow server
|
||||
```
|
||||
</Step>
|
||||
<Step title="تهيئة MLflow في تطبيقك">
|
||||
أضف السطرين التاليين إلى كود تطبيقك:
|
||||
|
||||
```python
|
||||
import mlflow
|
||||
|
||||
mlflow.crewai.autolog()
|
||||
|
||||
# Optional: Set a tracking URI and an experiment name if you have a tracking server
|
||||
mlflow.set_tracking_uri("http://localhost:5000")
|
||||
mlflow.set_experiment("CrewAI")
|
||||
```
|
||||
|
||||
مثال على الاستخدام لتتبع وكلاء CrewAI:
|
||||
|
||||
```python
|
||||
from crewai import Agent, Crew, Task
|
||||
from crewai.knowledge.source.string_knowledge_source import StringKnowledgeSource
|
||||
from crewai_tools import SerperDevTool, WebsiteSearchTool
|
||||
|
||||
from textwrap import dedent
|
||||
|
||||
content = "Users name is John. He is 30 years old and lives in San Francisco."
|
||||
string_source = StringKnowledgeSource(
|
||||
content=content, metadata={"preference": "personal"}
|
||||
)
|
||||
|
||||
search_tool = WebsiteSearchTool()
|
||||
|
||||
|
||||
class TripAgents:
|
||||
def city_selection_agent(self):
|
||||
return Agent(
|
||||
role="City Selection Expert",
|
||||
goal="Select the best city based on weather, season, and prices",
|
||||
backstory="An expert in analyzing travel data to pick ideal destinations",
|
||||
tools=[
|
||||
search_tool,
|
||||
],
|
||||
verbose=True,
|
||||
)
|
||||
|
||||
def local_expert(self):
|
||||
return Agent(
|
||||
role="Local Expert at this city",
|
||||
goal="Provide the BEST insights about the selected city",
|
||||
backstory="""A knowledgeable local guide with extensive information
|
||||
about the city, it's attractions and customs""",
|
||||
tools=[search_tool],
|
||||
verbose=True,
|
||||
)
|
||||
|
||||
|
||||
class TripTasks:
|
||||
def identify_task(self, agent, origin, cities, interests, range):
|
||||
return Task(
|
||||
description=dedent(
|
||||
f"""
|
||||
Analyze and select the best city for the trip based
|
||||
on specific criteria such as weather patterns, seasonal
|
||||
events, and travel costs. This task involves comparing
|
||||
multiple cities, considering factors like current weather
|
||||
conditions, upcoming cultural or seasonal events, and
|
||||
overall travel expenses.
|
||||
Your final answer must be a detailed
|
||||
report on the chosen city, and everything you found out
|
||||
about it, including the actual flight costs, weather
|
||||
forecast and attractions.
|
||||
|
||||
Traveling from: {origin}
|
||||
City Options: {cities}
|
||||
Trip Date: {range}
|
||||
Traveler Interests: {interests}
|
||||
"""
|
||||
),
|
||||
agent=agent,
|
||||
expected_output="Detailed report on the chosen city including flight costs, weather forecast, and attractions",
|
||||
)
|
||||
|
||||
def gather_task(self, agent, origin, interests, range):
|
||||
return Task(
|
||||
description=dedent(
|
||||
f"""
|
||||
As a local expert on this city you must compile an
|
||||
in-depth guide for someone traveling there and wanting
|
||||
to have THE BEST trip ever!
|
||||
Gather information about key attractions, local customs,
|
||||
special events, and daily activity recommendations.
|
||||
Find the best spots to go to, the kind of place only a
|
||||
local would know.
|
||||
This guide should provide a thorough overview of what
|
||||
the city has to offer, including hidden gems, cultural
|
||||
hotspots, must-visit landmarks, weather forecasts, and
|
||||
high level costs.
|
||||
The final answer must be a comprehensive city guide,
|
||||
rich in cultural insights and practical tips,
|
||||
tailored to enhance the travel experience.
|
||||
|
||||
Trip Date: {range}
|
||||
Traveling from: {origin}
|
||||
Traveler Interests: {interests}
|
||||
"""
|
||||
),
|
||||
agent=agent,
|
||||
expected_output="Comprehensive city guide including hidden gems, cultural hotspots, and practical travel tips",
|
||||
)
|
||||
|
||||
|
||||
class TripCrew:
|
||||
def __init__(self, origin, cities, date_range, interests):
|
||||
self.cities = cities
|
||||
self.origin = origin
|
||||
self.interests = interests
|
||||
self.date_range = date_range
|
||||
|
||||
def run(self):
|
||||
agents = TripAgents()
|
||||
tasks = TripTasks()
|
||||
|
||||
city_selector_agent = agents.city_selection_agent()
|
||||
local_expert_agent = agents.local_expert()
|
||||
|
||||
identify_task = tasks.identify_task(
|
||||
city_selector_agent,
|
||||
self.origin,
|
||||
self.cities,
|
||||
self.interests,
|
||||
self.date_range,
|
||||
)
|
||||
gather_task = tasks.gather_task(
|
||||
local_expert_agent, self.origin, self.interests, self.date_range
|
||||
)
|
||||
|
||||
crew = Crew(
|
||||
agents=[city_selector_agent, local_expert_agent],
|
||||
tasks=[identify_task, gather_task],
|
||||
verbose=True,
|
||||
memory=True,
|
||||
knowledge={
|
||||
"sources": [string_source],
|
||||
"metadata": {"preference": "personal"},
|
||||
},
|
||||
)
|
||||
|
||||
result = crew.kickoff()
|
||||
return result
|
||||
|
||||
|
||||
trip_crew = TripCrew("California", "Tokyo", "Dec 12 - Dec 20", "sports")
|
||||
result = trip_crew.run()
|
||||
|
||||
print(result)
|
||||
```
|
||||
راجع [وثائق تتبع MLflow](https://mlflow.org/docs/latest/llms/tracing/index.html) لمزيد من الإعدادات وحالات الاستخدام.
|
||||
</Step>
|
||||
<Step title="عرض أنشطة الوكلاء">
|
||||
الآن يتم التقاط تتبعات وكلاء crewAI الخاصين بك بواسطة MLflow.
|
||||
لنقم بزيارة خادم تتبع MLflow لعرض التتبعات والحصول على رؤى حول وكلائك.
|
||||
|
||||
افتح `127.0.0.1:5000` في متصفحك لزيارة خادم تتبع MLflow.
|
||||
<Frame caption="لوحة معلومات تتبع MLflow">
|
||||
<img src="/images/mlflow1.png" alt="MLflow tracing example with crewai" />
|
||||
</Frame>
|
||||
</Step>
|
||||
</Steps>
|
||||
134
docs/edge/ar/observability/neatlogs.mdx
Normal file
134
docs/edge/ar/observability/neatlogs.mdx
Normal file
@@ -0,0 +1,134 @@
|
||||
---
|
||||
title: تكامل Neatlogs
|
||||
description: افهم وأصلح وشارك عمليات تشغيل وكلاء CrewAI الخاصة بك
|
||||
icon: magnifying-glass-chart
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# مقدمة
|
||||
|
||||
يساعدك Neatlogs على **رؤية ما فعله وكيلك**، و**لماذا**، و**مشاركته**.
|
||||
|
||||
يلتقط كل خطوة: الأفكار، واستدعاءات الأدوات، والاستجابات، والتقييمات. لا سجلات خام. فقط تتبعات واضحة ومنظمة. ممتاز لتصحيح الأخطاء والتعاون.
|
||||
|
||||
## لماذا تستخدم Neatlogs؟
|
||||
|
||||
يستخدم وكلاء CrewAI أدوات متعددة وخطوات تفكير. عندما يحدث خطأ ما، تحتاج إلى السياق - وليس فقط الأخطاء.
|
||||
|
||||
يتيح لك Neatlogs:
|
||||
|
||||
- تتبع مسار اتخاذ القرار بالكامل
|
||||
- إضافة ملاحظات مباشرة على الخطوات
|
||||
- الدردشة مع التتبع باستخدام مساعد الذكاء الاصطناعي
|
||||
- مشاركة عمليات التشغيل علنياً للحصول على ملاحظات
|
||||
- تحويل الرؤى إلى مهام
|
||||
|
||||
كل ذلك في مكان واحد.
|
||||
|
||||
إدارة تتبعاتك بسهولة
|
||||
|
||||

|
||||

|
||||
|
||||
أفضل تجربة مستخدم لعرض تتبع CrewAI. انشر التعليقات أينما تريد. استخدم الذكاء الاصطناعي لتصحيح الأخطاء.
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
## الميزات الأساسية
|
||||
|
||||
- **عارض التتبع**: تتبع الأفكار والأدوات والقرارات بالتسلسل
|
||||
- **التعليقات المضمنة**: أشر إلى زملاء الفريق على أي خطوة تتبع
|
||||
- **الملاحظات والتقييم**: حدد المخرجات كصحيحة أو غير صحيحة
|
||||
- **إبراز الأخطاء**: وسم تلقائي لأخطاء API/الأدوات
|
||||
- **تحويل المهام**: حوّل التعليقات إلى مهام موكلة
|
||||
- **اسأل التتبع (AI)**: تحدث مع تتبعك باستخدام روبوت Neatlogs الذكي
|
||||
- **المشاركة العامة**: انشر روابط التتبع لمجتمعك
|
||||
|
||||
## إعداد سريع مع CrewAI
|
||||
|
||||
<Steps>
|
||||
<Step title="التسجيل والحصول على مفتاح API">
|
||||
قم بزيارة [neatlogs.com](https://neatlogs.com/?utm_source=crewAI-docs)، وأنشئ مشروعاً، وانسخ مفتاح API.
|
||||
</Step>
|
||||
<Step title="تثبيت SDK">
|
||||
```bash
|
||||
pip install neatlogs
|
||||
```
|
||||
(أحدث إصدار 0.8.0، Python 3.8+؛ رخصة MIT)
|
||||
</Step>
|
||||
<Step title="تهيئة Neatlogs">
|
||||
قبل بدء وكلاء Crew، أضف:
|
||||
|
||||
```python
|
||||
import neatlogs
|
||||
neatlogs.init("YOUR_PROJECT_API_KEY")
|
||||
```
|
||||
|
||||
يعمل الوكلاء كالمعتاد. يلتقط Neatlogs كل شيء تلقائياً.
|
||||
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
|
||||
|
||||
## تحت الغطاء
|
||||
|
||||
وفقاً لـ GitHub، فإن Neatlogs:
|
||||
|
||||
- يلتقط الأفكار واستدعاءات الأدوات والاستجابات والأخطاء وإحصائيات الرموز المميزة
|
||||
- يدعم توليد المهام بالذكاء الاصطناعي وسير عمل التقييم المتين
|
||||
|
||||
كل ذلك بسطرين فقط من الكود.
|
||||
|
||||
|
||||
|
||||
## شاهده وهو يعمل
|
||||
|
||||
### عرض توضيحي كامل (4 دقائق)
|
||||
|
||||
<iframe
|
||||
className="w-full aspect-video rounded-xl"
|
||||
src="https://www.youtube.com/embed/8KDme9T2I7Q?si=b8oHteaBwFNs_Duk"
|
||||
title="NeatLogs overview"
|
||||
frameBorder="0"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
|
||||
allowFullScreen
|
||||
></iframe>
|
||||
|
||||
### تكامل CrewAI (30 ثانية)
|
||||
|
||||
<iframe
|
||||
className="w-full aspect-video rounded-xl"
|
||||
src="https://www.loom.com/embed/9c78b552af43452bb3e4783cb8d91230?sid=e9d7d370-a91a-49b0-809e-2f375d9e801d"
|
||||
title="Loom video player"
|
||||
frameBorder="0"
|
||||
allowFullScreen
|
||||
></iframe>
|
||||
|
||||
|
||||
|
||||
## الروابط والدعم
|
||||
|
||||
- [وثائق Neatlogs](https://docs.neatlogs.com/)
|
||||
- [لوحة التحكم ومفتاح API](https://app.neatlogs.com/)
|
||||
- [تابعنا على Twitter](https://twitter.com/neatlogs)
|
||||
- البريد الإلكتروني: hello@neatlogs.com
|
||||
- [GitHub SDK](https://github.com/NeatLogs/neatlogs)
|
||||
|
||||
|
||||
|
||||
## الخلاصة
|
||||
|
||||
بمجرد:
|
||||
|
||||
```bash
|
||||
pip install neatlogs
|
||||
|
||||
import neatlogs
|
||||
neatlogs.init("YOUR_API_KEY")
|
||||
|
||||
You can now capture, understand, share, and act on your CrewAI agent runs in seconds.
|
||||
No setup overhead. Full trace transparency. Full team collaboration.
|
||||
```
|
||||
181
docs/edge/ar/observability/openlit.mdx
Normal file
181
docs/edge/ar/observability/openlit.mdx
Normal file
@@ -0,0 +1,181 @@
|
||||
---
|
||||
title: تكامل OpenLIT
|
||||
description: ابدأ بسرعة في مراقبة وكلائك بسطر واحد فقط من الكود باستخدام OpenTelemetry.
|
||||
icon: magnifying-glass-chart
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# نظرة عامة على OpenLIT
|
||||
|
||||
[OpenLIT](https://github.com/openlit/openlit?src=crewai-docs) هو أداة مفتوحة المصدر تجعل من السهل مراقبة أداء وكلاء الذكاء الاصطناعي ونماذج LLM وقواعد بيانات المتجهات ووحدات GPU بسطر **واحد** فقط من الكود.
|
||||
|
||||
يوفر تتبعاً ومقاييس أصلية لـ OpenTelemetry لتتبع المعلمات المهمة مثل التكلفة وزمن الاستجابة والتفاعلات وتسلسل المهام.
|
||||
يمكّنك هذا الإعداد من تتبع المعلمات الفائقة ومراقبة مشكلات الأداء، مما يساعدك في إيجاد طرق لتحسين وضبط وكلائك بمرور الوقت.
|
||||
|
||||
<Frame caption="لوحة معلومات OpenLIT">
|
||||
<img src="/images/openlit1.png" alt="Overview Agent usage including cost and tokens" />
|
||||
<img src="/images/openlit2.png" alt="Overview of agent otel traces and metrics" />
|
||||
<img src="/images/openlit3.png" alt="Overview of agent traces in details" />
|
||||
</Frame>
|
||||
|
||||
### الميزات
|
||||
|
||||
- **لوحة معلومات التحليلات**: راقب صحة وأداء وكلائك من خلال لوحات معلومات تفصيلية تتتبع المقاييس والتكاليف وتفاعلات المستخدمين.
|
||||
- **SDK مراقبة أصلي لـ OpenTelemetry**: حزم SDK محايدة للمورد لإرسال التتبعات والمقاييس إلى أدوات المراقبة الحالية مثل Grafana وDataDog وغيرها.
|
||||
- **تتبع التكاليف للنماذج المخصصة والمعدّلة**: خصّص تقديرات التكلفة لنماذج محددة باستخدام ملفات تسعير مخصصة لوضع ميزانية دقيقة.
|
||||
- **لوحة مراقبة الاستثناءات**: اكتشف وحل المشكلات بسرعة من خلال تتبع الاستثناءات والأخطاء الشائعة بلوحة مراقبة.
|
||||
- **الامتثال والأمان**: اكتشف التهديدات المحتملة مثل الألفاظ البذيئة وتسريبات المعلومات الشخصية.
|
||||
- **كشف حقن الموجهات**: حدد حقن الكود المحتمل وتسريبات الأسرار.
|
||||
- **إدارة مفاتيح API والأسرار**: تعامل مع مفاتيح API لنماذج LLM وأسرارك مركزياً بأمان، مع تجنب الممارسات غير الآمنة.
|
||||
- **إدارة الموجهات**: أدر وأصدر موجهات الوكلاء باستخدام PromptHub للوصول المتسق والسهل عبر الوكلاء.
|
||||
- **ساحة تجربة النماذج**: اختبر وقارن نماذج مختلفة لوكلاء CrewAI قبل النشر.
|
||||
|
||||
## تعليمات الإعداد
|
||||
|
||||
<Steps>
|
||||
<Step title="نشر OpenLIT">
|
||||
<Steps>
|
||||
<Step title="استنساخ مستودع OpenLIT">
|
||||
```shell
|
||||
git clone git@github.com:openlit/openlit.git
|
||||
```
|
||||
</Step>
|
||||
<Step title="بدء Docker Compose">
|
||||
من المجلد الجذري لـ [مستودع OpenLIT](https://github.com/openlit/openlit)، شغّل الأمر التالي:
|
||||
```shell
|
||||
docker compose up -d
|
||||
```
|
||||
</Step>
|
||||
</Steps>
|
||||
</Step>
|
||||
<Step title="تثبيت SDK الخاص بـ OpenLIT">
|
||||
```shell
|
||||
pip install openlit
|
||||
```
|
||||
</Step>
|
||||
<Step title="تهيئة OpenLIT في تطبيقك">
|
||||
أضف السطرين التاليين إلى كود تطبيقك:
|
||||
<Tabs>
|
||||
<Tab title="الإعداد باستخدام معاملات الدالة">
|
||||
```python
|
||||
import openlit
|
||||
openlit.init(otlp_endpoint="http://127.0.0.1:4318")
|
||||
```
|
||||
|
||||
مثال على الاستخدام لمراقبة وكيل CrewAI:
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew, Process
|
||||
import openlit
|
||||
|
||||
openlit.init(disable_metrics=True)
|
||||
# Define your agents
|
||||
researcher = Agent(
|
||||
role="Researcher",
|
||||
goal="Conduct thorough research and analysis on AI and AI agents",
|
||||
backstory="You're an expert researcher, specialized in technology, software engineering, AI, and startups. You work as a freelancer and are currently researching for a new client.",
|
||||
allow_delegation=False,
|
||||
llm='command-r'
|
||||
)
|
||||
|
||||
|
||||
# Define your task
|
||||
task = Task(
|
||||
description="Generate a list of 5 interesting ideas for an article, then write one captivating paragraph for each idea that showcases the potential of a full article on this topic. Return the list of ideas with their paragraphs and your notes.",
|
||||
expected_output="5 bullet points, each with a paragraph and accompanying notes.",
|
||||
)
|
||||
|
||||
# Define the manager agent
|
||||
manager = Agent(
|
||||
role="Project Manager",
|
||||
goal="Efficiently manage the crew and ensure high-quality task completion",
|
||||
backstory="You're an experienced project manager, skilled in overseeing complex projects and guiding teams to success. Your role is to coordinate the efforts of the crew members, ensuring that each task is completed on time and to the highest standard.",
|
||||
allow_delegation=True,
|
||||
llm='command-r'
|
||||
)
|
||||
|
||||
# Instantiate your crew with a custom manager
|
||||
crew = Crew(
|
||||
agents=[researcher],
|
||||
tasks=[task],
|
||||
manager_agent=manager,
|
||||
process=Process.hierarchical,
|
||||
)
|
||||
|
||||
# Start the crew's work
|
||||
result = crew.kickoff()
|
||||
|
||||
print(result)
|
||||
```
|
||||
</Tab>
|
||||
<Tab title="الإعداد باستخدام متغيرات البيئة">
|
||||
|
||||
أضف السطرين التاليين إلى كود تطبيقك:
|
||||
```python
|
||||
import openlit
|
||||
|
||||
openlit.init()
|
||||
```
|
||||
|
||||
شغّل الأمر التالي لإعداد نقطة نهاية تصدير OTEL:
|
||||
```shell
|
||||
export OTEL_EXPORTER_OTLP_ENDPOINT = "http://127.0.0.1:4318"
|
||||
```
|
||||
|
||||
مثال على الاستخدام لمراقبة وكيل CrewAI غير متزامن:
|
||||
|
||||
```python
|
||||
import asyncio
|
||||
from crewai import Crew, Agent, Task
|
||||
import openlit
|
||||
|
||||
openlit.init(otlp_endpoint="http://127.0.0.1:4318")
|
||||
|
||||
# Create an agent with code execution enabled
|
||||
coding_agent = Agent(
|
||||
role="Python Data Analyst",
|
||||
goal="Analyze data and provide insights using Python",
|
||||
backstory="You are an experienced data analyst with strong Python skills.",
|
||||
allow_code_execution=True,
|
||||
llm="command-r"
|
||||
)
|
||||
|
||||
# Create a task that requires code execution
|
||||
data_analysis_task = Task(
|
||||
description="Analyze the given dataset and calculate the average age of participants. Ages: {ages}",
|
||||
agent=coding_agent,
|
||||
expected_output="5 bullet points, each with a paragraph and accompanying notes.",
|
||||
)
|
||||
|
||||
# Create a crew and add the task
|
||||
analysis_crew = Crew(
|
||||
agents=[coding_agent],
|
||||
tasks=[data_analysis_task]
|
||||
)
|
||||
|
||||
# Async function to kickoff the crew asynchronously
|
||||
async def async_crew_execution():
|
||||
result = await analysis_crew.kickoff_async(inputs={"ages": [25, 30, 35, 40, 45]})
|
||||
print("Crew Result:", result)
|
||||
|
||||
# Run the async function
|
||||
asyncio.run(async_crew_execution())
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
راجع [مستودع Python SDK الخاص بـ OpenLIT](https://github.com/openlit/openlit/tree/main/sdk/python) لمزيد من الإعدادات المتقدمة وحالات الاستخدام.
|
||||
</Step>
|
||||
<Step title="العرض والتحليل">
|
||||
مع جمع بيانات مراقبة الوكلاء وإرسالها إلى OpenLIT، الخطوة التالية هي عرض وتحليل هذه البيانات للحصول على رؤى حول أداء وكيلك وسلوكه وتحديد مجالات التحسين.
|
||||
|
||||
ما عليك سوى التوجه إلى OpenLIT على `127.0.0.1:3000` في متصفحك لبدء الاستكشاف. يمكنك تسجيل الدخول باستخدام بيانات الاعتماد الافتراضية
|
||||
- **البريد الإلكتروني**: `user@openlit.io`
|
||||
- **كلمة المرور**: `openlituser`
|
||||
|
||||
<Frame caption="لوحة معلومات OpenLIT">
|
||||
<img src="/images/openlit1.png" alt="Overview Agent usage including cost and tokens" />
|
||||
<img src="/images/openlit2.png" alt="Overview of agent otel traces and metrics" />
|
||||
</Frame>
|
||||
|
||||
</Step>
|
||||
</Steps>
|
||||
130
docs/edge/ar/observability/opik.mdx
Normal file
130
docs/edge/ar/observability/opik.mdx
Normal file
@@ -0,0 +1,130 @@
|
||||
---
|
||||
title: تكامل Opik
|
||||
description: تعرّف على كيفية استخدام Comet Opik لتصحيح الأخطاء وتقييم ومراقبة تطبيقات CrewAI الخاصة بك مع تتبع شامل وتقييمات آلية ولوحات معلومات جاهزة للإنتاج.
|
||||
icon: meteor
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# نظرة عامة على Opik
|
||||
|
||||
مع [Comet Opik](https://www.comet.com/docs/opik/)، يمكنك تصحيح الأخطاء وتقييم ومراقبة تطبيقات LLM وأنظمة RAG وسير العمل الوكيلي مع تتبع شامل وتقييمات آلية ولوحات معلومات جاهزة للإنتاج.
|
||||
|
||||
<Frame caption="لوحة معلومات Opik للوكلاء">
|
||||
<img src="/images/opik-crewai-dashboard.png" alt="Opik agent monitoring example with CrewAI" />
|
||||
</Frame>
|
||||
|
||||
يوفر Opik دعماً شاملاً لكل مرحلة من مراحل تطوير تطبيق CrewAI الخاص بك:
|
||||
|
||||
- **تسجيل التتبعات والنطاقات**: تتبع تلقائي لاستدعاءات LLM ومنطق التطبيق لتصحيح الأخطاء وتحليل أنظمة التطوير والإنتاج. أضف التعليقات التوضيحية يدوياً أو برمجياً، واعرض وقارن الاستجابات عبر المشاريع.
|
||||
- **تقييم أداء تطبيق LLM**: قيّم وفقاً لمجموعة اختبار مخصصة وشغّل مقاييس تقييم مدمجة أو حدد مقاييسك الخاصة في SDK أو واجهة المستخدم.
|
||||
- **الاختبار ضمن خط أنابيب CI/CD**: أنشئ خطوط أساس أداء موثوقة مع اختبارات وحدة LLM من Opik، المبنية على PyTest. شغّل تقييمات عبر الإنترنت للمراقبة المستمرة في الإنتاج.
|
||||
- **مراقبة وتحليل بيانات الإنتاج**: افهم أداء نماذجك على بيانات غير مرئية في الإنتاج وأنشئ مجموعات بيانات لتكرارات التطوير الجديدة.
|
||||
|
||||
## الإعداد
|
||||
يوفر Comet نسخة مستضافة من منصة Opik، أو يمكنك تشغيل المنصة محلياً.
|
||||
|
||||
لاستخدام النسخة المستضافة، ما عليك سوى [إنشاء حساب Comet مجاني](https://www.comet.com/signup?utm_medium=github&utm_source=crewai_docs) والحصول على مفتاح API الخاص بك.
|
||||
|
||||
لتشغيل منصة Opik محلياً، راجع [دليل التثبيت](https://www.comet.com/docs/opik/self-host/overview/) لمزيد من المعلومات.
|
||||
|
||||
في هذا الدليل سنستخدم مثال البدء السريع الخاص بـ CrewAI.
|
||||
|
||||
<Steps>
|
||||
<Step title="تثبيت الحزم المطلوبة">
|
||||
```shell
|
||||
pip install crewai crewai-tools opik --upgrade
|
||||
```
|
||||
</Step>
|
||||
<Step title="إعداد Opik">
|
||||
```python
|
||||
import opik
|
||||
opik.configure(use_local=False)
|
||||
```
|
||||
</Step>
|
||||
<Step title="إعداد البيئة">
|
||||
أولاً، نقوم بإعداد مفاتيح API لمزود LLM كمتغيرات بيئة:
|
||||
|
||||
```python
|
||||
import os
|
||||
import getpass
|
||||
|
||||
if "OPENAI_API_KEY" not in os.environ:
|
||||
os.environ["OPENAI_API_KEY"] = getpass.getpass("Enter your OpenAI API key: ")
|
||||
```
|
||||
</Step>
|
||||
<Step title="استخدام CrewAI">
|
||||
الخطوة الأولى هي إنشاء مشروعنا. سنستخدم مثالاً من وثائق CrewAI:
|
||||
|
||||
```python
|
||||
from crewai import Agent, Crew, Task, Process
|
||||
|
||||
|
||||
class YourCrewName:
|
||||
def agent_one(self) -> Agent:
|
||||
return Agent(
|
||||
role="Data Analyst",
|
||||
goal="Analyze data trends in the market",
|
||||
backstory="An experienced data analyst with a background in economics",
|
||||
verbose=True,
|
||||
)
|
||||
|
||||
def agent_two(self) -> Agent:
|
||||
return Agent(
|
||||
role="Market Researcher",
|
||||
goal="Gather information on market dynamics",
|
||||
backstory="A diligent researcher with a keen eye for detail",
|
||||
verbose=True,
|
||||
)
|
||||
|
||||
def task_one(self) -> Task:
|
||||
return Task(
|
||||
name="Collect Data Task",
|
||||
description="Collect recent market data and identify trends.",
|
||||
expected_output="A report summarizing key trends in the market.",
|
||||
agent=self.agent_one(),
|
||||
)
|
||||
|
||||
def task_two(self) -> Task:
|
||||
return Task(
|
||||
name="Market Research Task",
|
||||
description="Research factors affecting market dynamics.",
|
||||
expected_output="An analysis of factors influencing the market.",
|
||||
agent=self.agent_two(),
|
||||
)
|
||||
|
||||
def crew(self) -> Crew:
|
||||
return Crew(
|
||||
agents=[self.agent_one(), self.agent_two()],
|
||||
tasks=[self.task_one(), self.task_two()],
|
||||
process=Process.sequential,
|
||||
verbose=True,
|
||||
)
|
||||
|
||||
```
|
||||
|
||||
الآن يمكننا استيراد متتبع Opik وتشغيل الطاقم:
|
||||
|
||||
```python
|
||||
from opik.integrations.crewai import track_crewai
|
||||
|
||||
track_crewai(project_name="crewai-integration-demo")
|
||||
|
||||
my_crew = YourCrewName().crew()
|
||||
result = my_crew.kickoff()
|
||||
|
||||
print(result)
|
||||
```
|
||||
بعد تشغيل تطبيق CrewAI، قم بزيارة تطبيق Opik لعرض:
|
||||
- تتبعات LLM والنطاقات وبياناتها الوصفية
|
||||
- تفاعلات الوكلاء وتدفق تنفيذ المهام
|
||||
- مقاييس الأداء مثل زمن الاستجابة واستخدام الرموز المميزة
|
||||
- مقاييس التقييم (مدمجة أو مخصصة)
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## الموارد
|
||||
|
||||
- [وثائق Opik](https://www.comet.com/docs/opik/)
|
||||
- [Opik + CrewAI Colab](https://colab.research.google.com/github/comet-ml/opik/blob/main/apps/opik-documentation/documentation/docs/cookbook/crewai.ipynb)
|
||||
- [X](https://x.com/cometml)
|
||||
- [Slack](https://slack.comet.com/)
|
||||
120
docs/edge/ar/observability/overview.mdx
Normal file
120
docs/edge/ar/observability/overview.mdx
Normal file
@@ -0,0 +1,120 @@
|
||||
---
|
||||
title: "نظرة عامة"
|
||||
description: "راقب وقيّم وحسّن وكلاء CrewAI الخاصين بك باستخدام أدوات مراقبة شاملة"
|
||||
icon: "face-smile"
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
## المراقبة في CrewAI
|
||||
|
||||
تعد المراقبة أمراً بالغ الأهمية لفهم كيفية أداء وكلاء CrewAI، وتحديد الاختناقات، وضمان التشغيل الموثوق في بيئات الإنتاج. يغطي هذا القسم مختلف الأدوات والمنصات التي توفر إمكانيات المراقبة والتقييم والتحسين لسير عمل وكلائك.
|
||||
|
||||
## لماذا تعد المراقبة مهمة
|
||||
|
||||
- **مراقبة الأداء**: تتبع أوقات تنفيذ الوكلاء واستخدام الرموز المميزة واستهلاك الموارد
|
||||
- **ضمان الجودة**: تقييم جودة المخرجات واتساقها عبر سيناريوهات مختلفة
|
||||
- **تصحيح الأخطاء**: تحديد وحل المشكلات في سلوك الوكلاء وتنفيذ المهام
|
||||
- **إدارة التكاليف**: مراقبة استخدام API لنماذج LLM والتكاليف المرتبطة بها
|
||||
- **التحسين المستمر**: جمع الرؤى لتحسين أداء الوكلاء بمرور الوقت
|
||||
|
||||
## أدوات المراقبة المتاحة
|
||||
|
||||
### منصات المراقبة والتتبع
|
||||
|
||||
<CardGroup cols={2}>
|
||||
|
||||
<Card title="LangDB" icon="database" href="/ar/observability/langdb">
|
||||
تتبع شامل لسير عمل CrewAI مع التقاط تلقائي لتفاعلات الوكلاء.
|
||||
</Card>
|
||||
|
||||
<Card title="OpenLIT" icon="magnifying-glass-chart" href="/ar/observability/openlit">
|
||||
مراقبة أصلية لـ OpenTelemetry مع تتبع التكاليف وتحليلات الأداء.
|
||||
</Card>
|
||||
|
||||
<Card title="MLflow" icon="bars-staggered" href="/ar/observability/mlflow">
|
||||
إدارة دورة حياة تعلم الآلة مع إمكانيات التتبع والتقييم.
|
||||
</Card>
|
||||
|
||||
<Card title="Langfuse" icon="link" href="/ar/observability/langfuse">
|
||||
منصة هندسة LLM مع تتبع وتحليلات تفصيلية.
|
||||
</Card>
|
||||
|
||||
<Card title="Langtrace" icon="chart-line" href="/ar/observability/langtrace">
|
||||
مراقبة مفتوحة المصدر لنماذج LLM وأطر العمل الوكيلية.
|
||||
</Card>
|
||||
|
||||
<Card title="Arize Phoenix" icon="meteor" href="/ar/observability/arize-phoenix">
|
||||
منصة مراقبة الذكاء الاصطناعي للمراقبة واستكشاف الأخطاء وإصلاحها.
|
||||
</Card>
|
||||
|
||||
<Card title="Portkey" icon="key" href="/ar/observability/portkey">
|
||||
بوابة ذكاء اصطناعي مع مراقبة شاملة وميزات موثوقية.
|
||||
</Card>
|
||||
|
||||
<Card title="Opik" icon="meteor" href="/ar/observability/opik">
|
||||
تصحيح الأخطاء وتقييم ومراقبة تطبيقات LLM مع تتبع شامل.
|
||||
</Card>
|
||||
|
||||
<Card title="Weave" icon="network-wired" href="/ar/observability/weave">
|
||||
منصة Weights & Biases لتتبع وتقييم تطبيقات الذكاء الاصطناعي.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
### التقييم وضمان الجودة
|
||||
|
||||
<CardGroup cols={2}>
|
||||
<Card title="Patronus AI" icon="shield-check" href="/ar/observability/patronus-evaluation">
|
||||
منصة تقييم شاملة لمخرجات LLM وسلوكيات الوكلاء.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
## مقاييس المراقبة الرئيسية
|
||||
|
||||
### مقاييس الأداء
|
||||
- **وقت التنفيذ**: المدة التي يستغرقها الوكلاء لإكمال المهام
|
||||
- **استخدام الرموز المميزة**: الرموز المدخلة/المخرجة المستهلكة من استدعاءات LLM
|
||||
- **زمن استجابة API**: أوقات الاستجابة من الخدمات الخارجية
|
||||
- **معدل النجاح**: نسبة المهام المكتملة بنجاح
|
||||
|
||||
### مقاييس الجودة
|
||||
- **دقة المخرجات**: صحة استجابات الوكلاء
|
||||
- **الاتساق**: الموثوقية عبر مدخلات متشابهة
|
||||
- **الصلة**: مدى تطابق المخرجات مع النتائج المتوقعة
|
||||
- **السلامة**: الامتثال لسياسات المحتوى والإرشادات
|
||||
|
||||
### مقاييس التكلفة
|
||||
- **تكاليف API**: النفقات من استخدام مزودي LLM
|
||||
- **استخدام الموارد**: استهلاك الحوسبة والذاكرة
|
||||
- **التكلفة لكل مهمة**: الكفاءة الاقتصادية لعمليات الوكلاء
|
||||
- **تتبع الميزانية**: المراقبة مقابل حدود الإنفاق
|
||||
|
||||
## البدء
|
||||
|
||||
1. **اختر أدواتك**: حدد منصات المراقبة التي تتوافق مع احتياجاتك
|
||||
2. **أضف الأدوات لكودك**: أضف المراقبة لتطبيقات CrewAI الخاصة بك
|
||||
3. **أعدّ لوحات المعلومات**: هيئ العروض المرئية للمقاييس الرئيسية
|
||||
4. **حدد التنبيهات**: أنشئ إشعارات للأحداث المهمة
|
||||
5. **أنشئ خطوط الأساس**: قس الأداء الأولي للمقارنة
|
||||
6. **كرر وحسّن**: استخدم الرؤى لتحسين وكلائك
|
||||
|
||||
## أفضل الممارسات
|
||||
|
||||
### مرحلة التطوير
|
||||
- استخدم التتبع التفصيلي لفهم سلوك الوكلاء
|
||||
- طبّق مقاييس التقييم مبكراً في التطوير
|
||||
- راقب استخدام الموارد أثناء الاختبار
|
||||
- أعدّ فحوصات جودة آلية
|
||||
|
||||
### مرحلة الإنتاج
|
||||
- طبّق مراقبة وتنبيهات شاملة
|
||||
- تتبع اتجاهات الأداء بمرور الوقت
|
||||
- راقب الشذوذ والتدهور
|
||||
- حافظ على رؤية التكاليف والتحكم بها
|
||||
|
||||
### التحسين المستمر
|
||||
- مراجعات أداء وتحسين منتظمة
|
||||
- اختبار A/B لتكوينات وكلاء مختلفة
|
||||
- حلقات تغذية راجعة لتحسين الجودة
|
||||
- توثيق الدروس المستفادة
|
||||
|
||||
اختر أدوات المراقبة التي تناسب حالة الاستخدام والبنية التحتية ومتطلبات المراقبة الخاصة بك لضمان أن وكلاء CrewAI يعملون بشكل موثوق وفعال.
|
||||
206
docs/edge/ar/observability/patronus-evaluation.mdx
Normal file
206
docs/edge/ar/observability/patronus-evaluation.mdx
Normal file
@@ -0,0 +1,206 @@
|
||||
---
|
||||
title: تقييم Patronus AI
|
||||
description: راقب وقيّم أداء وكلاء CrewAI باستخدام منصة التقييم الشاملة من Patronus AI لمخرجات LLM وسلوكيات الوكلاء.
|
||||
icon: shield-check
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# تقييم Patronus AI
|
||||
|
||||
## نظرة عامة
|
||||
|
||||
يوفر [Patronus AI](https://patronus.ai) إمكانيات تقييم ومراقبة شاملة لوكلاء CrewAI، مما يمكّنك من تقييم مخرجات النماذج وسلوكيات الوكلاء والأداء العام للنظام. يتيح لك هذا التكامل تنفيذ سير عمل تقييم مستمر يساعد في الحفاظ على الجودة والموثوقية في بيئات الإنتاج.
|
||||
|
||||
## الميزات الرئيسية
|
||||
|
||||
- **التقييم الآلي**: تقييم فوري لمخرجات وسلوكيات الوكلاء
|
||||
- **معايير مخصصة**: حدد معايير تقييم محددة مصممة لحالات الاستخدام الخاصة بك
|
||||
- **مراقبة الأداء**: تتبع مقاييس أداء الوكلاء بمرور الوقت
|
||||
- **ضمان الجودة**: ضمان جودة مخرجات متسقة عبر سيناريوهات مختلفة
|
||||
- **السلامة والامتثال**: مراقبة المشكلات المحتملة وانتهاكات السياسات
|
||||
|
||||
## أدوات التقييم
|
||||
|
||||
يوفر Patronus ثلاث أدوات تقييم رئيسية لحالات استخدام مختلفة:
|
||||
|
||||
1. **PatronusEvalTool**: يسمح للوكلاء باختيار المقيّم والمعايير الأنسب لمهمة التقييم.
|
||||
2. **PatronusPredefinedCriteriaEvalTool**: يستخدم مقيّماً ومعايير محددة مسبقاً من قبل المستخدم.
|
||||
3. **PatronusLocalEvaluatorTool**: يستخدم دوال تقييم مخصصة محددة من قبل المستخدم.
|
||||
|
||||
## التثبيت
|
||||
|
||||
لاستخدام هذه الأدوات، تحتاج إلى تثبيت حزمة Patronus:
|
||||
|
||||
```shell
|
||||
uv add patronus
|
||||
```
|
||||
|
||||
ستحتاج أيضاً إلى إعداد مفتاح API الخاص بـ Patronus كمتغير بيئة:
|
||||
|
||||
```shell
|
||||
export PATRONUS_API_KEY="your_patronus_api_key"
|
||||
```
|
||||
|
||||
## خطوات البدء
|
||||
|
||||
لاستخدام أدوات تقييم Patronus بفعالية، اتبع الخطوات التالية:
|
||||
|
||||
1. **تثبيت Patronus**: ثبّت حزمة Patronus باستخدام الأمر أعلاه.
|
||||
2. **إعداد مفتاح API**: عيّن مفتاح API الخاص بـ Patronus كمتغير بيئة.
|
||||
3. **اختيار الأداة المناسبة**: حدد أداة تقييم Patronus المناسبة بناءً على احتياجاتك.
|
||||
4. **إعداد الأداة**: هيئ الأداة بالمعاملات اللازمة.
|
||||
|
||||
## أمثلة
|
||||
|
||||
### استخدام PatronusEvalTool
|
||||
|
||||
يوضح المثال التالي كيفية استخدام `PatronusEvalTool`، التي تسمح للوكلاء باختيار المقيّم والمعايير الأنسب:
|
||||
|
||||
```python Code
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import PatronusEvalTool
|
||||
|
||||
# Initialize the tool
|
||||
patronus_eval_tool = PatronusEvalTool()
|
||||
|
||||
# Define an agent that uses the tool
|
||||
coding_agent = Agent(
|
||||
role="Coding Agent",
|
||||
goal="Generate high quality code and verify that the output is code",
|
||||
backstory="An experienced coder who can generate high quality python code.",
|
||||
tools=[patronus_eval_tool],
|
||||
verbose=True,
|
||||
)
|
||||
|
||||
# Example task to generate and evaluate code
|
||||
generate_code_task = Task(
|
||||
description="Create a simple program to generate the first N numbers in the Fibonacci sequence. Select the most appropriate evaluator and criteria for evaluating your output.",
|
||||
expected_output="Program that generates the first N numbers in the Fibonacci sequence.",
|
||||
agent=coding_agent,
|
||||
)
|
||||
|
||||
# Create and run the crew
|
||||
crew = Crew(agents=[coding_agent], tasks=[generate_code_task])
|
||||
result = crew.kickoff()
|
||||
```
|
||||
|
||||
### استخدام PatronusPredefinedCriteriaEvalTool
|
||||
|
||||
يوضح المثال التالي كيفية استخدام `PatronusPredefinedCriteriaEvalTool`، التي تستخدم مقيّماً ومعايير محددة مسبقاً:
|
||||
|
||||
```python Code
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import PatronusPredefinedCriteriaEvalTool
|
||||
|
||||
# Initialize the tool with predefined criteria
|
||||
patronus_eval_tool = PatronusPredefinedCriteriaEvalTool(
|
||||
evaluators=[{"evaluator": "judge", "criteria": "contains-code"}]
|
||||
)
|
||||
|
||||
# Define an agent that uses the tool
|
||||
coding_agent = Agent(
|
||||
role="Coding Agent",
|
||||
goal="Generate high quality code",
|
||||
backstory="An experienced coder who can generate high quality python code.",
|
||||
tools=[patronus_eval_tool],
|
||||
verbose=True,
|
||||
)
|
||||
|
||||
# Example task to generate code
|
||||
generate_code_task = Task(
|
||||
description="Create a simple program to generate the first N numbers in the Fibonacci sequence.",
|
||||
expected_output="Program that generates the first N numbers in the Fibonacci sequence.",
|
||||
agent=coding_agent,
|
||||
)
|
||||
|
||||
# Create and run the crew
|
||||
crew = Crew(agents=[coding_agent], tasks=[generate_code_task])
|
||||
result = crew.kickoff()
|
||||
```
|
||||
|
||||
### استخدام PatronusLocalEvaluatorTool
|
||||
|
||||
يوضح المثال التالي كيفية استخدام `PatronusLocalEvaluatorTool`، التي تستخدم دوال تقييم مخصصة:
|
||||
|
||||
```python Code
|
||||
from crewai import Agent, Task, Crew
|
||||
from crewai_tools import PatronusLocalEvaluatorTool
|
||||
from patronus import Client, EvaluationResult
|
||||
import random
|
||||
|
||||
# Initialize the Patronus client
|
||||
client = Client()
|
||||
|
||||
# Register a custom evaluator
|
||||
@client.register_local_evaluator("random_evaluator")
|
||||
def random_evaluator(**kwargs):
|
||||
score = random.random()
|
||||
return EvaluationResult(
|
||||
score_raw=score,
|
||||
pass_=score >= 0.5,
|
||||
explanation="example explanation",
|
||||
)
|
||||
|
||||
# Initialize the tool with the custom evaluator
|
||||
patronus_eval_tool = PatronusLocalEvaluatorTool(
|
||||
patronus_client=client,
|
||||
evaluator="random_evaluator",
|
||||
evaluated_model_gold_answer="example label",
|
||||
)
|
||||
|
||||
# Define an agent that uses the tool
|
||||
coding_agent = Agent(
|
||||
role="Coding Agent",
|
||||
goal="Generate high quality code",
|
||||
backstory="An experienced coder who can generate high quality python code.",
|
||||
tools=[patronus_eval_tool],
|
||||
verbose=True,
|
||||
)
|
||||
|
||||
# Example task to generate code
|
||||
generate_code_task = Task(
|
||||
description="Create a simple program to generate the first N numbers in the Fibonacci sequence.",
|
||||
expected_output="Program that generates the first N numbers in the Fibonacci sequence.",
|
||||
agent=coding_agent,
|
||||
)
|
||||
|
||||
# Create and run the crew
|
||||
crew = Crew(agents=[coding_agent], tasks=[generate_code_task])
|
||||
result = crew.kickoff()
|
||||
```
|
||||
|
||||
## المعاملات
|
||||
|
||||
### PatronusEvalTool
|
||||
|
||||
لا تتطلب `PatronusEvalTool` أي معاملات أثناء التهيئة. تقوم تلقائياً بجلب المقيّمين والمعايير المتاحة من API الخاص بـ Patronus.
|
||||
|
||||
### PatronusPredefinedCriteriaEvalTool
|
||||
|
||||
تقبل `PatronusPredefinedCriteriaEvalTool` المعاملات التالية أثناء التهيئة:
|
||||
|
||||
- **evaluators**: مطلوب. قائمة من القواميس تحتوي على المقيّم والمعايير المراد استخدامها. مثال: `[{"evaluator": "judge", "criteria": "contains-code"}]`.
|
||||
|
||||
### PatronusLocalEvaluatorTool
|
||||
|
||||
تقبل `PatronusLocalEvaluatorTool` المعاملات التالية أثناء التهيئة:
|
||||
|
||||
- **patronus_client**: مطلوب. مثيل عميل Patronus.
|
||||
- **evaluator**: اختياري. اسم المقيّم المحلي المسجل للاستخدام. القيمة الافتراضية هي سلسلة نصية فارغة.
|
||||
- **evaluated_model_gold_answer**: اختياري. الإجابة المرجعية للاستخدام في التقييم. القيمة الافتراضية هي سلسلة نصية فارغة.
|
||||
|
||||
## الاستخدام
|
||||
|
||||
عند استخدام أدوات تقييم Patronus، تقدم مدخلات النموذج ومخرجاته وسياقه، وتعيد الأداة نتائج التقييم من API الخاص بـ Patronus.
|
||||
|
||||
بالنسبة لـ `PatronusEvalTool` و`PatronusPredefinedCriteriaEvalTool`، المعاملات التالية مطلوبة عند استدعاء الأداة:
|
||||
|
||||
- **evaluated_model_input**: وصف مهمة الوكيل بنص بسيط.
|
||||
- **evaluated_model_output**: مخرجات الوكيل للمهمة.
|
||||
- **evaluated_model_retrieved_context**: سياق الوكيل.
|
||||
|
||||
بالنسبة لـ `PatronusLocalEvaluatorTool`، نفس المعاملات مطلوبة، لكن المقيّم والإجابة المرجعية يتم تحديدهما أثناء التهيئة.
|
||||
|
||||
## الخلاصة
|
||||
|
||||
توفر أدوات تقييم Patronus طريقة قوية لتقييم وتسجيل درجات مدخلات ومخرجات النماذج باستخدام منصة Patronus AI. من خلال تمكين الوكلاء من تقييم مخرجاتهم أو مخرجات وكلاء آخرين، يمكن لهذه الأدوات المساعدة في تحسين جودة وموثوقية سير عمل CrewAI.
|
||||
823
docs/edge/ar/observability/portkey.mdx
Normal file
823
docs/edge/ar/observability/portkey.mdx
Normal file
@@ -0,0 +1,823 @@
|
||||
---
|
||||
title: تكامل Portkey
|
||||
description: كيفية استخدام Portkey مع CrewAI
|
||||
icon: key
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
<img src="https://raw.githubusercontent.com/siddharthsambharia-portkey/Portkey-Product-Images/main/Portkey-CrewAI.png" alt="Portkey CrewAI Header Image" width="70%" />
|
||||
|
||||
|
||||
|
||||
## مقدمة
|
||||
|
||||
يعزز Portkey إمكانيات CrewAI بميزات جاهزة للإنتاج، محولاً طواقم الوكلاء التجريبية إلى أنظمة متينة من خلال توفير:
|
||||
|
||||
- **مراقبة كاملة** لكل خطوة وكيل واستخدام أداة وتفاعل
|
||||
- **موثوقية مدمجة** مع آليات الاحتياط وإعادة المحاولة وموازنة الأحمال
|
||||
- **تتبع التكاليف وتحسينها** لإدارة إنفاقك على الذكاء الاصطناعي
|
||||
- **الوصول إلى أكثر من 200 نموذج LLM** من خلال تكامل واحد
|
||||
- **حواجز الحماية** للحفاظ على سلوك الوكلاء آمناً ومتوافقاً
|
||||
- **موجهات مُتحكم بإصداراتها** لأداء وكلاء متسق
|
||||
|
||||
|
||||
### التثبيت والإعداد
|
||||
|
||||
<Steps>
|
||||
<Step title="تثبيت الحزم المطلوبة">
|
||||
```bash
|
||||
pip install -U crewai portkey-ai
|
||||
```
|
||||
</Step>
|
||||
|
||||
<Step title="إنشاء مفتاح API" icon="lock">
|
||||
أنشئ مفتاح API لـ Portkey مع حدود ميزانية/معدل اختيارية من [لوحة تحكم Portkey](https://app.portkey.ai/). يمكنك أيضاً إرفاق إعدادات للموثوقية والتخزين المؤقت والمزيد لهذا المفتاح. المزيد عن هذا لاحقاً.
|
||||
</Step>
|
||||
|
||||
<Step title="إعداد CrewAI مع Portkey">
|
||||
التكامل بسيط - ما عليك سوى تحديث إعداد LLM في تكوين CrewAI الخاص بك:
|
||||
|
||||
```python
|
||||
from crewai import LLM
|
||||
from portkey_ai import createHeaders, PORTKEY_GATEWAY_URL
|
||||
|
||||
# Create an LLM instance with Portkey integration
|
||||
gpt_llm = LLM(
|
||||
model="gpt-4o",
|
||||
base_url=PORTKEY_GATEWAY_URL,
|
||||
api_key="dummy", # We are using a Virtual key, so this is a placeholder
|
||||
extra_headers=createHeaders(
|
||||
api_key="YOUR_PORTKEY_API_KEY",
|
||||
virtual_key="YOUR_LLM_VIRTUAL_KEY",
|
||||
trace_id="unique-trace-id", # Optional, for request tracing
|
||||
)
|
||||
)
|
||||
|
||||
#Use them in your Crew Agents like this:
|
||||
|
||||
@agent
|
||||
def lead_market_analyst(self) -> Agent:
|
||||
return Agent(
|
||||
config=self.agents_config['lead_market_analyst'],
|
||||
verbose=True,
|
||||
memory=False,
|
||||
llm=gpt_llm
|
||||
)
|
||||
|
||||
```
|
||||
|
||||
<Info>
|
||||
**ما هي المفاتيح الافتراضية؟** تخزّن المفاتيح الافتراضية في Portkey مفاتيح API لمزودي LLM (OpenAI وAnthropic وغيرها) بشكل آمن في خزنة مشفرة. تتيح تدوير المفاتيح وإدارة الميزانية بسهولة. [تعرّف على المزيد حول المفاتيح الافتراضية هنا](https://portkey.ai/docs/product/ai-gateway/virtual-keys).
|
||||
</Info>
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## ميزات الإنتاج
|
||||
|
||||
### 1. مراقبة محسّنة
|
||||
|
||||
يوفر Portkey مراقبة شاملة لوكلاء CrewAI، مما يساعدك على فهم ما يحدث بالضبط أثناء كل عملية تنفيذ.
|
||||
|
||||
<Tabs>
|
||||
<Tab title="التتبعات">
|
||||
<Frame>
|
||||
<img src="https://raw.githubusercontent.com/siddharthsambharia-portkey/Portkey-Product-Images/refs/heads/main/CrewAI%20Product%2011.1.webp"/>
|
||||
</Frame>
|
||||
|
||||
توفر التتبعات عرضاً هرمياً لتنفيذ طاقمك، يظهر تسلسل استدعاءات LLM واستدعاءات الأدوات وانتقالات الحالة.
|
||||
|
||||
```python
|
||||
# Add trace_id to enable hierarchical tracing in Portkey
|
||||
portkey_llm = LLM(
|
||||
model="gpt-4o",
|
||||
base_url=PORTKEY_GATEWAY_URL,
|
||||
api_key="dummy",
|
||||
extra_headers=createHeaders(
|
||||
api_key="YOUR_PORTKEY_API_KEY",
|
||||
virtual_key="YOUR_OPENAI_VIRTUAL_KEY",
|
||||
trace_id="unique-session-id" # Add unique trace ID
|
||||
)
|
||||
)
|
||||
```
|
||||
</Tab>
|
||||
|
||||
<Tab title="السجلات">
|
||||
<Frame>
|
||||
<img src="https://raw.githubusercontent.com/siddharthsambharia-portkey/Portkey-Product-Images/refs/heads/main/CrewAI%20Portkey%20Docs%20Metadata.png"/>
|
||||
</Frame>
|
||||
|
||||
يسجّل Portkey كل تفاعل مع نماذج LLM، بما في ذلك:
|
||||
|
||||
- حمولات الطلب والاستجابة الكاملة
|
||||
- مقاييس زمن الاستجابة واستخدام الرموز المميزة
|
||||
- حسابات التكلفة
|
||||
- استدعاءات الأدوات وتنفيذ الدوال
|
||||
|
||||
يمكن تصفية جميع السجلات حسب البيانات الوصفية ومعرّفات التتبع والنماذج والمزيد، مما يسهّل تصحيح أخطاء عمليات تشغيل طاقم محددة.
|
||||
</Tab>
|
||||
|
||||
<Tab title="المقاييس ولوحات المعلومات">
|
||||
<Frame>
|
||||
<img src="https://raw.githubusercontent.com/siddharthsambharia-portkey/Portkey-Product-Images/refs/heads/main/CrewAI%20Dashboard.png"/>
|
||||
</Frame>
|
||||
|
||||
يوفر Portkey لوحات معلومات مدمجة تساعدك على:
|
||||
|
||||
- تتبع التكلفة واستخدام الرموز المميزة عبر جميع عمليات تشغيل الطاقم
|
||||
- تحليل مقاييس الأداء مثل زمن الاستجابة ومعدلات النجاح
|
||||
- تحديد الاختناقات في سير عمل الوكلاء
|
||||
- مقارنة تكوينات الطاقم ونماذج LLM المختلفة
|
||||
|
||||
يمكنك تصفية وتقسيم جميع المقاييس حسب بيانات وصفية مخصصة لتحليل أنواع طواقم أو مجموعات مستخدمين أو حالات استخدام محددة.
|
||||
</Tab>
|
||||
|
||||
<Tab title="تصفية البيانات الوصفية">
|
||||
<Frame>
|
||||
<img src="https://raw.githubusercontent.com/siddharthsambharia-portkey/Portkey-Product-Images/refs/heads/main/Metadata%20Filters%20from%20CrewAI.png" alt="Analytics with metadata filters" />
|
||||
</Frame>
|
||||
|
||||
أضف بيانات وصفية مخصصة لتكوين LLM في CrewAI لتمكين تصفية وتقسيم قوية:
|
||||
|
||||
```python
|
||||
portkey_llm = LLM(
|
||||
model="gpt-4o",
|
||||
base_url=PORTKEY_GATEWAY_URL,
|
||||
api_key="dummy",
|
||||
extra_headers=createHeaders(
|
||||
api_key="YOUR_PORTKEY_API_KEY",
|
||||
virtual_key="YOUR_OPENAI_VIRTUAL_KEY",
|
||||
metadata={
|
||||
"crew_type": "research_crew",
|
||||
"environment": "production",
|
||||
"_user": "user_123", # Special _user field for user analytics
|
||||
"request_source": "mobile_app"
|
||||
}
|
||||
)
|
||||
)
|
||||
```
|
||||
|
||||
يمكن استخدام هذه البيانات الوصفية لتصفية السجلات والتتبعات والمقاييس في لوحة تحكم Portkey، مما يتيح لك تحليل عمليات تشغيل طاقم أو مستخدمين أو بيئات محددة.
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
### 2. الموثوقية - حافظ على تشغيل طواقمك بسلاسة
|
||||
|
||||
عند تشغيل الطواقم في الإنتاج، قد تحدث مشكلات - حدود معدل API أو مشكلات الشبكة أو انقطاعات المزود. تضمن ميزات الموثوقية في Portkey استمرار عمل وكلائك بسلاسة حتى عند حدوث مشكلات.
|
||||
|
||||
من السهل تفعيل الاحتياط في إعداد CrewAI الخاص بك باستخدام تكوين Portkey:
|
||||
|
||||
```python
|
||||
from crewai import LLM
|
||||
from portkey_ai import createHeaders, PORTKEY_GATEWAY_URL
|
||||
|
||||
# Create LLM with fallback configuration
|
||||
portkey_llm = LLM(
|
||||
model="gpt-4o",
|
||||
max_tokens=1000,
|
||||
base_url=PORTKEY_GATEWAY_URL,
|
||||
api_key="dummy",
|
||||
extra_headers=createHeaders(
|
||||
api_key="YOUR_PORTKEY_API_KEY",
|
||||
config={
|
||||
"strategy": {
|
||||
"mode": "fallback"
|
||||
},
|
||||
"targets": [
|
||||
{
|
||||
"provider": "openai",
|
||||
"api_key": "YOUR_OPENAI_API_KEY",
|
||||
"override_params": {"model": "gpt-4o"}
|
||||
},
|
||||
{
|
||||
"provider": "anthropic",
|
||||
"api_key": "YOUR_ANTHROPIC_API_KEY",
|
||||
"override_params": {"model": "claude-3-opus-20240229"}
|
||||
}
|
||||
]
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
# Use this LLM configuration with your agents
|
||||
```
|
||||
|
||||
سيحاول هذا التكوين تلقائياً استخدام Claude إذا فشل طلب GPT-4o، مما يضمن استمرار تشغيل طاقمك.
|
||||
|
||||
<CardGroup cols="2">
|
||||
<Card title="إعادة المحاولة التلقائية" icon="rotate" href="https://portkey.ai/docs/product/ai-gateway/automatic-retries">
|
||||
يتعامل مع حالات الفشل المؤقتة تلقائياً. إذا فشل استدعاء LLM، سيعيد Portkey محاولة نفس الطلب لعدد محدد من المرات - مثالي لحدود المعدل أو انقطاعات الشبكة.
|
||||
</Card>
|
||||
<Card title="مهلة الطلبات" icon="clock" href="https://portkey.ai/docs/product/ai-gateway/request-timeouts">
|
||||
امنع وكلاءك من التعليق. عيّن مهلات لضمان حصولك على استجابات (أو الفشل بأمان) ضمن الأطر الزمنية المطلوبة.
|
||||
</Card>
|
||||
<Card title="التوجيه الشرطي" icon="route" href="https://portkey.ai/docs/product/ai-gateway/conditional-routing">
|
||||
أرسل طلبات مختلفة إلى مزودين مختلفين. وجّه التفكير المعقد إلى GPT-4 والمهام الإبداعية إلى Claude والاستجابات السريعة إلى Gemini بناءً على احتياجاتك.
|
||||
</Card>
|
||||
<Card title="الاحتياط" icon="shield" href="https://portkey.ai/docs/product/ai-gateway/fallbacks">
|
||||
استمر في العمل حتى لو فشل مزودك الأساسي. انتقل تلقائياً إلى مزودين احتياطيين للحفاظ على التوفر.
|
||||
</Card>
|
||||
<Card title="موازنة الأحمال" icon="scale-balanced" href="https://portkey.ai/docs/product/ai-gateway/load-balancing">
|
||||
وزّع الطلبات عبر مفاتيح API أو مزودين متعددين. ممتاز لعمليات الطاقم عالية الحجم والبقاء ضمن حدود المعدل.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
### 3. إدارة الموجهات في CrewAI
|
||||
|
||||
يساعدك استوديو هندسة الموجهات من Portkey في إنشاء وإدارة وتحسين الموجهات المستخدمة في وكلاء CrewAI. بدلاً من ترميز الموجهات أو التعليمات بشكل ثابت، استخدم API عرض الموجهات من Portkey لجلب وتطبيق موجهاتك المُصدَرة ديناميكياً.
|
||||
|
||||
<Frame caption="إدارة الموجهات في مكتبة موجهات Portkey">
|
||||

|
||||
</Frame>
|
||||
|
||||
<Tabs>
|
||||
<Tab title="ساحة تجربة الموجهات">
|
||||
ساحة تجربة الموجهات هي مكان لمقارنة واختبار ونشر الموجهات المثالية لتطبيق الذكاء الاصطناعي الخاص بك. هي المكان الذي تجرّب فيه نماذج مختلفة وتختبر المتغيرات وتقارن المخرجات وتحسّن استراتيجية هندسة الموجهات قبل النشر في الإنتاج. تتيح لك:
|
||||
|
||||
1. تطوير الموجهات بشكل تكراري قبل استخدامها في وكلائك
|
||||
2. اختبار الموجهات مع متغيرات ونماذج مختلفة
|
||||
3. مقارنة المخرجات بين إصدارات موجهات مختلفة
|
||||
4. التعاون مع أعضاء الفريق في تطوير الموجهات
|
||||
|
||||
تجعل هذه البيئة المرئية من الأسهل صياغة موجهات فعالة لكل خطوة في سير عمل وكلاء CrewAI.
|
||||
</Tab>
|
||||
|
||||
<Tab title="استخدام قوالب الموجهات">
|
||||
يسترجع API عرض الموجهات قوالب الموجهات الخاصة بك مع جميع المعاملات المُعدّة:
|
||||
|
||||
```python
|
||||
from crewai import Agent, LLM
|
||||
from portkey_ai import createHeaders, PORTKEY_GATEWAY_URL, Portkey
|
||||
|
||||
# Initialize Portkey admin client
|
||||
portkey_admin = Portkey(api_key="YOUR_PORTKEY_API_KEY")
|
||||
|
||||
# Retrieve prompt using the render API
|
||||
prompt_data = portkey_client.prompts.render(
|
||||
prompt_id="YOUR_PROMPT_ID",
|
||||
variables={
|
||||
"agent_role": "Senior Research Scientist",
|
||||
}
|
||||
)
|
||||
|
||||
backstory_agent_prompt=prompt_data.data.messages[0]["content"]
|
||||
|
||||
|
||||
# Set up LLM with Portkey integration
|
||||
portkey_llm = LLM(
|
||||
model="gpt-4o",
|
||||
base_url=PORTKEY_GATEWAY_URL,
|
||||
api_key="dummy",
|
||||
extra_headers=createHeaders(
|
||||
api_key="YOUR_PORTKEY_API_KEY",
|
||||
virtual_key="YOUR_OPENAI_VIRTUAL_KEY"
|
||||
)
|
||||
)
|
||||
|
||||
# Create agent using the rendered prompt
|
||||
researcher = Agent(
|
||||
role="Senior Research Scientist",
|
||||
goal="Discover groundbreaking insights about the assigned topic",
|
||||
backstory=backstory_agent, # Use the rendered prompt
|
||||
verbose=True,
|
||||
llm=portkey_llm
|
||||
)
|
||||
```
|
||||
</Tab>
|
||||
|
||||
<Tab title="إصدارات الموجهات">
|
||||
يمكنك:
|
||||
- إنشاء إصدارات متعددة من نفس الموجه
|
||||
- مقارنة الأداء بين الإصدارات
|
||||
- الرجوع إلى إصدارات سابقة عند الحاجة
|
||||
- تحديد الإصدار المراد استخدامه في كودك:
|
||||
|
||||
```python
|
||||
# Use a specific prompt version
|
||||
prompt_data = portkey_admin.prompts.render(
|
||||
prompt_id="YOUR_PROMPT_ID@version_number",
|
||||
variables={
|
||||
"agent_role": "Senior Research Scientist",
|
||||
"agent_goal": "Discover groundbreaking insights"
|
||||
}
|
||||
)
|
||||
```
|
||||
</Tab>
|
||||
|
||||
<Tab title="قوالب Mustache للمتغيرات">
|
||||
تستخدم موجهات Portkey قوالب بنمط Mustache لاستبدال المتغيرات بسهولة:
|
||||
|
||||
```
|
||||
You are a {{agent_role}} with expertise in {{domain}}.
|
||||
|
||||
Your mission is to {{agent_goal}} by leveraging your knowledge
|
||||
and experience in the field.
|
||||
|
||||
Always maintain a {{tone}} tone and focus on providing {{focus_area}}.
|
||||
```
|
||||
|
||||
عند العرض، ما عليك سوى تمرير المتغيرات:
|
||||
|
||||
```python
|
||||
prompt_data = portkey_admin.prompts.render(
|
||||
prompt_id="YOUR_PROMPT_ID",
|
||||
variables={
|
||||
"agent_role": "Senior Research Scientist",
|
||||
"domain": "artificial intelligence",
|
||||
"agent_goal": "discover groundbreaking insights",
|
||||
"tone": "professional",
|
||||
"focus_area": "practical applications"
|
||||
}
|
||||
)
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
<Card title="استوديو هندسة الموجهات" icon="wand-magic-sparkles" href="https://portkey.ai/docs/product/prompt-library">
|
||||
تعرّف على المزيد حول ميزات إدارة الموجهات في Portkey
|
||||
</Card>
|
||||
|
||||
### 4. حواجز الحماية لطواقم آمنة
|
||||
|
||||
تضمن حواجز الحماية أن وكلاء CrewAI يعملون بأمان ويستجيبون بشكل مناسب في جميع الحالات.
|
||||
|
||||
**لماذا تستخدم حواجز الحماية؟**
|
||||
|
||||
قد يواجه وكلاء CrewAI أوضاع فشل مختلفة:
|
||||
- توليد محتوى ضار أو غير مناسب
|
||||
- تسريب معلومات حساسة مثل المعلومات الشخصية
|
||||
- توهم معلومات غير صحيحة
|
||||
- توليد مخرجات بتنسيقات غير صحيحة
|
||||
|
||||
تضيف حواجز حماية Portkey حماية لكل من المدخلات والمخرجات.
|
||||
|
||||
**تطبيق حواجز الحماية**
|
||||
|
||||
```python
|
||||
from crewai import Agent, LLM
|
||||
from portkey_ai import createHeaders, PORTKEY_GATEWAY_URL
|
||||
|
||||
# Create LLM with guardrails
|
||||
portkey_llm = LLM(
|
||||
model="gpt-4o",
|
||||
base_url=PORTKEY_GATEWAY_URL,
|
||||
api_key="dummy",
|
||||
extra_headers=createHeaders(
|
||||
api_key="YOUR_PORTKEY_API_KEY",
|
||||
virtual_key="YOUR_OPENAI_VIRTUAL_KEY",
|
||||
config={
|
||||
"input_guardrails": ["guardrails-id-xxx", "guardrails-id-yyy"],
|
||||
"output_guardrails": ["guardrails-id-zzz"]
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
# Create agent with guardrailed LLM
|
||||
researcher = Agent(
|
||||
role="Senior Research Scientist",
|
||||
goal="Discover groundbreaking insights about the assigned topic",
|
||||
backstory="You are an expert researcher with deep domain knowledge.",
|
||||
verbose=True,
|
||||
llm=portkey_llm
|
||||
)
|
||||
```
|
||||
|
||||
يمكن لحواجز حماية Portkey:
|
||||
- كشف وحذف المعلومات الشخصية في المدخلات والمخرجات
|
||||
- تصفية المحتوى الضار أو غير المناسب
|
||||
- التحقق من تنسيقات الاستجابة وفقاً للمخططات
|
||||
- التحقق من التوهمات مقابل الحقائق المرجعية
|
||||
- تطبيق منطق الأعمال والقواعد المخصصة
|
||||
|
||||
<Card title="تعرّف على المزيد حول حواجز الحماية" icon="shield-check" href="https://portkey.ai/docs/product/guardrails">
|
||||
استكشف ميزات حواجز الحماية في Portkey لتعزيز سلامة الوكلاء
|
||||
</Card>
|
||||
|
||||
### 5. تتبع المستخدمين باستخدام البيانات الوصفية
|
||||
|
||||
تتبع المستخدمين الفرديين عبر وكلاء CrewAI باستخدام نظام البيانات الوصفية في Portkey.
|
||||
|
||||
**ما هي البيانات الوصفية في Portkey؟**
|
||||
|
||||
تتيح لك البيانات الوصفية ربط بيانات مخصصة بكل طلب، مما يمكّن التصفية والتقسيم والتحليلات. الحقل الخاص `_user` مصمم خصيصاً لتتبع المستخدمين.
|
||||
|
||||
```python
|
||||
from crewai import Agent, LLM
|
||||
from portkey_ai import createHeaders, PORTKEY_GATEWAY_URL
|
||||
|
||||
# Configure LLM with user tracking
|
||||
portkey_llm = LLM(
|
||||
model="gpt-4o",
|
||||
base_url=PORTKEY_GATEWAY_URL,
|
||||
api_key="dummy",
|
||||
extra_headers=createHeaders(
|
||||
api_key="YOUR_PORTKEY_API_KEY",
|
||||
virtual_key="YOUR_OPENAI_VIRTUAL_KEY",
|
||||
metadata={
|
||||
"_user": "user_123", # Special _user field for user analytics
|
||||
"user_tier": "premium",
|
||||
"user_company": "Acme Corp",
|
||||
"session_id": "abc-123"
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
# Create agent with tracked LLM
|
||||
researcher = Agent(
|
||||
role="Senior Research Scientist",
|
||||
goal="Discover groundbreaking insights about the assigned topic",
|
||||
backstory="You are an expert researcher with deep domain knowledge.",
|
||||
verbose=True,
|
||||
llm=portkey_llm
|
||||
)
|
||||
```
|
||||
|
||||
**تصفية التحليلات حسب المستخدم**
|
||||
|
||||
مع وجود البيانات الوصفية، يمكنك تصفية التحليلات حسب المستخدم وتحليل مقاييس الأداء على أساس كل مستخدم:
|
||||
|
||||
<Frame caption="تصفية التحليلات حسب المستخدم">
|
||||
<img src="https://raw.githubusercontent.com/siddharthsambharia-portkey/Portkey-Product-Images/refs/heads/main/Metadata%20Filters%20from%20CrewAI.png"/>
|
||||
</Frame>
|
||||
|
||||
يمكّن هذا:
|
||||
- تتبع التكاليف والميزانية لكل مستخدم
|
||||
- تحليلات مستخدم مخصصة
|
||||
- مقاييس على مستوى الفريق أو المؤسسة
|
||||
- مراقبة خاصة بالبيئة (التجريب مقابل الإنتاج)
|
||||
|
||||
<Card title="تعرّف على المزيد حول البيانات الوصفية" icon="tags" href="https://portkey.ai/docs/product/observability/metadata">
|
||||
استكشف كيفية استخدام البيانات الوصفية المخصصة لتعزيز تحليلاتك
|
||||
</Card>
|
||||
|
||||
### 6. التخزين المؤقت لطواقم فعالة
|
||||
|
||||
طبّق التخزين المؤقت لجعل وكلاء CrewAI أكثر كفاءة وفعالية من حيث التكلفة:
|
||||
|
||||
<Tabs>
|
||||
<Tab title="التخزين المؤقت البسيط">
|
||||
```python
|
||||
from crewai import Agent, LLM
|
||||
from portkey_ai import createHeaders, PORTKEY_GATEWAY_URL
|
||||
|
||||
# Configure LLM with simple caching
|
||||
portkey_llm = LLM(
|
||||
model="gpt-4o",
|
||||
base_url=PORTKEY_GATEWAY_URL,
|
||||
api_key="dummy",
|
||||
extra_headers=createHeaders(
|
||||
api_key="YOUR_PORTKEY_API_KEY",
|
||||
virtual_key="YOUR_OPENAI_VIRTUAL_KEY",
|
||||
config={
|
||||
"cache": {
|
||||
"mode": "simple"
|
||||
}
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
# Create agent with cached LLM
|
||||
researcher = Agent(
|
||||
role="Senior Research Scientist",
|
||||
goal="Discover groundbreaking insights about the assigned topic",
|
||||
backstory="You are an expert researcher with deep domain knowledge.",
|
||||
verbose=True,
|
||||
llm=portkey_llm
|
||||
)
|
||||
```
|
||||
|
||||
يقوم التخزين المؤقت البسيط بمطابقة دقيقة لموجهات الإدخال، مع تخزين الطلبات المتطابقة لتجنب عمليات تنفيذ النموذج الزائدة.
|
||||
</Tab>
|
||||
|
||||
<Tab title="التخزين المؤقت الدلالي">
|
||||
```python
|
||||
from crewai import Agent, LLM
|
||||
from portkey_ai import createHeaders, PORTKEY_GATEWAY_URL
|
||||
|
||||
# Configure LLM with semantic caching
|
||||
portkey_llm = LLM(
|
||||
model="gpt-4o",
|
||||
base_url=PORTKEY_GATEWAY_URL,
|
||||
api_key="dummy",
|
||||
extra_headers=createHeaders(
|
||||
api_key="YOUR_PORTKEY_API_KEY",
|
||||
virtual_key="YOUR_OPENAI_VIRTUAL_KEY",
|
||||
config={
|
||||
"cache": {
|
||||
"mode": "semantic"
|
||||
}
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
# Create agent with semantically cached LLM
|
||||
researcher = Agent(
|
||||
role="Senior Research Scientist",
|
||||
goal="Discover groundbreaking insights about the assigned topic",
|
||||
backstory="You are an expert researcher with deep domain knowledge.",
|
||||
verbose=True,
|
||||
llm=portkey_llm
|
||||
)
|
||||
```
|
||||
|
||||
يأخذ التخزين المؤقت الدلالي في الاعتبار التشابه السياقي بين طلبات الإدخال، مع تخزين الاستجابات للمدخلات المتشابهة دلالياً.
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
### 7. التوافق بين النماذج
|
||||
|
||||
يدعم CrewAI مزودي LLM متعددين، ويوسّع Portkey هذه القدرة من خلال توفير الوصول إلى أكثر من 200 نموذج LLM عبر واجهة موحدة. يمكنك التبديل بسهولة بين نماذج مختلفة دون تغيير منطق الوكيل الأساسي:
|
||||
|
||||
```python
|
||||
from crewai import Agent, LLM
|
||||
from portkey_ai import createHeaders, PORTKEY_GATEWAY_URL
|
||||
|
||||
# Set up LLMs with different providers
|
||||
openai_llm = LLM(
|
||||
model="gpt-4o",
|
||||
base_url=PORTKEY_GATEWAY_URL,
|
||||
api_key="dummy",
|
||||
extra_headers=createHeaders(
|
||||
api_key="YOUR_PORTKEY_API_KEY",
|
||||
virtual_key="YOUR_OPENAI_VIRTUAL_KEY"
|
||||
)
|
||||
)
|
||||
|
||||
anthropic_llm = LLM(
|
||||
model="claude-3-5-sonnet-latest",
|
||||
max_tokens=1000,
|
||||
base_url=PORTKEY_GATEWAY_URL,
|
||||
api_key="dummy",
|
||||
extra_headers=createHeaders(
|
||||
api_key="YOUR_PORTKEY_API_KEY",
|
||||
virtual_key="YOUR_ANTHROPIC_VIRTUAL_KEY"
|
||||
)
|
||||
)
|
||||
|
||||
# Choose which LLM to use for each agent based on your needs
|
||||
researcher = Agent(
|
||||
role="Senior Research Scientist",
|
||||
goal="Discover groundbreaking insights about the assigned topic",
|
||||
backstory="You are an expert researcher with deep domain knowledge.",
|
||||
verbose=True,
|
||||
llm=openai_llm # Use anthropic_llm for Anthropic
|
||||
)
|
||||
```
|
||||
|
||||
يوفر Portkey الوصول إلى نماذج LLM من مزودين بما في ذلك:
|
||||
|
||||
- OpenAI (GPT-4o، GPT-4 Turbo، إلخ)
|
||||
- Anthropic (Claude 3.5 Sonnet، Claude 3 Opus، إلخ)
|
||||
- Mistral AI (Mistral Large، Mistral Medium، إلخ)
|
||||
- Google Vertex AI (Gemini 1.5 Pro، إلخ)
|
||||
- Cohere (Command، Command-R، إلخ)
|
||||
- AWS Bedrock (Claude، Titan، إلخ)
|
||||
- النماذج المحلية/الخاصة
|
||||
|
||||
<Card title="المزودون المدعومون" icon="server" href="https://portkey.ai/docs/integrations/llms">
|
||||
اطلع على القائمة الكاملة لمزودي LLM المدعومين من Portkey
|
||||
</Card>
|
||||
|
||||
## إعداد حوكمة المؤسسة لـ CrewAI
|
||||
|
||||
**لماذا حوكمة المؤسسة؟**
|
||||
إذا كنت تستخدم CrewAI داخل مؤسستك، فأنت بحاجة إلى مراعاة عدة جوانب حوكمة:
|
||||
- **إدارة التكاليف**: التحكم في إنفاق الذكاء الاصطناعي وتتبعه عبر الفرق
|
||||
- **التحكم في الوصول**: إدارة الفرق التي يمكنها استخدام نماذج محددة
|
||||
- **تحليلات الاستخدام**: فهم كيفية استخدام الذكاء الاصطناعي عبر المؤسسة
|
||||
- **الأمان والامتثال**: الحفاظ على معايير أمان المؤسسة
|
||||
- **الموثوقية**: ضمان خدمة متسقة لجميع المستخدمين
|
||||
|
||||
يضيف Portkey طبقة حوكمة شاملة لتلبية احتياجات المؤسسة هذه. لننفّذ هذه الضوابط خطوة بخطوة.
|
||||
|
||||
<Steps>
|
||||
<Step title="إنشاء مفتاح افتراضي">
|
||||
المفاتيح الافتراضية هي طريقة Portkey الآمنة لإدارة مفاتيح API لمزودي LLM. توفر ضوابط أساسية مثل:
|
||||
- حدود الميزانية لاستخدام API
|
||||
- إمكانيات تحديد المعدل
|
||||
- تخزين آمن لمفاتيح API
|
||||
|
||||
لإنشاء مفتاح افتراضي:
|
||||
انتقل إلى [المفاتيح الافتراضية](https://app.portkey.ai/virtual-keys) في تطبيق Portkey. احفظ وانسخ معرّف المفتاح الافتراضي
|
||||
|
||||
<Frame>
|
||||
<img src="https://raw.githubusercontent.com/siddharthsambharia-portkey/Portkey-Product-Images/refs/heads/main/Virtual%20Key%20from%20Portkey%20Docs.png" width="500"/>
|
||||
</Frame>
|
||||
|
||||
<Note>
|
||||
احفظ معرّف المفتاح الافتراضي - ستحتاجه في الخطوة التالية.
|
||||
</Note>
|
||||
</Step>
|
||||
|
||||
<Step title="إنشاء تكوين افتراضي">
|
||||
تحدد التكوينات في Portkey كيفية توجيه طلباتك، مع ميزات مثل التوجيه المتقدم والاحتياط وإعادة المحاولة.
|
||||
|
||||
لإنشاء تكوينك:
|
||||
1. انتقل إلى [التكوينات](https://app.portkey.ai/configs) في لوحة تحكم Portkey
|
||||
2. أنشئ تكويناً جديداً بـ:
|
||||
```json
|
||||
{
|
||||
"virtual_key": "YOUR_VIRTUAL_KEY_FROM_STEP1",
|
||||
"override_params": {
|
||||
"model": "gpt-4o" // Your preferred model name
|
||||
}
|
||||
}
|
||||
```
|
||||
3. احفظ ولاحظ اسم التكوين للخطوة التالية
|
||||
|
||||
<Frame>
|
||||
<img src="https://raw.githubusercontent.com/siddharthsambharia-portkey/Portkey-Product-Images/refs/heads/main/CrewAI%20Portkey%20Docs%20Config.png" width="500"/>
|
||||
|
||||
</Frame>
|
||||
</Step>
|
||||
|
||||
<Step title="إعداد مفتاح API لـ Portkey">
|
||||
الآن أنشئ مفتاح API لـ Portkey وأرفق التكوين الذي أنشأته في الخطوة 2:
|
||||
|
||||
1. انتقل إلى [مفاتيح API](https://app.portkey.ai/api-keys) في Portkey وأنشئ مفتاح API جديد
|
||||
2. حدد تكوينك من `الخطوة 2`
|
||||
3. أنشئ واحفظ مفتاح API الخاص بك
|
||||
|
||||
<Frame>
|
||||
<img src="https://raw.githubusercontent.com/siddharthsambharia-portkey/Portkey-Product-Images/refs/heads/main/CrewAI%20API%20Key.png" width="500"/>
|
||||
|
||||
</Frame>
|
||||
</Step>
|
||||
|
||||
<Step title="الاتصال بـ CrewAI">
|
||||
بعد إعداد مفتاح API لـ Portkey مع التكوين المرفق، اربطه بوكلاء CrewAI:
|
||||
|
||||
```python
|
||||
from crewai import Agent, LLM
|
||||
from portkey_ai import PORTKEY_GATEWAY_URL
|
||||
|
||||
# Configure LLM with your API key
|
||||
portkey_llm = LLM(
|
||||
model="gpt-4o",
|
||||
base_url=PORTKEY_GATEWAY_URL,
|
||||
api_key="YOUR_PORTKEY_API_KEY"
|
||||
)
|
||||
|
||||
# Create agent with Portkey-enabled LLM
|
||||
researcher = Agent(
|
||||
role="Senior Research Scientist",
|
||||
goal="Discover groundbreaking insights about the assigned topic",
|
||||
backstory="You are an expert researcher with deep domain knowledge.",
|
||||
verbose=True,
|
||||
llm=portkey_llm
|
||||
)
|
||||
```
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="الخطوة 1: تطبيق ضوابط الميزانية وحدود المعدل">
|
||||
### الخطوة 1: تطبيق ضوابط الميزانية وحدود المعدل
|
||||
|
||||
تمكّن المفاتيح الافتراضية التحكم الدقيق في الوصول إلى LLM على مستوى الفريق/القسم. يساعدك هذا على:
|
||||
- إعداد [حدود الميزانية](https://portkey.ai/docs/product/ai-gateway/virtual-keys/budget-limits)
|
||||
- منع الارتفاعات غير المتوقعة في الاستخدام باستخدام حدود المعدل
|
||||
- تتبع إنفاق الأقسام
|
||||
|
||||
#### إعداد ضوابط خاصة بالقسم:
|
||||
1. انتقل إلى [المفاتيح الافتراضية](https://app.portkey.ai/virtual-keys) في لوحة تحكم Portkey
|
||||
2. أنشئ مفتاحاً افتراضياً جديداً لكل قسم مع حدود ميزانية ومعدل
|
||||
3. هيئ الحدود الخاصة بكل قسم
|
||||
|
||||
<Frame>
|
||||
<img src="https://raw.githubusercontent.com/siddharthsambharia-portkey/Portkey-Product-Images/refs/heads/main/Virtual%20Key%20from%20Portkey%20Docs.png" width="500"/>
|
||||
</Frame>
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="الخطوة 2: تحديد قواعد الوصول للنماذج">
|
||||
### الخطوة 2: تحديد قواعد الوصول للنماذج
|
||||
|
||||
مع توسع استخدام الذكاء الاصطناعي، يصبح التحكم في الفرق التي يمكنها الوصول إلى نماذج محددة أمراً بالغ الأهمية. توفر تكوينات Portkey طبقة التحكم هذه مع ميزات مثل:
|
||||
|
||||
#### ميزات التحكم في الوصول:
|
||||
- **قيود النماذج**: تقييد الوصول إلى نماذج محددة
|
||||
- **حماية البيانات**: تطبيق حواجز حماية للبيانات الحساسة
|
||||
- **ضوابط الموثوقية**: إضافة احتياط ومنطق إعادة المحاولة
|
||||
|
||||
#### مثال على التكوين:
|
||||
إليك تكويناً أساسياً لتوجيه الطلبات إلى OpenAI، تحديداً باستخدام GPT-4o:
|
||||
|
||||
```json
|
||||
{
|
||||
"strategy": {
|
||||
"mode": "single"
|
||||
},
|
||||
"targets": [
|
||||
{
|
||||
"virtual_key": "YOUR_OPENAI_VIRTUAL_KEY",
|
||||
"override_params": {
|
||||
"model": "gpt-4o"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
أنشئ تكوينك في [صفحة التكوينات](https://app.portkey.ai/configs) في لوحة تحكم Portkey.
|
||||
|
||||
<Note>
|
||||
يمكن تحديث التكوينات في أي وقت لضبط الضوابط دون التأثير على التطبيقات قيد التشغيل.
|
||||
</Note>
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="الخطوة 3: تطبيق ضوابط الوصول">
|
||||
### الخطوة 3: تطبيق ضوابط الوصول
|
||||
|
||||
أنشئ مفاتيح API خاصة بالمستخدم تقوم تلقائياً بـ:
|
||||
- تتبع الاستخدام لكل مستخدم/فريق بمساعدة المفاتيح الافتراضية
|
||||
- تطبيق التكوينات المناسبة لتوجيه الطلبات
|
||||
- جمع البيانات الوصفية ذات الصلة لتصفية السجلات
|
||||
- فرض أذونات الوصول
|
||||
|
||||
أنشئ مفاتيح API من خلال [تطبيق Portkey](https://app.portkey.ai/)
|
||||
|
||||
مثال باستخدام Python SDK:
|
||||
```python
|
||||
from portkey_ai import Portkey
|
||||
|
||||
portkey = Portkey(api_key="YOUR_ADMIN_API_KEY")
|
||||
|
||||
api_key = portkey.api_keys.create(
|
||||
name="engineering-team",
|
||||
type="organisation",
|
||||
workspace_id="YOUR_WORKSPACE_ID",
|
||||
defaults={
|
||||
"config_id": "your-config-id",
|
||||
"metadata": {
|
||||
"environment": "production",
|
||||
"department": "engineering"
|
||||
}
|
||||
},
|
||||
scopes=["logs.view", "configs.read"]
|
||||
)
|
||||
```
|
||||
|
||||
للحصول على تعليمات تفصيلية لإدارة المفاتيح، راجع [وثائق Portkey](https://portkey.ai/docs).
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="الخطوة 4: النشر والمراقبة">
|
||||
### الخطوة 4: النشر والمراقبة
|
||||
بعد توزيع مفاتيح API على أعضاء فريقك، يصبح إعداد CrewAI الجاهز للمؤسسة جاهزاً للعمل. يمكن لكل عضو في الفريق الآن استخدام مفاتيح API المخصصة له مع مستويات وصول وضوابط ميزانية مناسبة.
|
||||
|
||||
راقب الاستخدام في لوحة تحكم Portkey:
|
||||
- تتبع التكاليف حسب القسم
|
||||
- أنماط استخدام النماذج
|
||||
- حجم الطلبات
|
||||
- معدلات الأخطاء
|
||||
</Accordion>
|
||||
|
||||
</AccordionGroup>
|
||||
|
||||
<Note>
|
||||
### ميزات المؤسسة متاحة الآن
|
||||
**تكامل CrewAI الخاص بك يتضمن الآن:**
|
||||
- ضوابط ميزانية للأقسام
|
||||
- حوكمة الوصول للنماذج
|
||||
- تتبع الاستخدام والإسناد
|
||||
- حواجز أمان
|
||||
- ميزات الموثوقية
|
||||
</Note>
|
||||
|
||||
## الأسئلة الشائعة
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="كيف يعزز Portkey إمكانيات CrewAI؟">
|
||||
يضيف Portkey جاهزية الإنتاج لـ CrewAI من خلال مراقبة شاملة (تتبعات وسجلات ومقاييس) وميزات موثوقية (احتياط وإعادة محاولة وتخزين مؤقت) والوصول إلى أكثر من 200 نموذج LLM عبر واجهة موحدة. هذا يسهّل تصحيح الأخطاء وتحسين وتوسيع تطبيقات الوكلاء.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="هل يمكنني استخدام Portkey مع تطبيقات CrewAI الحالية؟">
|
||||
نعم! يتكامل Portkey بسلاسة مع تطبيقات CrewAI الحالية. ما عليك سوى تحديث كود تكوين LLM بالنسخة المُمكّنة من Portkey. يبقى باقي كود الوكيل والطاقم دون تغيير.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="هل يعمل Portkey مع جميع ميزات CrewAI؟">
|
||||
يدعم Portkey جميع ميزات CrewAI، بما في ذلك الوكلاء والأدوات وسير العمل مع تدخل بشري وجميع أنواع عمليات المهام (تسلسلي وهرمي وغيرها). يضيف المراقبة والموثوقية دون تقييد أي من وظائف الإطار.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="هل يمكنني تتبع الاستخدام عبر وكلاء متعددين في طاقم؟">
|
||||
نعم، يتيح لك Portkey استخدام `trace_id` متسق عبر وكلاء متعددين في طاقم لتتبع سير العمل بالكامل. هذا مفيد بشكل خاص للطواقم المعقدة حيث تريد فهم مسار التنفيذ الكامل عبر وكلاء متعددين.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="كيف أصفّي السجلات والتتبعات لعمليات تشغيل طاقم محددة؟">
|
||||
يتيح لك Portkey إضافة بيانات وصفية مخصصة لتكوين LLM، والتي يمكنك استخدامها للتصفية. أضف حقولاً مثل `crew_name` أو `crew_type` أو `session_id` للعثور على عمليات تنفيذ طاقم محددة وتحليلها بسهولة.
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="هل يمكنني استخدام مفاتيح API الخاصة بي مع Portkey؟">
|
||||
نعم! يستخدم Portkey مفاتيح API الخاصة بك لمزودي LLM المختلفين. يخزنها بشكل آمن كمفاتيح افتراضية، مما يتيح لك إدارة وتدوير المفاتيح بسهولة دون تغيير كودك.
|
||||
</Accordion>
|
||||
|
||||
</AccordionGroup>
|
||||
|
||||
## الموارد
|
||||
|
||||
<CardGroup cols="3">
|
||||
<Card title="وثائق CrewAI" icon="book" href="https://docs.crewai.com/">
|
||||
<p>وثائق CrewAI الرسمية</p>
|
||||
</Card>
|
||||
<Card title="احجز عرضاً توضيحياً" icon="calendar" href="https://calendly.com/portkey-ai">
|
||||
<p>احصل على إرشادات مخصصة لتنفيذ هذا التكامل</p>
|
||||
</Card>
|
||||
</CardGroup>
|
||||
214
docs/edge/ar/observability/tracing.mdx
Normal file
214
docs/edge/ar/observability/tracing.mdx
Normal file
@@ -0,0 +1,214 @@
|
||||
---
|
||||
title: تتبع CrewAI
|
||||
description: التتبع المدمج لطواقم وتدفقات CrewAI مع منصة CrewAI AMP
|
||||
icon: magnifying-glass-chart
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# التتبع المدمج في CrewAI
|
||||
|
||||
يوفر CrewAI إمكانيات تتبع مدمجة تتيح لك مراقبة وتصحيح أخطاء الطواقم والتدفقات في الوقت الفعلي. يوضح هذا الدليل كيفية تفعيل التتبع لكل من **الطواقم** و**التدفقات** باستخدام منصة المراقبة المتكاملة في CrewAI.
|
||||
|
||||
> **ما هو تتبع CrewAI؟** يوفر التتبع المدمج في CrewAI مراقبة شاملة لوكلاء الذكاء الاصطناعي، بما في ذلك قرارات الوكلاء وجداول تنفيذ المهام واستخدام الأدوات واستدعاءات LLM - كل ذلك متاح عبر [منصة CrewAI AMP](https://app.crewai.com).
|
||||
|
||||

|
||||
|
||||
## المتطلبات الأساسية
|
||||
|
||||
قبل أن تتمكن من استخدام تتبع CrewAI، تحتاج إلى:
|
||||
|
||||
1. **حساب CrewAI AMP**: سجّل للحصول على حساب مجاني على [app.crewai.com](https://app.crewai.com)
|
||||
2. **مصادقة CLI**: استخدم CLI الخاص بـ CrewAI لمصادقة بيئتك المحلية
|
||||
|
||||
```bash
|
||||
crewai login
|
||||
```
|
||||
|
||||
## تعليمات الإعداد
|
||||
|
||||
### الخطوة 1: إنشاء حساب CrewAI AMP
|
||||
|
||||
قم بزيارة [app.crewai.com](https://app.crewai.com) وأنشئ حسابك المجاني. سيمنحك هذا الوصول إلى منصة CrewAI AMP حيث يمكنك عرض التتبعات والمقاييس وإدارة طواقمك.
|
||||
|
||||
### الخطوة 2: تثبيت CLI الخاص بـ CrewAI والمصادقة
|
||||
|
||||
إذا لم تكن قد فعلت ذلك بالفعل، ثبّت CrewAI مع أدوات CLI:
|
||||
|
||||
```bash
|
||||
uv add 'crewai[tools]'
|
||||
```
|
||||
|
||||
ثم صادق على CLI مع حساب CrewAI AMP الخاص بك:
|
||||
|
||||
```bash
|
||||
crewai login
|
||||
```
|
||||
|
||||
سيقوم هذا الأمر بـ:
|
||||
|
||||
1. فتح متصفحك إلى صفحة المصادقة
|
||||
2. طلب إدخال رمز الجهاز
|
||||
3. مصادقة بيئتك المحلية مع حساب CrewAI AMP
|
||||
4. تفعيل إمكانيات التتبع لتطويرك المحلي
|
||||
|
||||
### الخطوة 3: تفعيل التتبع في طاقمك
|
||||
|
||||
يمكنك تفعيل التتبع لطاقمك عبر تعيين معامل `tracing` إلى `True`:
|
||||
|
||||
```python
|
||||
from crewai import Agent, Crew, Process, Task
|
||||
from crewai_tools import SerperDevTool
|
||||
|
||||
# Define your agents
|
||||
researcher = Agent(
|
||||
role="Senior Research Analyst",
|
||||
goal="Uncover cutting-edge developments in AI and data science",
|
||||
backstory="""You work at a leading tech think tank.
|
||||
Your expertise lies in identifying emerging trends.
|
||||
You have a knack for dissecting complex data and presenting actionable insights.""",
|
||||
verbose=True,
|
||||
tools=[SerperDevTool()],
|
||||
)
|
||||
|
||||
writer = Agent(
|
||||
role="Tech Content Strategist",
|
||||
goal="Craft compelling content on tech advancements",
|
||||
backstory="""You are a renowned Content Strategist, known for your insightful and engaging articles.
|
||||
You transform complex concepts into compelling narratives.""",
|
||||
verbose=True,
|
||||
)
|
||||
|
||||
# Create tasks for your agents
|
||||
research_task = Task(
|
||||
description="""Conduct a comprehensive analysis of the latest advancements in AI in 2024.
|
||||
Identify key trends, breakthrough technologies, and potential industry impacts.""",
|
||||
expected_output="Full analysis report in bullet points",
|
||||
agent=researcher,
|
||||
)
|
||||
|
||||
writing_task = Task(
|
||||
description="""Using the insights provided, develop an engaging blog
|
||||
post that highlights the most significant AI advancements.
|
||||
Your post should be informative yet accessible, catering to a tech-savvy audience.""",
|
||||
expected_output="Full blog post of at least 4 paragraphs",
|
||||
agent=writer,
|
||||
)
|
||||
|
||||
# Enable tracing in your crew
|
||||
crew = Crew(
|
||||
agents=[researcher, writer],
|
||||
tasks=[research_task, writing_task],
|
||||
process=Process.sequential,
|
||||
tracing=True, # Enable built-in tracing
|
||||
verbose=True
|
||||
)
|
||||
|
||||
# Execute your crew
|
||||
result = crew.kickoff()
|
||||
```
|
||||
|
||||
### الخطوة 4: تفعيل التتبع في التدفق
|
||||
|
||||
بالمثل، يمكنك تفعيل التتبع لتدفقات CrewAI:
|
||||
|
||||
```python
|
||||
from crewai.flow.flow import Flow, listen, start
|
||||
from pydantic import BaseModel
|
||||
|
||||
class ExampleState(BaseModel):
|
||||
counter: int = 0
|
||||
message: str = ""
|
||||
|
||||
class ExampleFlow(Flow[ExampleState]):
|
||||
def __init__(self):
|
||||
super().__init__(tracing=True) # Enable tracing for the flow
|
||||
|
||||
@start()
|
||||
def first_method(self):
|
||||
print("Starting the flow")
|
||||
self.state.counter = 1
|
||||
self.state.message = "Flow started"
|
||||
return "continue"
|
||||
|
||||
@listen("continue")
|
||||
def second_method(self):
|
||||
print("Continuing the flow")
|
||||
self.state.counter += 1
|
||||
self.state.message = "Flow continued"
|
||||
return "finish"
|
||||
|
||||
@listen("finish")
|
||||
def final_method(self):
|
||||
print("Finishing the flow")
|
||||
self.state.counter += 1
|
||||
self.state.message = "Flow completed"
|
||||
|
||||
# Create and run the flow with tracing enabled
|
||||
flow = ExampleFlow(tracing=True)
|
||||
result = flow.kickoff()
|
||||
```
|
||||
|
||||
### الخطوة 5: عرض التتبعات في لوحة تحكم CrewAI AMP
|
||||
|
||||
بعد تشغيل الطاقم أو التدفق، يمكنك عرض التتبعات التي أنشأها تطبيق CrewAI في لوحة تحكم CrewAI AMP. يجب أن ترى خطوات تفصيلية لتفاعلات الوكلاء واستخدامات الأدوات واستدعاءات LLM.
|
||||
ما عليك سوى النقر على الرابط أدناه لعرض التتبعات أو التوجه إلى علامة تبويب التتبعات في لوحة التحكم [هنا](https://app.crewai.com/crewai_plus/trace_batches)
|
||||

|
||||
|
||||
### البديل: إعداد متغير البيئة
|
||||
|
||||
يمكنك أيضاً تفعيل التتبع عالمياً عبر تعيين متغير بيئة:
|
||||
|
||||
```bash
|
||||
export CREWAI_TRACING_ENABLED=true
|
||||
```
|
||||
|
||||
أو إضافته إلى ملف `.env`:
|
||||
|
||||
```env
|
||||
CREWAI_TRACING_ENABLED=true
|
||||
```
|
||||
|
||||
عند تعيين متغير البيئة هذا، ستُفعّل جميع الطواقم والتدفقات التتبع تلقائياً، حتى بدون تعيين `tracing=True` صراحةً.
|
||||
|
||||
## عرض التتبعات
|
||||
|
||||
### الوصول إلى لوحة تحكم CrewAI AMP
|
||||
|
||||
1. قم بزيارة [app.crewai.com](https://app.crewai.com) وسجّل الدخول إلى حسابك
|
||||
2. انتقل إلى لوحة تحكم مشروعك
|
||||
3. انقر على علامة تبويب **التتبعات** لعرض تفاصيل التنفيذ
|
||||
|
||||
### ما ستراه في التتبعات
|
||||
|
||||
يوفر تتبع CrewAI رؤية شاملة لـ:
|
||||
|
||||
- **قرارات الوكلاء**: شاهد كيف يفكر الوكلاء في المهام ويتخذون القرارات
|
||||
- **جدول تنفيذ المهام**: تمثيل مرئي لتسلسلات المهام والتبعيات
|
||||
- **استخدام الأدوات**: مراقبة الأدوات المستدعاة ونتائجها
|
||||
- **استدعاءات LLM**: تتبع جميع تفاعلات نماذج اللغة، بما في ذلك الموجهات والاستجابات
|
||||
- **مقاييس الأداء**: أوقات التنفيذ واستخدام الرموز المميزة والتكاليف
|
||||
- **تتبع الأخطاء**: معلومات تفصيلية عن الأخطاء وتتبعات المكدس
|
||||
|
||||
### ميزات التتبع
|
||||
|
||||
- **جدول التنفيذ**: انقر عبر مراحل التنفيذ المختلفة
|
||||
- **سجلات تفصيلية**: الوصول إلى سجلات شاملة لتصحيح الأخطاء
|
||||
- **تحليلات الأداء**: حلّل أنماط التنفيذ وحسّن الأداء
|
||||
- **إمكانيات التصدير**: حمّل التتبعات لمزيد من التحليل
|
||||
|
||||
### مشكلات المصادقة
|
||||
|
||||
إذا واجهت مشاكل في المصادقة:
|
||||
|
||||
1. تأكد من تسجيل الدخول: `crewai login`
|
||||
2. تحقق من اتصال الإنترنت
|
||||
3. تحقق من حسابك على [app.crewai.com](https://app.crewai.com)
|
||||
|
||||
### التتبعات لا تظهر
|
||||
|
||||
إذا لم تظهر التتبعات في لوحة التحكم:
|
||||
|
||||
1. تأكد من تعيين `tracing=True` في الطاقم/التدفق
|
||||
2. تحقق من `CREWAI_TRACING_ENABLED=true` إذا كنت تستخدم متغيرات البيئة
|
||||
3. تأكد من المصادقة عبر `crewai login`
|
||||
4. تحقق من أن الطاقم/التدفق قيد التنفيذ فعلاً
|
||||
146
docs/edge/ar/observability/truefoundry.mdx
Normal file
146
docs/edge/ar/observability/truefoundry.mdx
Normal file
@@ -0,0 +1,146 @@
|
||||
---
|
||||
title: تكامل TrueFoundry
|
||||
icon: chart-line
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
توفر TrueFoundry [بوابة ذكاء اصطناعي](https://www.truefoundry.com/ai-gateway) جاهزة للمؤسسات يمكنها التكامل مع أطر العمل الوكيلية مثل CrewAI وتوفير الحوكمة والمراقبة لتطبيقات الذكاء الاصطناعي. تعمل بوابة TrueFoundry AI كواجهة موحدة للوصول إلى LLM، وتوفر:
|
||||
|
||||
- **وصول موحد لـ API**: الاتصال بأكثر من 250 نموذج LLM (OpenAI وClaude وGemini وGroq وMistral) عبر API واحد
|
||||
- **زمن استجابة منخفض**: زمن استجابة داخلي أقل من 3 مللي ثانية مع توجيه ذكي وموازنة أحمال
|
||||
- **أمان المؤسسة**: امتثال SOC 2 وHIPAA وGDPR مع RBAC وتسجيل المراجعة
|
||||
- **إدارة الحصص والتكاليف**: حصص قائمة على الرموز المميزة وتحديد المعدل وتتبع استخدام شامل
|
||||
- **المراقبة**: تسجيل كامل للطلبات/الاستجابات ومقاييس وتتبعات مع احتفاظ قابل للتخصيص
|
||||
|
||||
## كيف يتكامل TrueFoundry مع CrewAI
|
||||
|
||||
|
||||
### التثبيت والإعداد
|
||||
|
||||
<Steps>
|
||||
<Step title="تثبيت CrewAI">
|
||||
```bash
|
||||
pip install crewai
|
||||
```
|
||||
</Step>
|
||||
|
||||
<Step title="الحصول على رمز وصول TrueFoundry">
|
||||
1. سجّل في [حساب TrueFoundry](https://www.truefoundry.com/register)
|
||||
2. اتبع الخطوات هنا في [البدء السريع](https://docs.truefoundry.com/gateway/quick-start)
|
||||
</Step>
|
||||
|
||||
<Step title="إعداد CrewAI مع TrueFoundry">
|
||||

|
||||
|
||||
```python
|
||||
from crewai import LLM
|
||||
|
||||
# Create an LLM instance with TrueFoundry AI Gateway
|
||||
truefoundry_llm = LLM(
|
||||
model="openai-main/gpt-4o", # Similarly, you can call any model from any provider
|
||||
base_url="your_truefoundry_gateway_base_url",
|
||||
api_key="your_truefoundry_api_key"
|
||||
)
|
||||
|
||||
# Use in your CrewAI agents
|
||||
from crewai import Agent
|
||||
|
||||
@agent
|
||||
def researcher(self) -> Agent:
|
||||
return Agent(
|
||||
config=self.agents_config['researcher'],
|
||||
llm=truefoundry_llm,
|
||||
verbose=True
|
||||
)
|
||||
```
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
### مثال كامل على CrewAI
|
||||
|
||||
```python
|
||||
from crewai import Agent, Task, Crew, LLM
|
||||
|
||||
# Configure LLM with TrueFoundry
|
||||
llm = LLM(
|
||||
model="openai-main/gpt-4o",
|
||||
base_url="your_truefoundry_gateway_base_url",
|
||||
api_key="your_truefoundry_api_key"
|
||||
)
|
||||
|
||||
# Create agents
|
||||
researcher = Agent(
|
||||
role='Research Analyst',
|
||||
goal='Conduct detailed market research',
|
||||
backstory='Expert market analyst with attention to detail',
|
||||
llm=llm,
|
||||
verbose=True
|
||||
)
|
||||
|
||||
writer = Agent(
|
||||
role='Content Writer',
|
||||
goal='Create comprehensive reports',
|
||||
backstory='Experienced technical writer',
|
||||
llm=llm,
|
||||
verbose=True
|
||||
)
|
||||
|
||||
# Create tasks
|
||||
research_task = Task(
|
||||
description='Research AI market trends for 2024',
|
||||
agent=researcher,
|
||||
expected_output='Comprehensive research summary'
|
||||
)
|
||||
|
||||
writing_task = Task(
|
||||
description='Create a market research report',
|
||||
agent=writer,
|
||||
expected_output='Well-structured report with insights',
|
||||
context=[research_task]
|
||||
)
|
||||
|
||||
# Create and execute crew
|
||||
crew = Crew(
|
||||
agents=[researcher, writer],
|
||||
tasks=[research_task, writing_task],
|
||||
verbose=True
|
||||
)
|
||||
|
||||
result = crew.kickoff()
|
||||
```
|
||||
|
||||
### المراقبة والحوكمة
|
||||
|
||||
راقب وكلاء CrewAI من خلال علامة تبويب المقاييس في TrueFoundry:
|
||||

|
||||
|
||||
مع بوابة الذكاء الاصطناعي من TrueFoundry، يمكنك مراقبة وتحليل:
|
||||
|
||||
- **مقاييس الأداء**: تتبع مقاييس زمن الاستجابة الرئيسية مثل زمن استجابة الطلب ووقت أول رمز (TTFS) وزمن الاستجابة بين الرموز (ITL) بنسب مئوية P99 وP90 وP50
|
||||
- **التكلفة واستخدام الرموز المميزة**: احصل على رؤية لتكاليف تطبيقك مع تفاصيل دقيقة لرموز الإدخال/الإخراج والنفقات المرتبطة لكل نموذج
|
||||
- **أنماط الاستخدام**: افهم كيف يُستخدم تطبيقك مع تحليلات تفصيلية لنشاط المستخدم وتوزيع النماذج والاستخدام حسب الفريق
|
||||
- **تحديد المعدل وموازنة الأحمال**: يمكنك إعداد تحديد المعدل وموازنة الأحمال والاحتياط لنماذجك
|
||||
|
||||
## التتبع
|
||||
|
||||
لفهم أعمق حول التتبع، يرجى مراجعة [البدء بالتتبع](https://docs.truefoundry.com/docs/tracing/tracing-getting-started). للتتبع، يمكنك إضافة Traceloop SDK:
|
||||
|
||||
```bash
|
||||
pip install traceloop-sdk
|
||||
```
|
||||
|
||||
```python
|
||||
from traceloop.sdk import Traceloop
|
||||
|
||||
# Initialize enhanced tracing
|
||||
Traceloop.init(
|
||||
api_endpoint="https://your-truefoundry-endpoint/api/tracing",
|
||||
headers={
|
||||
"Authorization": f"Bearer {your_truefoundry_pat_token}",
|
||||
"TFY-Tracing-Project": "your_project_name",
|
||||
},
|
||||
)
|
||||
```
|
||||
|
||||
يوفر هذا ارتباط تتبع إضافي عبر سير عمل CrewAI بالكامل.
|
||||

|
||||
125
docs/edge/ar/observability/weave.mdx
Normal file
125
docs/edge/ar/observability/weave.mdx
Normal file
@@ -0,0 +1,125 @@
|
||||
---
|
||||
title: تكامل Weave
|
||||
description: تعرّف على كيفية استخدام Weights & Biases (W&B) Weave لتتبع وتجربة وتقييم وتحسين تطبيقات CrewAI.
|
||||
icon: radar
|
||||
mode: "wide"
|
||||
---
|
||||
|
||||
# نظرة عامة على Weave
|
||||
|
||||
[Weights & Biases (W&B) Weave](https://weave-docs.wandb.ai/) هو إطار عمل لتتبع وتجربة وتقييم ونشر وتحسين التطبيقات المبنية على نماذج اللغة الكبيرة.
|
||||
|
||||

|
||||
|
||||
يوفر Weave دعماً شاملاً لكل مرحلة من مراحل تطوير تطبيق CrewAI:
|
||||
|
||||
- **التتبع والمراقبة**: تتبع تلقائي لاستدعاءات LLM ومنطق التطبيق لتصحيح الأخطاء وتحليل أنظمة الإنتاج
|
||||
- **التكرار المنهجي**: تحسين والتكرار على الموجهات ومجموعات البيانات والنماذج
|
||||
- **التقييم**: استخدام مقيّمين مخصصين أو مُعدّين مسبقاً لتقييم أداء الوكلاء وتحسينه بشكل منهجي
|
||||
- **حواجز الحماية**: حماية وكلائك بحماية مسبقة ولاحقة للإشراف على المحتوى وسلامة الموجهات
|
||||
|
||||
يلتقط Weave التتبعات تلقائياً لتطبيقات CrewAI، مما يمكّنك من مراقبة وتحليل أداء وكلائك وتفاعلاتهم وتدفق التنفيذ. يساعدك هذا في بناء مجموعات بيانات تقييم أفضل وتحسين سير عمل وكلائك.
|
||||
|
||||
## تعليمات الإعداد
|
||||
|
||||
<Steps>
|
||||
<Step title="تثبيت الحزم المطلوبة">
|
||||
```shell
|
||||
pip install crewai weave
|
||||
```
|
||||
</Step>
|
||||
<Step title="إعداد حساب W&B">
|
||||
سجّل في [حساب Weights & Biases](https://wandb.ai) إذا لم تكن قد فعلت ذلك بالفعل. ستحتاج إليه لعرض التتبعات والمقاييس.
|
||||
</Step>
|
||||
<Step title="تهيئة Weave في تطبيقك">
|
||||
أضف الكود التالي إلى تطبيقك:
|
||||
|
||||
```python
|
||||
import weave
|
||||
|
||||
# Initialize Weave with your project name
|
||||
weave.init(project_name="crewai_demo")
|
||||
```
|
||||
|
||||
بعد التهيئة، سيوفر Weave عنوان URL حيث يمكنك عرض التتبعات والمقاييس.
|
||||
</Step>
|
||||
<Step title="إنشاء طواقمك/تدفقاتك">
|
||||
```python
|
||||
from crewai import Agent, Task, Crew, LLM, Process
|
||||
|
||||
# Create an LLM with a temperature of 0 to ensure deterministic outputs
|
||||
llm = LLM(model="gpt-4o", temperature=0)
|
||||
|
||||
# Create agents
|
||||
researcher = Agent(
|
||||
role='Research Analyst',
|
||||
goal='Find and analyze the best investment opportunities',
|
||||
backstory='Expert in financial analysis and market research',
|
||||
llm=llm,
|
||||
verbose=True,
|
||||
allow_delegation=False,
|
||||
)
|
||||
|
||||
writer = Agent(
|
||||
role='Report Writer',
|
||||
goal='Write clear and concise investment reports',
|
||||
backstory='Experienced in creating detailed financial reports',
|
||||
llm=llm,
|
||||
verbose=True,
|
||||
allow_delegation=False,
|
||||
)
|
||||
|
||||
# Create tasks
|
||||
research_task = Task(
|
||||
description='Deep research on the {topic}',
|
||||
expected_output='Comprehensive market data including key players, market size, and growth trends.',
|
||||
agent=researcher
|
||||
)
|
||||
|
||||
writing_task = Task(
|
||||
description='Write a detailed report based on the research',
|
||||
expected_output='The report should be easy to read and understand. Use bullet points where applicable.',
|
||||
agent=writer
|
||||
)
|
||||
|
||||
# Create a crew
|
||||
crew = Crew(
|
||||
agents=[researcher, writer],
|
||||
tasks=[research_task, writing_task],
|
||||
verbose=True,
|
||||
process=Process.sequential,
|
||||
)
|
||||
|
||||
# Run the crew
|
||||
result = crew.kickoff(inputs={"topic": "AI in material science"})
|
||||
print(result)
|
||||
```
|
||||
</Step>
|
||||
<Step title="عرض التتبعات في Weave">
|
||||
بعد تشغيل تطبيق CrewAI، قم بزيارة عنوان URL الذي وفره Weave أثناء التهيئة لعرض:
|
||||
- استدعاءات LLM وبياناتها الوصفية
|
||||
- تفاعلات الوكلاء وتدفق تنفيذ المهام
|
||||
- مقاييس الأداء مثل زمن الاستجابة واستخدام الرموز المميزة
|
||||
- أي أخطاء أو مشكلات حدثت أثناء التنفيذ
|
||||
|
||||
<Frame caption="لوحة معلومات تتبع Weave">
|
||||
<img src="/images/weave-tracing.png" alt="Weave tracing example with CrewAI" />
|
||||
</Frame>
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## الميزات
|
||||
|
||||
- يلتقط Weave تلقائياً جميع عمليات CrewAI: تفاعلات الوكلاء وتنفيذ المهام؛ استدعاءات LLM مع البيانات الوصفية واستخدام الرموز المميزة؛ استخدام الأدوات ونتائجها.
|
||||
- يدعم التكامل جميع طرق تنفيذ CrewAI: `kickoff()` و`kickoff_for_each()` و`kickoff_async()` و`kickoff_for_each_async()`.
|
||||
- تتبع تلقائي لجميع [أدوات crewAI](https://github.com/crewAIInc/crewAI-tools).
|
||||
- دعم ميزة التدفق مع تصحيح المزخرفات (`@start` و`@listen` و`@router` و`@or_` و`@and_`).
|
||||
- تتبع حواجز الحماية المخصصة المُمررة لمهام CrewAI `Task` باستخدام `@weave.op()`.
|
||||
|
||||
لمعلومات تفصيلية حول ما هو مدعوم، قم بزيارة [وثائق Weave CrewAI](https://weave-docs.wandb.ai/guides/integrations/crewai/#getting-started-with-flow).
|
||||
|
||||
## الموارد
|
||||
|
||||
- [وثائق Weave](https://weave-docs.wandb.ai)
|
||||
- [مثال على لوحة معلومات Weave x CrewAI](https://wandb.ai/ayut/crewai_demo/weave/traces?cols=%7B%22wb_run_id%22%3Afalse%2C%22attributes.weave.client_version%22%3Afalse%2C%22attributes.weave.os_name%22%3Afalse%2C%22attributes.weave.os_release%22%3Afalse%2C%22attributes.weave.os_version%22%3Afalse%2C%22attributes.weave.source%22%3Afalse%2C%22attributes.weave.sys_version%22%3Afalse%7D&peekPath=%2Fayut%2Fcrewai_demo%2Fcalls%2F0195c838-38cb-71a2-8a15-651ecddf9d89)
|
||||
- [X](https://x.com/weave_wb)
|
||||
Reference in New Issue
Block a user