يعرض هذا الريبو أمثلة للتطبيقات المبنية على Llama Stack. عند بدء تشغيل Llama 3.1، يمكنك إنشاء تطبيقات وكيلة قادرة على:
تقسيم المهمة وتنفيذ التفكير متعدد الخطوات.
استخدام الأدوات لتنفيذ بعض الإجراءات
مدمج: يحتوي النموذج على معرفة مدمجة بأدوات مثل البحث أو مترجم التعليمات البرمجية
Zero-shot: يمكن للنموذج أن يتعلم استدعاء الأدوات باستخدام تعريفات أدوات في السياق لم يسبق رؤيتها
توفير حماية السلامة على مستوى النظام باستخدام نماذج مثل Llama Guard.
ملحوظة
لا تزال Llama Stack API تتطور وقد تتغير. لا تتردد في البناء والتجربة، ولكن من فضلك لا تعتمد على استقراره الآن!
يتطلب التطبيق الوكيل بعض المكونات:
القدرة على تشغيل الاستدلال على سلسلة نماذج اللاما الأساسية
القدرة على إجراء فحوصات السلامة باستخدام سلسلة نماذج Llama Guard
القدرة على تنفيذ الأدوات، بما في ذلك بيئة تنفيذ التعليمات البرمجية، والتكرار باستخدام عملية الاستدلال متعددة الخطوات للنموذج
يتم الآن تقديم كل هذه المكونات من خلال Llama Stack Distribution واحد. يقوم Llama Stack بتعريف وتوحيد هذه المكونات والعديد من المكونات الأخرى اللازمة لجعل بناء تطبيقات الذكاء الاصطناعي التوليدي أكثر سلاسة. يتم بعد ذلك تجميع التطبيقات المختلفة لواجهات برمجة التطبيقات هذه معًا عبر Llama Stack Distribution .
للبدء في استخدام Llama Stack Apps، ستحتاج إلى:
تثبيت المتطلبات الأساسية
ابدأ تشغيل خادم Llama Stack
قم بتوصيل تطبيق وكيل العميل الخاص بك بخادم Llama Stack
بمجرد البدء، يمكنك بعد ذلك توجيه تطبيق الوكيل الخاص بك إلى عنوان URL لهذا الخادم (على سبيل المثال http://localhost:5000
).
حزم بايثون
نوصي بإنشاء بيئة كوندا بايثون معزولة.
# إنشاء وتنشيط بيئة افتراضيةENV=stack conda create -n $ENV python=3.10cd <path-to-llama-stack-apps-repo>condaactivate $ENV# تثبيت Dependeencypip install -r requires.txt
سيؤدي هذا إلى تثبيت جميع التبعيات المطلوبة من أجل (1) إنشاء خادم Llama Stack وبدء تشغيله (2) توصيل تطبيق العميل الخاص بك بخادم Llama Stack.
يرجى الاطلاع على دليل مطور llama-stack repo الخاص بنا لإعداد توزيع Llama Stack وتشغيل الخادم لخدمة نقاط نهاية واجهة برمجة التطبيقات. يجب أن يكون لديك نقطة نهاية للخادم لإنشاء تطبيقات العميل الخاصة بك.
بمجرد بدء تشغيل الخادم الخاص بك، من المفترض أن ترى النتائج --
... Serving POST /agentic_system/session/delete Serving POST /agentic_system/session/get Serving POST /agentic_system/step/get Serving POST /agentic_system/turn/get Serving GET /telemetry/get_trace Serving POST /telemetry/log_event Listening on :::5000 INFO: Started server process [587053] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://[::]:5000 (Press CTRL+C to quit)
لقد قمنا ببناء نماذج من البرامج النصية التجريبية للتفاعل مع خادم Stack.
أثناء تشغيل الخادم، يمكنك تشغيل وكيل بسيط
python -m examples.agents.hello localhost 5000
سترى مخرجات النموذج -
> created agents with agent_id=d050201b-0ca1-4abd-8eee-3cba2b8c0fbc User> Hello shield_call> No Violation inference> How can I assist you today? shield_call> No Violation User> Which players played in the winning team of the NBA western conference semifinals of 2024, please use tools shield_call> No Violation inference> brave_search.call(query="NBA Western Conference Semifinals 2024 winning team players") tool_execution> Tool:brave_search Args:{'query': 'NBA Western Conference Semifinals 2024 winning team players'} tool_execution> Tool:brave_search Response:{"query": "NBA Western Conference Semifinals 2024 winning team players", "top_k": [{"title": "2024 NBA Western Conference Semifinals - Mavericks vs. Thunder | Basketball-Reference.com", "url": "https://www.basketball-reference.com/playoffs/2024-nba-western-conference-semifinals-mavericks-vs-thunder.html", "description": "Summary and statistics for the <strong>2024</strong> <strong>NBA</strong> <strong>Western</strong> <strong>Conference</strong> <strong>Semifinals</strong> - Mavericks vs. Thunder", "type": "search_result"}, {"title": "2024 NBA playoffs - Wikipedia", "url": "https://en.wikipedia.org/wiki/2024_NBA_playoffs", "description": "Aged 20 years and 96 days old, ... youngest <strong>player</strong> <strong>in</strong> <strong>NBA</strong> history to record 10+ points and 15+ rebounds in a playoff game, coming during game 6 of the Maverick's <strong>Western</strong> <strong>Conference</strong> <strong>Semifinal</strong> <strong>win</strong> against the Thunder on May 18. The Timberwolves overcame a 20u2013point deficit to <strong>win</strong> game 7 against the Nuggets, the largest game 7 comeback in <strong>NBA</strong> playoffs history. With the defending champion Nuggets losing to the Minnesota Timberwolves, the <strong>2024</strong> playoffs marked ...", "type": "search_result"}, {"title": "2024 NBA Playoffs | Official Bracket, Schedule and Series Matchups", "url": "https://www.nba.com/playoffs/2024", "description": "The official site of the <strong>2024</strong> <strong>NBA</strong> Playoffs. Latest news, schedules, matchups, highlights, bracket and more.", "type": "search_result"}]} shield_call> No Violation inference> The players who played in the winning team of the NBA Western Conference Semifinals of 2024 are not specified in the search results provided. However, the search results suggest that the Mavericks played against the Thunder in the Western Conference Semifinals, and the Mavericks won the series. shield_call> No Violation
الآن بعد أن تم إعداد خادم Stack، فإن الخطوة التالية هي تشغيل تطبيق وكيل باستخدام Agents APIs.
لقد قمنا ببناء نماذج من البرامج النصية ودفاتر الملاحظات وواجهة دردشة واجهة المستخدم (باستخدام Gradio!) لمساعدتك على البدء.
ابدأ تطبيقًا (محليًا) وتفاعل معه عن طريق تشغيل الأمر التالي:
بايثونباث=. أمثلة بايثون/agent_store/app.py localhost 5000
سيؤدي هذا إلى تشغيل تطبيق mesop ويمكنك الانتقال إلى localhost:7860
للعب بواجهة الدردشة.
اختياريًا، يمكنك إعداد مفاتيح API للأدوات المخصصة:
WolframAlpha: مخزن في متغير البيئة WOLFRAM_ALPHA_API_KEY
Brave Search: قم بالتخزين في متغير البيئة BRAVE_SEARCH_API_KEY
قد ترى طرقًا أخرى للتفاعل في Agent Store README.md
ملاحظة: تأكد من أن خادم Stack لا يزال قيد التشغيل.
cd <path-to-llama-agentic-system>condaactivate $ENVllama stack run <name> # إذا لم تكن قد بدأت بالفعلPYTHONPATH=. بيثون -m example.agents.rag_with_memory_bank localhost 5000
يجب أن تشاهد مخرجات stdout للنموذج -
البيئة: إيبيثون الأدوات: Brave_search، wolfram_alpha، photogen تاريخ قطع المعرفة: ديسمبر 2023 تاريخ اليوم: 23 يوليو 2024 المستخدم> أخطط لرحلة إلى سويسرا، ما هي أفضل 3 أماكن يجب زيارتها؟ الاستجابة النهائية لحارس اللاما Shield_type=<BuiltinShield.llama_guard: 'llama_guard'> is_violation=False انتهاك_type=لا شيء انتهاك_return_message=لا شيء تم تشغيل PromptGuardShield وحصلت على النتائج: مضمن: 0.9999765157699585، ضار: 1.1110752893728204e-05 StepType.shield_call> لا يوجد انتهاك role='user' content='أخطط لرحلة إلى سويسرا، ما هي أهم 3 أماكن يجب زيارتها؟'StepType.inference> سويسرا بلد جميل يتمتع بتاريخ غني وثقافة وجمال طبيعي. فيما يلي ثلاثة أماكن يجب عليك زيارتها لإضافتها إلى خط سير رحلتك: ....
نصيحة يمكنك اختياريًا القيام بـ
--disable-safety
في البرامج النصية لتجنب تشغيل دروع الأمان طوال الوقت.
لا تتردد في التواصل معنا إذا كانت لديك أسئلة.
تحقق من حزم SDK لعملائنا للاتصال بخادم Llama Stack، ويمكنك الاختيار من بين لغات برمجة python وnode وswift وkotlin لإنشاء تطبيقاتك بسرعة.
ملحوظة
بينما يمكنك تشغيل التطبيقات باستخدام venv
، فإن تثبيت التوزيعة يتطلب وجود conda.
# إنشاء وتفعيل بيئة افتراضيةpython3 -m venv venvsource venv/bin/activate
# إنشاء وتفعيل بيئة افتراضيةpython -m venv venv venvScriptsactivate # لموجه الأوامر # أو.venvScriptsActivate.ps1 # لـ PowerShell # أو مصدر venvScriptsactivate # لـ Git
تظل التعليمات التالية (بما في ذلك pip install -r requirements.txt
لتثبيت التبعيات) كما هي.