Hub Python 函式庫文件
與討論和提取請求互動
並獲得增強的文件體驗
開始使用
與討論和提取請求互動
huggingface_hub 函式庫提供了 Python 介面,用於與 Hub 上的提取請求(Pull Requests)及討論進行互動。請瀏覽 專屬說明文件頁面,深入了解 Hub 上的討論與提取請求是什麼,以及它們在底層是如何運作的。
從 Hub 檢索討論與提取請求
HfApi 類別允許您檢索特定儲存庫上的討論與提取請求。
>>> from huggingface_hub import get_repo_discussions
>>> for discussion in get_repo_discussions(repo_id="bigscience/bloom"):
... print(f"{discussion.num} - {discussion.title}, pr: {discussion.is_pull_request}")
# 11 - Add Flax weights, pr: True
# 10 - Update README.md, pr: True
# 9 - Training languages in the model card, pr: True
# 8 - Update tokenizer_config.json, pr: True
# 7 - Slurm training script, pr: False
[...]HfApi.get_repo_discussions 支援按作者、類型(提取請求或討論)以及狀態(open 或 closed)進行篩選。
>>> from huggingface_hub import get_repo_discussions
>>> for discussion in get_repo_discussions(
... repo_id="bigscience/bloom",
... author="ArthurZ",
... discussion_type="pull_request",
... discussion_status="open",
... ):
... print(f"{discussion.num} - {discussion.title} by {discussion.author}, pr: {discussion.is_pull_request}")
# 19 - Add Flax weights by ArthurZ, pr: TrueHfApi.get_repo_discussions 會回傳一個 生成器 (generator),並產出 Discussion 物件。若要將所有討論取得為單一列表,請執行:
>>> from huggingface_hub import get_repo_discussions
>>> discussions_list = list(get_repo_discussions(repo_id="bert-base-uncased"))由 HfApi.get_repo_discussions() 所回傳的 Discussion 物件包含了討論或提取請求的高階概覽。您也可以使用 HfApi.get_discussion_details() 來獲取更詳細的資訊。
>>> from huggingface_hub import get_discussion_details
>>> get_discussion_details(
... repo_id="bigscience/bloom-1b3",
... discussion_num=2
... )
DiscussionWithDetails(
num=2,
author='cakiki',
title='Update VRAM memory for the V100s',
status='open',
is_pull_request=True,
events=[
DiscussionComment(type='comment', author='cakiki', ...),
DiscussionCommit(type='commit', author='cakiki', summary='Update VRAM memory for the V100s', oid='1256f9d9a33fa8887e1c1bf0e09b4713da96773a', ...),
],
conflicting_files=[],
target_branch='refs/heads/main',
merge_commit_oid=None,
diff='diff --git a/README.md b/README.md\nindex a6ae3b9294edf8d0eda0d67c7780a10241242a7e..3a1814f212bc3f0d3cc8f74bdbd316de4ae7b9e3 100644\n--- a/README.md\n+++ b/README.md\n@@ -132,7 +132,7 [...]',
)HfApi.get_discussion_details() 會回傳一個 DiscussionWithDetails 物件,這是 Discussion 的子類別,包含關於該討論或提取請求更詳細的資訊。資訊包含所有留言、狀態變更,以及透過 DiscussionWithDetails.events 進行的討論重新命名。
若是提取請求,您可以透過 DiscussionWithDetails.diff 檢索原始 git diff。提取請求的所有提交 (commits) 都列在 DiscussionWithDetails.events 中。
以程式化方式建立與編輯討論或提取請求
HfApi 類別也提供了建立與編輯討論及提取請求的方法。您需要一個 存取權杖 (access token) 才能建立與編輯討論或提取請求。
在 Hub 的儲存庫上提出變更最簡單的方法是透過 create_commit() API:只需將 create_pr 參數設定為 True。此參數也適用於其他封裝了 create_commit() 的方法:
>>> from huggingface_hub import metadata_update
>>> metadata_update(
... repo_id="username/repo_name",
... metadata={"tags": ["computer-vision", "awesome-model"]},
... create_pr=True,
... )您也可以使用 HfApi.create_discussion()(或 HfApi.create_pull_request())在儲存庫上建立討論(或提取請求)。如果您需要在本機端處理變更,以這種方式開啟提取請求會很有用。透過這種方式開啟的提取請求將處於 "draft"(草稿)模式。
>>> from huggingface_hub import create_discussion, create_pull_request
>>> create_discussion(
... repo_id="username/repo-name",
... title="Hi from the huggingface_hub library!",
... token="<insert your access token here>",
... )
DiscussionWithDetails(...)
>>> create_pull_request(
... repo_id="username/repo-name",
... title="Hi from the huggingface_hub library!",
... token="<insert your access token here>",
... )
DiscussionWithDetails(..., is_pull_request=True)管理提取請求與討論可以完全透過 HfApi 類別完成。例如:
- comment_discussion() 用於新增留言
- edit_discussion_comment() 用於編輯留言
- rename_discussion() 用於重新命名討論或提取請求
- change_discussion_status() 用於開啟或關閉討論 / 提取請求
- merge_pull_request() 用於合併提取請求
請參閱 HfApi 文件頁面,以獲取所有可用方法的詳盡參考資訊。
透過 CLI 管理討論與提取請求
上述所有操作也可透過命令列使用 hf discussions 執行。這對於腳本編寫、CI 管線,或是在不想編寫 Python 程式碼時進行快速互動非常有用。
# List open discussions and PRs on a repo
hf discussions list bigscience/bloom
# List discussions on a dataset repo
hf discussions list nebius/SWE-rebench-V2 --type dataset
# Get info for a specific discussion with comments
hf discussions info bigscience/bloom 2 --comments
# Create a new discussion
hf discussions create username/repo-name --title "Bug report" --body "Description here"
# Create a pull request
hf discussions create username/repo-name --title "Fix typo" --pull-request
# Comment on a discussion or PR
hf discussions comment username/repo-name 5 --body "LGTM!"
# Merge a pull request
hf discussions merge username/repo-name 5 --yes
# Show the diff of a pull request
hf discussions diff username/repo-name 5欲取得完整選項列表,請執行 hf discussions --help 或查看 CLI 參考。
將變更推送至提取請求
即將推出!
參見
欲了解更詳細的參考資訊,請造訪 討論與提取請求 以及 hf_api 文件頁面。
在 GitHub 上更新