Hub Python Library documentation

المجموعات

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

المجموعات

المجموعة هي مجموعة من العناصر ذات الصلة على المنصة (النماذج، مجموعات البيانات، المساحات، الأوراق البحثية، المجموعات، الدلاء) التي تُنظَّم معًا على نفس الصفحة. المجموعات مفيدة لإنشاء معرض أعمالك الخاص، أو وضع علامات على المحتوى ضمن فئات، أو عرض قائمة منتقاة من العناصر التي ترغب في مشاركتها. اطّلع على هذا الدليل لفهم المزيد من التفاصيل حول ما هي المجموعات وكيف تظهر على المنصة.

يمكنك إدارة المجموعات مباشرةً في المتصفح، لكن في هذا الدليل، سنركّز على كيفية إدارتها برمجياً.

جلب مجموعة

استخدم get_collection() لجلب مجموعاتك أو أي مجموعات عامة. يجب أن تمتلك slug الخاص بالمجموعة لاسترجاعها. الـ slug هو معرّف للمجموعة يعتمد على العنوان ومعرّف فريد. يمكنك العثور على الـ slug في عنوان URL لصفحة المجموعة.

لنستدعِ المجموعة باستخدام "TheBloke/recent-models-64f9a55bb3115b4f513ec026":

>>> from huggingface_hub import get_collection
>>> collection = get_collection("TheBloke/recent-models-64f9a55bb3115b4f513ec026")
>>> collection
Collection(
  slug='TheBloke/recent-models-64f9a55bb3115b4f513ec026',
  title='Recent models',
  owner='TheBloke',
  items=[...],
  last_updated=datetime.datetime(2023, 10, 2, 22, 56, 48, 632000, tzinfo=datetime.timezone.utc),
  position=1,
  private=False,
  theme='green',
  upvotes=90,
  description="Models I've recently quantized. Please note that currently this list has to be updated manually, and therefore is not guaranteed to be up-to-date."
)
>>> collection.items[0]
CollectionItem(
  item_object_id='651446103cd773a050bf64c2',
  item_id='TheBloke/U-Amethyst-20B-AWQ',
  item_type='model',
  position=88,
  note=None
)

تحتوي كائن Collection الذي يُعاد بواسطة get_collection() على:

  • بيانات وصفية عالية المستوى: slug، owner، title، description، وما إلى ذلك.
  • قائمة من كائنات CollectionItem؛ يمثل كل عنصر نموذجًا أو مجموعة بيانات أو مساحة أو ورقة بحثية أو مجموعة أو حاوية.

يُكفَل لجميع عناصر المجموعة ما يلي:

  • معرّف فريد item_object_id: وهو معرّف عنصر المجموعة في قاعدة البيانات
  • item_id: هذا هو المعرّف الخاص بالعنصر الأساسي (نموذج، مجموعة بيانات، مساحة، ورقة بحثية، مجموعة، دلو) على المنصة؛ وليس بالضرورة أن يكون فريدًا، بل الزوج item_id/item_type هو الفريد
  • عنصر من نوع item_type: نموذج، مجموعة بيانات، مساحة، ورقة بحثية، مجموعة، دلو
  • position للعنصر في المجموعة، والذي يمكن تحديثه لإعادة تنظيم مجموعتك (انظر update_collection_item() أدناه)

يمكن أيضًا إرفاق note بالعنصر. وهذا مفيد لإضافة معلومات إضافية حول العنصر (تعليق، رابط إلى منشور مدونة، إلخ). لا يزال للخاصية قيمة None إذا لم يكن للعنصر ملاحظة.

بالإضافة إلى هذه السمات الأساسية، يمكن أن تحتوي العناصر المُعادَة على سمات إضافية اعتمادًا على نوعها: author، private، lastModified، gated، title، likes، upvotes، وما إلى ذلك. لا يُكفَل إرجاع أيٍّ من هذه السمات.

قوائم المجموعات

يمكننا أيضًا استرجاع المجموعات باستخدام list_collections(). يمكن تصفية المجموعات باستخدام بعض المعاملات. لنستعرض جميع المجموعات الخاصة بالمستخدم teknium.

>>> from huggingface_hub import list_collections

>>> collections = list_collections(owner="teknium")

يعيد هذا الأمر قابلًا للتكرار من كائنات Collection. يمكننا التكرار عليها لطباعة عدد الأصوات الإيجابية، على سبيل المثال، لكل مجموعة.

>>> for collection in collections:
...   print("Number of upvotes:", collection.upvotes)
Number of upvotes: 1
Number of upvotes: 5

عند سرد المجموعات، يتم اقتصاص قائمة العناصر لكل مجموعة إلى 4 عناصر كحد أقصى. لاسترجاع جميع العناصر من مجموعة، يجب عليك استخدام get_collection().

من الممكن إجراء تصفية أكثر تقدماً. لنجلب جميع المجموعات التي تحتوي على النموذج TheBloke/OpenHermes-2.5-Mistral-7B-GGUF، مرتبة حسب الاتجاهات، مع تحديد العدد بـ 5.

>>> collections = list_collections(item="models/TheBloke/OpenHermes-2.5-Mistral-7B-GGUF", sort="trending", limit=5):
>>> for collection in collections:
...   print(collection.slug)
teknium/quantized-models-6544690bb978e0b0f7328748
AmeerH/function-calling-65560a2565d7a6ef568527af
PostArchitekt/7bz-65479bb8c194936469697d8c
gnomealone/need-to-test-652007226c6ce4cdacf9c233
Crataco/favorite-7b-models-651944072b4fffcb41f8b568

يجب أن يكون المعامل sort أحد "last_modified" أو "trending" أو "upvotes". يقبل المعامل item أي عنصر محدد. على سبيل المثال:

  • "models/teknium/OpenHermes-2.5-Mistral-7B"
  • "spaces/julien-c/open-gpt-rhyming-robot"
  • "datasets/squad"
  • "papers/2311.12983"
  • "buckets/namespace/bucket-name"

لمزيد من التفاصيل، يرجى الاطلاع على مرجع list_collections().

إنشاء مجموعة جديدة

الآن وبعد أن عرفنا كيفية الحصول على Collection، لنقم بإنشاء مجموعتنا الخاصة! استخدم create_collection() مع عنوان ووصف. لإنشاء مجموعة على صفحة منظمة، مرر namespace="my-cool-org" عند إنشاء المجموعة. أخيرًا، يمكنك أيضًا إنشاء مجموعات خاصة عن طريق تمرير private=True.

>>> from huggingface_hub import create_collection

>>> collection = create_collection(
...     title="ICCV 2023",
...     description="Portfolio of models, papers and demos I presented at ICCV 2023",
... )

سيُعيد كائن Collection يحتوي على البيانات الوصفية عالية المستوى (العنوان، الوصف، المالك، إلخ) وقائمة عناصر فارغة. ستتمكن الآن من الإشارة إلى هذه المجموعة باستخدام slug الخاص بها.

>>> collection.slug
'owner/iccv-2023-15e23b46cb98efca45'
>>> collection.title
"ICCV 2023"
>>> collection.owner
"username"
>>> collection.url
'https://huggingface.co/collections/owner/iccv-2023-15e23b46cb98efca45'

إدارة العناصر في مجموعة

الآن وبعد أن أصبح لدينا Collection، نريد إضافة عناصر إليه وتنظيمها.

إضافة عناصر

يجب إضافة العناصر واحدًا تلو الآخر باستخدام add_collection_item(). كل ما تحتاج إلى معرفته هو collection_slug وitem_id وitem_type. بشكل اختياري، يمكنك أيضًا إضافة note إلى العنصر (بحد أقصى 500 حرف).

>>> from huggingface_hub import create_collection, add_collection_item

>>> collection = create_collection(title="OS Week Highlights - Sept 18 - 24", namespace="osanseviero")
>>> collection.slug
"osanseviero/os-week-highlights-sept-18-24-650bfed7f795a59f491afb80"

>>> add_collection_item(collection.slug, item_id="coqui/xtts", item_type="space")
>>> add_collection_item(
...     collection.slug,
...     item_id="warp-ai/wuerstchen",
...     item_type="model",
...     note="Würstchen is a new fast and efficient high resolution text-to-image architecture and model"
... )
>>> add_collection_item(collection.slug, item_id="lmsys/lmsys-chat-1m", item_type="dataset")
>>> add_collection_item(collection.slug, item_id="warp-ai/wuerstchen", item_type="space") # same item_id, different item_type
>>> add_collection_item(collection.slug, item_id="namespace/my-bucket", item_type="bucket")

إذا كان العنصر موجودًا مسبقًا في مجموعة (نفس زوج item_id/item_type)، فسيتم رفع خطأ HTTP 409. يمكنك اختيار تجاهل هذا الخطأ عن طريق تعيين exists_ok=True.

إضافة ملاحظة إلى عنصر موجود

يمكنك تعديل عنصر موجود لإضافة ملاحظة مرفقة به أو تعديلها باستخدام update_collection_item(). دعنا نعيد استخدام المثال أعلاه:

>>> from huggingface_hub import get_collection, update_collection_item

# Fetch collection with newly added items
>>> collection_slug = "osanseviero/os-week-highlights-sept-18-24-650bfed7f795a59f491afb80"
>>> collection = get_collection(collection_slug)

# Add note the `lmsys-chat-1m` dataset
>>> update_collection_item(
...     collection_slug=collection_slug,
...     item_object_id=collection.items[2].item_object_id,
...     note="This dataset contains one million real-world conversations with 25 state-of-the-art LLMs.",
... )

إعادة ترتيب العناصر

العناصر في مجموعة مرتبة. يُحدَّد الترتيب بواسطة خاصية position لكل عنصر. افتراضيًا، تُرتَّب العناصر بإضافة العناصر الجديدة في نهاية المجموعة. يمكنك تحديث الترتيب باستخدام update_collection_item() بالطريقة نفسها التي تضيف بها ملاحظة.

لنعيد استخدام المثال أعلاه:

>>> from huggingface_hub import get_collection, update_collection_item

# Fetch collection
>>> collection_slug = "osanseviero/os-week-highlights-sept-18-24-650bfed7f795a59f491afb80"
>>> collection = get_collection(collection_slug)

# Reorder to place the two `Wuerstchen` items together
>>> update_collection_item(
...     collection_slug=collection_slug,
...     item_object_id=collection.items[3].item_object_id,
...     position=2,
... )

إزالة العناصر

أخيرًا، يمكنك أيضًا حذف عنصر باستخدام delete_collection_item().

>>> from huggingface_hub import get_collection, update_collection_item

# Fetch collection
>>> collection_slug = "osanseviero/os-week-highlights-sept-18-24-650bfed7f795a59f491afb80"
>>> collection = get_collection(collection_slug)

# Remove `coqui/xtts` Space from the list
>>> delete_collection_item(collection_slug=collection_slug, item_object_id=collection.items[0].item_object_id)

حذف المجموعة

يمكن حذف مجموعة باستخدام delete_collection().

هذا إجراء غير قابل للتراجع. لا يمكن استعادة مجموعة محذوفة.

>>> from huggingface_hub import delete_collection
>>> collection = delete_collection("username/useless-collection-64f9a55bb3115b4f513ec026", missing_ok=True)
Update on GitHub