Huggingface.js documentation

🤗 الاستدلال من هاجينج فاس

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

🤗 الاستدلال من هاجينج فاس

غلاف يعمل بلغة Typescript ويوفر واجهة موحدة لتشغيل الاستدلال عبر خدمات متعددة للنماذج المستضافة على Hugging Face Hub:

  1. مزودو الاستدلال: وصول موحّد ومبسّط إلى مئات نماذج تعلّم الآلة، مدعومًا بشركائنا في الاستدلال الخادمي. يستند هذا النهج الجديد إلى واجهة برمجة تطبيقات الاستدلال الخادمي السابقة لدينا، ويوفر نماذج أكثر، وأداءً محسّنًا، وموثوقية أكبر بفضل مزودين من الطراز العالمي. راجع التوثيق للحصول على قائمة بالمزودين المدعومين.
  2. نقاط الاستدلال: منتجٌ لتسهيل نشر النماذج في بيئة الإنتاج. يتم تشغيل الاستدلال بواسطة Hugging Face على بنية تحتية مخصصة ومُدارة بالكامل لدى مزوّد الخدمات السحابية الذي تختاره.
  3. نقاط النهاية المحلية: يمكنك أيضًا تشغيل الاستدلال باستخدام خوادم الاستدلال المحلية مثل llama.cpp وOllama وvLLM وLiteLLM أو Text Generation Inference (TGI) عن طريق توصيل العميل بهذه النقاط النهاية المحلية.

البدء

التثبيت

عقدة

npm install @huggingface/inference

pnpm add @huggingface/inference

yarn add @huggingface/inference

Deno

// esm.sh
import { InferenceClient } from "https://esm.sh/@huggingface/inference";
// or npm:
import { InferenceClient } from "npm:@huggingface/inference";

تهيئة

import { InferenceClient } from '@huggingface/inference';

const hf = new InferenceClient('your access token');

❗ملاحظة مهمة: تأكد دائمًا من تمرير رمز وصول. انضم إلى Hugging Face ثم انتقل إلى رموز الوصول لتوليد رمز وصولك مجانًا.

يجب إبقاء رمز الوصول الخاص بك سريًا. إذا كنت بحاجة إلى حمايته في تطبيقات الواجهة الأمامية، فنقترح إعداد خادم وسيط (proxy server) يخزّن رمز الوصول.

استخدام مزودي الاستدلال

يمكنك إرسال طلبات الاستدلال إلى مزوّدي الطرف الثالث باستخدام عميل الاستدلال.

حاليًا، ندعم المزودين التاليين:

لإرسال الطلبات إلى مزوّد طرف ثالث، يجب عليك تمرير معامل provider إلى دالة الاستدلال. القيمة الافتراضية لمعامل provider هي “auto”، والتي ستختار أول المزوّدين المتاحين للنموذج، مرتّبين حسب الترتيب المفضّل لديك في https://hf.co/settings/inference-providers.

const accessToken = "hf_..."; // Either a HF access token, or an API key from the third-party provider (Replicate in this example)

const client = new InferenceClient(accessToken);
await client.textToImage({
  provider: "replicate",
  model:"black-forest-labs/Flux.1-dev",
  inputs: "A black forest cake"
})

يجب عليك أيضاً التأكد من أن طلبك مُوثَّق برمز وصول. عند التوثيق برمز وصول من Hugging Face، يتم توجيه الطلب عبر https://huggingface.co. أما عند التوثيق بمفتاح مزوّد طرف ثالث، فيُرسَل الطلب مباشرةً إلى واجهة برمجة التطبيقات (API) للاستدلال الخاصة بذلك المزوّد.

يُؤمَّن دعم مجموعة فرعية من النماذج فقط عند طلب مزودي الطرف الثالث. يمكنك الاطلاع على قائمة النماذج المدعومة لكل مهام خطوط الأنابيب هنا:

❗ملاحظة مهمة: لكي تكون متوافقة، يجب أن تلتزم واجهة برمجة التطبيقات من طرف ثالث بواجهة برمجة التطبيقات "المعيارية" التي نتوقعها في صفحات نماذج HF لكل نوع مهمة خط أنابيب. لا يُعد هذا مشكلة بالنسبة لنماذج اللغة الكبيرة (LLMs) حيث اتفق الجميع على واجهة برمجة تطبيقات OpenAI على أي حال، لكنه قد يكون أكثر تعقيدًا للمهام الأخرى مثل "النص إلى صورة" أو "التعرف التلقائي على الكلام" حيث لا توجد واجهة برمجة تطبيقات معيارية. أخبرونا إذا كنتم بحاجة إلى أي مساعدة أو إذا كان بإمكاننا تسهيل الأمور عليكم!

👋هل تريد إضافة مزوّد آخر؟ تواصل معنا إذا كنت ترغب في إضافة دعم لمزوّد استدلال آخر، و/أو قدّم طلبًا على https://huggingface.co/spaces/huggingface/HuggingDiscussions/discussions/49

تقليم الشجرة

يمكنك استيراد الدوال التي تحتاجها مباشرةً من الوحدة بدلاً من استخدام فئة InferenceClient.

import { textGeneration } from "@huggingface/inference";

await textGeneration({
  accessToken: "hf_...",
  model: "model_or_endpoint",
  inputs: ...,
  parameters: ...
})

سيُتيح ذلك إجراء tree-shaking بواسطة أداة الحزم (bundler) الخاصة بك.

معالجة الأخطاء

توفر حزمة الاستدلال أنواع أخطاء محددة لمساعدتك على التعامل مع سيناريوهات الأخطاء المختلفة بفعالية.

أنواع الأخطاء

يحدد الحزمة عدة أنواع أخطاء توسّع الفئة الأساسية Error:

  • InferenceClientError: فئة الخطأ الأساسية لجميع أخطاء الاستدلال في Hugging Face
  • InferenceClientInputError: تُطرح عند وجود مشاكل في معاملات الإدخال
  • InferenceClientProviderApiError: تُطرح عند وجود أخطاء على مستوى واجهة برمجة التطبيقات (API) من مزودي الخدمة
  • InferenceClientHubApiError: تُطرح عند وجود أخطاء على مستوى واجهة برمجة التطبيقات (API) من Hugging Face Hub
  • InferenceClientProviderOutputError: تُطرح عند وجود مشاكل في صيغة استجابات واجهات برمجة التطبيقات الخاصة بالموفّرين

مثال على الاستخدام

import { InferenceClient } from "@huggingface/inference";
import {
  InferenceClientError,
  InferenceClientInputError,
  InferenceClientProviderApiError,
  InferenceClientProviderOutputError,
  InferenceClientHubApiError,
} from "@huggingface/inference";

const client = new InferenceClient();

try {
  const result = await client.textGeneration({
    model: "gpt2",
    inputs: "Hello, I'm a language model",
  });
} catch (error) {
  if (error instanceof InferenceClientProviderApiError) {
    // Handle API errors (e.g., rate limits, authentication issues)
    console.error("Provider API Error:", error.message);
    console.error("HTTP Request details:", error.httpRequest);
    console.error("HTTP Response details:", error.httpResponse);
  } else if (error instanceof InferenceClientHubApiError) {
    // Handle API errors (e.g., rate limits, authentication issues)
    console.error("Hub API Error:", error.message);
    console.error("HTTP Request details:", error.httpRequest);
    console.error("HTTP Response details:", error.httpResponse);
  } else if (error instanceof InferenceClientProviderOutputError) {
    // Handle malformed responses from providers
    console.error("Provider Output Error:", error.message);
  } else if (error instanceof InferenceClientInputError) {
    // Handle invalid input parameters
    console.error("Input Error:", error.message);
  } else {
    // Handle unexpected errors
    console.error("Unexpected error:", error);
  }
}

/// Catch all errors from @huggingface/inference
try {
  const result = await client.textGeneration({
    model: "gpt2",
    inputs: "Hello, I'm a language model",
  });
} catch (error) {
  if (error instanceof InferenceClientError) {
    // Handle errors from @huggingface/inference
    console.error("Error from InferenceClient:", error);
  } else {
    // Handle unexpected errors
    console.error("Unexpected error:", error);
  }
}

تفاصيل الخطأ

InferenceClientProviderApiError

يحدث هذا الخطأ عندما تكون هناك مشاكل في طلب واجهة برمجة التطبيقات أثناء تنفيذ الاستدلال لدى المزوّد المحدد.

لها عدة خصائص:

  • message: رسالة خطأ وصفية
  • httpRequest: تفاصيل الطلب الذي فشل (عنوان URL، الطريقة، الترويسات)
  • httpResponse: تفاصيل الاستجابة بما في ذلك رمز الحالة والجسم

InferenceClientHubApiError

تحدث هذه الخطأ عندما تكون هناك مشاكل في طلب الواجهة البرمجية (API) عند طلب واجهة Hugging Face Hub البرمجية.

لها عدة خصائص:

  • message: رسالة خطأ وصفية
  • httpRequest: تفاصيل الطلب الذي فشل (عنوان URL، الطريقة، الترويسات)
  • httpResponse: تفاصيل الاستجابة بما في ذلك رمز الحالة والجسم

InferenceClientProviderOutputError

يحدث هذا الخطأ عندما تُرجع جهة تقديم الخدمة استجابةً بتنسيق غير متوقع.

InferenceClientInputError

تحدث هذه الخطأ عندما تكون معاملات الإدخال غير صالحة أو مفقودة. يصف رسالة الخطأ ما هو الخاطئ في الإدخال.

معالجة اللغة الطبيعية

توليد النص

يولّد نصًا من موجه إدخال.

await hf.textGeneration({
  model: 'mistralai/Mixtral-8x7B-v0.1',
  provider: "together",
  inputs: 'The answer to the universe is'
})

for await (const output of hf.textGenerationStream({
  model: "mistralai/Mixtral-8x7B-v0.1",
  provider: "together",
  inputs: 'repeat "one two three four"',
  parameters: { max_new_tokens: 250 }
})) {
  console.log(output.token.text, output.generated_text);
}

إكمال المحادثة

توليد استجابة من النموذج من قائمة رسائل تشكّل محادثة.

// Non-streaming API
const out = await hf.chatCompletion({
  model: "Qwen/Qwen3-32B",
  provider: "cerebras",
  messages: [{ role: "user", content: "Hello, nice to meet you!" }],
  max_tokens: 512,
  temperature: 0.1,
});

// Streaming API
let out = "";
for await (const chunk of hf.chatCompletionStream({
  model: "Qwen/Qwen3-32B",
  provider: "cerebras",
  messages: [
    { role: "user", content: "Can you help me solve an equation?" },
  ],
  max_tokens: 512,
  temperature: 0.1,
})) {
  if (chunk.choices && chunk.choices.length > 0) {
    out += chunk.choices[0].delta.content;
  }
}

استخراج الميزات

تقرأ هذه المهمة بعض النص وتُخرج قيمًا عشرية خام (float) تُستهلك عادةً كجزء من قاعدة بيانات دلالية/بحث دلالي.

await hf.featureExtraction({
  model: "sentence-transformers/distilbert-base-nli-mean-tokens",
  inputs: "That is a happy person",
});

ملء القناع

يحاول ملء فجوة بكلمة مفقودة (أو رمزًا بشكل أدق).

await hf.fillMask({
  model: 'bert-base-uncased',
  inputs: '[MASK] world!'
})

تلخيص

تلخّص النصوص الأطول إلى نصوص أقصر. انتبه، بعض النماذج لها حد أقصى لطول الإدخال.

await hf.summarization({
  model: 'facebook/bart-large-cnn',
  inputs:
    'The tower is 324 metres (1,063 ft) tall, about the same height as an 81-storey building, and the tallest structure in Paris. Its base is square, measuring 125 metres (410 ft) on each side. During its construction, the Eiffel Tower surpassed the Washington Monument to become the tallest man-made structure in the world, a title it held for 41 years until the Chrysler Building in New York City was finished in 1930.',
  parameters: {
    max_length: 100
  }
})

الإجابة على الأسئلة

يجيب عن الأسئلة بناءً على السياق الذي توفره.

await hf.questionAnswering({
  model: 'deepset/roberta-base-squad2',
  inputs: {
    question: 'What is the capital of France?',
    context: 'The capital of France is Paris.'
  }
})

الإجابة على أسئلة الجداول

await hf.tableQuestionAnswering({
  model: 'google/tapas-base-finetuned-wtq',
  inputs: {
    query: 'How many stars does the transformers repository have?',
    table: {
      Repository: ['Transformers', 'Datasets', 'Tokenizers'],
      Stars: ['36542', '4512', '3934'],
      Contributors: ['651', '77', '34'],
      'Programming language': ['Python', 'Python', 'Rust, Python and NodeJS']
    }
  }
})

تصنيف النصوص

تُستخدم هذه الطريقة غالبًا لتحليل المشاعر، حيث تُسند تسميات إلى النص المُعطى مع درجة احتمالية لكل تسمية.

await hf.textClassification({
  model: 'distilbert-base-uncased-finetuned-sst-2-english',
  inputs: 'I like you. I love you.'
})

تصنيف الرموز

يُستخدم لتحليل الجمل، سواءً كان التحليل نحويًا أو التعرف على الكيانات المسمّاة (NER) لفهم الكلمات المفتاحية الموجودة داخل النص.

await hf.tokenClassification({
  model: 'dbmdz/bert-large-cased-finetuned-conll03-english',
  inputs: 'My name is Sarah Jessica Parker but you can call me Jessica'
})

الترجمة

يحوّل النص من لغة إلى أخرى.

await hf.translation({
  model: 't5-base',
  inputs: 'My name is Wolfgang and I live in Berlin'
})

await hf.translation({
  model: 'facebook/mbart-large-50-many-to-many-mmt',
  inputs: textToTranslate,
  parameters: {
  "src_lang": "en_XX",
  "tgt_lang": "fr_XX"
 }
})

التصنيف بدون تدريب

يتحقق من مدى ملاءمة النص المُدخل لمجموعة من التسميات التي توفرها.

await hf.zeroShotClassification({
  model: 'facebook/bart-large-mnli',
  inputs: [
    'Hi, I recently bought a device from your company but it is not working as advertised and I would like to get reimbursed!'
  ],
  parameters: { candidate_labels: ['refund', 'legal', 'faq'] }
})

تطابق الجمل

احسب التشابه الدلالي بين نص واحد وقائمة من الجمل الأخرى.

await hf.sentenceSimilarity({
  model: 'sentence-transformers/paraphrase-xlm-r-multilingual-v1',
  inputs: {
    source_sentence: 'That is a happy person',
    sentences: [
      'That is a happy dog',
      'That is a very happy person',
      'Today is a sunny day'
    ]
  }
})

ترتيب النصوص

رتّب المستندات حسب مدى ارتباطها بالاستعلام.

await hf.textRanking({
  model: 'cross-encoder/ettin-reranker-68m-v1',
  inputs: {
    query: 'Which planet is known as the Red Planet?',
    texts: [
      "Venus is often called Earth's twin because of its similar size and proximity.",
      'Mars, known for its reddish appearance, is often referred to as the Red Planet.',
      'Jupiter, the largest planet in our solar system, has a prominent red spot.',
      'Saturn, famous for its rings, is sometimes mistaken for the Red Planet.'
    ]
  }
})

الصوت

التعرف التلقائي على الكلام

ينسخ الكلام من ملف صوتي.

عرض توضيحي

await hf.automaticSpeechRecognition({
  model: 'facebook/wav2vec2-large-960h-lv60-self',
  data: readFileSync('test/sample1.flac')
})

تصنيف الصوت

يُسند التسميات إلى الصوت المُعطى مع درجة احتمالية لكل تسمية.

عرض توضيحي

await hf.audioClassification({
  model: 'superb/hubert-large-superb-er',
  data: readFileSync('test/sample1.flac')
})

النص إلى كلام

يولّد كلامًا طبيعيًا السماع من مدخلات نصية.

دليل تفاعلي

await hf.textToSpeech({
  model: 'espnet/kan-bayashi_ljspeech_vits',
  inputs: 'Hello world!'
})

الصوت إلى الصوت

تُخرج صوتًا واحدًا أو عدة أصوات مولّدة من صوت مدخل، وتُستخدم عادةً لتحسين الكلام وفصل المصادر.

await hf.audioToAudio({
  model: 'speechbrain/sepformer-wham',
  data: readFileSync('test/sample1.flac')
})

رؤية الحاسوب

تصنيف الصور

يُسند تسميات إلى صورة معينة مع درجة احتمالية لكل تسمية.

عرض توضيحي

await hf.imageClassification({
  data: readFileSync('test/cheetah.png'),
  model: 'google/vit-base-patch16-224'
})

كشف الكائنات

يكتشف الكائنات داخل صورة ويعيد التسميات مع صناديق الإحاطة المقابلة لها ودرجات الاحتمال.

عرض توضيحي

await hf.objectDetection({
  data: readFileSync('test/cats.png'),
  model: 'facebook/detr-resnet-50'
})

تجزئة الصور

يكتشف المقاطع داخل صورة ويعيد التسميات مع صناديق الإحاطة المقابلة لها ودرجات الاحتمال.

await hf.imageSegmentation({
  data: readFileSync('test/cats.png'),
  model: 'facebook/detr-resnet-50-panoptic'
})

صورة إلى نص

يُخرج نصًا من صورة محددة، ويُستخدم بشكل شائع لتوليد عناوين توضيحية أو التعرف الضوئي على الحروف.

await hf.imageToText({
  data: readFileSync('test/cats.png'),
  model: 'nlpconnect/vit-gpt2-image-captioning'
})

النص إلى صورة

ينشئ صورة من وصف نصي.

عرض توضيحي

await hf.textToImage({
  model: 'black-forest-labs/FLUX.1-dev',
  inputs: 'a picture of a green bird'
})

صورة إلى صورة

تحويل الصورة إلى صورة هو مهمة تحويل صورة المصدر لتطابق خصائص صورة الهدف أو نطاق صورة الهدف.

دليل تفاعلي

await hf.imageToImage({
  inputs: new Blob([readFileSync("test/stormtrooper_depth.png")]),
  parameters: {
    prompt: "elmo's lecture",
  },
  model: "lllyasviel/sd-controlnet-depth",
});

تصنيف الصور بدون تدريب

يتحقق من مدى ملاءمة صورة الإدخال لمجموعة من التسميات التي تقدمها.

await hf.zeroShotImageClassification({
  model: 'openai/clip-vit-large-patch14-336',
  inputs: {
    image: await (await fetch('https://placekitten.com/300/300')).blob()
  },
  parameters: {
    candidate_labels: ['cat', 'dog']
  }
})

متعدد الوسائط

الإجابة على الأسئلة البصرية

إجابة الأسئلة البصرية هي مهمة الإجابة عن أسئلة مفتوحة بناءً على صورة. فهي تُخرج استجابات بلغة طبيعية لأسئلة بلغة طبيعية.

عرض توضيحي

await hf.visualQuestionAnswering({
  model: 'dandelin/vilt-b32-finetuned-vqa',
  inputs: {
    question: 'How many cats are lying down?',
    image: await (await fetch('https://placekitten.com/300/300')).blob()
  }
})

الإجابة على الأسئلة من المستندات

تستقبل نماذج الإجابة عن الأسئلة المستندية زوجًا من (المستند، السؤال) كمدخل وتعيد إجابة بلغة طبيعية.

عرض توضيحي

await hf.documentQuestionAnswering({
  model: 'impira/layoutlm-document-qa',
  inputs: {
    question: 'Invoice number?',
    image: await (await fetch('https://huggingface.co/spaces/impira/docquery/resolve/2359223c1837a7587402bda0f2643382a6eefeab/invoice.png')).blob(),
  }
})

جدولية

الانحدار الجدولي

تُعدّ الانحدار الجدولي مهمة تتضمّن التنبؤ بقيمة رقمية بناءً على مجموعة من السمات.

await hf.tabularRegression({
  model: "scikit-learn/Fish-Weight",
  inputs: {
    data: {
      "Height": ["11.52", "12.48", "12.3778"],
      "Length1": ["23.2", "24", "23.9"],
      "Length2": ["25.4", "26.3", "26.5"],
      "Length3": ["30", "31.2", "31.1"],
      "Species": ["Bream", "Bream", "Bream"],
      "Width": ["4.02", "4.3056", "4.6961"]
    },
  },
})

تصنيف البيانات الجدولية

تصنيف البيانات الجدولية هو مهمة تصنيف فئة مستهدفة (مجموعة) بناءً على مجموعة من السمات.

await hf.tabularClassification({
  model: "vvmnnnkv/wine-quality",
  inputs: {
    data: {
      "fixed_acidity": ["7.4", "7.8", "10.3"],
      "volatile_acidity": ["0.7", "0.88", "0.32"],
      "citric_acid": ["0", "0", "0.45"],
      "residual_sugar": ["1.9", "2.6", "6.4"],
      "chlorides": ["0.076", "0.098", "0.073"],
      "free_sulfur_dioxide": ["11", "25", "5"],
      "total_sulfur_dioxide": ["34", "67", "13"],
      "density": ["0.9978", "0.9968", "0.9976"],
      "pH": ["3.51", "3.2", "3.23"],
      "sulphates": ["0.56", "0.68", "0.82"],
      "alcohol": ["9.4", "9.8", "12.6"]
    },
  },
})

يمكنك استخدام أي مزوّد متوافق مع واجهة برمجة تطبيقات إكمال المحادثة مع طريقة chatCompletion.

// Chat Completion Example
const MISTRAL_KEY = process.env.MISTRAL_KEY;
const hf = new InferenceClient(MISTRAL_KEY, {
  endpointUrl: "https://api.mistral.ai",
});
const stream = hf.chatCompletionStream({
  model: "mistral-tiny",
  messages: [{ role: "user", content: "Complete the equation one + one = , just the answer" }],
});
let out = "";
for await (const chunk of stream) {
  if (chunk.choices && chunk.choices.length > 0) {
    out += chunk.choices[0].delta.content;
    console.log(out);
  }
}

استخدام نقاط الاستدلال

استخدمت الأمثلة التي رأيناها أعلاه مزودي الاستدلال. وعلى الرغم من أن هذه المزودين يثبتون فائدتهم الكبيرة في بناء النماذج الأولية واختبار الأمور بسرعة، إلا أنه عند استعدادك لنشر نموذجك في بيئة الإنتاج، ستحتاج إلى استخدام بنية تحتية مخصصة. وهنا يأتي دور نقاط نهاية الاستدلال. فهي تتيح لك نشر أي نموذج وعرضه كواجهة برمجة تطبيقات خاصة. بعد النشر، ستحصل على عنوان URL يمكنك الاتصال به:

import { InferenceClient } from '@huggingface/inference';

const hf = new InferenceClient("hf_xxxxxxxxxxxxxx", {
	endpointUrl: "https://j3z5luu0ooo76jnl.us-east-1.aws.endpoints.huggingface.cloud/v1/",
});

const response = await hf.chatCompletion({
	messages: [
		{
			role: "user",
			content: "What is the capital of France?",
		},
	],
});

console.log(response.choices[0].message.content);

بشكل افتراضي، تنتظر جميع الاستدعاءات لنقطة النهاية للاستدلال حتى يتم تحميل النموذج. عند تفعيل التقليص إلى 0 على نقطة النهاية، قد يؤدي ذلك إلى وقت انتظار غير ضئيل. إذا كنت تفضل تعطيل هذا السلوك والتعامل بنفسك مع أخطاء HTTP 500 التي تُرجعها نقطة النهاية، يمكنك القيام بذلك على النحو التالي:

const hf = new InferenceClient("hf_xxxxxxxxxxxxxx", {
	endpointUrl: "https://j3z5luu0ooo76jnl.us-east-1.aws.endpoints.huggingface.cloud/v1/",
});

const response = await hf.chatCompletion(
	{
		messages: [
			{
				role: "user",
				content: "What is the capital of France?",
			},
		],
	},
	{
		retry_on_error: false,
	}
);

استخدام نقاط النهاية المحلية

يمكنك استخدام InferenceClient لتنفيذ إكمال المحادثة مع خوادم الاستدلال المحلية (llama.cpp، vllm، litellm server، TGI، mlx، إلخ) التي تعمل على جهازك. يجب أن تكون واجهة برمجة التطبيقات متوافقة مع OpenAI API.

import { InferenceClient } from '@huggingface/inference';

const hf = new InferenceClient(undefined, {
	endpointUrl: "http://localhost:8080",
});

const response = await hf.chatCompletion({
	messages: [
		{
			role: "user",
			content: "What is the capital of France?",
		},
	],
});

console.log(response.choices[0].message.content);

وبنفس الطريقة التي يعمل بها عميل OpenAI JS، يمكن استخدام InferenceClient لتنفيذ استدلال إكمال المحادثة مع أي نقطة نهاية متوافقة مع واجهة برمجة تطبيقات OpenAI REST.

تشغيل الاختبارات

HF_TOKEN="your access token" pnpm run test

العثور على نماذج مناسبة

لدينا مشروع توثيقي مفصل يُسمى المهام يهدف إلى سرد النماذج المتاحة لكل مهمة وشرح آلية عمل كل مهمة بالتفصيل.

كما يحتوي على عروض توضيحية ومخرجات أمثلة وموارد أخرى في حال رغبتَ في الغوص بشكل أعمق في الجانب المتعلق بتعلم الآلة.

التبعيات

  • @huggingface/tasks : أنواع فقط
Update on GitHub