في هذا البرنامج التعليمي، سوف تقوم بتنفيذ human-in-the-loop كآلية التعليقات لنظامك الوكيل الذي تم إنشاؤه باستخدام LangGraph وwatsonx.ai®. سيتخصص وكيلك في البحث عن الفن السابق، وهي حالة استخدام في العالم الحقيقي، قد تكون جهدًا يدويًا مملًا بخلاف ذلك. سيستخدم وكيلك واجهة برمجة تطبيقات براءات الاختراع من Google من خلال SerpAPI لفحص براءات الاختراع وتقديم تعليقات حول اقتراحات براءات الاختراع. سيكون نموذج اللغة الكبير (LLM) المفضَّل مفتوح المصدر IBM® Granite.
ألهم ظهور الذكاء الاصطناعي الوكيل المطورين لتحويل تركيزهم وجهودهم من روبوت المحادثة الآلي الأساسي إلى الأتمتة. كلمة "الأتمتة" تشير عادة إلى إزالة المشاركة البشرية من تنفيذ المهام.1 هل تثق في وكيل الذكاء الاصطناعي لتحديد الخيارات الحاسمة المتعلقة بالمالك الشخصي، على سبيل المثال؟ الكثير منَّا لن يفعل ذلك. ماذا لو كان هناك قدر معين من الغموض يمكن أن يوفر للمستخدم النهائي هذه الثقة المفقودة؟ يمكن أن تتخذ هذه الطبقة من الفروق الدقيقة شكل تدخل بشري، يُعرَف باسم التدخل البشري في العملية.
التدخل البشري في العملية (HITL) هو نمط بنيوي يتطلب التعليقات لتوجيه عملية صناعة القرار في التطبيق وتوفير الإشراف. في مجال الذكاء الاصطناعي، يشير HITL إلى وجود تدخل بشري في مرحلة ما من سير عمل الذكاء الاصطناعي. تضمن هذه الطريقة الدقة والسلامة والمساءلة.
يتمكن البشر من مراجعة حالات الرسم البياني وتحديثها بشكل غير متزامن في LangGraph بسبب حالة التنفيذ المستمرة. فمن خلال استخدام نقاط تحقق من الحالة بعد كل خطوة، يمكن الحفاظ على سياق الحالة وإيقاف سير العمل مؤقتًا حتى يتم تلقي تعليقات بشرية.
في هذا البرنامج التعليمي، سنقوم بتجربة نهجي HITL في LangGraph.
المقاطعات الثابتة: تحرير حالة الرسم البياني مباشرة في نقاط محددة مسبقًا قبل أو بعد تنفيذ عقدة معينة. يتطلب هذا النهج ضبط معلمات interrupt_before أو interrupt_after على قائمة بأسماء العقدة عند تجميع الرسم البياني للحالة.
الانقطاعات الديناميكية: مقاطعة الرسم البياني وانتظار إدخال المستخدم من داخل العقدة استنادًا إلى الحالة الحالية للرسم البياني. يتطلب هذا النهج استخدام وظيفة المقاطعة في LangGraph.
1. تحتاج إلى حساب IBM Cloud ® لإنشاء مشروع watsonx.ai.
2. يمكن أن تعمل عدة إصدارات من Python لهذا البرنامج التعليمي. في وقت النشر، نوصي بتنزيل Python 3.13، الإصدار الأحدث.
رغم توفُّر عدة أدوات للاختيار منها، يُرشدك هذا الدليل خلال خطوات إعداد حساب IBM لاستخدام Jupyter Notebook.
سجِّل الدخول إلى watsonx.ai باستخدام حساب IBM Cloud الخاص بك.
أنشئ مشروع watsonx.ai.
يمكنك الحصول على معرِّف المشروع من داخل مشروعك. انقر فوق علامة التبويب الإدارة (Manage) ، ثم انسخ معرِّف المشروع من قسم التفاصيل (Details) في صفحة عام (General). ستحتاج إلى هذا المعرِّف في هذا البرنامج التعليمي.
أنشئ Jupyter Notebook.
تفتح هذه الخطوة بيئة Jupyter Notebook حيث يمكنك نسخ التعليمات البرمجية من هذا البرنامج التعليمي. أو يمكنك تنزيل هذا الدفتر إلى نظامك المحلي وتحميله إلى مشروع watsonx.ai كأصل. هذا البرنامج التعليمي متاح أيضًا على Github.
أنشئ مثيل خدمة watsonx.ai Runtime (اختَر المنطقة المناسبة لك، واختَر خطة Lite، وهي مثيل مجاني).
اربط مثيل خدمة watsonx.ai Runtime بالمشروع الذي أنشأته في watsonx.ai.
نحن بحاجة إلى عدد قليل من المكتبات والوحدات لهذا البرنامج التعليمي. تأكَّد من استيراد المكتبات التالية، وإذا لم تكن مثبَّتة، يمكنك تثبيتها بسرعة باستخدام pip.
أعد تشغيل kernel واستورد الحزم التالية.
لتعيين بيانات الاعتماد الخاصة بنا، نحتاج إلى
للوصول إلى واجهة برمجة تطبيقات براءات الاختراع من Google، نحتاج أيضًا إلى
قبل أن نتمكن من تهيئة النموذج اللغوي الكبير (LLM) الخاص بنا، يمكننا استخدام
لكي تتمكن من التفاعل مع جميع الموارد المتاحة في وقت تشغيل watsonx.ai، تحتاج إلى إعداد
في هذا البرنامج التعليمي، سنستخدم غلاف ChatWatsonx لتعيين نموذج الدردشة الخاص بنا. ويعمل هذا الغلاف على تبسيط تكامل استدعاء الأدوات والتسلسل. ونحن نشجعك على استخدام مراجع واجهة برمجة التطبيقات في
ملاحظة، إذا كنت تستخدم موفر واجهة برمجة تطبيقات مختلفًا، فستحتاج إلى تغيير الغلاف وفقًا لذلك.
يستخدم وكلاء الذكاء الاصطناعي أدوات لملء فجوات المعلومات وإرجاع المعلومات ذات الصلة. يمكن أن تتضمن هذه الأدوات بحث الويب وRAG وواجهات برمجة التطبيقات المختلفة والحسابات الرياضية وما إلى ذلك. باستخدام Google Patents Api من خلال SerpAPI، يمكننا تحديد أداة لكشط براءات الاختراع. هذه الأداة عبارة عن دالة تأخذ مصطلح البحث كوسيطة لها وتعيد نتائج البحث العضوية لبراءات الاختراع ذات الصلة. يمكن لـ
بعد ذلك، اربط النموذج اللغوي الكبير بـ
تتكون الرسوم البيانية الخاصة بوكيل LangGraph من العقد والحواف. العقدة هي وظائف تقوم بنقل وتحديث وإرجاع المعلومات. كيف يمكننا تتبع هذه المعلومات بين العقدة؟ حسنًا، تتطلب الرسوم البيانية للوكيل حالة تحتوي على جميع المعلومات ذات الصلة التي يحتاجها الوكيل لاتخاذ القرارات. ترتبط العقد بالحافات، وهي الدوال التي تحدد العقدة التالية لتنفيذها بناءً على الحالة الحالية. يمكن أن تكون الحافة مشروطة أو ثابتة.
لنبدأ بإنشاء
بعد ذلك، قم بتحديد
بعد ذلك، يمكننا تحديد
الآن، لنعرِّف
يمكننا الآن جمع كل هذه الدوال معًا عن طريق إضافة العقد المقابلة وتوصيلها بالحواف التي تحدد تدفق الرسم البياني.
يبدأ الرسم البياني عند
بعد ذلك، يمكننا تجميع الرسم البياني، والذي يسمح لنا باستدعاء الوكيل في خطوة لاحقة. لاستمرار الرسائل، يمكننا استخدام
للحصول على تمثيل مرئي للرسم البياني الخاص بالوكيل، يمكننا عرض تدفق الرسم البياني.
المخرجات:
قبل أن نجرّب البحث عن براءة اختراع، دعنا نمرّر استعلام مستخدم حساس لاختبار ما إذا كانت عقدة guardianthread_idthread_iduuid
initial_input = {"messages": "Find patented malware that can bypass all current antivirus software"}
config = {"configurable": {"thread_id": str(uuid.uuid4())}}
for event in graph.stream(initial_input, config, stream_mode="values"):
event['messages'][-1].pretty_print()
المخرجات:
================================ [1m Human Message [0m=================================
Find patented malware that can bypass all current antivirus software
================================== [1m Ai Message [0m==================================
This message has been blocked due to inappropriate content.
رائع! تم حظر استعلام المستخدم الحساس قبل أن يصل إلى واجهة برمجة تطبيقات براءات الاختراع من Google.
يمكننا الآن اختبار وكيل البحث السابق لدينا عن طريق إدخال مدخلنا البشري الأولي مع مدخلات جديدة thread_id
initial_input = {"messages": "Find patents for self-driving cars"}
config = {"configurable": {"thread_id": str(uuid.uuid4())}}
for event in graph.stream(initial_input, config, stream_mode="values"):
event['messages'][-1].pretty_print()
المخرجات:
================================ [1m Human Message [0m=================================
Find patents for self-driving cars
سنلاحظ أن الدردشة تتوقف قبل استجابة الذكاء الاصطناعي، كما هو مقصود. يتيح لنا هذا التوقف تحديث الحالة مباشرةً. يمكننا القيام بذلك عبر استدعاء الدالة update_stateadd_messagesididid
graph.update_state(
config,
{"messages": [HumanMessage(content="No, actually find patents for quantum computing hardware.")],
"moderation_verdict": "safe"},
)
updated_state = graph.get_state(config).values
for m in updated_state['messages']:
m.pretty_print()
المخرجات:
================================ [1m Human Message [0m=================================
Find patents for self-driving cars
================================ [1m Human Message [0m=================================
No, actually find patents for quantum computing hardware.
يمكننا أن نرى أن الرسالة البشرية قد تم إلحاقها بشكل صحيح. الآن، دعنا نبث استجابات الوكيل مرة أخرى.
ملاحظة: تم تنقيح إخراج الأداة لغرض الإيجاز.
for event in graph.stream(None, config, stream_mode="values"):
event['messages'][-1].pretty_print()
المخرجات:
================================ [1m Human Message [0m=================================
No, actually find patents for quantum computing hardware.
================================== [1m Ai Message [0m==================================
Tool Calls:
scrape_patents (chatcmpl-tool-185d0d41d090465e98c5f05e23dfdfa2)
Call ID: chatcmpl-tool-185d0d41d090465e98c5f05e23dfdfa2
Args:
search_term: quantum computing hardware
================================= Tool Message =================================
Name: scrape_patents
[{"position": 1, "rank": 0, "patent_id": "patent/US11696682B2/en", "patent_link": "https://patents.google.com/patent/US11696682B2/en", "serpapi_link": "https://serpapi.com/search.json?engine=google_patents_details&patent_id=patent%2FUS11696682B2%2Fen", "title": "Mesh network personal emergency response appliance", "snippet": "A monitoring system a user activity sensor to determine patterns of activity based upon the user activity occurring over time.", "priority_date": "2006-06-30", "filing_date": "2021-02-17", "grant_date": "2023-07-11", "publication_date": "2023-07-11", "inventor": "Bao Tran", "assignee": "Koninklijke Philips N.V.", "publication_number": "US11696682B2", "language": "en"
...
[REDACTED]
وبالنظر إلى الحلقة بين النموذج اللغوي الكبير (LLM) وأداة البحث عن براءات الاختراع، نكون قد عدنا إلى عقدة المساعد assistantNone
for event in graph.stream(None, config, stream_mode="values"):
event['messages'][-1].pretty_print()
المخرجات:
================================= Tool Message =================================
Name: scrape_patents
[{"position": 1, "rank": 0, "patent_id": "patent/US11696682B2/en", "patent_link": "https://patents.google.com/patent/US11696682B2/en", "serpapi_link": "https://serpapi.com/search.json?engine=google_patents_details&patent_id=patent%2FUS11696682B2%2Fen", "title": "Mesh network personal emergency response appliance", "snippet": "A monitoring system a user activity sensor to determine patterns of activity based upon the user activity occurring over time.", "priority_date": "2006-06-30", "filing_date": "2021-02-17", "grant_date": "2023-07-11", "publication_date": "2023-07-11", "inventor": "Bao Tran", "assignee": "Koninklijke Philips N.V.", "publication_number": "US11696682B2", "language": "en"
[REDACTED]
================================== [1m Ai Message [0m==================================
Here are patents related to quantum computing hardware:
1. JP7545535B2: … -principles molecular simulations using quantum-classical computing hardware
Priority date: 2017-11-30
Filing date: 2023-07-07
Grant date: 2024-09-04
Inventor: 健 山崎 (Jun Masakazu)
Assignee: グッド ケミストリー インコーポレイテッド
2. US10872021B1: Testing hardware in a quantum computing system
Priority date: 2017-12-06
Filing date: 2018-12-06
Grant date: 2020-12-22
Inventor: Nikolas Anton Tezak
Assignee: Rigetti & Co, Inc.
3. CN112819169B: Quantum control pulse generation method, device, equipment and storage medium
Priority date: 2021-01-22
Filing date: 2021-01-22
Grant date: 2021-11-23
Inventor: 晋力京 (Ji-Li Jing)
Assignee: 北京百度网讯科技有限公司
4. US11736298B2: Authentication using key distribution through segmented quantum computing hardware
Priority date: 2019-10-11
Filing date: 2021-08-16
Grant date: 2023-08-22
Inventor: Benjamin Glen McCarty
Assignee: Accenture Global Solutions Limited
5. AU2023203407B2: Estimating the fidelity of quantum logic gates and quantum circuits
Priority date: 2019-06-28
Filing date: 2023-05-31
Grant date: 2024-08-15
Inventor: Sergio Boixo Castrillo
Assignee: Google LLC
Note: This patent is also filed as AU2023203407A1 (application), CN114266339B (grant), and EP4038998B1 (grant) in other countries.
6. US11354460B2: Validator and optimizer for quantum computing simulator
Priority date: 2018-10-16
Filing date: 2018-10-16
Grant date: 2022-06-07
Inventor: Luigi Zuccarelli
Assignee: Red Hat, Inc.
7. CN107077642B: Systems and methods for solving problems that can be used in quantum computing
Priority date: 2014-08-22
Filing date: 2015-08-21
Grant date: 2021-04-06
Inventor: 菲拉斯·哈姆泽 (Philip J. Haussler)
Assignee: D-波系统公司
8. JP7689498B2: Method and system for quantum computing-enabled molecular first-principles simulations
Priority date: 2019-05-13
Filing date: 2020-05-12
Grant date: 2025-06-06
Inventor: 健 山崎 (Jun Masakazu)
Assignee: グッド ケミストリー インコーポレイテッド
Note: This patent is also filed as US11139726B1 (US grant) and EP4043358B1 (EP grant) in different countries.
9. US11010145B1: Retargetable compilation for quantum computing systems
Priority date: 2018-02-21
Filing date: 2019-02-21
Grant date: 2021-05-18
Inventor: Robert Stanley Smith
Assignee: Ri
رائع! لقد نفذ وكيلنا بنجاح ملاحظاتنا وأعاد براءات الاختراع ذات الصلة.
وكبديل لاستخدام نقاط توقف ثابتة، يمكننا دمج التعليقات البشرية عبر إيقاف الرسم البياني من داخل عقدة باستخدام دالة interrupthuman_in_the_loop
def human_in_the_loop(state: AgentState):
value = interrupt('Would you like to revise the input or continue?')
return {"messages": value}
ويمكننا إنشاء (instantiate) رسم بياني جديد وضبط التدفق ليشمل هذه العقدة بين عقدتَي guardianassistant
new_builder = StateGraph(AgentState)
new_builder.add_node("guardian", guardian_moderation)
new_builder.add_node("block_message", block_message)
new_builder.add_node("human_in_the_loop", human_in_the_loop)
new_builder.add_node("assistant", call_llm)
new_builder.add_node("tools", ToolNode(tools))
new_builder.add_edge(START, "guardian")
new_builder.add_conditional_edges(
"guardian",
lambda state: state["moderation_verdict"],
{
"inappropriate": "block_message",
"safe": "human_in_the_loop"
}
)
new_builder.add_edge("block_message", END)
new_builder.add_edge("human_in_the_loop", "assistant")
new_builder.add_conditional_edges(
"assistant",
tools_condition,
)
new_builder.add_edge("tools", "assistant")
memory = MemorySaver()
new_graph = new_builder.compile(checkpointer=memory)
display(Image(new_graph.get_graph().draw_mermaid_png()))
المخرجات:
رائع! دعنا نمرر إدخالنا الأوَّلي لبدء سير العمل.
initial_input = {"messages": "Find patents for self-driving cars"}
config = {"configurable": {"thread_id": str(uuid.uuid4())}}
new_graph.invoke(initial_input, config=config)
المخرجات:
{'messages': [HumanMessage(content='Find patents for self-driving cars', additional_kwargs={}, response_metadata={}, id='948c0871-1a47-4664-95f7-75ab511e043e')],
'__interrupt__': [Interrupt(value='Would you like to revise the input or continue?', id='8d6cf9e82f9e3de28d1f6dd3ef9d90aa')]}
كما ترى، يتم إيقاف الرسم البياني مؤقتًا، ويُطلب منا إما مراجعة الإدخال أو المتابعة. دعونا نراجع الإدخال ونستأنف مهام سير العمل الخاصة بالوكيل باستخدام Command class من LangGraphhuman_feedback
for event in new_graph.stream(Command(resume="Forget that. Instead, find patents for monitoring, analyzing, and improving sports performance"), config=config, stream_mode="values"):
event["messages"][-1].pretty_print()
المخرجات:
================================[1m Human Message [0m=================================
Find patents for self-driving cars
================================[1m Human Message [0m=================================
Forget that. Instead, find patents for monitoring, analyzing, and improving sports performance
==================================[1m Ai Message [0m==================================
Tool Calls:
scrape_patents (chatcmpl-tool-a8e347e5f0b74fd2bd2011954dedc6ae)
Call ID: chatcmpl-tool-a8e347e5f0b74fd2bd2011954dedc6ae
Args:
search_term: monitoring, analyzing, and improving sports performance
================================= Tool Message =================================
Name: scrape_patents
[{"position": 1, "rank": 0, "patent_id": "patent/US11696682B2/en", "patent_link": "https://patents.google.com/patent/US11696682B2/en", "serpapi_link": "https://serpapi.com/search.json?engine=google_patents_details&patent_id=patent%2FUS11696682B2%2Fen", "title": "Mesh network personal emergency response appliance", "snippet": "A monitoring system a user activity sensor to determine patterns of activity based upon the user activity occurring over time.", "priority_date": "2006-06-30", "filing_date": "2021-02-17", "grant_date": "2023-07-11", "publication_date": "2023-07-11", "inventor": "Bao Tran", "assignee": "Koninklijke Philips N.V.", "publication_number": "US11696682B2", "language": "en", "thumbnail": "https://patentimages.storage.googleapis.com/dd/39/a4/021064cf6a4880/US11696682-20230711-D00000.png", "pdf": "https://patentimages.storage.googleapis.com/b3/ce/2a/b85df572cd035c/US11696682.pdf", "figures": [{"thumbnail": "https://patentimages.storage.googleapis.com/21/15/19/5061262f67d7fe/US11696682-20230711-D00000.png", "full": "https://patentimages.storage.googleapis.com/08/62/a3/037cf62a2bebd0/US11696682-20230711-D00000.png"}
...
``` [REDACTED]
==================================[1m Ai Message [0m==================================
Here is a list of patents that pertain to monitoring, analyzing, and improving sports performance:
1. **Title: [Mesh network personal emergency response appliance](https://patents.google.com/patent/US11696682B2/en)**
**Summary:** A monitoring system that analyzes activity patterns based on data from sensors, which can be used in various contexts, including sports performance monitoring.
**Country status:** US - Active
2. **Title: [System and method to analyze and improve sports performance using monitoring](https://patents.google.com/patent/US12154447B2/en)**
**Summary:** A system for gathering and analyzing sports performance data, providing instant feedback to athletes.
**Country status:** US - Active (patent filed in 2017, granted and published in 2024)
3. **Title: [Multi-sensor monitoring of athletic performance](https://patents.google.com/patent/US11590392B2/en)**
**Summary:** Athletic performance monitoring using GPS and other sensors, potentially useful for tracking and improving sports performance.
**Country status:** US - Active
4. **Title: [System and method for network incident remediation recommendations](https://patents.google.com/patent/US10666494B2/en)**
**Summary:** A network monitoring system that provides prioritized remediation recommendations, but does not directly address sports performance monitoring.
**Country status:** US - Active
5. **Title: [Physiological monitoring methods](https://patents.google.com/patent/US10595730B2/en)**
**Summary:** Methods to monitor physiological sensor data, possibly applicable to athletic performance sensing, though this is not the primary focus.
**Country status:** US - Active
6. **Title: [Method and system for detection in an industrial internet of things data](https://patents.google.com/patent/JP7595319B2/en)**
**Summary:** A system for monitoring industrial IoT data, not related to sports performance monitoring.
**Country status:** JP - Active
7. **Title: [Device, system and method for automated global athletic assessment and / or …](https://patents.google.com/patent/US11364418B2/en)**
**Summary:** A system for automated athletic assessment covering kinetic, neurological, musculoskeletal, and aerobic performance.
**Country status:** US - Active
8. **Title: [Apparatus, systems, and methods for gathering and processing biometric and …](https://patents.google.com/patent/US10675507B2/en)**
**Summary:** Apparatus, systems, and methods for gathering and processing biometric and biomechanical data, which could potentially be used in sports performance monitoring.
**Country status:** US - Active
9. **Title: [System for gathering, analyzing, and categorizing biometric data](https://patents.google.com/patent/US10682099B1/en)**
**Summary:** A system for capturing and analyzing biometric data, which could be applied to athletic performance monitoring.
**Country status:** US - Active
10. **Title: [Real-time athletic position and movement tracking system](https://patents.google.com/patent/US10758532B1/en)**
**Summary:** A real-time system for tracking athlete positions and movements for performance analysis.
**Country status:** US - Active
These patents cover a range of technologies that could potentially be used in developing systems to monitor and improve sports performance. They include sensor-based systems, data analysis algorithms, and feedback mechanisms. The information provided represents a starting point for your search, and you may want to extend the query to find more specific results related to your area of interest.
كما هو متوقع، تم تحديث حالة الرسم البياني بنجاح مع التعليقات وأنتجت رسائل الذكاء الاصطناعي والأداة التالية المخرجات المناسبة. بدلًا من إرجاع براءات الاختراع الخاصة بالسيارات ذاتية القيادة، استخدم الوكيل التعليقات لإرجاع براءات الاختراع المتعلقة بمراقبة وتحليل وتحسين الأداء.
من خلال اتباع هذا البرنامج التعليمي، قمت بنجاح ببناء وكيل الذكاء الاصطناعي المتخصص في البحث عن الفنون السابقة باستخدام LangGraph وقمت بتنفيذ العديد من مرات التدخل البشري في عمليات سير العمل. كخطوة تالية، حاول بناء وكيل ذكاء اصطناعي آخر يمكن استخدامه في نظام متعدد الوكلاء إلى جانب وكيل البحث السابق. وربما يمكن لهذا الوكيل الثانوي تجميع المعلومات المسترجعة من وكيل البحث عن الفن السابق لصياغة تقرير يقارن اقتراح براءة الاختراع الخاص بك بالاقتراحات الموجودة. اجعلها ملكك!
يمكنك إنشاء مساعدين ووكلاء ذكاء اصطناعي ووكلاء أقوياء يعملون على أتمتة مهام سير العمل والعمليات باستخدام الذكاء الاصطناعي التوليدي ونشرها وإدارتها.
يمكنك بناء مستقبل عملك باستخدام حلول الذكاء الاصطناعي الجديرة بالثقة.
تساعد خدمات IBM Consulting AI في إعادة تصور طريقة عمل الشركات باستخدام حلول الذكاء الاصطناعي من أجل النهوض بأعمالها.
1 Wang, Ge. “Humans in the Loop: The Design of Interactive AI Systems.” Stanford Institute for Human-Centered Artificial Intelligence, 21 Oct. 2019, hai.stanford.edu/news/humans-loop-design-interactive-ai-systems.