Add Activepieces integration for workflow automation
- Add Activepieces fork with SmoothSchedule custom piece - Create integrations app with Activepieces service layer - Add embed token endpoint for iframe integration - Create Automations page with embedded workflow builder - Add sidebar visibility fix for embed mode - Add list inactive customers endpoint to Public API - Include SmoothSchedule triggers: event created/updated/cancelled - Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"extends": [
|
||||
"../../../../.eslintrc.base.json"
|
||||
],
|
||||
"ignorePatterns": [
|
||||
"!**/*"
|
||||
],
|
||||
"overrides": [
|
||||
{
|
||||
"files": [
|
||||
"*.ts",
|
||||
"*.tsx",
|
||||
"*.js",
|
||||
"*.jsx"
|
||||
],
|
||||
"rules": {}
|
||||
},
|
||||
{
|
||||
"files": [
|
||||
"*.ts",
|
||||
"*.tsx"
|
||||
],
|
||||
"rules": {}
|
||||
},
|
||||
{
|
||||
"files": [
|
||||
"*.js",
|
||||
"*.jsx"
|
||||
],
|
||||
"rules": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
# pieces-hugging-face
|
||||
|
||||
This library was generated with [Nx](https://nx.dev).
|
||||
|
||||
## Building
|
||||
|
||||
Run `nx build pieces-hugging-face` to build the library.
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"name": "@activepieces/piece-hugging-face",
|
||||
"version": "0.0.6",
|
||||
"dependencies": {
|
||||
"@huggingface/inference": "4.7.1"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"name": "pieces-hugging-face",
|
||||
"$schema": "../../../../node_modules/nx/schemas/project-schema.json",
|
||||
"sourceRoot": "packages/pieces/community/hugging-face/src",
|
||||
"projectType": "library",
|
||||
"tags": [],
|
||||
"targets": {
|
||||
"build": {
|
||||
"executor": "@nx/js:tsc",
|
||||
"outputs": [
|
||||
"{options.outputPath}"
|
||||
],
|
||||
"options": {
|
||||
"outputPath": "dist/packages/pieces/community/hugging-face",
|
||||
"tsConfig": "packages/pieces/community/hugging-face/tsconfig.lib.json",
|
||||
"packageJson": "packages/pieces/community/hugging-face/package.json",
|
||||
"main": "packages/pieces/community/hugging-face/src/index.ts",
|
||||
"assets": [
|
||||
"packages/pieces/community/hugging-face/*.md",
|
||||
{
|
||||
"input": "packages/pieces/community/hugging-face/src/i18n",
|
||||
"output": "./src/i18n",
|
||||
"glob": "**/!(i18n.json)"
|
||||
}
|
||||
],
|
||||
"buildableProjectDepsInPackageJsonType": "dependencies",
|
||||
"updateBuildableProjectDepsInPackageJson": true
|
||||
},
|
||||
"dependsOn": [
|
||||
"prebuild",
|
||||
"^build"
|
||||
]
|
||||
},
|
||||
"lint": {
|
||||
"executor": "@nx/eslint:lint",
|
||||
"outputs": [
|
||||
"{options.outputFile}"
|
||||
]
|
||||
},
|
||||
"prebuild": {
|
||||
"executor": "nx:run-commands",
|
||||
"options": {
|
||||
"cwd": "packages/pieces/community/hugging-face",
|
||||
"command": "bun install --no-save --silent"
|
||||
},
|
||||
"dependsOn": [
|
||||
"^build"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,264 @@
|
||||
{
|
||||
"Run inference on 100,000+ open ML models for NLP, vision, and audio tasks": "Eingabeaufforderung auf 100.000 + offenen ML-Modellen für NLP, Vision und Audioaufgaben ausführen",
|
||||
"Your Hugging Face API token (get it from https://huggingface.co/settings/tokens)": "Dein Hugging Face API Token (erhalte es von https://huggingface.co/settings/tokens)",
|
||||
"Document Question Answering": "Antwort auf Dokumentenfragen",
|
||||
"Language Translation": "Sprachübersetzung",
|
||||
"Text Classification": "Text-Klassifikation",
|
||||
"Text Summarization": "Textzusammenfassung",
|
||||
"Chat Completion": "Chat-Fertigstellung",
|
||||
"Create Image": "Bild erstellen",
|
||||
"Object Detection": "Objekterkennung",
|
||||
"Image Classification": "Bild-Klassifikation",
|
||||
"Answer questions from document images using Hugging Face models": "Fragen von Dokumentenbildern mit Hugging Face Modellen beantworten",
|
||||
"Translate text between languages using specialized Hugging Face translation models": "Übersetze Text zwischen Sprachen mithilfe spezialisierter Hugging Face Übersetzungsmodelle",
|
||||
"Classify text into categories using Hugging Face models - includes zero-shot classification for custom categories": "Text in Kategorien mit Hugging Face Modellen einordnen - beinhaltet Null-Schussklassifizierung für benutzerdefinierte Kategorien",
|
||||
"Generate abstractive summaries of long text using Hugging Face models - optimized for business content": "Generieren Sie abstrakte Zusammenfassungen von langen Texten mit Hugging Face Modellen - optimiert für geschäftliche Inhalte",
|
||||
"Generate assistant replies using chat-style LLMs - perfect for FAQ bots, support agents, and content generation": "Erstelle Assistenten-Antworten mit Chat-Stil LLMs - perfekt für FAQ-Bots, Support-Agenten und Erstellung von Inhalten",
|
||||
"Generate stunning images from text prompts using state-of-the-art diffusion models - perfect for marketing, product design, and creative content": "Erzeugen Sie atemberaubende Bilder aus Text-Eingabeaufforderungen mit modernsten Diffusionsmodellen - ideal für Marketing, Produktdesign und kreative Inhalte",
|
||||
"Detect and locate objects in images with precise bounding boxes - perfect for inventory management, content moderation, and automated tagging": "Objekte in Bildern mit präzisen Begrenzungsboxen erkennen und lokalisieren - ideal für Bestandsverwaltung, Moderation und automatisierte Markierung",
|
||||
"Classify images with pre-trained models or custom categories - perfect for content moderation, automated tagging, and smart asset management": "Klassifizieren Sie Bilder mit vorgefertigten Modellen oder benutzerdefinierten Kategorien - perfekt für Moderation, automatisierte Tagging und intelligente Vermögensverwaltung",
|
||||
"Model": "Modell",
|
||||
"Document Image": "Dokumentenbild",
|
||||
"Question": "Frage",
|
||||
"Number of Answers": "Anzahl der Antworten",
|
||||
"Max Answer Length": "Maximale Antwortlänge",
|
||||
"Handle Impossible Answers": "Unmögliche Antworten bearbeiten",
|
||||
"OCR Language": "OCR-Sprache",
|
||||
"Use Cache": "Cache verwenden",
|
||||
"Wait for Model": "Auf Modell warten",
|
||||
"Translation Model": "Übersetzungsmodell",
|
||||
"Or Enter Custom Model ID": "Oder benutzerdefinierte Model ID eingeben",
|
||||
"Text to Translate": "Zu übersetzender Text",
|
||||
"Source Language (Optional)": "Quellsprache (optional)",
|
||||
"Target Language (Optional)": "Zielsprache (optional)",
|
||||
"Clean Up Extra Spaces": "Zusätzliche Räume aufräumen",
|
||||
"Max Translation Length": "Maximale Übersetzungslänge",
|
||||
"Classification Type": "Klassifizierungstyp",
|
||||
"Zero-Shot Model": "Null heißes Modell",
|
||||
"Custom Categories": "Eigene Kategorien",
|
||||
"Pre-trained Model": "Vorausgebildetes Modell",
|
||||
"Search Models": "Modelle suchen",
|
||||
"Text to Classify": "Zu klassifizierender Text",
|
||||
"Number of Results": "Anzahl der Ergebnisse",
|
||||
"Output Function": "Ausgabefunktion",
|
||||
"Content Type": "Inhaltstyp",
|
||||
"Summarization Model": "Zusammenfassungsmodell",
|
||||
"Text to Summarize": "Zusammenfassender Text",
|
||||
"Summary Length": "Länge der Zusammenfassung",
|
||||
"Custom Min Length": "Eigene Min. Länge",
|
||||
"Custom Max Length": "Benutzerdefinierte maximale Länge",
|
||||
"Truncation Strategy": "Strategie zur Abschaltung",
|
||||
"Use Case": "Fall verwenden",
|
||||
"Chat Model": "Chat-Modell",
|
||||
"Conversation Mode": "Konversationsmodus",
|
||||
"User Message": "Benutzer-Nachricht",
|
||||
"System Prompt (Optional)": "System-Prompt (optional)",
|
||||
"Conversation History": "Unterhaltungshistorie",
|
||||
"Response Template": "Antwort-Vorlage",
|
||||
"Response Length": "Antwortlänge",
|
||||
"Custom Max Tokens": "Eigene Max Token",
|
||||
"Creativity Level": "Kreativitätsstufe",
|
||||
"Response Variety": "Antwort-Vielfalt",
|
||||
"Stop Sequences (Optional)": "Sequenzen stoppen (optional)",
|
||||
"Repetition Penalty": "Wiederholungsstrafe",
|
||||
"Topic Diversity": "Themenvielfalt",
|
||||
"Image Generation Model": "Bild Erstellungsmodell",
|
||||
"Text Prompt": "Textanfrage",
|
||||
"Aspect Ratio": "Seitenverhältnis",
|
||||
"Custom Width": "Eigene Breite",
|
||||
"Custom Height": "Eigene Höhe",
|
||||
"Negative Prompt": "Negative Prompt",
|
||||
"Quality vs Speed": "Hochwertige vs Geschwindigkeit",
|
||||
"Custom Inference Steps": "Benutzerdefinierte Inferenzschritte",
|
||||
"Guidance Scale": "Richtungsskala",
|
||||
"Seed (Optional)": "Seed (optional)",
|
||||
"Scheduler": "Zeitplaner",
|
||||
"Detection Model": "Erkennungsmodell",
|
||||
"Image to Analyze": "Zu analysierendes Bild",
|
||||
"Confidence Threshold": "Vertrauensschwelle",
|
||||
"Max Detections": "Max. Erkennungen",
|
||||
"Detection Filter": "Erkennungsfilter",
|
||||
"Output Format": "Ausgabeformat",
|
||||
"Classification Mode": "Klassifizierungsmodus",
|
||||
"Classification Model": "Klassifizierungsmodell",
|
||||
"Image Source": "Bildquelle",
|
||||
"Image File": "Bilddatei",
|
||||
"Image URL": "Bild-URL",
|
||||
"Classification Template": "Klassifikationsvorlage",
|
||||
"Hugging Face document question answering model": "Hugging Face-Dokument-Frage Antwort Modell",
|
||||
"Image of the document to analyze (invoice, contract, etc.)": "Bild des zu analysierenden Dokuments (Rechnung, Vertrag, etc.)",
|
||||
"Question to ask about the document (e.g., 'What is the invoice total?')": "Frage nach dem Dokument (z.B. \"Was ist die Gesamtzahl der Rechnung?\")",
|
||||
"Number of top answers to return": "Anzahl der besten Antworten",
|
||||
"Maximum length of predicted answers": "Maximale Länge der vorhergesagten Antworten",
|
||||
"Whether to accept 'impossible' as an answer when no answer is found": "Ob \"unmöglich\" als Antwort akzeptiert werden soll, wenn keine Antwort gefunden wird",
|
||||
"Language to use for OCR text extraction": "Sprache für OCR-Textextraktion",
|
||||
"Use cached results if available": "Verwende zwischengespeicherte Ergebnisse, falls verfügbar",
|
||||
"Wait for model to load if not ready": "Warten Sie, bis das Modell geladen wird, wenn nicht bereit",
|
||||
"Select a translation model or search from 7000+ available models": "Wählen Sie ein Übersetzungsmodell oder suchen Sie von 7000+ verfügbaren Modellen",
|
||||
"Alternative: Enter any Hugging Face translation model ID directly (e.g., Helsinki-NLP/opus-mt-ja-en)": "Alternativ: Gib direkt jede Hugging Face Übersetzung Model ID ein (z.B. Helsinki-NLP/opus-mt-ja-de)",
|
||||
"The text content you want to translate": "Der Textinhalt, den Sie übersetzen möchten",
|
||||
"Source language code (e.g., \"en\", \"es\", \"fr\"). Only needed for multilingual models that support multiple language pairs.": "Quell-Sprachcode (z. B. \"en\", \"es\", \"fr\"). Nur benötigt für mehrsprachige Modelle, die mehrere Sprachpaare unterstützen.",
|
||||
"Target language code (e.g., \"fr\", \"de\", \"zh\"). Only needed for multilingual models that support multiple language pairs.": "Zielsprachencode (z.B. \"fr\", \"de\", \"zh\"). Nur benötigt für mehrsprachige Modelle, die mehrere Sprachpaare unterstützen.",
|
||||
"Remove potential extra spaces in the translation output": "Entferne mögliche zusätzliche Leerzeichen in der Übersetzungsausgabe",
|
||||
"Maximum length of the translated text (leave empty for default)": "Maximale Länge des übersetzten Textes (leer lassen für Standard)",
|
||||
"Use cached results if available for faster responses": "Verwende zwischengespeicherte Ergebnisse, falls verfügbar für schnellere Antworten",
|
||||
"Wait for model to load if not immediately available": "Warten Sie, bis das Modell geladen wird, wenn nicht sofort verfügbar",
|
||||
"Choose your classification approach": "Wählen Sie Ihren Klassifizierungsansatz",
|
||||
"Model for classifying into your custom categories": "Modell für die Klassifizierung in Ihre benutzerdefinierten Kategorien",
|
||||
"Enter categories separated by commas (e.g., \"customer support, sales inquiry, spam, billing question\")": "Geben Sie Kategorien durch Kommas getrennt ein (z. B. \"Kundendienst, Verkaufsanfrage, Spam, Abrechnungsfrage\")",
|
||||
"Select a specialized pre-trained classification model": "Wählen Sie ein spezialisiertes vorausgebildetes Klassifikationsmodell",
|
||||
"Search from all available text classification models": "Suche nach allen verfügbaren Text-Klassifikationsmodellen",
|
||||
"The text content you want to classify": "Der Textinhalt, den Sie klassifizieren möchten",
|
||||
"Number of top predictions to return": "Anzahl der zurückzugebenden Top-Vorhersagen",
|
||||
"How to calculate confidence scores": "Wie man Konfidenzwerte berechnen kann",
|
||||
"Use cached results for faster responses": "Cache-Ergebnisse für schnellere Antworten verwenden",
|
||||
"What type of content are you summarizing?": "Welche Art von Inhalten fassen Sie zusammen?",
|
||||
"Select the best model for your content type": "Wählen Sie das beste Modell für Ihren Inhaltstyp",
|
||||
"The long text content you want to summarize (most models work best with 512-1024 tokens)": "Der lange Textinhalt, den Sie zusammenfassen möchten (die meisten Modelle funktionieren am besten mit 512-1024 Tokens)",
|
||||
"How long should the summary be?": "Wie lange sollte die Zusammenfassung dauern?",
|
||||
"Minimum number of tokens for the summary": "Minimale Anzahl von Token für die Zusammenfassung",
|
||||
"Maximum number of tokens for the summary": "Maximale Anzahl von Token für die Zusammenfassung",
|
||||
"Remove extra spaces and clean up formatting": "Zusätzliche Leerzeichen entfernen und Formatierung bereinigen",
|
||||
"How to handle text that exceeds model limits": "Wie man mit Text umgeht, der die Modellgrenzen überschreitet",
|
||||
"What type of chat assistant are you building?": "Welche Art von Chat-Assistenten bauen Sie?",
|
||||
"Select the best model for your use case": "Wählen Sie das beste Modell für Ihren Anwendungsfall",
|
||||
"How do you want to build the conversation?": "Wie möchtest du die Unterhaltung aufbauen?",
|
||||
"The user message or question to respond to": "Die Benutzer-Nachricht oder Frage, auf die zu antworten",
|
||||
"Instructions for how the assistant should behave": "Anleitung zum Verhalten des Assistenten",
|
||||
"Previous messages in the conversation (for multi-turn chat)": "Vorherige Nachrichten in der Unterhaltung (für Multi-Turn-Chat)",
|
||||
"Pre-built templates for common business scenarios": "Vorgefertigte Vorlagen für gemeinsame Geschäftsszenarien",
|
||||
"How long should the response be?": "Wie lange sollte die Antwort sein?",
|
||||
"Maximum number of tokens to generate": "Maximale Anzahl der zu generierenden Token",
|
||||
"How creative should responses be? (0.1 = focused, 1.0 = creative)": "Wie kreativ sollen Antworten sein? (0.1 = fokussiert, 1.0 = kreativ)",
|
||||
"Controls response diversity (0.1 = focused, 1.0 = varied)": "Steuerung der Antwortvielfalt (0.1 = fokussiert, 1.0 = variiert)",
|
||||
"Text sequences that will stop generation": "Textsequenzen, die die Generierung stoppen",
|
||||
"Reduce repetitive responses (-2.0 to 2.0)": "Reduziert wiederholte Antworten (-2.0 auf 2.0)",
|
||||
"Encourage diverse topics (-2.0 to 2.0)": "Ermutigen Sie verschiedene Themen (-2.0 bis 2.0)",
|
||||
"Use cached responses for identical requests": "Cache-Antworten für identische Anfragen verwenden",
|
||||
"What type of image generation do you need?": "Welche Art von Bildgenerierung brauchen Sie?",
|
||||
"Describe the image you want to generate. Be specific about style, colors, composition, and details.": "Beschreiben Sie das Bild, das Sie generieren möchten. Seien Sie spezifisch über Stil, Farben, Komposition und Details.",
|
||||
"Choose the dimensions for your image": "Wählen Sie die Größe Ihres Bildes",
|
||||
"Width in pixels (64-1024)": "Breite in Pixeln (64-1024)",
|
||||
"Height in pixels (64-1024)": "Höhe in Pixeln (64-1024)",
|
||||
"Describe what you DON'T want in the image (blur, low quality, distorted, etc.)": "Beschreiben Sie DON'T im Bild (unscharf, qualitativ schlecht, verzerrt, usw.)",
|
||||
"Balance between image quality and generation time": "Balance zwischen Bildqualität und Generierungszeit",
|
||||
"Number of denoising steps (1-100)": "Anzahl der Dekoierungsschritte (1-100)",
|
||||
"How closely to follow the prompt (1-20). Higher values = more prompt adherence but may reduce creativity.": "Wie genau man der Eingabeaufforderung folgt (1-20). Höhere Werte = schnellere Haltung, kann aber die Kreativität verringern.",
|
||||
"Set a seed for reproducible results. Leave empty for random generation.": "Setze einen Seed für reproduzierbare Ergebnisse. Leer lassen für zufällige Generation.",
|
||||
"Advanced: Choose the noise scheduler algorithm": "Erweitert: Wählen Sie den Rauschplaner-Algorithmus",
|
||||
"What type of object detection do you need?": "Welche Art von Objekterkennung benötigst du?",
|
||||
"Select the best model for your detection task": "Wählen Sie das beste Modell für Ihre Erkennungsaufgabe",
|
||||
"Upload an image for object detection. Supports JPG, PNG, WebP formats.": "Ein Bild zur Objekterkennung hochladen. Unterstützt JPG, PNG, WebP-Formate.",
|
||||
"Minimum confidence score for detections (0.1-0.9). Higher values = fewer but more accurate detections.": "Minimaler Konfidenzwert für Erkennungen (0.1-0.9). Höhere Werte = weniger, aber genauere Erkennungen.",
|
||||
"Maximum number of objects to detect (1-100)": "Maximale Anzahl der zu entdeckenden Objekte (1-100)",
|
||||
"How to handle detection results": "Wie man mit Erkennungsergebnissen umgeht",
|
||||
"How to structure the detection results": "Wie man die Erkennungsergebnisse strukturiert",
|
||||
"How do you want to classify your images?": "Wie möchten Sie Ihre Bilder klassifizieren?",
|
||||
"What type of image classification do you need?": "Welche Art von Bildklassifikation brauchen Sie?",
|
||||
"How do you want to provide the image?": "Wie möchten Sie das Bild bereitstellen?",
|
||||
"Upload an image file for classification (JPG, PNG, WebP)": "Bilddatei für Klassifizierung hochladen (JPG, PNG, WebP)",
|
||||
"URL of the image to classify": "URL des zu klassifizierenden Bildes",
|
||||
"Enter the categories you want to classify the image into (e.g., \"dog\", \"cat\", \"bird\")": "Geben Sie die Kategorien ein, in die Sie das Bild klassifizieren möchten (z.B. \"Hund\", \"Katze\", \"Vogel\")",
|
||||
"Template for classification (advanced). Default: \"This image shows {}\"": "Vorlage für Klassifizierung (erweitert). Standard: \"Dieses Bild zeigt {}\"",
|
||||
"Maximum number of classification results to return (1-20)": "Maximale Anzahl der Ergebnisse der Klassifizierung (1-20)",
|
||||
"Minimum confidence score for results (0.0-1.0)": "Minimale Vertrauensscore für Ergebnisse (0.0-1.0)",
|
||||
"How to structure the classification results": "Wie man die Ergebnisse der Klassifizierung strukturiert",
|
||||
"impira/layoutlm-document-qa (Recommended)": "impira/layoutlm-document-qa (Empfohlen)",
|
||||
"microsoft/layoutlmv3-base": "microsoft/layoutlmv3-base",
|
||||
"nielsr/layoutlmv2-finetuned-docvqa": "nielsr/layoutlm2-finetuned-docvqa",
|
||||
"English": "Englisch",
|
||||
"Spanish": "Spanisch",
|
||||
"French": "Französisch",
|
||||
"German": "Deutsch",
|
||||
"Italian": "Italienisch",
|
||||
"Portuguese": "Portugiesisch",
|
||||
"🎯 Zero-Shot (Custom Categories)": "🎯 Null-Shot (Custom-Kategorien)",
|
||||
"📊 Pre-trained Models": "📊 Vorausgebildete Modelle",
|
||||
"🔍 Search All Models": ":magnifying_glass_tilted_left : Alle Modelle suchen",
|
||||
"🔥 Facebook BART-Large (5.4M downloads)": "🔥 Facebook BART-Large (5.4M Downloads)",
|
||||
"🔥 DeBERTa TaskSource (904K downloads)": "🔥 DeBERTa TaskSource (904K Downloads)",
|
||||
"🔥 DeBERTa MNLI-FEVER (668K downloads)": "🔥 DeBERTa MNLI-FEVER (668K Downloads)",
|
||||
"🌍 DistilBERT Multilingual (520K downloads)": "🌍 DistilBERT Multilingual (520K Downloads)",
|
||||
"😊 Sentiment: Twitter RoBERTa (3M downloads)": "😊 Sentiment: Twitter RoBERTa (3M Downloads)",
|
||||
"😊 Sentiment: DistilBERT SST-2 (2.9M downloads)": "😊 Sentiment: DistilBERT SST-2 (2.9M Downloads)",
|
||||
"🌍 Sentiment: Multilingual BERT (1.7M downloads)": "🌍 Sentiment: Mehrsprachige BERT (1.7M Downloads)",
|
||||
"💰 Finance: FinBERT Sentiment (1.5M downloads)": "💰 Finanzen: FinBERT Sentiment (1,5M Downloads)",
|
||||
"💰 Finance: FinBERT Tone (1.4M downloads)": "💰 Finanzen: FinBERT Tone (1.4M Downloads)",
|
||||
"🛡️ Hate Speech: RoBERTa (2M downloads)": "🛡️ Hassrede: RoBERTa (2M Downloads)",
|
||||
"🛡️ Toxicity: HateBERT (1.1M downloads)": "🛡️ Toxizität: HateBERT (1.1M Downloads)",
|
||||
"🛡️ Toxicity: ToxDect RoBERTa (1.1M downloads)": "🛡️ Toxizität: ToxDect RoBERTa (1.1M Downloads)",
|
||||
"🎧 Customer Service: Banking Intent": ":Kopfhörer: Kundendienst: Banking-Absicht",
|
||||
"📧 Spam: SMS Classification": "📧 Spam: SMS Klassifikation",
|
||||
"Softmax (Recommended)": "Softmax (empfohlen)",
|
||||
"Sigmoid": "Sigmoid",
|
||||
"None (Raw Scores)": "Keine (Rohpunkte)",
|
||||
"📰 News Articles & Blog Posts": "📰 Nachrichten & Blogbeiträge",
|
||||
"📧 Emails & Support Tickets": "📧 E-Mails & Support-Tickets",
|
||||
"🎯 Meetings & Conversations": "🎯 Meetings & Unterhaltungen",
|
||||
"📚 General Text & Documents": "📚 Allgemeine Texte & Dokumente",
|
||||
"🏥 Medical & Scientific": ":Krankenhaus: Medizinisch & wissenschaftlich",
|
||||
"🌍 Multilingual Content": "🌍 Mehrsprachiger Inhalt",
|
||||
"📝 Brief (30-80 words)": "📝 Kurz (30-80 Wörter)",
|
||||
"📄 Medium (80-150 words)": "📄 Mittel (80-150 Wörter)",
|
||||
"📚 Detailed (150-300 words)": "📚 Detailliert (150-300 Wörter)",
|
||||
"⚙️ Custom Length": "⚙️ Benutzerdefinierte Länge",
|
||||
"Do Not Truncate": "Nicht beenden",
|
||||
"Longest First": "Längste zuerst",
|
||||
"Only First": "Nur zuerst",
|
||||
"Only Second": "Nur Zweiter",
|
||||
"FAQ & Customer Support": "FAQ & Kundensupport",
|
||||
"Content Generation & Writing": "Inhaltsgenerierung & -schreiben",
|
||||
"General Conversation": "Allgemeine Unterhaltung",
|
||||
"Search All Models": "Alle Modelle durchsuchen",
|
||||
"Single Message (Simple Q&A)": "Einzelnachricht (einfache Frage&A)",
|
||||
"Multi-turn Conversation": "Multi-Turn-Unterhaltung",
|
||||
"Template-based Response": "Templatebasierte Antwort",
|
||||
"Customer Support Agent": "Kundendienst-Agent",
|
||||
"FAQ Assistant": "FAQ Assistent",
|
||||
"Content Writer": "Inhaltsersteller",
|
||||
"Email Responder": "E-Mail Antwort",
|
||||
"E-commerce Assistant": "E-Commerce-Assistent",
|
||||
"Brief (50-100 tokens)": "Kurz (50-100 Token)",
|
||||
"Normal (100-200 tokens)": "Normal (100-200 Token)",
|
||||
"Detailed (200-400 tokens)": "Detailliert (200-400 Token)",
|
||||
"Custom": "Eigene",
|
||||
"Fast Generation (Quick Prototypes)": "Schnelle Erzeugung (Schnellprotokolle)",
|
||||
"High Quality (Marketing & Print)": "Hohe Qualität (Marketing & Druck)",
|
||||
"Business Content (Products & Brands)": "Geschäftsinhalte (Produkte & Marken)",
|
||||
"📱 Portrait (512×768) - Social Media": "📱 Portrait (512×768) - Soziale Medien",
|
||||
"🖥️ Landscape (768×512) - Banners": "🖥️ Landschaften (768×512) - Banner",
|
||||
"⬜ Square (512×512) - Profile Pictures": "⬜ Square (512×512) - Profilbilder",
|
||||
"📺 Wide (1024×576) - Headers": "📺 Breite (1024×576) - Kopfzeilen",
|
||||
"⚙️ Custom Dimensions": "⚙️ Eigene Dimensionen",
|
||||
"⚡ Fast (10-20 steps)": ":High_spannung: Schnell (10-20 Schritte)",
|
||||
"⚖️ Balanced (20-30 steps)": "⚖️ Ausgewogen (20-30 Schritte)",
|
||||
"🎯 High Quality (30-50 steps)": "🎯 Hohe Qualität (30-50 Schritte)",
|
||||
"🏆 Maximum Quality (50+ steps)": ":trophäe: Maximale Qualität (50+ Schritte)",
|
||||
"⚙️ Custom Steps": "⚙️ Benutzerdefinierte Schritte",
|
||||
"DPM++ 2M Karras (Recommended)": "DPM++ 2M Karras (empfohlen)",
|
||||
"Euler A (Fast)": "Euler A (Schnell)",
|
||||
"DDIM (Stable)": "DDIM (Stable)",
|
||||
"LMS (Classic)": "LMS (klassisch)",
|
||||
"📋 General Objects (COCO Dataset)": ":Zwischenablage: Allgemeine Objekte (COCO Dataset)",
|
||||
"📊 Documents & Tables": "📊 Dokumente & Tabellen",
|
||||
"🛡️ Security & Monitoring": "🛡️ Sicherheit & Überwachung",
|
||||
"🏢 Business & Commerce": "🏢 Business & Commerce",
|
||||
"🎯 High Confidence Only (>0.7)": "🎯 Nur hohes Vertrauen (>0,7)",
|
||||
"⚖️ Balanced Results (>0.5)": "⚖️ Balancierte Ergebnisse (>0,5)",
|
||||
"📊 All Detections (>0.1)": "📊 Alle Erkennungen (>0.1)",
|
||||
"⚙️ Custom Threshold": "⚙️ Eigener Grenzwert",
|
||||
"📋 Business Summary": ":Zwischenablage: Geschäftsübersicht",
|
||||
"🔧 Technical Details": "🔧 Technische Details",
|
||||
"📊 Statistical Analysis": "📊 Statistische Analyse",
|
||||
"🌐 All Information": "🌐 Alle Informationen",
|
||||
"🏷️ Pre-trained Categories (Standard)": "🏷️ Vorausgebildete Kategorien (Standard)",
|
||||
"🎯 Custom Categories (Zero-shot)": "🎯 Benutzerdefinierte Kategorien (Null-Schuss)",
|
||||
"🛡️ Content Moderation & Safety": "🛡️ Inhalt Moderation & Sicherheit",
|
||||
"🏷️ General Image Tagging": "🏷️ Allgemeine Bild-Markierung",
|
||||
"👤 People & Demographics": "👤 Leute & Demographie",
|
||||
"🎨 Creative & Media": "🎨 Kreative & Medien",
|
||||
"💼 Business & Commerce": "💼 Business & Commerce",
|
||||
"📎 Upload File": "📎 Datei hochladen",
|
||||
"🔗 Image URL": "🔗 Bild-URL",
|
||||
"🌐 Comprehensive Report": "🌐 Umfassender Bericht"
|
||||
}
|
||||
@@ -0,0 +1,264 @@
|
||||
{
|
||||
"Run inference on 100,000+ open ML models for NLP, vision, and audio tasks": "Ejecutar inferencia en 100.000+ modelos abiertos ML para tareas de NLP, visión y audio",
|
||||
"Your Hugging Face API token (get it from https://huggingface.co/settings/tokens)": "Tu token de la API Face de abrazo (obtén de https://huggingface.co/settings/tokens)",
|
||||
"Document Question Answering": "Respuesta de pregunta de documento",
|
||||
"Language Translation": "Traducción de idioma",
|
||||
"Text Classification": "Clasificación de texto",
|
||||
"Text Summarization": "Resumen de texto",
|
||||
"Chat Completion": "Finalización del chat",
|
||||
"Create Image": "Crear imagen",
|
||||
"Object Detection": "Detección de objetos",
|
||||
"Image Classification": "Clasificación de imagen",
|
||||
"Answer questions from document images using Hugging Face models": "Responder preguntas de imágenes de documentos usando modelos de cara abrazando",
|
||||
"Translate text between languages using specialized Hugging Face translation models": "Traducir texto entre idiomas utilizando modelos especializados de traducción facial de abrazos",
|
||||
"Classify text into categories using Hugging Face models - includes zero-shot classification for custom categories": "Clasificar el texto en categorías usando modelos de cara abrazando - incluye clasificación de cero para categorías personalizadas",
|
||||
"Generate abstractive summaries of long text using Hugging Face models - optimized for business content": "Generar resúmenes abstractivos de texto largo usando modelos de Caras abstractivas - optimizados para contenido de negocios",
|
||||
"Generate assistant replies using chat-style LLMs - perfect for FAQ bots, support agents, and content generation": "Generar respuestas de asistente usando LLMs estilo chat - perfecto para robots de FAQ, agentes de soporte y generación de contenido",
|
||||
"Generate stunning images from text prompts using state-of-the-art diffusion models - perfect for marketing, product design, and creative content": "Genera imágenes impresionantes a partir de mensajes de texto utilizando modelos de difusión de última generación, perfectos para el mercado, el diseño de productos y el contenido creativo",
|
||||
"Detect and locate objects in images with precise bounding boxes - perfect for inventory management, content moderation, and automated tagging": "Detectar y localizar objetos en imágenes con cajas delimitadoras precisas - perfecto para la gestión del inventario, moderación de contenido y etiquetado automatizado",
|
||||
"Classify images with pre-trained models or custom categories - perfect for content moderation, automated tagging, and smart asset management": "Clasificar imágenes con modelos preformados o categorías personalizadas - perfectas para moderación de contenido, etiquetado automatizado y gestión inteligente de activos",
|
||||
"Model": "Modelo",
|
||||
"Document Image": "Imagen del documento",
|
||||
"Question": "Pregunta",
|
||||
"Number of Answers": "Número de respuestas",
|
||||
"Max Answer Length": "Longitud máxima de respuesta",
|
||||
"Handle Impossible Answers": "Manejar respuestas imposibles",
|
||||
"OCR Language": "Idioma OCR",
|
||||
"Use Cache": "Usar caché",
|
||||
"Wait for Model": "Espere al Modelo",
|
||||
"Translation Model": "Modelo de traducción",
|
||||
"Or Enter Custom Model ID": "O introduzca el ID de Modelo Personalizado",
|
||||
"Text to Translate": "Texto a traducir",
|
||||
"Source Language (Optional)": "Idioma de origen (opcional)",
|
||||
"Target Language (Optional)": "Idioma de destino (opcional)",
|
||||
"Clean Up Extra Spaces": "Limpiar espacios extra",
|
||||
"Max Translation Length": "Longitud máxima de la traducción",
|
||||
"Classification Type": "Tipo de clasificación",
|
||||
"Zero-Shot Model": "Modelo de disparo cero",
|
||||
"Custom Categories": "Categorías personalizadas",
|
||||
"Pre-trained Model": "Modelo pre-entrenado",
|
||||
"Search Models": "Modelos de búsqueda",
|
||||
"Text to Classify": "Texto a clasificar",
|
||||
"Number of Results": "Número de resultados",
|
||||
"Output Function": "Función de salida",
|
||||
"Content Type": "Tipo de contenido",
|
||||
"Summarization Model": "Modelo de resumen",
|
||||
"Text to Summarize": "Texto a resumir",
|
||||
"Summary Length": "Longitud del resumen",
|
||||
"Custom Min Length": "Longitud mínima personalizada",
|
||||
"Custom Max Length": "Longitud máxima personalizada",
|
||||
"Truncation Strategy": "Estrategia de Truncamiento",
|
||||
"Use Case": "Usar Caso",
|
||||
"Chat Model": "Modelo de chat",
|
||||
"Conversation Mode": "Modo de conversación",
|
||||
"User Message": "Mensaje de usuario",
|
||||
"System Prompt (Optional)": "Asunto del sistema (opcional)",
|
||||
"Conversation History": "Historial de conversaciones",
|
||||
"Response Template": "Plantilla de respuesta",
|
||||
"Response Length": "Duración de la respuesta",
|
||||
"Custom Max Tokens": "Tokens máximos personalizados",
|
||||
"Creativity Level": "Nivel de creatividad",
|
||||
"Response Variety": "Variedad de respuesta",
|
||||
"Stop Sequences (Optional)": "Detener secuencias (opcional)",
|
||||
"Repetition Penalty": "Penalidad de Repetición",
|
||||
"Topic Diversity": "Diversidad del tema",
|
||||
"Image Generation Model": "Modelo de generación de imágenes",
|
||||
"Text Prompt": "Texto",
|
||||
"Aspect Ratio": "Relación de aspecto",
|
||||
"Custom Width": "Ancho personalizado",
|
||||
"Custom Height": "Altura personalizada",
|
||||
"Negative Prompt": "Prompt negativa",
|
||||
"Quality vs Speed": "Calidad vs velocidad",
|
||||
"Custom Inference Steps": "Pasos de Inferencia Personalizados",
|
||||
"Guidance Scale": "Escala de orientación",
|
||||
"Seed (Optional)": "Semilla (opcional)",
|
||||
"Scheduler": "Programador",
|
||||
"Detection Model": "Modelo de detección",
|
||||
"Image to Analyze": "Imagen a analizar",
|
||||
"Confidence Threshold": "Umbral de confianza",
|
||||
"Max Detections": "Detecciones máximas",
|
||||
"Detection Filter": "Filtro de detección",
|
||||
"Output Format": "Formato de salida",
|
||||
"Classification Mode": "Modo de clasificación",
|
||||
"Classification Model": "Modelo de clasificación",
|
||||
"Image Source": "Fuente de imagen",
|
||||
"Image File": "Archivo de imagen",
|
||||
"Image URL": "URL de imagen",
|
||||
"Classification Template": "Plantilla de clasificación",
|
||||
"Hugging Face document question answering model": "Modelo de respuesta de preguntas del documento cara abrazando",
|
||||
"Image of the document to analyze (invoice, contract, etc.)": "Imagen del documento a analizar (factura, contrato, etc.)",
|
||||
"Question to ask about the document (e.g., 'What is the invoice total?')": "Pregunta para hacer acerca del documento (por ejemplo, \"¿Qué es el total de la factura?\")",
|
||||
"Number of top answers to return": "Número de respuestas principales a devolver",
|
||||
"Maximum length of predicted answers": "Longitud máxima de respuestas predecidas",
|
||||
"Whether to accept 'impossible' as an answer when no answer is found": "Si aceptar 'imposible' como una respuesta cuando no se encuentra ninguna respuesta",
|
||||
"Language to use for OCR text extraction": "Idioma a utilizar para la extracción de texto OCR",
|
||||
"Use cached results if available": "Usar resultados en caché si está disponible",
|
||||
"Wait for model to load if not ready": "Espere a que el modelo se cargue si no está listo",
|
||||
"Select a translation model or search from 7000+ available models": "Seleccione un modelo de traducción o busque entre más de 7000 modelos disponibles",
|
||||
"Alternative: Enter any Hugging Face translation model ID directly (e.g., Helsinki-NLP/opus-mt-ja-en)": "Alternativo: Introduzca cualquier ID de modelo de traducción de caras abarcando directamente (p.ej... ki-NLP/op. mt-ja-en)",
|
||||
"The text content you want to translate": "El contenido de texto que desea traducir",
|
||||
"Source language code (e.g., \"en\", \"es\", \"fr\"). Only needed for multilingual models that support multiple language pairs.": "Código de idioma fuente (por ej., \"es\", \"es\", \"fr\"). Solo es necesario para modelos multilingües que soporten varios pares de idiomas.",
|
||||
"Target language code (e.g., \"fr\", \"de\", \"zh\"). Only needed for multilingual models that support multiple language pairs.": "Código de idioma objetivo (por ej., \"fr\", \"de\", \"zh\"). Solo se necesita para modelos multilingües que soporten varios pares de idiomas.",
|
||||
"Remove potential extra spaces in the translation output": "Elimina los espacios adicionales potenciales en la salida de traducción",
|
||||
"Maximum length of the translated text (leave empty for default)": "Longitud máxima del texto traducido (dejar vacío por defecto)",
|
||||
"Use cached results if available for faster responses": "Usar resultados en caché si están disponibles para respuestas más rápidas",
|
||||
"Wait for model to load if not immediately available": "Espere a que el modelo se cargue si no está disponible inmediatamente",
|
||||
"Choose your classification approach": "Elige tu enfoque de clasificación",
|
||||
"Model for classifying into your custom categories": "Modelo para clasificar en sus categorías personalizadas",
|
||||
"Enter categories separated by commas (e.g., \"customer support, sales inquiry, spam, billing question\")": "Introduzca las categorías separadas por comas (por ejemplo, \"atención al cliente, consulta de ventas, spam, pregunta de facturación\")",
|
||||
"Select a specialized pre-trained classification model": "Seleccione un modelo de clasificación pre-entrenado especializado",
|
||||
"Search from all available text classification models": "Buscar en todos los modelos de clasificación de texto disponibles",
|
||||
"The text content you want to classify": "El contenido de texto que desea clasificar",
|
||||
"Number of top predictions to return": "Número de predicciones superiores a devolver",
|
||||
"How to calculate confidence scores": "Cómo calcular las puntuaciones de confianza",
|
||||
"Use cached results for faster responses": "Usar resultados en caché para respuestas más rápidas",
|
||||
"What type of content are you summarizing?": "¿Qué tipo de contenido está resumiendo?",
|
||||
"Select the best model for your content type": "Seleccione el mejor modelo para su tipo de contenido",
|
||||
"The long text content you want to summarize (most models work best with 512-1024 tokens)": "El contenido de texto largo que desea resumir (la mayoría de los modelos funcionan mejor con 512-1024)",
|
||||
"How long should the summary be?": "¿Cuánto tiempo debe durar el resumen?",
|
||||
"Minimum number of tokens for the summary": "Número mínimo de fichas para el resumen",
|
||||
"Maximum number of tokens for the summary": "Número máximo de fichas para el resumen",
|
||||
"Remove extra spaces and clean up formatting": "Eliminar espacios extra y limpiar el formato",
|
||||
"How to handle text that exceeds model limits": "Cómo manejar el texto que excede los límites del modelo",
|
||||
"What type of chat assistant are you building?": "¿Qué tipo de asistente de chat estás construyendo?",
|
||||
"Select the best model for your use case": "Seleccione el mejor modelo para su caso de uso",
|
||||
"How do you want to build the conversation?": "¿Cómo quieres construir la conversación?",
|
||||
"The user message or question to respond to": "El mensaje de usuario o la pregunta a la que responder",
|
||||
"Instructions for how the assistant should behave": "Instrucciones para cómo debe comportarse el asistente",
|
||||
"Previous messages in the conversation (for multi-turn chat)": "Mensajes anteriores en la conversación (para chat multiturno)",
|
||||
"Pre-built templates for common business scenarios": "Plantillas prediseñadas para escenarios de negocios comunes",
|
||||
"How long should the response be?": "¿Cuánto tiempo debe durar la respuesta?",
|
||||
"Maximum number of tokens to generate": "Número máximo de tokens a generar",
|
||||
"How creative should responses be? (0.1 = focused, 1.0 = creative)": "¿Qué tan creativas deben ser las respuestas? (0.1 = enfocado, 1.0 = creativo)",
|
||||
"Controls response diversity (0.1 = focused, 1.0 = varied)": "Controla diversidad de las respuestas (0.1 = enfocado, 1.0 = variado)",
|
||||
"Text sequences that will stop generation": "Secuencias de texto que detendrán la generación",
|
||||
"Reduce repetitive responses (-2.0 to 2.0)": "Reducir respuestas repetitivas (-2.0 a 2.0)",
|
||||
"Encourage diverse topics (-2.0 to 2.0)": "Animar a diversos temas (-2.0 a 2.0)",
|
||||
"Use cached responses for identical requests": "Usar respuestas en caché para solicitudes idénticas",
|
||||
"What type of image generation do you need?": "¿Qué tipo de generación de imágenes necesitas?",
|
||||
"Describe the image you want to generate. Be specific about style, colors, composition, and details.": "Describe la imagen que quieres generar. Sé específico sobre estilo, colores, composición y detalles.",
|
||||
"Choose the dimensions for your image": "Elija las dimensiones de su imagen",
|
||||
"Width in pixels (64-1024)": "Ancho en píxeles (64-1024)",
|
||||
"Height in pixels (64-1024)": "Altura en píxeles (64-1024)",
|
||||
"Describe what you DON'T want in the image (blur, low quality, distorted, etc.)": "Describe lo que NO quieras en la imagen (borrosa, baja calidad, distorsionada, etc.)",
|
||||
"Balance between image quality and generation time": "Equilibrar entre calidad de imagen y tiempo de generación",
|
||||
"Number of denoising steps (1-100)": "Número de pasos de desmovilización (1-100)",
|
||||
"How closely to follow the prompt (1-20). Higher values = more prompt adherence but may reduce creativity.": "Qué tan cerca de seguir el prompt (1-20), valores más altos = mayor adherencia pero puede reducir la creatividad.",
|
||||
"Set a seed for reproducible results. Leave empty for random generation.": "Establecer una semilla para resultados reproducibles. Dejar vacío para generación aleatoria.",
|
||||
"Advanced: Choose the noise scheduler algorithm": "Avanzado: Elija el algoritmo del programador de ruido",
|
||||
"What type of object detection do you need?": "¿Qué tipo de detección de objetos necesita?",
|
||||
"Select the best model for your detection task": "Seleccione el mejor modelo para su tarea de detección",
|
||||
"Upload an image for object detection. Supports JPG, PNG, WebP formats.": "Subir una imagen para detección de objetos. Soporta formatos JPG, PNG, WebP.",
|
||||
"Minimum confidence score for detections (0.1-0.9). Higher values = fewer but more accurate detections.": "Puntuación mínima de confianza para las detecciones (0.1-0.9). Valores más altos = menos pero más precisos para las detecciones.",
|
||||
"Maximum number of objects to detect (1-100)": "Número máximo de objetos a detectar (1-100)",
|
||||
"How to handle detection results": "Cómo manejar los resultados de detección",
|
||||
"How to structure the detection results": "Cómo estructurar los resultados de detección",
|
||||
"How do you want to classify your images?": "¿Cómo quieres clasificar tus imágenes?",
|
||||
"What type of image classification do you need?": "¿Qué tipo de clasificación de imagen necesita?",
|
||||
"How do you want to provide the image?": "¿Cómo quieres proporcionar la imagen?",
|
||||
"Upload an image file for classification (JPG, PNG, WebP)": "Subir un archivo de imagen para la clasificación (JPG, PNG, WebP)",
|
||||
"URL of the image to classify": "URL de la imagen a clasificar",
|
||||
"Enter the categories you want to classify the image into (e.g., \"dog\", \"cat\", \"bird\")": "Introduzca las categorías en las que desea clasificar la imagen (por ejemplo, \"perro\", \"gato\", \"pájaro\")",
|
||||
"Template for classification (advanced). Default: \"This image shows {}\"": "Plantilla para clasificación (avanzada). Por defecto: \"Esta imagen muestra {}\"",
|
||||
"Maximum number of classification results to return (1-20)": "Número máximo de resultados de clasificación a devolver (1-20)",
|
||||
"Minimum confidence score for results (0.0-1.0)": "Puntuación mínima de confianza para los resultados (0.0-1.0)",
|
||||
"How to structure the classification results": "Cómo estructurar los resultados de la clasificación",
|
||||
"impira/layoutlm-document-qa (Recommended)": "impira/layoutlm-document-qa (Recomendado)",
|
||||
"microsoft/layoutlmv3-base": "base microsoft/layoutlmv3",
|
||||
"nielsr/layoutlmv2-finetuned-docvqa": "nielsr/layoutlmv2-finetuned-docvqa",
|
||||
"English": "Inglés",
|
||||
"Spanish": "Español",
|
||||
"French": "Francés",
|
||||
"German": "Alemán",
|
||||
"Italian": "Italiano",
|
||||
"Portuguese": "Portugués",
|
||||
"🎯 Zero-Shot (Custom Categories)": "🎯 Zero-Shot (categorías personalizadas)",
|
||||
"📊 Pre-trained Models": "📊 Modelos pre-entrenados",
|
||||
"🔍 Search All Models": "🔍 Buscar todos los modelos",
|
||||
"🔥 Facebook BART-Large (5.4M downloads)": "🔥 Facebook BART-Large (5.4M descargas)",
|
||||
"🔥 DeBERTa TaskSource (904K downloads)": "🔥 DeBERTa TaskSource (descargas 904K)",
|
||||
"🔥 DeBERTa MNLI-FEVER (668K downloads)": "🔥 DeBERTa MNLI-FEVER (668K downloads)",
|
||||
"🌍 DistilBERT Multilingual (520K downloads)": ":globe_showing_Europe-Portugal: DistilBERT multilingüe (520K descargas)",
|
||||
"😊 Sentiment: Twitter RoBERTa (3M downloads)": "😊 Sentiment: Twitter RoBERTa (descargas 3M)",
|
||||
"😊 Sentiment: DistilBERT SST-2 (2.9M downloads)": "😊 Sentiment: DistilBERT SST-2 (2.9M descargas)",
|
||||
"🌍 Sentiment: Multilingual BERT (1.7M downloads)": ":globe_showing_Europe-Portugal: Sentiment: BERT multilingüe (1.7M descargas)",
|
||||
"💰 Finance: FinBERT Sentiment (1.5M downloads)": "💰 Finanza: Sentimento Finanzador (1.5M descargas)",
|
||||
"💰 Finance: FinBERT Tone (1.4M downloads)": "💰 Finanza: Finanza: Tono FinBERT (descargas 1.4M)",
|
||||
"🛡️ Hate Speech: RoBERTa (2M downloads)": "🛡️ Discurso de odio: RoBERTa (descargas de 2M)",
|
||||
"🛡️ Toxicity: HateBERT (1.1M downloads)": "🛡️ Toxicity: HateBERT (1.1M descargas)",
|
||||
"🛡️ Toxicity: ToxDect RoBERTa (1.1M downloads)": "🛡️ Toxicity: ToxDect RoBERTa (1.1M descargas)",
|
||||
"🎧 Customer Service: Banking Intent": "🎧 Servicio al Cliente: Intento Bancario",
|
||||
"📧 Spam: SMS Classification": "📧 Spam: Clasificación de SMS",
|
||||
"Softmax (Recommended)": "Softmax (Recomendado)",
|
||||
"Sigmoid": "Sigmoide",
|
||||
"None (Raw Scores)": "Ninguno (puntuaciones pendientes)",
|
||||
"📰 News Articles & Blog Posts": ":diario: Artículos de noticias y entradas de blog",
|
||||
"📧 Emails & Support Tickets": "📧 Emails & Tickets de Soporte",
|
||||
"🎯 Meetings & Conversations": "🎯 reuniones y conversaciones",
|
||||
"📚 General Text & Documents": "📚 Texto general y documentos",
|
||||
"🏥 Medical & Scientific": "🏥 Médico y Científico",
|
||||
"🌍 Multilingual Content": ":globe_showing_Europa-Portugal: Contenido multilingüe",
|
||||
"📝 Brief (30-80 words)": "📝 Breve (30-80 palabras)",
|
||||
"📄 Medium (80-150 words)": "📄 Media (80-150 palabras)",
|
||||
"📚 Detailed (150-300 words)": "📚 Detallado (150-300 palabras)",
|
||||
"⚙️ Custom Length": "⚙️ Longitud personalizada",
|
||||
"Do Not Truncate": "No truncar",
|
||||
"Longest First": "Más largo primero",
|
||||
"Only First": "Sólo primero",
|
||||
"Only Second": "Solo Segundo",
|
||||
"FAQ & Customer Support": "FAQ & Soporte al Cliente",
|
||||
"Content Generation & Writing": "Generación de contenido y escritura",
|
||||
"General Conversation": "Conversación general",
|
||||
"Search All Models": "Buscar todos los modelos",
|
||||
"Single Message (Simple Q&A)": "Mensaje único (Simple Q&A)",
|
||||
"Multi-turn Conversation": "Conversación múltiple",
|
||||
"Template-based Response": "Respuesta basada en plantillas",
|
||||
"Customer Support Agent": "Agente de soporte al cliente",
|
||||
"FAQ Assistant": "Asistente de FAQ",
|
||||
"Content Writer": "Escritor de contenido",
|
||||
"Email Responder": "Respuesta por email",
|
||||
"E-commerce Assistant": "Asistente de comercio electrónico",
|
||||
"Brief (50-100 tokens)": "Breve (50-100 tokens)",
|
||||
"Normal (100-200 tokens)": "Normal (100-200 tokens)",
|
||||
"Detailed (200-400 tokens)": "Detalles (tokens 200-400)",
|
||||
"Custom": "Personalizado",
|
||||
"Fast Generation (Quick Prototypes)": "Generación rápida (prototipos rápidos)",
|
||||
"High Quality (Marketing & Print)": "Alta calidad (Marketing e Impresión)",
|
||||
"Business Content (Products & Brands)": "Contenido del negocio (productos y marcas)",
|
||||
"📱 Portrait (512×768) - Social Media": "📱 Retrato (512×768) - Medios de comunicación social",
|
||||
"🖥️ Landscape (768×512) - Banners": "🖥️ Landscape (768×512) - Banners",
|
||||
"⬜ Square (512×512) - Profile Pictures": "⬜ Cuadrado (512×512) - Fotos de perfil",
|
||||
"📺 Wide (1024×576) - Headers": "📺 Ancho (1024×576) - Encabezados",
|
||||
"⚙️ Custom Dimensions": "⚙️ Dimensiones personalizadas",
|
||||
"⚡ Fast (10-20 steps)": "⚡ Rápido (10 pasos)",
|
||||
"⚖️ Balanced (20-30 steps)": "⚖️ Equilibrado (20-30 pasos)",
|
||||
"🎯 High Quality (30-50 steps)": "🎯 Alta calidad (30-50 pasos)",
|
||||
"🏆 Maximum Quality (50+ steps)": "🏆 Calidad máxima (más de 50 pasos)",
|
||||
"⚙️ Custom Steps": "⚙️ Pasos personalizados",
|
||||
"DPM++ 2M Karras (Recommended)": "DPM++ 2M Karras (Recomendado)",
|
||||
"Euler A (Fast)": "Euler A (rápido)",
|
||||
"DDIM (Stable)": "DDIM (Stable)",
|
||||
"LMS (Classic)": "LMS (Clásico)",
|
||||
"📋 General Objects (COCO Dataset)": "📋 Objetos generales (COCO Dataset)",
|
||||
"📊 Documents & Tables": "📊 Documentos y Tablas",
|
||||
"🛡️ Security & Monitoring": "🛡️ Seguridad y monitoreo",
|
||||
"🏢 Business & Commerce": "🏢 Negocios y Comercio",
|
||||
"🎯 High Confidence Only (>0.7)": "🎯 Alta Confianza Sólo (>0.7)",
|
||||
"⚖️ Balanced Results (>0.5)": "⚖️ Resultados equilibrados (>0.5)",
|
||||
"📊 All Detections (>0.1)": "📊 Todas las detecciones (>0.1)",
|
||||
"⚙️ Custom Threshold": "⚙️ Umbral personalizado",
|
||||
"📋 Business Summary": "📋 Resumen de negocios",
|
||||
"🔧 Technical Details": "🔧 Detalles técnicos",
|
||||
"📊 Statistical Analysis": "📊 Análisis estático",
|
||||
"🌐 All Information": "🌐 Toda la información",
|
||||
"🏷️ Pre-trained Categories (Standard)": "🏷️ Categorías Pre-entrenadas (Estándar)",
|
||||
"🎯 Custom Categories (Zero-shot)": "🎯 Categorías personalizadas (cero disparos)",
|
||||
"🛡️ Content Moderation & Safety": "🛡️ Moderación de contenido y seguridad",
|
||||
"🏷️ General Image Tagging": "🏷️ Etiqueta general de imagen",
|
||||
"👤 People & Demographics": "👤 Personas y demográficos",
|
||||
"🎨 Creative & Media": "🎨 Creativo y multimedia",
|
||||
"💼 Business & Commerce": "💼 Negocios y Comercio",
|
||||
"📎 Upload File": "📎 Subir archivo",
|
||||
"🔗 Image URL": "🔗 URL de imagen",
|
||||
"🌐 Comprehensive Report": "🌐 Informe completo"
|
||||
}
|
||||
@@ -0,0 +1,264 @@
|
||||
{
|
||||
"Run inference on 100,000+ open ML models for NLP, vision, and audio tasks": "Exécuter l'inférence sur plus de 100 000 modèles ML ouverts pour les tâches NLP, vision et audio",
|
||||
"Your Hugging Face API token (get it from https://huggingface.co/settings/tokens)": "Votre jeton d'API Face (récupérez-le depuis https://huggingface.co/settings/tokens)",
|
||||
"Document Question Answering": "Répondre aux questions du document",
|
||||
"Language Translation": "Traduction de langue",
|
||||
"Text Classification": "Classification du texte",
|
||||
"Text Summarization": "Résumé du texte",
|
||||
"Chat Completion": "Terminer le tchat",
|
||||
"Create Image": "Créer une image",
|
||||
"Object Detection": "Détection d'objets",
|
||||
"Image Classification": "Classification des images",
|
||||
"Answer questions from document images using Hugging Face models": "Répondre aux questions des images du document en utilisant les modèles de face câlinée",
|
||||
"Translate text between languages using specialized Hugging Face translation models": "Traduire le texte entre les langues en utilisant des modèles spécialisés de traduction de visage Hugging",
|
||||
"Classify text into categories using Hugging Face models - includes zero-shot classification for custom categories": "Classer le texte dans les catégories en utilisant les modèles de face d'embrochage - inclut la classification à zéro coup pour les catégories personnalisées",
|
||||
"Generate abstractive summaries of long text using Hugging Face models - optimized for business content": "Générer des résumés abstraits de texte long en utilisant des modèles de face câlin - optimisés pour le contenu de l'entreprise",
|
||||
"Generate assistant replies using chat-style LLMs - perfect for FAQ bots, support agents, and content generation": "Générer des réponses d'assistant en utilisant des LLMs de style chat - parfait pour les bots de FAQ, les agents de support et la génération de contenu",
|
||||
"Generate stunning images from text prompts using state-of-the-art diffusion models - perfect for marketing, product design, and creative content": "Générer des images époustouflantes à partir d'invitations de texte à l'aide de modèles de diffusion à la fine pointe de la technologie - parfait pour le marketing, la conception de produits et le contenu créatif",
|
||||
"Detect and locate objects in images with precise bounding boxes - perfect for inventory management, content moderation, and automated tagging": "Détecter et localiser des objets dans des images avec des boîtes de recul précises - parfait pour la gestion des stocks, la modération du contenu et le marquage automatique",
|
||||
"Classify images with pre-trained models or custom categories - perfect for content moderation, automated tagging, and smart asset management": "Classer les images avec des modèles préformés ou des catégories personnalisées - parfait pour la modération du contenu, le marquage automatisé et la gestion intelligente de l'actif",
|
||||
"Model": "Modélisation",
|
||||
"Document Image": "Image du document",
|
||||
"Question": "Question",
|
||||
"Number of Answers": "Nombre de réponses",
|
||||
"Max Answer Length": "Longueur maximale de réponse",
|
||||
"Handle Impossible Answers": "Traiter les réponses impossibles",
|
||||
"OCR Language": "Langue de la ROC",
|
||||
"Use Cache": "Utiliser le cache",
|
||||
"Wait for Model": "Attendre le modèle",
|
||||
"Translation Model": "Modèle de traduction",
|
||||
"Or Enter Custom Model ID": "Ou entrez l'ID du modèle personnalisé",
|
||||
"Text to Translate": "Texte à traduire",
|
||||
"Source Language (Optional)": "Langue source (facultatif)",
|
||||
"Target Language (Optional)": "Langue cible (facultatif)",
|
||||
"Clean Up Extra Spaces": "Nettoyer les espaces supplémentaires",
|
||||
"Max Translation Length": "Longueur maximale de la traduction",
|
||||
"Classification Type": "Type de classification",
|
||||
"Zero-Shot Model": "Modèle Zéro-Tir",
|
||||
"Custom Categories": "Catégories personnalisées",
|
||||
"Pre-trained Model": "Modèle pré-formé",
|
||||
"Search Models": "Rechercher des modèles",
|
||||
"Text to Classify": "Texte à classer",
|
||||
"Number of Results": "Nombre de résultats",
|
||||
"Output Function": "Fonction de sortie",
|
||||
"Content Type": "Type de contenu",
|
||||
"Summarization Model": "Modèle de récapitulation",
|
||||
"Text to Summarize": "Texte à résumer",
|
||||
"Summary Length": "Longueur du résumé",
|
||||
"Custom Min Length": "Longueur minimale personnalisée",
|
||||
"Custom Max Length": "Longueur maximale personnalisée",
|
||||
"Truncation Strategy": "Stratégie de troncature",
|
||||
"Use Case": "Cas d'utilisation",
|
||||
"Chat Model": "Modèle de chat",
|
||||
"Conversation Mode": "Mode de conversation",
|
||||
"User Message": "Message de l'utilisateur",
|
||||
"System Prompt (Optional)": "Message système (facultatif)",
|
||||
"Conversation History": "Historique de la conversation",
|
||||
"Response Template": "Modèle de réponse",
|
||||
"Response Length": "Durée de la réponse",
|
||||
"Custom Max Tokens": "Tokens personnalisés max",
|
||||
"Creativity Level": "Niveau de créativité",
|
||||
"Response Variety": "Variété de réponse",
|
||||
"Stop Sequences (Optional)": "Arrêter les séquences (facultatif)",
|
||||
"Repetition Penalty": "Pénalité de répétition",
|
||||
"Topic Diversity": "Diversité du sujet",
|
||||
"Image Generation Model": "Modèle de génération d'image",
|
||||
"Text Prompt": "Demande de texte",
|
||||
"Aspect Ratio": "Ratio d'aspect",
|
||||
"Custom Width": "Largeur personnalisée",
|
||||
"Custom Height": "Hauteur personnalisée",
|
||||
"Negative Prompt": "Proposition négative",
|
||||
"Quality vs Speed": "Qualité vs vitesse",
|
||||
"Custom Inference Steps": "Étapes d'inférence personnalisées",
|
||||
"Guidance Scale": "Échelle d'orientation",
|
||||
"Seed (Optional)": "Graine (facultatif)",
|
||||
"Scheduler": "Planificateur",
|
||||
"Detection Model": "Modèle de Détection",
|
||||
"Image to Analyze": "Image à analyser",
|
||||
"Confidence Threshold": "Seuil de confiance",
|
||||
"Max Detections": "Détections max",
|
||||
"Detection Filter": "Filtre de détection",
|
||||
"Output Format": "Format de sortie",
|
||||
"Classification Mode": "Mode de classification",
|
||||
"Classification Model": "Modèle de classification",
|
||||
"Image Source": "Source de l'image",
|
||||
"Image File": "Fichier image",
|
||||
"Image URL": "URL de l'image",
|
||||
"Classification Template": "Modèle de classification",
|
||||
"Hugging Face document question answering model": "Modèle de réponse à la question du document d'embrasser",
|
||||
"Image of the document to analyze (invoice, contract, etc.)": "Image du document à analyser (facture, contrat, etc.)",
|
||||
"Question to ask about the document (e.g., 'What is the invoice total?')": "Question à poser au sujet du document (par exemple, \"Quel est le total de la facture?\")",
|
||||
"Number of top answers to return": "Nombre de meilleures réponses à retourner",
|
||||
"Maximum length of predicted answers": "Longueur maximale des réponses prédites",
|
||||
"Whether to accept 'impossible' as an answer when no answer is found": "Accepter 'impossible' comme réponse quand aucune réponse n'est trouvée",
|
||||
"Language to use for OCR text extraction": "Langue à utiliser pour l'extraction de texte OCR",
|
||||
"Use cached results if available": "Utiliser les résultats mis en cache si disponible",
|
||||
"Wait for model to load if not ready": "Attendre que le modèle soit chargé s'il n'est pas prêt",
|
||||
"Select a translation model or search from 7000+ available models": "Sélectionnez un modèle de traduction ou recherchez parmi plus de 7000 modèles disponibles",
|
||||
"Alternative: Enter any Hugging Face translation model ID directly (e.g., Helsinki-NLP/opus-mt-ja-en)": "Alternative : Entrez directement n'importe quel ID de modèle de traduction de visage (ex. Helsinki-NLP/opus-mt-ja-en)",
|
||||
"The text content you want to translate": "Le contenu du texte que vous souhaitez traduire",
|
||||
"Source language code (e.g., \"en\", \"es\", \"fr\"). Only needed for multilingual models that support multiple language pairs.": "Code de langue source (par exemple, \"fr\", \"es\", \"fr\"). Seulement nécessaire pour les modèles multilingues qui prennent en charge plusieurs paires de langues.",
|
||||
"Target language code (e.g., \"fr\", \"de\", \"zh\"). Only needed for multilingual models that support multiple language pairs.": "Code de langue cible (par exemple, \"fr\", \"de\", \"zh\"). Nécessaire uniquement pour les modèles multilingues qui prennent en charge plusieurs paires de langues.",
|
||||
"Remove potential extra spaces in the translation output": "Supprimer les espaces supplémentaires potentiels dans la sortie de traduction",
|
||||
"Maximum length of the translated text (leave empty for default)": "Longueur maximale du texte traduit (laisser vide pour la valeur par défaut)",
|
||||
"Use cached results if available for faster responses": "Utiliser les résultats mis en cache si disponible pour des réponses plus rapides",
|
||||
"Wait for model to load if not immediately available": "Attendre que le modèle se charge s'il n'est pas immédiatement disponible",
|
||||
"Choose your classification approach": "Choisissez votre approche de classification",
|
||||
"Model for classifying into your custom categories": "Modèle de classification dans vos catégories personnalisées",
|
||||
"Enter categories separated by commas (e.g., \"customer support, sales inquiry, spam, billing question\")": "Entrez des catégories séparées par des virgules (par exemple, \"assistance à la clientèle, demande de vente, spam, question de facturation\")",
|
||||
"Select a specialized pre-trained classification model": "Sélectionnez un modèle de classification préformé spécialisé",
|
||||
"Search from all available text classification models": "Rechercher dans tous les modèles de classification de texte disponibles",
|
||||
"The text content you want to classify": "Le contenu du texte que vous souhaitez classer",
|
||||
"Number of top predictions to return": "Nombre de meilleures prédictions à retourner",
|
||||
"How to calculate confidence scores": "Comment calculer les scores de confiance",
|
||||
"Use cached results for faster responses": "Utiliser les résultats mis en cache pour des réponses plus rapides",
|
||||
"What type of content are you summarizing?": "Quel type de contenu résumez-vous ?",
|
||||
"Select the best model for your content type": "Sélectionnez le meilleur modèle pour votre type de contenu",
|
||||
"The long text content you want to summarize (most models work best with 512-1024 tokens)": "Le contenu de texte long que vous voulez résumer (la plupart des modèles fonctionnent mieux avec 512-1024 jetons)",
|
||||
"How long should the summary be?": "Combien de temps doit être le résumé ?",
|
||||
"Minimum number of tokens for the summary": "Nombre minimum de jetons pour le résumé",
|
||||
"Maximum number of tokens for the summary": "Nombre maximum de jetons pour le résumé",
|
||||
"Remove extra spaces and clean up formatting": "Supprimer les espaces supplémentaires et nettoyer le formatage",
|
||||
"How to handle text that exceeds model limits": "Comment gérer le texte qui dépasse les limites du modèle",
|
||||
"What type of chat assistant are you building?": "Quel type d'assistant de chat êtes-vous en train de construire ?",
|
||||
"Select the best model for your use case": "Sélectionnez le meilleur modèle pour votre cas d'utilisation",
|
||||
"How do you want to build the conversation?": "Comment voulez-vous construire la conversation ?",
|
||||
"The user message or question to respond to": "Le message de l'utilisateur ou la question à laquelle répondre",
|
||||
"Instructions for how the assistant should behave": "Instructions sur le comportement de l'assistant",
|
||||
"Previous messages in the conversation (for multi-turn chat)": "Messages précédents dans la conversation (pour le chat multi-tours)",
|
||||
"Pre-built templates for common business scenarios": "Modèles préconstruits pour les scénarios commerciaux communs",
|
||||
"How long should the response be?": "Combien de temps devrait être la réponse ?",
|
||||
"Maximum number of tokens to generate": "Nombre maximum de jetons à générer",
|
||||
"How creative should responses be? (0.1 = focused, 1.0 = creative)": "À quel point les réponses doivent-elles être créatives ? (0.1 = ciblées, 1.0 = créatif)",
|
||||
"Controls response diversity (0.1 = focused, 1.0 = varied)": "Contrôle la diversité de la réponse (0.1 = focused, 1.0 = varié)",
|
||||
"Text sequences that will stop generation": "Séquences de texte qui arrêteront la génération",
|
||||
"Reduce repetitive responses (-2.0 to 2.0)": "Réduire les réponses répétitives (-2.0 à 2.0)",
|
||||
"Encourage diverse topics (-2.0 to 2.0)": "Encourager les différents sujets (-2.0 à 2.0)",
|
||||
"Use cached responses for identical requests": "Utiliser les réponses mises en cache pour les requêtes identiques",
|
||||
"What type of image generation do you need?": "Quel type de génération d’images avez-vous besoin?",
|
||||
"Describe the image you want to generate. Be specific about style, colors, composition, and details.": "Décrivez l'image que vous voulez générer. Soyez spécifique sur le style, les couleurs, la composition et les détails.",
|
||||
"Choose the dimensions for your image": "Choisissez les dimensions de votre image",
|
||||
"Width in pixels (64-1024)": "Largeur en pixels (64-1024)",
|
||||
"Height in pixels (64-1024)": "Hauteur en pixels (64-1024)",
|
||||
"Describe what you DON'T want in the image (blur, low quality, distorted, etc.)": "Décrivez ce que vous ne voulez pas dans l'image (flou, mauvaise qualité, déformé, etc.)",
|
||||
"Balance between image quality and generation time": "Équilibre entre la qualité de l'image et le temps de génération",
|
||||
"Number of denoising steps (1-100)": "Nombre d'étapes de désendettement (1-100)",
|
||||
"How closely to follow the prompt (1-20). Higher values = more prompt adherence but may reduce creativity.": "Comment suivre de près le prompt (1-20). Des valeurs plus élevées = une adhésion plus rapide mais peut réduire la créativité.",
|
||||
"Set a seed for reproducible results. Leave empty for random generation.": "Définir une graine pour les résultats reproductibles. Laisser vide pour une génération aléatoire.",
|
||||
"Advanced: Choose the noise scheduler algorithm": "Avancé : Choisissez l'algorithme du planificateur de bruit",
|
||||
"What type of object detection do you need?": "De quel type de détection d'objet avez-vous besoin ?",
|
||||
"Select the best model for your detection task": "Sélectionnez le meilleur modèle pour votre tâche de détection",
|
||||
"Upload an image for object detection. Supports JPG, PNG, WebP formats.": "Télécharger une image pour la détection d'objet. Supporte les formats JPG, PNG, WebP.",
|
||||
"Minimum confidence score for detections (0.1-0.9). Higher values = fewer but more accurate detections.": "Score de confiance minimum pour les détections (0.1-0.9). Valeurs plus élevées = moins de détections mais plus précises.",
|
||||
"Maximum number of objects to detect (1-100)": "Nombre maximum d'objets à détecter (1-100)",
|
||||
"How to handle detection results": "Comment gérer les résultats de détection",
|
||||
"How to structure the detection results": "Comment structurer les résultats de détection",
|
||||
"How do you want to classify your images?": "Comment voulez-vous classer vos images?",
|
||||
"What type of image classification do you need?": "De quel type de classification d'image avez-vous besoin?",
|
||||
"How do you want to provide the image?": "Comment voulez-vous fournir l'image ?",
|
||||
"Upload an image file for classification (JPG, PNG, WebP)": "Télécharger un fichier image pour la classification (JPG, PNG, WebP)",
|
||||
"URL of the image to classify": "URL de l'image à classer",
|
||||
"Enter the categories you want to classify the image into (e.g., \"dog\", \"cat\", \"bird\")": "Entrez les catégories dans lesquelles vous voulez classer l'image (par exemple, \"chien\", \"chat\", \"oiseau\")",
|
||||
"Template for classification (advanced). Default: \"This image shows {}\"": "Modèle de classification (avancé). Par défaut: \"Cette image montre {}\"",
|
||||
"Maximum number of classification results to return (1-20)": "Nombre maximum de résultats de classification à retourner (1-20)",
|
||||
"Minimum confidence score for results (0.0-1.0)": "Score de confiance minimum pour les résultats (0.0-1.0)",
|
||||
"How to structure the classification results": "Comment structurer les résultats de la classification",
|
||||
"impira/layoutlm-document-qa (Recommended)": "impira/layoutlm-document-qa (Recommandé)",
|
||||
"microsoft/layoutlmv3-base": "base microsoft/layoutlmv3",
|
||||
"nielsr/layoutlmv2-finetuned-docvqa": "nielsr/layoutlmv2-finetuned-docvqa",
|
||||
"English": "Anglais",
|
||||
"Spanish": "Espagnol",
|
||||
"French": "Français",
|
||||
"German": "Allemand",
|
||||
"Italian": "Italien",
|
||||
"Portuguese": "Portugais",
|
||||
"🎯 Zero-Shot (Custom Categories)": "🎯 Zero-Shot (Catégories personnalisées)",
|
||||
"📊 Pre-trained Models": "📊 Modèles pré-formés",
|
||||
"🔍 Search All Models": "🔍 Rechercher tous les modèles",
|
||||
"🔥 Facebook BART-Large (5.4M downloads)": "🔥 Facebook BART-Large (5.4M téléchargements)",
|
||||
"🔥 DeBERTa TaskSource (904K downloads)": "🔥 DeBERTa TaskSource (téléchargement 904K)",
|
||||
"🔥 DeBERTa MNLI-FEVER (668K downloads)": "🔥 DeBERTa MNLI-FEVER (668K téléchargements)",
|
||||
"🌍 DistilBERT Multilingual (520K downloads)": "🌍 DistilBERT Multilingue (520K téléchargements)",
|
||||
"😊 Sentiment: Twitter RoBERTa (3M downloads)": "😊 Sentiment: Twitter RoBERTa (3M téléchargés)",
|
||||
"😊 Sentiment: DistilBERT SST-2 (2.9M downloads)": "😊 Sentiment: DistilBERT SST-2 (2.9M téléchargés)",
|
||||
"🌍 Sentiment: Multilingual BERT (1.7M downloads)": "🌍 Sentiment: BERT Multilingue (1.7M téléchargements)",
|
||||
"💰 Finance: FinBERT Sentiment (1.5M downloads)": "💰 Finance: Sentiment FinBERT (1.5M de téléchargements)",
|
||||
"💰 Finance: FinBERT Tone (1.4M downloads)": "💰 Finance: Tonalité FinBERT (1.4M de téléchargements)",
|
||||
"🛡️ Hate Speech: RoBERTa (2M downloads)": "🛡️ Discours de haine : RoBERTa (2M téléchargés)",
|
||||
"🛡️ Toxicity: HateBERT (1.1M downloads)": "🛡️ Toxicity: HateBERT (1.1M téléchargements)",
|
||||
"🛡️ Toxicity: ToxDect RoBERTa (1.1M downloads)": "🛡️ ToxDect RoBERTa (1.1M téléchargements)",
|
||||
"🎧 Customer Service: Banking Intent": ":Headphone: Service à la clientèle: Intentions bancaires",
|
||||
"📧 Spam: SMS Classification": "📧 Spam: Classification SMS",
|
||||
"Softmax (Recommended)": "Softmax (Recommandé)",
|
||||
"Sigmoid": "Sigmoïde",
|
||||
"None (Raw Scores)": "Aucun score (Raw Scores)",
|
||||
"📰 News Articles & Blog Posts": ":newspapaper: Articles d'actualités et articles de blog",
|
||||
"📧 Emails & Support Tickets": "📧 Emails & Tickets de Support",
|
||||
"🎯 Meetings & Conversations": "🎯 Rencontres & Conversations",
|
||||
"📚 General Text & Documents": "📚 Texte Général & Documents",
|
||||
"🏥 Medical & Scientific": "🏥 Médicale & Scientifique",
|
||||
"🌍 Multilingual Content": "🌍 Contenu Multilingue",
|
||||
"📝 Brief (30-80 words)": "📝 Bref (30-80 mots)",
|
||||
"📄 Medium (80-150 words)": "📄 Moyen (80-150 mots)",
|
||||
"📚 Detailed (150-300 words)": "📚 Détail (150-300 mots)",
|
||||
"⚙️ Custom Length": "⚙️ Longueur personnalisée",
|
||||
"Do Not Truncate": "Ne pas tronquer",
|
||||
"Longest First": "Le plus long en premier",
|
||||
"Only First": "Seulement en premier",
|
||||
"Only Second": "Seulement la seconde",
|
||||
"FAQ & Customer Support": "FAQ & Support à la clientèle",
|
||||
"Content Generation & Writing": "Génération et écriture de contenu",
|
||||
"General Conversation": "Conversation Générale",
|
||||
"Search All Models": "Rechercher dans tous les modèles",
|
||||
"Single Message (Simple Q&A)": "Message unique (Q&A)",
|
||||
"Multi-turn Conversation": "Conversation multi-tours",
|
||||
"Template-based Response": "Réponse basée sur un modèle",
|
||||
"Customer Support Agent": "Agent de Support Client",
|
||||
"FAQ Assistant": "Assistant FAQ",
|
||||
"Content Writer": "Éditeur de contenu",
|
||||
"Email Responder": "Répondeur de courriel",
|
||||
"E-commerce Assistant": "Assistant e-commerce",
|
||||
"Brief (50-100 tokens)": "Brief (50-100 jetons)",
|
||||
"Normal (100-200 tokens)": "Normal (100-200 jetons)",
|
||||
"Detailed (200-400 tokens)": "Détail (200-400 jetons)",
|
||||
"Custom": "Personnalisé",
|
||||
"Fast Generation (Quick Prototypes)": "Génération rapide (Prototypes Rapide)",
|
||||
"High Quality (Marketing & Print)": "Haute qualité (Marketing & Imprimer)",
|
||||
"Business Content (Products & Brands)": "Contenu de l'entreprise (Produits & Marques)",
|
||||
"📱 Portrait (512×768) - Social Media": "📱 Portrait (512×768) - Médias sociaux",
|
||||
"🖥️ Landscape (768×512) - Banners": "🖥️ Paysage (768×512) - Bannières",
|
||||
"⬜ Square (512×512) - Profile Pictures": "⬜ Carré (512×512) - Images de profil",
|
||||
"📺 Wide (1024×576) - Headers": "📺 Wide (1024×576) - En-têtes",
|
||||
"⚙️ Custom Dimensions": "⚙️ Dimensions personnalisées",
|
||||
"⚡ Fast (10-20 steps)": "⚡ Rapide (10-20 pas)",
|
||||
"⚖️ Balanced (20-30 steps)": "⚖️ Équilibré (20-30 étapes)",
|
||||
"🎯 High Quality (30-50 steps)": "🎯 Haute qualité (30-50 pas)",
|
||||
"🏆 Maximum Quality (50+ steps)": "🏆 Qualité maximale (plus de 50 étapes)",
|
||||
"⚙️ Custom Steps": "⚙️ Étapes personnalisées",
|
||||
"DPM++ 2M Karras (Recommended)": "DPM++ 2M Karras (Recommandé)",
|
||||
"Euler A (Fast)": "Euler A (Rapide)",
|
||||
"DDIM (Stable)": "DDIM (Stable)",
|
||||
"LMS (Classic)": "LMS (Classique)",
|
||||
"📋 General Objects (COCO Dataset)": "📋 Objets Généraux (COCO Dataset)",
|
||||
"📊 Documents & Tables": "📊 Documents & Tables",
|
||||
"🛡️ Security & Monitoring": "🛡️ Sécurité et Surveillance",
|
||||
"🏢 Business & Commerce": "🏢 Affaires & Commerce",
|
||||
"🎯 High Confidence Only (>0.7)": "🎯 Haute Confiance uniquement (>0.7)",
|
||||
"⚖️ Balanced Results (>0.5)": "⚖️ Résultats équilibrés (>0,5)",
|
||||
"📊 All Detections (>0.1)": "📊 Toutes les détections (>0.1)",
|
||||
"⚙️ Custom Threshold": "⚙️ Seuil personnalisé",
|
||||
"📋 Business Summary": "📋 Résumé professionnel",
|
||||
"🔧 Technical Details": "🔧 Détails Techniques",
|
||||
"📊 Statistical Analysis": "📊 Analyse statistique",
|
||||
"🌐 All Information": "🌐 Toutes les informations",
|
||||
"🏷️ Pre-trained Categories (Standard)": "🏷️ Catégories pré-formées (Standard)",
|
||||
"🎯 Custom Categories (Zero-shot)": "🎯 Catégories personnalisées (Zéro-shot)",
|
||||
"🛡️ Content Moderation & Safety": "🛡️ Modération de contenu et sécurité",
|
||||
"🏷️ General Image Tagging": "🏷️ Balisage général de l'image",
|
||||
"👤 People & Demographics": "👤 Personnes et démographie",
|
||||
"🎨 Creative & Media": "🎨 Créatif et Médias",
|
||||
"💼 Business & Commerce": "💼 Affaires & Commerce",
|
||||
"📎 Upload File": "📎 Charger un fichier",
|
||||
"🔗 Image URL": "🔗 URL de l'image",
|
||||
"🌐 Comprehensive Report": "🌐 Rapport complet"
|
||||
}
|
||||
@@ -0,0 +1,264 @@
|
||||
{
|
||||
"Run inference on 100,000+ open ML models for NLP, vision, and audio tasks": "NLP、ビジョン、およびオーディオタスクの100,000以上のオープンMLモデルで推論を実行する",
|
||||
"Your Hugging Face API token (get it from https://huggingface.co/settings/tokens)": "Hugging Face API トークン (https://huggingface.co/settings/tokensから入手)",
|
||||
"Document Question Answering": "質問への回答をドキュメント",
|
||||
"Language Translation": "言語翻訳",
|
||||
"Text Classification": "テキスト分類",
|
||||
"Text Summarization": "テキストの概要",
|
||||
"Chat Completion": "チャット完了",
|
||||
"Create Image": "画像を作成",
|
||||
"Object Detection": "オブジェクトの検出",
|
||||
"Image Classification": "画像の分類",
|
||||
"Answer questions from document images using Hugging Face models": "Hugging Faceモデルを使用してドキュメント画像から質問に答えます",
|
||||
"Translate text between languages using specialized Hugging Face translation models": "特殊なHugging Face 翻訳モデルを使用して、言語間のテキストを翻訳します",
|
||||
"Classify text into categories using Hugging Face models - includes zero-shot classification for custom categories": "Hugging Faceモデルを使用してテキストをカテゴリに分類 - カスタムカテゴリのゼロショット分類を含む",
|
||||
"Generate abstractive summaries of long text using Hugging Face models - optimized for business content": "Hugging Face モデルを使用して長いテキストの抽象的なサマリーを生成します - ビジネスコンテンツに最適化されています",
|
||||
"Generate assistant replies using chat-style LLMs - perfect for FAQ bots, support agents, and content generation": "チャットスタイルLLMを使用してアシスタント応答を生成する - FAQボット、サポートエージェント、およびコンテンツ生成に最適です",
|
||||
"Generate stunning images from text prompts using state-of-the-art diffusion models - perfect for marketing, product design, and creative content": "最先端の拡散モデルを使用してテキストプロンプトから素晴らしい画像を生成します - マーケティング、製品設計、および創造的なコンテンツに最適です。",
|
||||
"Detect and locate objects in images with precise bounding boxes - perfect for inventory management, content moderation, and automated tagging": "正確なバウンディングボックスを使用して画像内のオブジェクトを検出して見つけます - 在庫管理、コンテンツ管理、自動タグ付けに最適です",
|
||||
"Classify images with pre-trained models or custom categories - perfect for content moderation, automated tagging, and smart asset management": "事前トレーニングされたモデルまたはカスタムカテゴリで画像を分類 - コンテンツのモデレーション、自動タグ付け、スマートアセット管理に最適です",
|
||||
"Model": "モデル",
|
||||
"Document Image": "ドキュメント画像",
|
||||
"Question": "質問",
|
||||
"Number of Answers": "回答数",
|
||||
"Max Answer Length": "回答の最大長さ",
|
||||
"Handle Impossible Answers": "不可能な回答を処理する",
|
||||
"OCR Language": "OCR 言語",
|
||||
"Use Cache": "キャッシュを使用",
|
||||
"Wait for Model": "モデルを待機する",
|
||||
"Translation Model": "翻訳モデル",
|
||||
"Or Enter Custom Model ID": "または、カスタムモデル ID を入力してください",
|
||||
"Text to Translate": "翻訳するテキスト",
|
||||
"Source Language (Optional)": "ソース言語(オプション)",
|
||||
"Target Language (Optional)": "翻訳先の言語 (オプション)",
|
||||
"Clean Up Extra Spaces": "余分なスペースを整理する",
|
||||
"Max Translation Length": "最大翻訳長さ",
|
||||
"Classification Type": "分類タイプ",
|
||||
"Zero-Shot Model": "ゼロショットモデル",
|
||||
"Custom Categories": "カスタムカテゴリ",
|
||||
"Pre-trained Model": "事前訓練されたモデル",
|
||||
"Search Models": "モデルを検索",
|
||||
"Text to Classify": "分類するテキスト",
|
||||
"Number of Results": "結果の数",
|
||||
"Output Function": "出力関数",
|
||||
"Content Type": "コンテンツタイプ",
|
||||
"Summarization Model": "概要モデル",
|
||||
"Text to Summarize": "要約するテキスト",
|
||||
"Summary Length": "概要の長さ",
|
||||
"Custom Min Length": "カスタム最小長さ",
|
||||
"Custom Max Length": "カスタム最大長さ",
|
||||
"Truncation Strategy": "切り捨て戦略",
|
||||
"Use Case": "ケースを使用",
|
||||
"Chat Model": "チャットモデル",
|
||||
"Conversation Mode": "会話モード",
|
||||
"User Message": "ユーザーメッセージ",
|
||||
"System Prompt (Optional)": "システムプロンプト(オプション)",
|
||||
"Conversation History": "会話履歴",
|
||||
"Response Template": "応答テンプレート",
|
||||
"Response Length": "応答長さ",
|
||||
"Custom Max Tokens": "カスタム最大トークン",
|
||||
"Creativity Level": "クリエイティブレベル",
|
||||
"Response Variety": "さまざまな応答",
|
||||
"Stop Sequences (Optional)": "シーケンスを停止(オプション)",
|
||||
"Repetition Penalty": "繰り返しペナルティ",
|
||||
"Topic Diversity": "トピックの多様性について",
|
||||
"Image Generation Model": "画像生成モデル",
|
||||
"Text Prompt": "テキストのプロンプト表示",
|
||||
"Aspect Ratio": "アスペクト比",
|
||||
"Custom Width": "カスタム幅",
|
||||
"Custom Height": "カスタム高さ",
|
||||
"Negative Prompt": "否定的なプロンプト表示",
|
||||
"Quality vs Speed": "速度と品質",
|
||||
"Custom Inference Steps": "カスタム推論ステップ",
|
||||
"Guidance Scale": "ガイダンスのスケール",
|
||||
"Seed (Optional)": "シード(オプション)",
|
||||
"Scheduler": "スケジューラ",
|
||||
"Detection Model": "検出モデル",
|
||||
"Image to Analyze": "分析する画像",
|
||||
"Confidence Threshold": "信頼度のしきい値",
|
||||
"Max Detections": "最大検出",
|
||||
"Detection Filter": "検出フィルタ",
|
||||
"Output Format": "出力形式",
|
||||
"Classification Mode": "分類モード",
|
||||
"Classification Model": "分類モデル",
|
||||
"Image Source": "画像のソース",
|
||||
"Image File": "画像ファイル",
|
||||
"Image URL": "画像URL",
|
||||
"Classification Template": "分類テンプレート",
|
||||
"Hugging Face document question answering model": "顔文書の質問回答モデルをハグする",
|
||||
"Image of the document to analyze (invoice, contract, etc.)": "分析するドキュメントの画像 (請求書、契約書など)",
|
||||
"Question to ask about the document (e.g., 'What is the invoice total?')": "ドキュメントについて質問する必要があります(例:「請求書合計」とは何ですか?)",
|
||||
"Number of top answers to return": "返却するトップ回答の数",
|
||||
"Maximum length of predicted answers": "予測された回答の最大長さ",
|
||||
"Whether to accept 'impossible' as an answer when no answer is found": "答えが見つからない場合に「不可能」を回答として受け入れるかどうか",
|
||||
"Language to use for OCR text extraction": "OCRテキスト抽出に使用する言語",
|
||||
"Use cached results if available": "利用可能な場合はキャッシュされた結果を使用",
|
||||
"Wait for model to load if not ready": "準備ができていない場合、モデルがロードされるのを待つ",
|
||||
"Select a translation model or search from 7000+ available models": "7000以上の利用可能なモデルから翻訳モデルまたは検索を選択してください",
|
||||
"Alternative: Enter any Hugging Face translation model ID directly (e.g., Helsinki-NLP/opus-mt-ja-en)": "代替: 任意のHugging Face 翻訳モデル ID を直接入力してください(例 ヘルシンキ-NLP/opus-mt-ja-en)",
|
||||
"The text content you want to translate": "翻訳したいテキストコンテンツ",
|
||||
"Source language code (e.g., \"en\", \"es\", \"fr\"). Only needed for multilingual models that support multiple language pairs.": "ソース言語コード(例:\"en\", \"es\", \"fr\")。複数の言語ペアをサポートする多言語モデルにのみ必要です。",
|
||||
"Target language code (e.g., \"fr\", \"de\", \"zh\"). Only needed for multilingual models that support multiple language pairs.": "翻訳先の言語コード (例: \"fr\", \"de\", \"zh\") 。複数の言語ペアをサポートする多言語モデルにのみ必要です。",
|
||||
"Remove potential extra spaces in the translation output": "翻訳の出力に余分なスペースを削除する",
|
||||
"Maximum length of the translated text (leave empty for default)": "翻訳されたテキストの最大長さ(デフォルトは空白のまま)",
|
||||
"Use cached results if available for faster responses": "レスポンスの高速化が可能な場合はキャッシュされた結果を使用します",
|
||||
"Wait for model to load if not immediately available": "モデルがすぐに利用できない場合はロードされるのを待つ",
|
||||
"Choose your classification approach": "分類方法を選択してください",
|
||||
"Model for classifying into your custom categories": "カスタムカテゴリに分類するモデル",
|
||||
"Enter categories separated by commas (e.g., \"customer support, sales inquiry, spam, billing question\")": "コンマで区切られたカテゴリを入力してください(例:「カスタマーサポート」、「販売問い合わせ」、「スパム」、「請求書」など)",
|
||||
"Select a specialized pre-trained classification model": "専門的な訓練済み分類モデルを選択",
|
||||
"Search from all available text classification models": "利用可能なすべてのテキスト分類モデルから検索",
|
||||
"The text content you want to classify": "分類したいテキストコンテンツ",
|
||||
"Number of top predictions to return": "戻るトップ予測の数",
|
||||
"How to calculate confidence scores": "信頼度のスコアを計算する方法",
|
||||
"Use cached results for faster responses": "レスポンスを高速化するにはキャッシュされた結果を使用します",
|
||||
"What type of content are you summarizing?": "どのタイプのコンテンツをまとめていますか?",
|
||||
"Select the best model for your content type": "コンテンツタイプに最適なモデルを選択してください",
|
||||
"The long text content you want to summarize (most models work best with 512-1024 tokens)": "要約したい長いテキストコンテンツ(ほとんどのモデルは512-1024トークンで最適です)",
|
||||
"How long should the summary be?": "要約はどのくらいの時間がかかりますか?",
|
||||
"Minimum number of tokens for the summary": "概要の最小トークン数",
|
||||
"Maximum number of tokens for the summary": "要約の最大トークン数",
|
||||
"Remove extra spaces and clean up formatting": "余分なスペースを削除し、フォーマットをクリーンアップする",
|
||||
"How to handle text that exceeds model limits": "モデルの制限を超えるテキストを扱う方法",
|
||||
"What type of chat assistant are you building?": "チャットアシスタントはどのようなタイプですか?",
|
||||
"Select the best model for your use case": "ユースケースに最適なモデルを選択してください",
|
||||
"How do you want to build the conversation?": "どのように会話を構築したいですか?",
|
||||
"The user message or question to respond to": "返信するユーザーメッセージまたは質問",
|
||||
"Instructions for how the assistant should behave": "アシスタントがどのように動作するかの説明",
|
||||
"Previous messages in the conversation (for multi-turn chat)": "会話内の前のメッセージ(マルチターンチャット用)",
|
||||
"Pre-built templates for common business scenarios": "一般的なビジネスシナリオ用のビルド済みテンプレート",
|
||||
"How long should the response be?": "反応はどのくらいかかりますか?",
|
||||
"Maximum number of tokens to generate": "生成するトークンの最大数",
|
||||
"How creative should responses be? (0.1 = focused, 1.0 = creative)": "どのようにクリエイティブに反応すべきか? (0.1 = フォーカス、1.0 = クリエイティブ)",
|
||||
"Controls response diversity (0.1 = focused, 1.0 = varied)": "応答の多様性を制御します (0.1 = フォーカス, 1.0 = 変化)",
|
||||
"Text sequences that will stop generation": "生成を停止するテキストシーケンス",
|
||||
"Reduce repetitive responses (-2.0 to 2.0)": "繰り返し応答を減らす (-2.0 から 2.0)",
|
||||
"Encourage diverse topics (-2.0 to 2.0)": "多様なトピックを奨励(-2.0から2.0)",
|
||||
"Use cached responses for identical requests": "同じリクエストにキャッシュされたレスポンスを使用する",
|
||||
"What type of image generation do you need?": "どのようなタイプの画像生成が必要ですか?",
|
||||
"Describe the image you want to generate. Be specific about style, colors, composition, and details.": "生成したい画像を記述してください。スタイル、色、組成、詳細について具体的に述べてください。",
|
||||
"Choose the dimensions for your image": "画像のサイズを選択してください",
|
||||
"Width in pixels (64-1024)": "幅 (ピクセル) (64-1024)",
|
||||
"Height in pixels (64-1024)": "高さ(64-1024)",
|
||||
"Describe what you DON'T want in the image (blur, low quality, distorted, etc.)": "画像に何が欲しいのか(ぼかし、低品質、歪んだなど)を記述してください。",
|
||||
"Balance between image quality and generation time": "画質と生成時間のバランス",
|
||||
"Number of denoising steps (1-100)": "ノイズ除去ステップの数 (1-100)",
|
||||
"How closely to follow the prompt (1-20). Higher values = more prompt adherence but may reduce creativity.": "どの程度プロンプトに従うべきか (1-20) 値が高いほど、より迅速に順守できますが、創造性が低下する可能性があります。",
|
||||
"Set a seed for reproducible results. Leave empty for random generation.": "再現可能な結果を得るにはシードを設定してください。ランダム生成の場合は空のままにしてください。",
|
||||
"Advanced: Choose the noise scheduler algorithm": "高度:ノイズスケジューラアルゴリズムを選択してください",
|
||||
"What type of object detection do you need?": "どのような種類の物体検出が必要ですか?",
|
||||
"Select the best model for your detection task": "検出タスクに最適なモデルを選択します",
|
||||
"Upload an image for object detection. Supports JPG, PNG, WebP formats.": "オブジェクト検出用の画像をアップロードします。JPG、PNG、WebP形式に対応しています。",
|
||||
"Minimum confidence score for detections (0.1-0.9). Higher values = fewer but more accurate detections.": "検出の最小信頼スコア(0.1-0.9)。値が大きいほど、検出は少なくなりますが、正確になります。",
|
||||
"Maximum number of objects to detect (1-100)": "検出するオブジェクトの最大数 (1-100)",
|
||||
"How to handle detection results": "検出結果の処理方法",
|
||||
"How to structure the detection results": "検出結果を構成する方法",
|
||||
"How do you want to classify your images?": "画像をどのように分類しますか?",
|
||||
"What type of image classification do you need?": "どのような画像分類が必要ですか?",
|
||||
"How do you want to provide the image?": "どのように画像を提供したいですか?",
|
||||
"Upload an image file for classification (JPG, PNG, WebP)": "分類用の画像ファイルをアップロード (JPG、PNG、WebP)",
|
||||
"URL of the image to classify": "分類する画像の URL",
|
||||
"Enter the categories you want to classify the image into (e.g., \"dog\", \"cat\", \"bird\")": "画像を分類するカテゴリを入力します(例: \"dog\", \"cat\", \"bird\")",
|
||||
"Template for classification (advanced). Default: \"This image shows {}\"": "分類テンプレート(上級)。デフォルト:「この画像は{}を示しています」",
|
||||
"Maximum number of classification results to return (1-20)": "返却する分類結果の最大数(1-20)",
|
||||
"Minimum confidence score for results (0.0-1.0)": "結果の最小信頼度スコア (0.0-1.0)",
|
||||
"How to structure the classification results": "分類結果を構造化する方法",
|
||||
"impira/layoutlm-document-qa (Recommended)": "impira / layouttlm-document-qa (推奨)",
|
||||
"microsoft/layoutlmv3-base": "microsoft/layout/layoutlayoutlv3-base",
|
||||
"nielsr/layoutlmv2-finetuned-docvqa": "nielsr/layouttlmv2-finetuned-docvqa",
|
||||
"English": "日本語",
|
||||
"Spanish": "スペイン語",
|
||||
"French": "フランス語",
|
||||
"German": "ドイツ語",
|
||||
"Italian": "イタリア語",
|
||||
"Portuguese": "ポルトガル語",
|
||||
"🎯 Zero-Shot (Custom Categories)": "🎯 Zero-Shot (カスタムカテゴリ)",
|
||||
"📊 Pre-trained Models": "📊 事前訓練されたモデル",
|
||||
"🔍 Search All Models": "🔍 すべてのモデルを検索",
|
||||
"🔥 Facebook BART-Large (5.4M downloads)": "🔥 Facebook BART-Large (5.4Mダウンロード)",
|
||||
"🔥 DeBERTa TaskSource (904K downloads)": "🔥 Deberta TaskSource(904Kダウンロード)",
|
||||
"🔥 DeBERTa MNLI-FEVER (668K downloads)": "🔥 Deberta MNLI-FEVER (668K downloads)",
|
||||
"🌍 DistilBERT Multilingual (520K downloads)": "🌍 DistilBERT 多言語(520Kダウンロード)",
|
||||
"😊 Sentiment: Twitter RoBERTa (3M downloads)": "😊 センティム: Twitter RoBERTA (3Mダウンロード)",
|
||||
"😊 Sentiment: DistilBERT SST-2 (2.9M downloads)": "😊 Sentimentient: DistilBERT SST-2 (2.9Mダウンロード)",
|
||||
"🌍 Sentiment: Multilingual BERT (1.7M downloads)": "🌍 感情的: 多言語BERT (1.7Mダウンロード)",
|
||||
"💰 Finance: FinBERT Sentiment (1.5M downloads)": "💰 ファイナンス: FinBERT感情(1.5Mダウンロード)",
|
||||
"💰 Finance: FinBERT Tone (1.4M downloads)": "💰 財務: FinBERT Tone (1.4Mダウンロード)",
|
||||
"🛡️ Hate Speech: RoBERTa (2M downloads)": "🛡️ ヘイトスピーチ: RoBERTA (2Mダウンロード)",
|
||||
"🛡️ Toxicity: HateBERT (1.1M downloads)": "🛡️ 毒性: HateBERT (1.1Mダウンロード)",
|
||||
"🛡️ Toxicity: ToxDect RoBERTa (1.1M downloads)": "🛡️ 毒性: ToxDect RoBERTA (1.1M ダウンロード)",
|
||||
"🎧 Customer Service: Banking Intent": "🎧 カスタマーサービス: バンキングインテント",
|
||||
"📧 Spam: SMS Classification": "📧 迷惑メール: SMS分類",
|
||||
"Softmax (Recommended)": "Softmax (推奨)",
|
||||
"Sigmoid": "Sigmoid",
|
||||
"None (Raw Scores)": "なし (得点)",
|
||||
"📰 News Articles & Blog Posts": ":新聞: ニュース記事とブログの投稿",
|
||||
"📧 Emails & Support Tickets": "📧 メール & サポートチケット",
|
||||
"🎯 Meetings & Conversations": "🎯 ミーティングと会話",
|
||||
"📚 General Text & Documents": "📚 一般的な文書とドキュメント",
|
||||
"🏥 Medical & Scientific": "🏥 医学・科学",
|
||||
"🌍 Multilingual Content": "🌍 多言語コンテンツ",
|
||||
"📝 Brief (30-80 words)": "📝簡単な(30-80語)",
|
||||
"📄 Medium (80-150 words)": "📄 中 (80-150語)",
|
||||
"📚 Detailed (150-300 words)": "📚 詳細(150-300語)",
|
||||
"⚙️ Custom Length": "⚙️ カスタム長さ",
|
||||
"Do Not Truncate": "切り捨てない",
|
||||
"Longest First": "最長順",
|
||||
"Only First": "先頭のみ",
|
||||
"Only Second": "2秒のみ",
|
||||
"FAQ & Customer Support": "FAQ & カスタマー サポート",
|
||||
"Content Generation & Writing": "コンテンツの生成と書き込み",
|
||||
"General Conversation": "一般的な会話",
|
||||
"Search All Models": "すべてのモデルを検索",
|
||||
"Single Message (Simple Q&A)": "シングルメッセージ (簡易Q&A)",
|
||||
"Multi-turn Conversation": "マルチターン会話",
|
||||
"Template-based Response": "テンプレートベースの応答",
|
||||
"Customer Support Agent": "カスタマーサポートエージェント",
|
||||
"FAQ Assistant": "FAQ アシスタント",
|
||||
"Content Writer": "コンテンツライター",
|
||||
"Email Responder": "メール返信",
|
||||
"E-commerce Assistant": "Eコマースアシスタント",
|
||||
"Brief (50-100 tokens)": "簡単(50~100トークン)",
|
||||
"Normal (100-200 tokens)": "通常 (100-200トークン)",
|
||||
"Detailed (200-400 tokens)": "詳細(200-400トークン)",
|
||||
"Custom": "カスタム",
|
||||
"Fast Generation (Quick Prototypes)": "ファストジェネレーション(クイックプロトタイプ)",
|
||||
"High Quality (Marketing & Print)": "高品質(マーケティング・印刷)",
|
||||
"Business Content (Products & Brands)": "ビジネスコンテンツ(製品・ブランド)",
|
||||
"📱 Portrait (512×768) - Social Media": "📱 Portrait (512×768) - SNS",
|
||||
"🖥️ Landscape (768×512) - Banners": "🖥️ ランドスケープ(768×512) - バナー",
|
||||
"⬜ Square (512×512) - Profile Pictures": "⬜ Square (512×512) - プロフィール 写真",
|
||||
"📺 Wide (1024×576) - Headers": "📺 Wide (1024×576) - Headers",
|
||||
"⚙️ Custom Dimensions": "⚙️ カスタム寸法",
|
||||
"⚡ Fast (10-20 steps)": "⚡ 高速 (10-20ステップ)",
|
||||
"⚖️ Balanced (20-30 steps)": "⚖️Balanced(20-30ステップ)",
|
||||
"🎯 High Quality (30-50 steps)": "🎯 高品質(30-50ステップ)",
|
||||
"🏆 Maximum Quality (50+ steps)": "🏆 最高品質(50ステップ以上)",
|
||||
"⚙️ Custom Steps": "⚙️ カスタムステップ",
|
||||
"DPM++ 2M Karras (Recommended)": "DPM++ 2M Karras (推奨)",
|
||||
"Euler A (Fast)": "オイラーA(高速)",
|
||||
"DDIM (Stable)": "DDIM (Stable)",
|
||||
"LMS (Classic)": "LMS (Classic)",
|
||||
"📋 General Objects (COCO Dataset)": "📋 一般オブジェクト (COCO Dataset)",
|
||||
"📊 Documents & Tables": "📊 ドキュメントとテーブル",
|
||||
"🛡️ Security & Monitoring": "🛡️ セキュリティと監視",
|
||||
"🏢 Business & Commerce": "🏢 Business & Commerce",
|
||||
"🎯 High Confidence Only (>0.7)": ":bullseye:信頼度の高いのみ (>0.7)",
|
||||
"⚖️ Balanced Results (>0.5)": "⚖️ バランスの取れた結果(>0.5)",
|
||||
"📊 All Detections (>0.1)": "📊 すべての検出 (>0.1)",
|
||||
"⚙️ Custom Threshold": "⚙️ カスタムしきい値",
|
||||
"📋 Business Summary": "📋 Business Summary",
|
||||
"🔧 Technical Details": "🔧 技術的な詳細",
|
||||
"📊 Statistical Analysis": "📊 統計分析",
|
||||
"🌐 All Information": "🌐 すべての情報",
|
||||
"🏷️ Pre-trained Categories (Standard)": "🏷️ 事前トレーニングされたカテゴリ (標準)",
|
||||
"🎯 Custom Categories (Zero-shot)": "🎯 カスタムカテゴリ (ゼロショット)",
|
||||
"🛡️ Content Moderation & Safety": "🛡️ コンテンツモデレーションと安全",
|
||||
"🏷️ General Image Tagging": "🏷️ 一般的な画像タグ付け",
|
||||
"👤 People & Demographics": ":bust_in_siruette: People&Demographics",
|
||||
"🎨 Creative & Media": "🎨 クリエイティブ&メディア",
|
||||
"💼 Business & Commerce": "💼 Business & Commerce",
|
||||
"📎 Upload File": "📎 ファイルをアップロード",
|
||||
"🔗 Image URL": "🔗 画像URL",
|
||||
"🌐 Comprehensive Report": "🌐 総合レポート"
|
||||
}
|
||||
@@ -0,0 +1,264 @@
|
||||
{
|
||||
"Run inference on 100,000+ open ML models for NLP, vision, and audio tasks": "Voer conclusie uit op 100.000+ open ML modellen voor NLP, visie en audio taken",
|
||||
"Your Hugging Face API token (get it from https://huggingface.co/settings/tokens)": "Je Hugging Face API-token (verkrijg het van https://huggingface.co/settings/tokens)",
|
||||
"Document Question Answering": "Document Vraag antwoord",
|
||||
"Language Translation": "Taalvertaling",
|
||||
"Text Classification": "Tekst Classificatie",
|
||||
"Text Summarization": "Tekst samenvatting",
|
||||
"Chat Completion": "Chat Voltooien",
|
||||
"Create Image": "Afbeelding aanmaken",
|
||||
"Object Detection": "Object detectie",
|
||||
"Image Classification": "Classificatie afbeelding",
|
||||
"Answer questions from document images using Hugging Face models": "Beantwoord vragen van documenten met behulp van Hugging Face modellen",
|
||||
"Translate text between languages using specialized Hugging Face translation models": "Vertaal tekst tussen talen met behulp van gespecialiseerde Hugging Face vertaalmodellen",
|
||||
"Classify text into categories using Hugging Face models - includes zero-shot classification for custom categories": "Classificeer tekst in categorieën met behulp van Hugging Face modellen - bevat een zero-shot classificatie voor aangepaste categorieën",
|
||||
"Generate abstractive summaries of long text using Hugging Face models - optimized for business content": "Genereer abstracte samenvattingen van lange tekst met behulp van Hugging Face modellen - Geoptimaliseerd voor zakelijke inhoud",
|
||||
"Generate assistant replies using chat-style LLMs - perfect for FAQ bots, support agents, and content generation": "Genereer assistent-stijl LLMs - perfect voor FAQ bots, ondersteunende agenten en content generatie",
|
||||
"Generate stunning images from text prompts using state-of-the-art diffusion models - perfect for marketing, product design, and creative content": "Genereer verbluffende afbeeldingen op tekst prompts met behulp van geavanceerde diffusiemodellen - perfect voor marketing, productontwerp en creatieve inhoud",
|
||||
"Detect and locate objects in images with precise bounding boxes - perfect for inventory management, content moderation, and automated tagging": "Objecten in afbeeldingen detecteren en vinden met precieze selectievakjes - perfect voor inventarisbeheer, content moderatie en automatisch taggen",
|
||||
"Classify images with pre-trained models or custom categories - perfect for content moderation, automated tagging, and smart asset management": "Afbeeldingen classificeren met vooraf getrainde modellen of aangepaste categorieën - perfect voor het modereren van inhoud, geautomatiseerd merken en slim asset management",
|
||||
"Model": "Model",
|
||||
"Document Image": "Document afbeelding",
|
||||
"Question": "Vraag",
|
||||
"Number of Answers": "Aantal antwoorden",
|
||||
"Max Answer Length": "Maximale antwoordlengte",
|
||||
"Handle Impossible Answers": "Onmogelijke antwoorden behandelen",
|
||||
"OCR Language": "OCR taal",
|
||||
"Use Cache": "Gebruik cache",
|
||||
"Wait for Model": "Wachten op model",
|
||||
"Translation Model": "Vertaling model",
|
||||
"Or Enter Custom Model ID": "Of voer aangepast model ID in",
|
||||
"Text to Translate": "Tekst te vertalen",
|
||||
"Source Language (Optional)": "Brontaal (optioneel)",
|
||||
"Target Language (Optional)": "Doeltaal (optioneel)",
|
||||
"Clean Up Extra Spaces": "Extra ruimten opruimen",
|
||||
"Max Translation Length": "Max. lengte Vertaling",
|
||||
"Classification Type": "Type classificatie",
|
||||
"Zero-Shot Model": "Model Zero-Shot",
|
||||
"Custom Categories": "Aangepaste categorieën",
|
||||
"Pre-trained Model": "Vooraf getraind model",
|
||||
"Search Models": "Zoek modellen",
|
||||
"Text to Classify": "Tekst om te classificeren",
|
||||
"Number of Results": "Aantal resultaten",
|
||||
"Output Function": "Uitvoer Functie",
|
||||
"Content Type": "Type inhoud",
|
||||
"Summarization Model": "Samenvatting model",
|
||||
"Text to Summarize": "Tekst om samen te vatten",
|
||||
"Summary Length": "Samenvatting lengte",
|
||||
"Custom Min Length": "Aangepaste Min Lengte",
|
||||
"Custom Max Length": "Aangepaste maximumlengte",
|
||||
"Truncation Strategy": "Truncatie strategie",
|
||||
"Use Case": "Gebruik Geval",
|
||||
"Chat Model": "Chat model",
|
||||
"Conversation Mode": "Gesprek modus",
|
||||
"User Message": "Gebruiker Bericht",
|
||||
"System Prompt (Optional)": "Systeem vraag (optioneel)",
|
||||
"Conversation History": "Gesprek geschiedenis",
|
||||
"Response Template": "Antwoord sjabloon",
|
||||
"Response Length": "Antwoord lengte",
|
||||
"Custom Max Tokens": "Aangepaste Max Tokens",
|
||||
"Creativity Level": "Creativiteit Niveau",
|
||||
"Response Variety": "Antwoord variatie",
|
||||
"Stop Sequences (Optional)": "Stop sequenties (optioneel)",
|
||||
"Repetition Penalty": "Herhaling boete",
|
||||
"Topic Diversity": "Onderwerp Diversiteit",
|
||||
"Image Generation Model": "Model voor afbeelding genereren",
|
||||
"Text Prompt": "Tekst vraag",
|
||||
"Aspect Ratio": "Verhouding beeldverhouding",
|
||||
"Custom Width": "Aangepaste breedte",
|
||||
"Custom Height": "Aangepaste hoogte",
|
||||
"Negative Prompt": "Negatieve Prompt",
|
||||
"Quality vs Speed": "Kwaliteit versus snelheid",
|
||||
"Custom Inference Steps": "Aangepaste stappen",
|
||||
"Guidance Scale": "Begeleiding schaal",
|
||||
"Seed (Optional)": "Seed (optioneel)",
|
||||
"Scheduler": "Taakplanner",
|
||||
"Detection Model": "Detectie Model",
|
||||
"Image to Analyze": "Afbeelding om te analyseren",
|
||||
"Confidence Threshold": "Vertrouwen drempel",
|
||||
"Max Detections": "Max detecties",
|
||||
"Detection Filter": "Detectie Filter",
|
||||
"Output Format": "Uitvoer formaat",
|
||||
"Classification Mode": "Classificatie modus",
|
||||
"Classification Model": "Classificatie model",
|
||||
"Image Source": "Bron afbeelding",
|
||||
"Image File": "Afbeelding bestand",
|
||||
"Image URL": "Afbeelding URL",
|
||||
"Classification Template": "Classificatie sjabloon",
|
||||
"Hugging Face document question answering model": "Hugend Face document vraag antwoord model",
|
||||
"Image of the document to analyze (invoice, contract, etc.)": "Afbeelding van het document om te analyseren (factuur, contract, etc.)",
|
||||
"Question to ask about the document (e.g., 'What is the invoice total?')": "Vraag naar het document (bijv. 'Wat is het totaal?')",
|
||||
"Number of top answers to return": "Aantal topantwoorden om te retourneren",
|
||||
"Maximum length of predicted answers": "Maximale lengte van voorspelde antwoorden",
|
||||
"Whether to accept 'impossible' as an answer when no answer is found": "Of u 'onmogelijk' accepteert als antwoord wanneer er geen antwoord is gevonden",
|
||||
"Language to use for OCR text extraction": "Te gebruiken taal voor OCR tekstextractie",
|
||||
"Use cached results if available": "Gebruik gecachte resultaten indien beschikbaar",
|
||||
"Wait for model to load if not ready": "Wacht tot het model geladen wordt als het nog niet klaar is",
|
||||
"Select a translation model or search from 7000+ available models": "Selecteer een vertaalmodel of zoek naar 7000+ beschikbare modellen",
|
||||
"Alternative: Enter any Hugging Face translation model ID directly (e.g., Helsinki-NLP/opus-mt-ja-en)": "Alternatief: Voer een Hugging Face vertalingsmodel-ID direct in (bijv. Helsinki-NLP/opus-mt-ja-en)",
|
||||
"The text content you want to translate": "De tekst inhoud die u wilt vertalen",
|
||||
"Source language code (e.g., \"en\", \"es\", \"fr\"). Only needed for multilingual models that support multiple language pairs.": "Brontaalcode (bijv. \"en\", \"es\", \"fr\"). Alleen nodig voor meertalige modellen die meerdere taalgemeenschappen ondersteunen.",
|
||||
"Target language code (e.g., \"fr\", \"de\", \"zh\"). Only needed for multilingual models that support multiple language pairs.": "Doel taalcode (bijv. \"fr\", \"de\", \"zh\"). Alleen nodig voor meertalige modellen die meerdere taal paren ondersteunen.",
|
||||
"Remove potential extra spaces in the translation output": "Verwijder potentiële extra spaties in de vertaaluitvoer",
|
||||
"Maximum length of the translated text (leave empty for default)": "Maximale lengte van de vertaalde tekst (leeg laten voor standaard)",
|
||||
"Use cached results if available for faster responses": "Gebruik gecachte resultaten indien beschikbaar voor snellere antwoorden",
|
||||
"Wait for model to load if not immediately available": "Wacht tot het model wordt geladen als het niet onmiddellijk beschikbaar is",
|
||||
"Choose your classification approach": "Kies uw classificatie benadering",
|
||||
"Model for classifying into your custom categories": "Model voor classificatie in uw aangepaste categorieën",
|
||||
"Enter categories separated by commas (e.g., \"customer support, sales inquiry, spam, billing question\")": "Voer categorieën in gescheiden door komma's (bijvoorbeeld \"klantenondersteuning, verkoopenquête, spam, factureringsvraag\")",
|
||||
"Select a specialized pre-trained classification model": "Selecteer een gespecialiseerd voorgetraind classificatiemodel",
|
||||
"Search from all available text classification models": "Zoeken uit alle beschikbare tekstclassificatiemodellen",
|
||||
"The text content you want to classify": "De tekst inhoud die u wilt classificeren",
|
||||
"Number of top predictions to return": "Aantal top voorspellingen om terug te keren",
|
||||
"How to calculate confidence scores": "Hoe u de vertrouwensbeoordelingen kunt berekenen",
|
||||
"Use cached results for faster responses": "Gebruik gecachte resultaten voor snellere reacties",
|
||||
"What type of content are you summarizing?": "Wat voor soort inhoud vat je samen?",
|
||||
"Select the best model for your content type": "Selecteer het beste model voor het type inhoud",
|
||||
"The long text content you want to summarize (most models work best with 512-1024 tokens)": "De lange tekst inhoud die je wilt samenvatten (de meeste modellen werken het beste met 512-1024 tokens)",
|
||||
"How long should the summary be?": "Hoe lang moet de samenvatting zijn?",
|
||||
"Minimum number of tokens for the summary": "Minimum aantal tokens voor de samenvatting",
|
||||
"Maximum number of tokens for the summary": "Maximum aantal tokens voor de samenvatting",
|
||||
"Remove extra spaces and clean up formatting": "Verwijder extra spaties en opmaak opmaak",
|
||||
"How to handle text that exceeds model limits": "Hoe om te gaan met tekst die model limieten overschrijdt",
|
||||
"What type of chat assistant are you building?": "Welk type chat assistent bouw je?",
|
||||
"Select the best model for your use case": "Selecteer het beste model voor uw gebruiksgeval",
|
||||
"How do you want to build the conversation?": "Hoe wil je het gesprek bouwen?",
|
||||
"The user message or question to respond to": "De gebruiker bericht of vraag waarop moet worden gereageerd",
|
||||
"Instructions for how the assistant should behave": "Instructies voor hoe de assistent zich moet gedragen",
|
||||
"Previous messages in the conversation (for multi-turn chat)": "Eerdere berichten in het gesprek (voor meerdere draaien chat)",
|
||||
"Pre-built templates for common business scenarios": "Voor-gebouwde sjablonen voor bedrijfsscenario's",
|
||||
"How long should the response be?": "Hoe lang moet het antwoord?",
|
||||
"Maximum number of tokens to generate": "Maximum aantal te genereren tokens",
|
||||
"How creative should responses be? (0.1 = focused, 1.0 = creative)": "Hoe creatieve antwoorden moeten zijn? (0.1 = gefocust, 1.0 = creatief)",
|
||||
"Controls response diversity (0.1 = focused, 1.0 = varied)": "Controleert responsdiversiteit (0.1 = focus, 1.0 = verschillend)",
|
||||
"Text sequences that will stop generation": "Tekstsequenties die het genereren stoppen",
|
||||
"Reduce repetitive responses (-2.0 to 2.0)": "Verminder herhalende reacties (-2.0 tot 2.0)",
|
||||
"Encourage diverse topics (-2.0 to 2.0)": "Moedig diverse onderwerpen (-2.0 tot 2.0) aan",
|
||||
"Use cached responses for identical requests": "Gebruik gecachte antwoorden voor identieke verzoeken",
|
||||
"What type of image generation do you need?": "Wat voor type beeldgeneratie heb je nodig?",
|
||||
"Describe the image you want to generate. Be specific about style, colors, composition, and details.": "Beschrijf de afbeelding die u wilt genereren. Wees specifiek over stijl, kleuren, compositie en details.",
|
||||
"Choose the dimensions for your image": "Kies de afmetingen van je afbeelding",
|
||||
"Width in pixels (64-1024)": "Breedte in pixels (64-1024)",
|
||||
"Height in pixels (64-1024)": "Hoogte in pixels (64-1024)",
|
||||
"Describe what you DON'T want in the image (blur, low quality, distorted, etc.)": "Beschrijf wat je niet wilt in de afbeelding (vervaging, lage kwaliteit, vervormd, etc.)",
|
||||
"Balance between image quality and generation time": "Saldo tussen beeldkwaliteit en generatietijd",
|
||||
"Number of denoising steps (1-100)": "Aantal denoising stappen (1-100)",
|
||||
"How closely to follow the prompt (1-20). Higher values = more prompt adherence but may reduce creativity.": "Hoe dicht de prompt te volgen (1-20). Hogere waarden = meer tijdige inschrijving, maar kan creativiteit verminderen.",
|
||||
"Set a seed for reproducible results. Leave empty for random generation.": "Stel een seed in voor reproduceerbare resultaten. Laat leeg voor willekeurige generatie.",
|
||||
"Advanced: Choose the noise scheduler algorithm": "Geavanceerd: Kies het geluidsschema algoritme",
|
||||
"What type of object detection do you need?": "Welk type object detectie heb je nodig?",
|
||||
"Select the best model for your detection task": "Selecteer het beste model voor uw detectie taak",
|
||||
"Upload an image for object detection. Supports JPG, PNG, WebP formats.": "Upload een afbeelding voor object detectie. Ondersteunt JPG, PNG, WebP formaten.",
|
||||
"Minimum confidence score for detections (0.1-0.9). Higher values = fewer but more accurate detections.": "Minimale vertrouwensscore voor detecties (0.1-0.9). Hogere waarden = minder maar nauwkeuriger detecties.",
|
||||
"Maximum number of objects to detect (1-100)": "Maximum aantal te detecteren objecten (1-100)",
|
||||
"How to handle detection results": "Hoe om te gaan met detectieresultaten",
|
||||
"How to structure the detection results": "Hoe de detectieresultaten te structureren",
|
||||
"How do you want to classify your images?": "Hoe wil je je afbeeldingen classificeren?",
|
||||
"What type of image classification do you need?": "Wat voor soort afbeeldingsclassificatie heb je nodig?",
|
||||
"How do you want to provide the image?": "Hoe wil je de afbeelding geven?",
|
||||
"Upload an image file for classification (JPG, PNG, WebP)": "Upload een afbeeldingsbestand voor de classificatie (JPG, PNG, WebP)",
|
||||
"URL of the image to classify": "URL van de afbeelding die moet worden geclassificeerd",
|
||||
"Enter the categories you want to classify the image into (e.g., \"dog\", \"cat\", \"bird\")": "Voer de categorieën in waarin je de afbeelding wilt indelen (bijv. \"hond\", \"katten\", \"vogel\")",
|
||||
"Template for classification (advanced). Default: \"This image shows {}\"": "Sjabloon voor classificatie (geavanceerd). Standaard: \"Deze afbeelding toont {}\"",
|
||||
"Maximum number of classification results to return (1-20)": "Maximum aantal classificatieresultaten om terug te keren (1-20)",
|
||||
"Minimum confidence score for results (0.0-1.0)": "Minimale vertrouwensscore voor resultaten (0.0-1.0)",
|
||||
"How to structure the classification results": "Hoe de classificatieresultaten te structureren",
|
||||
"impira/layoutlm-document-qa (Recommended)": "impira/layoutlm-document-qa (aanbevolen)",
|
||||
"microsoft/layoutlmv3-base": "microsoft/layoutlv3-base",
|
||||
"nielsr/layoutlmv2-finetuned-docvqa": "nielsr/layoutlv2-finetuned-docvqa",
|
||||
"English": "Nederlands",
|
||||
"Spanish": "Spaans",
|
||||
"French": "Frans",
|
||||
"German": "Duits",
|
||||
"Italian": "Italiaans",
|
||||
"Portuguese": "Portugees",
|
||||
"🎯 Zero-Shot (Custom Categories)": ":bullsey: Zero-Shot (Aangepaste Categorieën)",
|
||||
"📊 Pre-trained Models": "📊 Vooraf getrainde Modellen",
|
||||
"🔍 Search All Models": "🔍 Zoek alle Modellen",
|
||||
"🔥 Facebook BART-Large (5.4M downloads)": "🔥 Facebook BART-Large (5.4M downloads)",
|
||||
"🔥 DeBERTa TaskSource (904K downloads)": "🔥 DeBERTa TaskSource (904K downloads)",
|
||||
"🔥 DeBERTa MNLI-FEVER (668K downloads)": "🔥 DeBERTa MNLI-FEVER (668K downloads)",
|
||||
"🌍 DistilBERT Multilingual (520K downloads)": ":globe_showing_Europe-Afrika: DistilBERT Meertaligheid (520K downloads)",
|
||||
"😊 Sentiment: Twitter RoBERTa (3M downloads)": "😊 Sentiment: Twitter RoBERTa (3M downloads)",
|
||||
"😊 Sentiment: DistilBERT SST-2 (2.9M downloads)": "😊 Sentiment: DistilBERT SST-2 (2.9M downloads)",
|
||||
"🌍 Sentiment: Multilingual BERT (1.7M downloads)": ":globe_showing_Europe-Afrika: Sentiment: Meertalige BERT (1,7M downloads)",
|
||||
"💰 Finance: FinBERT Sentiment (1.5M downloads)": "💰 Financieel: FinBERT Sentiment (1.5M downloads)",
|
||||
"💰 Finance: FinBERT Tone (1.4M downloads)": "💰 Financiëren: FinBERT Tone (1.4M downloads)",
|
||||
"🛡️ Hate Speech: RoBERTa (2M downloads)": "🛡️ Haatspraak: RoBERTa (2M downloads)",
|
||||
"🛡️ Toxicity: HateBERT (1.1M downloads)": "🛡️ Toxicity: HateBERT (1.1M downloads)",
|
||||
"🛡️ Toxicity: ToxDect RoBERTa (1.1M downloads)": "🛡️ Toxicity: ToxDect RoBERTa (1.1M downloads)",
|
||||
"🎧 Customer Service: Banking Intent": "🎧 Klantenservice: Banking Intent",
|
||||
"📧 Spam: SMS Classification": "📧 spam: SMS-classificatie",
|
||||
"Softmax (Recommended)": "Softmax (Aanbevolen)",
|
||||
"Sigmoid": "Sigmoïd",
|
||||
"None (Raw Scores)": "Geen (Ruwe Scores)",
|
||||
"📰 News Articles & Blog Posts": "📰 Nieuwsartikelen & Blog berichten",
|
||||
"📧 Emails & Support Tickets": "📧 E-mails & Support Tickets",
|
||||
"🎯 Meetings & Conversations": ":bullsey: Vergaderingen & Gesprekken",
|
||||
"📚 General Text & Documents": "📚 Algemene tekst & documenten",
|
||||
"🏥 Medical & Scientific": "🏥 Medisch & Wetenschappelijk",
|
||||
"🌍 Multilingual Content": ":globe_showing_Europe-Afrika: Meertalige inhoud",
|
||||
"📝 Brief (30-80 words)": "📝 Korte (30-80 woorden)",
|
||||
"📄 Medium (80-150 words)": ":page_facing_omhoog: Gemiddeld (80-150 woorden)",
|
||||
"📚 Detailed (150-300 words)": "📚 Gedetailleerd (150-300 woorden)",
|
||||
"⚙️ Custom Length": "⚙️ Aangepaste lengte",
|
||||
"Do Not Truncate": "Niet afkappen",
|
||||
"Longest First": "Langste eerst",
|
||||
"Only First": "Alleen eerste",
|
||||
"Only Second": "Alleen tweede",
|
||||
"FAQ & Customer Support": "Veelgestelde vragen en klantondersteuning",
|
||||
"Content Generation & Writing": "Genereren en schrijven van inhoud",
|
||||
"General Conversation": "Algemene conversatie",
|
||||
"Search All Models": "Zoek in alle modellen",
|
||||
"Single Message (Simple Q&A)": "Eén Bericht (imple Q&A)",
|
||||
"Multi-turn Conversation": "Multi-turn gesprek",
|
||||
"Template-based Response": "Sjabloon gebaseerde reactie",
|
||||
"Customer Support Agent": "Klant ondersteunende medewerker",
|
||||
"FAQ Assistant": "FAQ Assistent",
|
||||
"Content Writer": "Content schrijver",
|
||||
"Email Responder": "E-mail Responder",
|
||||
"E-commerce Assistant": "E-commerce assistent",
|
||||
"Brief (50-100 tokens)": "Korte (50-100 tokens)",
|
||||
"Normal (100-200 tokens)": "Normaal (100-200 tokens)",
|
||||
"Detailed (200-400 tokens)": "Gedetailleerd (200-400 tokens)",
|
||||
"Custom": "Aangepaste",
|
||||
"Fast Generation (Quick Prototypes)": "Snelle generatie (Quick Prototypes)",
|
||||
"High Quality (Marketing & Print)": "Hoge kwaliteit (Marketing & Print)",
|
||||
"Business Content (Products & Brands)": "Zakelijke inhoud (producten & merken)",
|
||||
"📱 Portrait (512×768) - Social Media": "📱 Portrait (512×768) - Sociale Media",
|
||||
"🖥️ Landscape (768×512) - Banners": "🖥️ Liggend (768×512) - Banners",
|
||||
"⬜ Square (512×512) - Profile Pictures": "⬜ Square (512×512) - Profielafbeeldingen",
|
||||
"📺 Wide (1024×576) - Headers": "📺 Brede (1024×576) - Headers",
|
||||
"⚙️ Custom Dimensions": "⚙️ Aangepaste dimensies",
|
||||
"⚡ Fast (10-20 steps)": "⚡ Snel (10-20 stappen)",
|
||||
"⚖️ Balanced (20-30 steps)": ":balance_schaal: Gebalanceerd (20-30 stappen)",
|
||||
"🎯 High Quality (30-50 steps)": ":bullsey: Hoge kwaliteit (30-50 stappen)",
|
||||
"🏆 Maximum Quality (50+ steps)": "🏆 Maximale kwaliteit (50+ stappen)",
|
||||
"⚙️ Custom Steps": "⚙️ Aangepaste stappen",
|
||||
"DPM++ 2M Karras (Recommended)": "DPM++ 2M Karras (Aanbevolen)",
|
||||
"Euler A (Fast)": "Euler A (Voordeel)",
|
||||
"DDIM (Stable)": "DDIM (Stable)",
|
||||
"LMS (Classic)": "LMS (Klassiek)",
|
||||
"📋 General Objects (COCO Dataset)": "📋 General Objects (COCO Dataset)",
|
||||
"📊 Documents & Tables": "📊 Documenten & tabellen",
|
||||
"🛡️ Security & Monitoring": "🛡️ Veiligheid & monitoring",
|
||||
"🏢 Business & Commerce": "🏢 Business & Commerce",
|
||||
"🎯 High Confidence Only (>0.7)": ":bullsee: Hoog Vertrouwen Alleen (>0.7)",
|
||||
"⚖️ Balanced Results (>0.5)": "⚖️ Gebalanceerde resultaten (>0.5)",
|
||||
"📊 All Detections (>0.1)": "📊 Alle detecties (>0.1)",
|
||||
"⚙️ Custom Threshold": "⚙️ Aangepaste drempelwaarde",
|
||||
"📋 Business Summary": "📋 Business Samenvatting",
|
||||
"🔧 Technical Details": "🔧 Technische Details",
|
||||
"📊 Statistical Analysis": "📊 Statistische Analyse",
|
||||
"🌐 All Information": "🌐 Alle informatie",
|
||||
"🏷️ Pre-trained Categories (Standard)": "🏷️ Pre-getrainde categorieën (standaard)",
|
||||
"🎯 Custom Categories (Zero-shot)": "🎯 Aangepaste categorieën (Zero-shot)",
|
||||
"🛡️ Content Moderation & Safety": "🛡️ Content Moderation & Safety",
|
||||
"🏷️ General Image Tagging": "🏷️ Algemene afbeelding tagging",
|
||||
"👤 People & Demographics": "👤 Mensen & demografie",
|
||||
"🎨 Creative & Media": "🎨 Creatief & Media",
|
||||
"💼 Business & Commerce": "💼 Business & Commerce",
|
||||
"📎 Upload File": "📎 Bestand uploaden",
|
||||
"🔗 Image URL": "🔗 URL afbeelding",
|
||||
"🌐 Comprehensive Report": "🌐 Volledig rapport"
|
||||
}
|
||||
@@ -0,0 +1,264 @@
|
||||
{
|
||||
"Run inference on 100,000+ open ML models for NLP, vision, and audio tasks": "Executar inferência em mais de 100.000 modelos ML abertos para tarefas de NLP, visão e áudio",
|
||||
"Your Hugging Face API token (get it from https://huggingface.co/settings/tokens)": "Seu token para Hugging Face API (obtenha em https://huggingface.co/settings/tokens)",
|
||||
"Document Question Answering": "Resposta da pergunta de documento",
|
||||
"Language Translation": "Tradução do idioma",
|
||||
"Text Classification": "Classificação de texto",
|
||||
"Text Summarization": "Resumo do texto",
|
||||
"Chat Completion": "Conclusão de Chat",
|
||||
"Create Image": "Criar imagem",
|
||||
"Object Detection": "Detecção de objetos",
|
||||
"Image Classification": "Classificação de imagem",
|
||||
"Answer questions from document images using Hugging Face models": "Responda a perguntas de imagens de documentos usando os modelos de rosto",
|
||||
"Translate text between languages using specialized Hugging Face translation models": "Traduza o texto entre as línguas usando modelos especializados de tradução de rosto",
|
||||
"Classify text into categories using Hugging Face models - includes zero-shot classification for custom categories": "Classificar o texto em categorias usando Abraçando Modelos de Face - inclui classificação de zero para categorias personalizadas",
|
||||
"Generate abstractive summaries of long text using Hugging Face models - optimized for business content": "Gerar resumos abstrativos de texto longo usando modelos de rosto abraçado - otimizado para conteúdo de negócios",
|
||||
"Generate assistant replies using chat-style LLMs - perfect for FAQ bots, support agents, and content generation": "Gerar respostas auxiliares usando LLMs estilo de chat - perfeita para robôs de FAQ, agentes de suporte e geração de conteúdo",
|
||||
"Generate stunning images from text prompts using state-of-the-art diffusion models - perfect for marketing, product design, and creative content": "Gerar imagens impressionantes de prompts de texto usando modelos de difusão de ponta - perfeito para marketing, design de produtos e conteúdo criativo",
|
||||
"Detect and locate objects in images with precise bounding boxes - perfect for inventory management, content moderation, and automated tagging": "Detectar e localizar objetos em imagens com caixas de delimitadores precisas - perfeito para gerenciamento de estoque, moderação de conteúdo e marcação automatizada",
|
||||
"Classify images with pre-trained models or custom categories - perfect for content moderation, automated tagging, and smart asset management": "Classificar imagens com modelos pré-treinados ou categorias personalizadas - perfeita para moderação de conteúdo, marcação automatizada e gerenciamento inteligente de ativos",
|
||||
"Model": "Modelo",
|
||||
"Document Image": "Imagem do documento",
|
||||
"Question": "Questão",
|
||||
"Number of Answers": "Número de respostas",
|
||||
"Max Answer Length": "Comprimento Máximo da Resposta",
|
||||
"Handle Impossible Answers": "Manipule respostas impossíveis",
|
||||
"OCR Language": "Língua OCR",
|
||||
"Use Cache": "Usar Cache",
|
||||
"Wait for Model": "Aguardar o Modelo",
|
||||
"Translation Model": "Modelo de tradução",
|
||||
"Or Enter Custom Model ID": "Ou digite o ID do modelo personalizado",
|
||||
"Text to Translate": "Texto para traduzir",
|
||||
"Source Language (Optional)": "Língua Original (opcional)",
|
||||
"Target Language (Optional)": "Idioma alvo (opcional)",
|
||||
"Clean Up Extra Spaces": "Limpar Espaços extras",
|
||||
"Max Translation Length": "Comprimento Máximo da Tradução",
|
||||
"Classification Type": "Tipo de classificação",
|
||||
"Zero-Shot Model": "Modelo de Zero-Tiro",
|
||||
"Custom Categories": "Categorias personalizadas",
|
||||
"Pre-trained Model": "Modelo Pré-Treinado",
|
||||
"Search Models": "Pesquisar Modelos",
|
||||
"Text to Classify": "Texto para classificar",
|
||||
"Number of Results": "Número de Resultados",
|
||||
"Output Function": "Função de saída",
|
||||
"Content Type": "Tipo de Conteúdo",
|
||||
"Summarization Model": "Modelo De Resumo",
|
||||
"Text to Summarize": "Texto para Resumir",
|
||||
"Summary Length": "Tamanho do Resumo",
|
||||
"Custom Min Length": "Comprimento mínimo personalizado",
|
||||
"Custom Max Length": "Comprimento Máximo Personalizado",
|
||||
"Truncation Strategy": "Estratégia de Truncação",
|
||||
"Use Case": "Usar Caso",
|
||||
"Chat Model": "Modelo de chat",
|
||||
"Conversation Mode": "Modo de Conversação",
|
||||
"User Message": "Mensagem do usuário",
|
||||
"System Prompt (Optional)": "Solicitação de Sistema (Opcional)",
|
||||
"Conversation History": "Histórico de conversas",
|
||||
"Response Template": "Modelo de Resposta",
|
||||
"Response Length": "Comprimento da resposta",
|
||||
"Custom Max Tokens": "Max Tokens Personalizados",
|
||||
"Creativity Level": "Nível de Criatividade",
|
||||
"Response Variety": "Variação de Resposta",
|
||||
"Stop Sequences (Optional)": "Parar sequências (opcional)",
|
||||
"Repetition Penalty": "Penalidade de repetição",
|
||||
"Topic Diversity": "Diversidade nos tópicos",
|
||||
"Image Generation Model": "Modelo de geração de imagem",
|
||||
"Text Prompt": "Sugestão de texto",
|
||||
"Aspect Ratio": "Proporção da proporção",
|
||||
"Custom Width": "Largura personalizada",
|
||||
"Custom Height": "Personalizar altura",
|
||||
"Negative Prompt": "Aviso Negativo",
|
||||
"Quality vs Speed": "Qualidade vs Velocidade",
|
||||
"Custom Inference Steps": "Etapas de Inferência Personalizadas",
|
||||
"Guidance Scale": "Escala de Orientação",
|
||||
"Seed (Optional)": "Seed (opcional)",
|
||||
"Scheduler": "Agendar",
|
||||
"Detection Model": "Modelo de Detecção",
|
||||
"Image to Analyze": "Imagem para analisar",
|
||||
"Confidence Threshold": "Limite de confiança",
|
||||
"Max Detections": "Limite de Detecções",
|
||||
"Detection Filter": "Filtro de Detecção",
|
||||
"Output Format": "Formato de saída",
|
||||
"Classification Mode": "Modo de classificação",
|
||||
"Classification Model": "Modelo de classificação",
|
||||
"Image Source": "Fonte da imagem",
|
||||
"Image File": "Arquivo de imagem",
|
||||
"Image URL": "URL da imagem",
|
||||
"Classification Template": "Modelo de Classificação",
|
||||
"Hugging Face document question answering model": "Abraçando o modelo de resposta do documento facial",
|
||||
"Image of the document to analyze (invoice, contract, etc.)": "Imagem do documento para analisar (fatura, contrato, etc.)",
|
||||
"Question to ask about the document (e.g., 'What is the invoice total?')": "Pergunta a fazer sobre o documento (ex: 'Qual é o total da fatura?')",
|
||||
"Number of top answers to return": "Número de respostas principais para retornar",
|
||||
"Maximum length of predicted answers": "Comprimento máximo de respostas previstas",
|
||||
"Whether to accept 'impossible' as an answer when no answer is found": "Se aceitar 'impossível' como uma resposta quando nenhuma resposta for encontrada",
|
||||
"Language to use for OCR text extraction": "Idioma a ser usado para extração de texto OCR",
|
||||
"Use cached results if available": "Usar resultados em cache se disponível",
|
||||
"Wait for model to load if not ready": "Esperar o modelo carregar se não estiver pronto",
|
||||
"Select a translation model or search from 7000+ available models": "Selecione um modelo de tradução ou pesquisa a partir de mais de 7000 modelos disponíveis",
|
||||
"Alternative: Enter any Hugging Face translation model ID directly (e.g., Helsinki-NLP/opus-mt-ja-en)": "Alternativa: Insira qualquer ID de modelo de tradução facial abraçando diretamente (por exemplo, Helsinki-NLP/opus-mt-ja-en)",
|
||||
"The text content you want to translate": "O conteúdo do texto que você deseja traduzir",
|
||||
"Source language code (e.g., \"en\", \"es\", \"fr\"). Only needed for multilingual models that support multiple language pairs.": "Código de idioma de origem (por exemplo, \"en\", \"es\", \"fr\"). Necessário apenas para modelos multilíngues que suportam vários pares de idioma.",
|
||||
"Target language code (e.g., \"fr\", \"de\", \"zh\"). Only needed for multilingual models that support multiple language pairs.": "Código de idioma alvo (por exemplo, \"fr\", \"de\", \"zh\"). Apenas necessário para modelos multilíngues que suportam vários pares de idioma.",
|
||||
"Remove potential extra spaces in the translation output": "Remove potenciais espaços extras na saída da tradução",
|
||||
"Maximum length of the translated text (leave empty for default)": "Comprimento máximo do texto traduzido (deixe em branco para o padrão)",
|
||||
"Use cached results if available for faster responses": "Usar resultados em cache se disponível para respostas mais rápidas",
|
||||
"Wait for model to load if not immediately available": "Esperar carregar o modelo se não estiver imediatamente disponível",
|
||||
"Choose your classification approach": "Escolha sua abordagem de classificação",
|
||||
"Model for classifying into your custom categories": "Modelo para classificar em suas categorias personalizadas",
|
||||
"Enter categories separated by commas (e.g., \"customer support, sales inquiry, spam, billing question\")": "Insira categorias separadas por vírgulas (por exemplo, \"atendimento ao cliente, inquérito de vendas, spam, pergunta de cobrança\")",
|
||||
"Select a specialized pre-trained classification model": "Selecione um modelo de classificação pré-treinado especializado",
|
||||
"Search from all available text classification models": "Procurar por todos os modelos de classificação de texto disponíveis",
|
||||
"The text content you want to classify": "O conteúdo do texto que você deseja classificar",
|
||||
"Number of top predictions to return": "Número de previsões para retornar",
|
||||
"How to calculate confidence scores": "Como calcular os resultados da confiança",
|
||||
"Use cached results for faster responses": "Usar resultados em cache para respostas mais rápidas",
|
||||
"What type of content are you summarizing?": "Que tipo de conteúdo você está resumindo?",
|
||||
"Select the best model for your content type": "Selecione o melhor modelo para o seu tipo de conteúdo",
|
||||
"The long text content you want to summarize (most models work best with 512-1024 tokens)": "O conteúdo longo de texto que você deseja resumir (a maioria dos modelos funcionam melhor com 512-1024 tokens)",
|
||||
"How long should the summary be?": "Qual o comprimento do resumo?",
|
||||
"Minimum number of tokens for the summary": "Número mínimo de tokens para o resumo",
|
||||
"Maximum number of tokens for the summary": "Número máximo de tokens para o resumo",
|
||||
"Remove extra spaces and clean up formatting": "Remover espaços extras e limpar a formatação",
|
||||
"How to handle text that exceeds model limits": "Como manipular o texto que excede os limites de modelo",
|
||||
"What type of chat assistant are you building?": "Que tipo de assistente de chat você está construindo?",
|
||||
"Select the best model for your use case": "Selecione o melhor modelo para o seu caso de uso",
|
||||
"How do you want to build the conversation?": "Como você deseja construir a conversa?",
|
||||
"The user message or question to respond to": "A mensagem ou pergunta do usuário para responder a",
|
||||
"Instructions for how the assistant should behave": "Instruções de como o assistente deve se comportar",
|
||||
"Previous messages in the conversation (for multi-turn chat)": "Mensagens anteriores na conversa (para chat multirevez)",
|
||||
"Pre-built templates for common business scenarios": "Modelos pré-criados para cenários de negócios comuns",
|
||||
"How long should the response be?": "Qual deve ser a resposta?",
|
||||
"Maximum number of tokens to generate": "Número máximo de tokens para gerar",
|
||||
"How creative should responses be? (0.1 = focused, 1.0 = creative)": "Quão criativas devem ser as respostas? (0.1 = focado, 1.0 = creative)",
|
||||
"Controls response diversity (0.1 = focused, 1.0 = varied)": "Controla a diversidade de resposta (0.1 = focado, 1.0 = variado)",
|
||||
"Text sequences that will stop generation": "Sequências de texto que pararão de geração",
|
||||
"Reduce repetitive responses (-2.0 to 2.0)": "Reduzir respostas repetitivas (-2.0 para 2.0)",
|
||||
"Encourage diverse topics (-2.0 to 2.0)": "Incentive diversos tópicos (-2.0 a 2.0)",
|
||||
"Use cached responses for identical requests": "Utilizar respostas em cache para pedidos idênticos",
|
||||
"What type of image generation do you need?": "Que tipo de geração de imagem você precisa?",
|
||||
"Describe the image you want to generate. Be specific about style, colors, composition, and details.": "Descreva a imagem que você deseja gerar. Seja específica sobre o estilo, cores, composição e detalhes.",
|
||||
"Choose the dimensions for your image": "Escolha as dimensões para sua imagem",
|
||||
"Width in pixels (64-1024)": "Largura em pixels (64-1024)",
|
||||
"Height in pixels (64-1024)": "Altura em pixels (64-1024)",
|
||||
"Describe what you DON'T want in the image (blur, low quality, distorted, etc.)": "Descreva o que você NÃO quer na imagem (desfoque, baixa qualidade, distorcido, etc.)",
|
||||
"Balance between image quality and generation time": "Saldo entre a qualidade da imagem e o tempo de geração",
|
||||
"Number of denoising steps (1-100)": "Número de passos indicando (1-100)",
|
||||
"How closely to follow the prompt (1-20). Higher values = more prompt adherence but may reduce creativity.": "Quão próximo do prompt (1-20). Valores maiores = mais prontas de adenda, mas podem reduzir a criatividade.",
|
||||
"Set a seed for reproducible results. Leave empty for random generation.": "Defina uma semente para resultados reproduzíveis. Deixe vazio para geração aleatória.",
|
||||
"Advanced: Choose the noise scheduler algorithm": "Avançado: Escolha o algoritmo do medidor de ruído",
|
||||
"What type of object detection do you need?": "Que tipo de detecção de objeto você precisa?",
|
||||
"Select the best model for your detection task": "Selecione o melhor modelo para sua tarefa de detecção",
|
||||
"Upload an image for object detection. Supports JPG, PNG, WebP formats.": "Envie uma imagem para detecção de objetos. Suporta formatos JPG, PNG, WebP.",
|
||||
"Minimum confidence score for detections (0.1-0.9). Higher values = fewer but more accurate detections.": "Pontuação mínima de confiança para deteções (0.1-0.9). Valores maiores = menos mas mais precisos deteções.",
|
||||
"Maximum number of objects to detect (1-100)": "Número máximo de objetos para detectar (1-100)",
|
||||
"How to handle detection results": "Como lidar com resultados de detecção",
|
||||
"How to structure the detection results": "Como estruturar os resultados de detecção",
|
||||
"How do you want to classify your images?": "Como pretende classificar as suas imagens?",
|
||||
"What type of image classification do you need?": "Que tipo de classificação de imagens você precisa?",
|
||||
"How do you want to provide the image?": "Como você deseja fornecer a imagem?",
|
||||
"Upload an image file for classification (JPG, PNG, WebP)": "Carregar um arquivo de imagem para a classificação (JPG, PNG, WebP)",
|
||||
"URL of the image to classify": "URL da imagem a classificar",
|
||||
"Enter the categories you want to classify the image into (e.g., \"dog\", \"cat\", \"bird\")": "Digite as categorias que você deseja classificar a imagem (por exemplo, \"cão\", \"gato\", \"pássaro\")",
|
||||
"Template for classification (advanced). Default: \"This image shows {}\"": "Modelo para classificação (avançado). Padrão: \"Esta imagem mostra {}\"",
|
||||
"Maximum number of classification results to return (1-20)": "Número máximo de resultados de classificação a retornar (1-20)",
|
||||
"Minimum confidence score for results (0.0-1.0)": "Confiança mínima para resultados (0.0-1.0)",
|
||||
"How to structure the classification results": "Como estruturar os resultados da classificação",
|
||||
"impira/layoutlm-document-qa (Recommended)": "impira/layoutlm-document-qa (Recomendado)",
|
||||
"microsoft/layoutlmv3-base": "microsoft/layoutlmv3-base",
|
||||
"nielsr/layoutlmv2-finetuned-docvqa": "nielsr/layoutlmv2-finetuned-docvqa",
|
||||
"English": "Portuguese-Brazil",
|
||||
"Spanish": "espanhol",
|
||||
"French": "francês",
|
||||
"German": "alemão",
|
||||
"Italian": "italiano",
|
||||
"Portuguese": "Português",
|
||||
"🎯 Zero-Shot (Custom Categories)": "🎯 Tiro zero (Categorias Personalizadas)",
|
||||
"📊 Pre-trained Models": "📊 Modelos pré-treinados",
|
||||
"🔍 Search All Models": "🔍 Pesquisar Todos os Modelos",
|
||||
"🔥 Facebook BART-Large (5.4M downloads)": "🔥 BART-Grande do Facebook (downloads 5.4M)",
|
||||
"🔥 DeBERTa TaskSource (904K downloads)": "🔥 DeBERTa TaskSource (downloads 904K)",
|
||||
"🔥 DeBERTa MNLI-FEVER (668K downloads)": "🔥 DeBERTa MNLI-FEVER (downloads de 68K)",
|
||||
"🌍 DistilBERT Multilingual (520K downloads)": ":globe_showing_Europe-África: DtilBERT Multilíngue (downloads de 520K)",
|
||||
"😊 Sentiment: Twitter RoBERTa (3M downloads)": "😊 Sentiment: Twitter RoBERTa (downloads 3M)",
|
||||
"😊 Sentiment: DistilBERT SST-2 (2.9M downloads)": "😊 Sentiment: DistilBERT SST-2 (downloads de 2.9M)",
|
||||
"🌍 Sentiment: Multilingual BERT (1.7M downloads)": ":globe_showing_Europe-África: Sentiment: BERT Multilíngue (downloads de 1.7Ms)",
|
||||
"💰 Finance: FinBERT Sentiment (1.5M downloads)": "💰 Finance: FinBERT Sentiment (downloads de 1.5Ms)",
|
||||
"💰 Finance: FinBERT Tone (1.4M downloads)": "💰 Finance: FinBERT Tone (downloads de 1.4Ms)",
|
||||
"🛡️ Hate Speech: RoBERTa (2M downloads)": "🛡️ Discurso de ódio: RoBERTa (2M downloads)",
|
||||
"🛡️ Toxicity: HateBERT (1.1M downloads)": "🛡️ Toxicidade: HateBERT (downloads de 1.1Ms)",
|
||||
"🛡️ Toxicity: ToxDect RoBERTa (1.1M downloads)": "🛡️ ToxDect RoBERTa (downloads de 1.1Ms)",
|
||||
"🎧 Customer Service: Banking Intent": "🎧 Atendimento ao Cliente: Intenção Bancária",
|
||||
"📧 Spam: SMS Classification": "📧 Spam: Classificação SMS",
|
||||
"Softmax (Recommended)": "Softmax (recomendado)",
|
||||
"Sigmoid": "Sigla",
|
||||
"None (Raw Scores)": "Nenhum (pontos brutos)",
|
||||
"📰 News Articles & Blog Posts": "📰 Artigos de Notícias e Posts de Blog",
|
||||
"📧 Emails & Support Tickets": "📧 Tickets e Suporte",
|
||||
"🎯 Meetings & Conversations": "🎯 Reuniões & Conversas",
|
||||
"📚 General Text & Documents": "📚 Texto e Documentos Gerais",
|
||||
"🏥 Medical & Scientific": "🏥 Médico e Científico",
|
||||
"🌍 Multilingual Content": ":globe_showing_Europe-África: Conteúdo multilíngue",
|
||||
"📝 Brief (30-80 words)": "📝 Breve (30-80 palavras)",
|
||||
"📄 Medium (80-150 words)": "📄 Médio (80-150 palavras)",
|
||||
"📚 Detailed (150-300 words)": "📚 Detalhado (150-300 palavras)",
|
||||
"⚙️ Custom Length": "⚙️ Comprimento Personalizado",
|
||||
"Do Not Truncate": "Não Truncar",
|
||||
"Longest First": "Longos Primeiro",
|
||||
"Only First": "Somente o Primeiro",
|
||||
"Only Second": "Somente Segundo",
|
||||
"FAQ & Customer Support": "FAQ & Suporte ao Cliente",
|
||||
"Content Generation & Writing": "Geração de conteúdo e escrita",
|
||||
"General Conversation": "Conversa geral",
|
||||
"Search All Models": "Pesquisar todos os modelos",
|
||||
"Single Message (Simple Q&A)": "Mensagem única (Única Q&A)",
|
||||
"Multi-turn Conversation": "Conversa de multicurso",
|
||||
"Template-based Response": "Resposta baseada em modelo",
|
||||
"Customer Support Agent": "Agente de suporte ao cliente",
|
||||
"FAQ Assistant": "Assistente FAQ",
|
||||
"Content Writer": "Escritor de Conteúdo",
|
||||
"Email Responder": "Responder e-mail",
|
||||
"E-commerce Assistant": "Assistente de e-commerce",
|
||||
"Brief (50-100 tokens)": "Breve (50-100 tokens)",
|
||||
"Normal (100-200 tokens)": "Normal (100-200 tokens)",
|
||||
"Detailed (200-400 tokens)": "Detalhado (200-400 tokens)",
|
||||
"Custom": "Personalizado",
|
||||
"Fast Generation (Quick Prototypes)": "Geração Rápida (Protótipos Rápidos)",
|
||||
"High Quality (Marketing & Print)": "Alta Qualidade (Marketing e Imprimir)",
|
||||
"Business Content (Products & Brands)": "Conteúdo de Negócio (Produtos e Marcas)",
|
||||
"📱 Portrait (512×768) - Social Media": "📱 Retrato (512×768) - Mídia Social",
|
||||
"🖥️ Landscape (768×512) - Banners": "🖥️ Paisagem (768×512) - Banners",
|
||||
"⬜ Square (512×512) - Profile Pictures": "⬜ Quadrado (512×512) - Fotos de perfil",
|
||||
"📺 Wide (1024×576) - Headers": "📺 Wide (1024×576) - Cabeçalhos",
|
||||
"⚙️ Custom Dimensions": "⚙️ Dimensões Personalizadas",
|
||||
"⚡ Fast (10-20 steps)": "⚡ Rápido (10-20 etapas)",
|
||||
"⚖️ Balanced (20-30 steps)": "⚖️ Balanceado (20-30 etapas)",
|
||||
"🎯 High Quality (30-50 steps)": "🎯 Alta Qualidade (30-50 passos)",
|
||||
"🏆 Maximum Quality (50+ steps)": "🏆 Qualidade Máxima (mais de 50 etapas)",
|
||||
"⚙️ Custom Steps": "⚙️ Etapas personalizadas",
|
||||
"DPM++ 2M Karras (Recommended)": "DPM++ 2M Karras (recomendado)",
|
||||
"Euler A (Fast)": "Euler A (Este)",
|
||||
"DDIM (Stable)": "DDIM (Stable)",
|
||||
"LMS (Classic)": "LMS (clássico)",
|
||||
"📋 General Objects (COCO Dataset)": "📋 Objetos Gerais (COCO Dataset)",
|
||||
"📊 Documents & Tables": "📊 Documentos e Tabelas",
|
||||
"🛡️ Security & Monitoring": "🛡️ Segurança e Monitoramento",
|
||||
"🏢 Business & Commerce": "🏢 Negócios e Comércio",
|
||||
"🎯 High Confidence Only (>0.7)": "🎯 Apenas Alta Confiança (>0.7)",
|
||||
"⚖️ Balanced Results (>0.5)": "⚖️ Resultados balanceados (>0.5)",
|
||||
"📊 All Detections (>0.1)": "📊 Todas as Detecções (>0.1)",
|
||||
"⚙️ Custom Threshold": "⚙️ Limite Personalizado",
|
||||
"📋 Business Summary": "📋 Resumo do Negócio",
|
||||
"🔧 Technical Details": "🔧 Detalhes técnicos",
|
||||
"📊 Statistical Analysis": "📊 Análise Estatística",
|
||||
"🌐 All Information": "🌐 Todas as informações",
|
||||
"🏷️ Pre-trained Categories (Standard)": "🏷️ Categorias Pré-treinadas (Padrão)",
|
||||
"🎯 Custom Categories (Zero-shot)": "🎯 Categorias personalizadas (Zero-shot)",
|
||||
"🛡️ Content Moderation & Safety": "🛡️ Moderação e Segurança do Conteúdo",
|
||||
"🏷️ General Image Tagging": "🏷️ Marcador Geral de Imagem",
|
||||
"👤 People & Demographics": "👤 Pessoas e Demografos",
|
||||
"🎨 Creative & Media": "🎨 Criativa e Mídia",
|
||||
"💼 Business & Commerce": "💼 Negócios e Comércio",
|
||||
"📎 Upload File": "📎 Enviar Arquivo",
|
||||
"🔗 Image URL": "🔗 URL da imagem",
|
||||
"🌐 Comprehensive Report": "🌐 Relatório completo"
|
||||
}
|
||||
@@ -0,0 +1,264 @@
|
||||
{
|
||||
"Run inference on 100,000+ open ML models for NLP, vision, and audio tasks": "Run inference on 100,000+ open ML models for NLP, vision, and audio tasks",
|
||||
"Your Hugging Face API token (get it from https://huggingface.co/settings/tokens)": "Your Hugging Face API token (get it from https://huggingface.co/settings/tokens)",
|
||||
"Document Question Answering": "Document Question Answering",
|
||||
"Language Translation": "Language Translation",
|
||||
"Text Classification": "Text Classification",
|
||||
"Text Summarization": "Text Summarization",
|
||||
"Chat Completion": "Chat Completion",
|
||||
"Create Image": "Create Image",
|
||||
"Object Detection": "Object Detection",
|
||||
"Image Classification": "Image Classification",
|
||||
"Answer questions from document images using Hugging Face models": "Answer questions from document images using Hugging Face models",
|
||||
"Translate text between languages using specialized Hugging Face translation models": "Translate text between languages using specialized Hugging Face translation models",
|
||||
"Classify text into categories using Hugging Face models - includes zero-shot classification for custom categories": "Classify text into categories using Hugging Face models - includes zero-shot classification for custom categories",
|
||||
"Generate abstractive summaries of long text using Hugging Face models - optimized for business content": "Generate abstractive summaries of long text using Hugging Face models - optimized for business content",
|
||||
"Generate assistant replies using chat-style LLMs - perfect for FAQ bots, support agents, and content generation": "Generate assistant replies using chat-style LLMs - perfect for FAQ bots, support agents, and content generation",
|
||||
"Generate stunning images from text prompts using state-of-the-art diffusion models - perfect for marketing, product design, and creative content": "Generate stunning images from text prompts using state-of-the-art diffusion models - perfect for marketing, product design, and creative content",
|
||||
"Detect and locate objects in images with precise bounding boxes - perfect for inventory management, content moderation, and automated tagging": "Detect and locate objects in images with precise bounding boxes - perfect for inventory management, content moderation, and automated tagging",
|
||||
"Classify images with pre-trained models or custom categories - perfect for content moderation, automated tagging, and smart asset management": "Classify images with pre-trained models or custom categories - perfect for content moderation, automated tagging, and smart asset management",
|
||||
"Model": "Model",
|
||||
"Document Image": "Document Image",
|
||||
"Question": "Question",
|
||||
"Number of Answers": "Number of Answers",
|
||||
"Max Answer Length": "Max Answer Length",
|
||||
"Handle Impossible Answers": "Handle Impossible Answers",
|
||||
"OCR Language": "OCR Language",
|
||||
"Use Cache": "Use Cache",
|
||||
"Wait for Model": "Wait for Model",
|
||||
"Translation Model": "Translation Model",
|
||||
"Or Enter Custom Model ID": "Or Enter Custom Model ID",
|
||||
"Text to Translate": "Text to Translate",
|
||||
"Source Language (Optional)": "Source Language (Optional)",
|
||||
"Target Language (Optional)": "Target Language (Optional)",
|
||||
"Clean Up Extra Spaces": "Clean Up Extra Spaces",
|
||||
"Max Translation Length": "Max Translation Length",
|
||||
"Classification Type": "Classification Type",
|
||||
"Zero-Shot Model": "Zero-Shot Model",
|
||||
"Custom Categories": "Custom Categories",
|
||||
"Pre-trained Model": "Pre-trained Model",
|
||||
"Search Models": "Search Models",
|
||||
"Text to Classify": "Text to Classify",
|
||||
"Number of Results": "Number of Results",
|
||||
"Output Function": "Output Function",
|
||||
"Content Type": "Content Type",
|
||||
"Summarization Model": "Summarization Model",
|
||||
"Text to Summarize": "Text to Summarize",
|
||||
"Summary Length": "Summary Length",
|
||||
"Custom Min Length": "Custom Min Length",
|
||||
"Custom Max Length": "Custom Max Length",
|
||||
"Truncation Strategy": "Truncation Strategy",
|
||||
"Use Case": "Use Case",
|
||||
"Chat Model": "Chat Model",
|
||||
"Conversation Mode": "Conversation Mode",
|
||||
"User Message": "User Message",
|
||||
"System Prompt (Optional)": "System Prompt (Optional)",
|
||||
"Conversation History": "Conversation History",
|
||||
"Response Template": "Response Template",
|
||||
"Response Length": "Response Length",
|
||||
"Custom Max Tokens": "Custom Max Tokens",
|
||||
"Creativity Level": "Creativity Level",
|
||||
"Response Variety": "Response Variety",
|
||||
"Stop Sequences (Optional)": "Stop Sequences (Optional)",
|
||||
"Repetition Penalty": "Repetition Penalty",
|
||||
"Topic Diversity": "Topic Diversity",
|
||||
"Image Generation Model": "Image Generation Model",
|
||||
"Text Prompt": "Text Prompt",
|
||||
"Aspect Ratio": "Aspect Ratio",
|
||||
"Custom Width": "Custom Width",
|
||||
"Custom Height": "Custom Height",
|
||||
"Negative Prompt": "Negative Prompt",
|
||||
"Quality vs Speed": "Quality vs Speed",
|
||||
"Custom Inference Steps": "Custom Inference Steps",
|
||||
"Guidance Scale": "Guidance Scale",
|
||||
"Seed (Optional)": "Seed (Optional)",
|
||||
"Scheduler": "Scheduler",
|
||||
"Detection Model": "Detection Model",
|
||||
"Image to Analyze": "Image to Analyze",
|
||||
"Confidence Threshold": "Confidence Threshold",
|
||||
"Max Detections": "Max Detections",
|
||||
"Detection Filter": "Detection Filter",
|
||||
"Output Format": "Output Format",
|
||||
"Classification Mode": "Classification Mode",
|
||||
"Classification Model": "Classification Model",
|
||||
"Image Source": "Image Source",
|
||||
"Image File": "Image File",
|
||||
"Image URL": "Image URL",
|
||||
"Classification Template": "Classification Template",
|
||||
"Hugging Face document question answering model": "Hugging Face document question answering model",
|
||||
"Image of the document to analyze (invoice, contract, etc.)": "Image of the document to analyze (invoice, contract, etc.)",
|
||||
"Question to ask about the document (e.g., 'What is the invoice total?')": "Question to ask about the document (e.g., 'What is the invoice total?')",
|
||||
"Number of top answers to return": "Number of top answers to return",
|
||||
"Maximum length of predicted answers": "Maximum length of predicted answers",
|
||||
"Whether to accept 'impossible' as an answer when no answer is found": "Whether to accept 'impossible' as an answer when no answer is found",
|
||||
"Language to use for OCR text extraction": "Language to use for OCR text extraction",
|
||||
"Use cached results if available": "Use cached results if available",
|
||||
"Wait for model to load if not ready": "Wait for model to load if not ready",
|
||||
"Select a translation model or search from 7000+ available models": "Select a translation model or search from 7000+ available models",
|
||||
"Alternative: Enter any Hugging Face translation model ID directly (e.g., Helsinki-NLP/opus-mt-ja-en)": "Alternative: Enter any Hugging Face translation model ID directly (e.g., Helsinki-NLP/opus-mt-ja-en)",
|
||||
"The text content you want to translate": "The text content you want to translate",
|
||||
"Source language code (e.g., \"en\", \"es\", \"fr\"). Only needed for multilingual models that support multiple language pairs.": "Source language code (e.g., \"en\", \"es\", \"fr\"). Only needed for multilingual models that support multiple language pairs.",
|
||||
"Target language code (e.g., \"fr\", \"de\", \"zh\"). Only needed for multilingual models that support multiple language pairs.": "Target language code (e.g., \"fr\", \"de\", \"zh\"). Only needed for multilingual models that support multiple language pairs.",
|
||||
"Remove potential extra spaces in the translation output": "Remove potential extra spaces in the translation output",
|
||||
"Maximum length of the translated text (leave empty for default)": "Maximum length of the translated text (leave empty for default)",
|
||||
"Use cached results if available for faster responses": "Use cached results if available for faster responses",
|
||||
"Wait for model to load if not immediately available": "Wait for model to load if not immediately available",
|
||||
"Choose your classification approach": "Choose your classification approach",
|
||||
"Model for classifying into your custom categories": "Model for classifying into your custom categories",
|
||||
"Enter categories separated by commas (e.g., \"customer support, sales inquiry, spam, billing question\")": "Enter categories separated by commas (e.g., \"customer support, sales inquiry, spam, billing question\")",
|
||||
"Select a specialized pre-trained classification model": "Select a specialized pre-trained classification model",
|
||||
"Search from all available text classification models": "Search from all available text classification models",
|
||||
"The text content you want to classify": "The text content you want to classify",
|
||||
"Number of top predictions to return": "Number of top predictions to return",
|
||||
"How to calculate confidence scores": "How to calculate confidence scores",
|
||||
"Use cached results for faster responses": "Use cached results for faster responses",
|
||||
"What type of content are you summarizing?": "What type of content are you summarizing?",
|
||||
"Select the best model for your content type": "Select the best model for your content type",
|
||||
"The long text content you want to summarize (most models work best with 512-1024 tokens)": "The long text content you want to summarize (most models work best with 512-1024 tokens)",
|
||||
"How long should the summary be?": "How long should the summary be?",
|
||||
"Minimum number of tokens for the summary": "Minimum number of tokens for the summary",
|
||||
"Maximum number of tokens for the summary": "Maximum number of tokens for the summary",
|
||||
"Remove extra spaces and clean up formatting": "Remove extra spaces and clean up formatting",
|
||||
"How to handle text that exceeds model limits": "How to handle text that exceeds model limits",
|
||||
"What type of chat assistant are you building?": "What type of chat assistant are you building?",
|
||||
"Select the best model for your use case": "Select the best model for your use case",
|
||||
"How do you want to build the conversation?": "How do you want to build the conversation?",
|
||||
"The user message or question to respond to": "The user message or question to respond to",
|
||||
"Instructions for how the assistant should behave": "Instructions for how the assistant should behave",
|
||||
"Previous messages in the conversation (for multi-turn chat)": "Previous messages in the conversation (for multi-turn chat)",
|
||||
"Pre-built templates for common business scenarios": "Pre-built templates for common business scenarios",
|
||||
"How long should the response be?": "How long should the response be?",
|
||||
"Maximum number of tokens to generate": "Maximum number of tokens to generate",
|
||||
"How creative should responses be? (0.1 = focused, 1.0 = creative)": "How creative should responses be? (0.1 = focused, 1.0 = creative)",
|
||||
"Controls response diversity (0.1 = focused, 1.0 = varied)": "Controls response diversity (0.1 = focused, 1.0 = varied)",
|
||||
"Text sequences that will stop generation": "Text sequences that will stop generation",
|
||||
"Reduce repetitive responses (-2.0 to 2.0)": "Reduce repetitive responses (-2.0 to 2.0)",
|
||||
"Encourage diverse topics (-2.0 to 2.0)": "Encourage diverse topics (-2.0 to 2.0)",
|
||||
"Use cached responses for identical requests": "Use cached responses for identical requests",
|
||||
"What type of image generation do you need?": "What type of image generation do you need?",
|
||||
"Describe the image you want to generate. Be specific about style, colors, composition, and details.": "Describe the image you want to generate. Be specific about style, colors, composition, and details.",
|
||||
"Choose the dimensions for your image": "Choose the dimensions for your image",
|
||||
"Width in pixels (64-1024)": "Width in pixels (64-1024)",
|
||||
"Height in pixels (64-1024)": "Height in pixels (64-1024)",
|
||||
"Describe what you DON'T want in the image (blur, low quality, distorted, etc.)": "Describe what you DON'T want in the image (blur, low quality, distorted, etc.)",
|
||||
"Balance between image quality and generation time": "Balance between image quality and generation time",
|
||||
"Number of denoising steps (1-100)": "Number of denoising steps (1-100)",
|
||||
"How closely to follow the prompt (1-20). Higher values = more prompt adherence but may reduce creativity.": "How closely to follow the prompt (1-20). Higher values = more prompt adherence but may reduce creativity.",
|
||||
"Set a seed for reproducible results. Leave empty for random generation.": "Set a seed for reproducible results. Leave empty for random generation.",
|
||||
"Advanced: Choose the noise scheduler algorithm": "Advanced: Choose the noise scheduler algorithm",
|
||||
"What type of object detection do you need?": "What type of object detection do you need?",
|
||||
"Select the best model for your detection task": "Select the best model for your detection task",
|
||||
"Upload an image for object detection. Supports JPG, PNG, WebP formats.": "Upload an image for object detection. Supports JPG, PNG, WebP formats.",
|
||||
"Minimum confidence score for detections (0.1-0.9). Higher values = fewer but more accurate detections.": "Minimum confidence score for detections (0.1-0.9). Higher values = fewer but more accurate detections.",
|
||||
"Maximum number of objects to detect (1-100)": "Maximum number of objects to detect (1-100)",
|
||||
"How to handle detection results": "How to handle detection results",
|
||||
"How to structure the detection results": "How to structure the detection results",
|
||||
"How do you want to classify your images?": "How do you want to classify your images?",
|
||||
"What type of image classification do you need?": "What type of image classification do you need?",
|
||||
"How do you want to provide the image?": "How do you want to provide the image?",
|
||||
"Upload an image file for classification (JPG, PNG, WebP)": "Upload an image file for classification (JPG, PNG, WebP)",
|
||||
"URL of the image to classify": "URL of the image to classify",
|
||||
"Enter the categories you want to classify the image into (e.g., \"dog\", \"cat\", \"bird\")": "Enter the categories you want to classify the image into (e.g., \"dog\", \"cat\", \"bird\")",
|
||||
"Template for classification (advanced). Default: \"This image shows {}\"": "Template for classification (advanced). Default: \"This image shows {}\"",
|
||||
"Maximum number of classification results to return (1-20)": "Maximum number of classification results to return (1-20)",
|
||||
"Minimum confidence score for results (0.0-1.0)": "Minimum confidence score for results (0.0-1.0)",
|
||||
"How to structure the classification results": "How to structure the classification results",
|
||||
"impira/layoutlm-document-qa (Recommended)": "impira/layoutlm-document-qa (Recommended)",
|
||||
"microsoft/layoutlmv3-base": "microsoft/layoutlmv3-base",
|
||||
"nielsr/layoutlmv2-finetuned-docvqa": "nielsr/layoutlmv2-finetuned-docvqa",
|
||||
"English": "English",
|
||||
"Spanish": "Spanish",
|
||||
"French": "French",
|
||||
"German": "German",
|
||||
"Italian": "Italian",
|
||||
"Portuguese": "Portuguese",
|
||||
"🎯 Zero-Shot (Custom Categories)": "🎯 Zero-Shot (Custom Categories)",
|
||||
"📊 Pre-trained Models": "📊 Pre-trained Models",
|
||||
"🔍 Search All Models": "🔍 Search All Models",
|
||||
"🔥 Facebook BART-Large (5.4M downloads)": "🔥 Facebook BART-Large (5.4M downloads)",
|
||||
"🔥 DeBERTa TaskSource (904K downloads)": "🔥 DeBERTa TaskSource (904K downloads)",
|
||||
"🔥 DeBERTa MNLI-FEVER (668K downloads)": "🔥 DeBERTa MNLI-FEVER (668K downloads)",
|
||||
"🌍 DistilBERT Multilingual (520K downloads)": "🌍 DistilBERT Multilingual (520K downloads)",
|
||||
"😊 Sentiment: Twitter RoBERTa (3M downloads)": "😊 Sentiment: Twitter RoBERTa (3M downloads)",
|
||||
"😊 Sentiment: DistilBERT SST-2 (2.9M downloads)": "😊 Sentiment: DistilBERT SST-2 (2.9M downloads)",
|
||||
"🌍 Sentiment: Multilingual BERT (1.7M downloads)": "🌍 Sentiment: Multilingual BERT (1.7M downloads)",
|
||||
"💰 Finance: FinBERT Sentiment (1.5M downloads)": "💰 Finance: FinBERT Sentiment (1.5M downloads)",
|
||||
"💰 Finance: FinBERT Tone (1.4M downloads)": "💰 Finance: FinBERT Tone (1.4M downloads)",
|
||||
"🛡️ Hate Speech: RoBERTa (2M downloads)": "🛡️ Hate Speech: RoBERTa (2M downloads)",
|
||||
"🛡️ Toxicity: HateBERT (1.1M downloads)": "🛡️ Toxicity: HateBERT (1.1M downloads)",
|
||||
"🛡️ Toxicity: ToxDect RoBERTa (1.1M downloads)": "🛡️ Toxicity: ToxDect RoBERTa (1.1M downloads)",
|
||||
"🎧 Customer Service: Banking Intent": "🎧 Customer Service: Banking Intent",
|
||||
"📧 Spam: SMS Classification": "📧 Spam: SMS Classification",
|
||||
"Softmax (Recommended)": "Softmax (Recommended)",
|
||||
"Sigmoid": "Sigmoid",
|
||||
"None (Raw Scores)": "None (Raw Scores)",
|
||||
"📰 News Articles & Blog Posts": "📰 News Articles & Blog Posts",
|
||||
"📧 Emails & Support Tickets": "📧 Emails & Support Tickets",
|
||||
"🎯 Meetings & Conversations": "🎯 Meetings & Conversations",
|
||||
"📚 General Text & Documents": "📚 General Text & Documents",
|
||||
"🏥 Medical & Scientific": "🏥 Medical & Scientific",
|
||||
"🌍 Multilingual Content": "🌍 Multilingual Content",
|
||||
"📝 Brief (30-80 words)": "📝 Brief (30-80 words)",
|
||||
"📄 Medium (80-150 words)": "📄 Medium (80-150 words)",
|
||||
"📚 Detailed (150-300 words)": "📚 Detailed (150-300 words)",
|
||||
"⚙️ Custom Length": "⚙️ Custom Length",
|
||||
"Do Not Truncate": "Do Not Truncate",
|
||||
"Longest First": "Longest First",
|
||||
"Only First": "Only First",
|
||||
"Only Second": "Only Second",
|
||||
"FAQ & Customer Support": "FAQ & Customer Support",
|
||||
"Content Generation & Writing": "Content Generation & Writing",
|
||||
"General Conversation": "General Conversation",
|
||||
"Search All Models": "Search All Models",
|
||||
"Single Message (Simple Q&A)": "Single Message (Simple Q&A)",
|
||||
"Multi-turn Conversation": "Multi-turn Conversation",
|
||||
"Template-based Response": "Template-based Response",
|
||||
"Customer Support Agent": "Customer Support Agent",
|
||||
"FAQ Assistant": "FAQ Assistant",
|
||||
"Content Writer": "Content Writer",
|
||||
"Email Responder": "Email Responder",
|
||||
"E-commerce Assistant": "E-commerce Assistant",
|
||||
"Brief (50-100 tokens)": "Brief (50-100 tokens)",
|
||||
"Normal (100-200 tokens)": "Normal (100-200 tokens)",
|
||||
"Detailed (200-400 tokens)": "Detailed (200-400 tokens)",
|
||||
"Custom": "Custom",
|
||||
"Fast Generation (Quick Prototypes)": "Fast Generation (Quick Prototypes)",
|
||||
"High Quality (Marketing & Print)": "High Quality (Marketing & Print)",
|
||||
"Business Content (Products & Brands)": "Business Content (Products & Brands)",
|
||||
"📱 Portrait (512×768) - Social Media": "📱 Portrait (512×768) - Social Media",
|
||||
"🖥️ Landscape (768×512) - Banners": "🖥️ Landscape (768×512) - Banners",
|
||||
"⬜ Square (512×512) - Profile Pictures": "⬜ Square (512×512) - Profile Pictures",
|
||||
"📺 Wide (1024×576) - Headers": "📺 Wide (1024×576) - Headers",
|
||||
"⚙️ Custom Dimensions": "⚙️ Custom Dimensions",
|
||||
"⚡ Fast (10-20 steps)": "⚡ Fast (10-20 steps)",
|
||||
"⚖️ Balanced (20-30 steps)": "⚖️ Balanced (20-30 steps)",
|
||||
"🎯 High Quality (30-50 steps)": "🎯 High Quality (30-50 steps)",
|
||||
"🏆 Maximum Quality (50+ steps)": "🏆 Maximum Quality (50+ steps)",
|
||||
"⚙️ Custom Steps": "⚙️ Custom Steps",
|
||||
"DPM++ 2M Karras (Recommended)": "DPM++ 2M Karras (Recommended)",
|
||||
"Euler A (Fast)": "Euler A (Fast)",
|
||||
"DDIM (Stable)": "DDIM (Stable)",
|
||||
"LMS (Classic)": "LMS (Classic)",
|
||||
"📋 General Objects (COCO Dataset)": "📋 General Objects (COCO Dataset)",
|
||||
"📊 Documents & Tables": "📊 Documents & Tables",
|
||||
"🛡️ Security & Monitoring": "🛡️ Security & Monitoring",
|
||||
"🏢 Business & Commerce": "🏢 Business & Commerce",
|
||||
"🎯 High Confidence Only (>0.7)": "🎯 High Confidence Only (>0.7)",
|
||||
"⚖️ Balanced Results (>0.5)": "⚖️ Balanced Results (>0.5)",
|
||||
"📊 All Detections (>0.1)": "📊 All Detections (>0.1)",
|
||||
"⚙️ Custom Threshold": "⚙️ Custom Threshold",
|
||||
"📋 Business Summary": "📋 Business Summary",
|
||||
"🔧 Technical Details": "🔧 Technical Details",
|
||||
"📊 Statistical Analysis": "📊 Statistical Analysis",
|
||||
"🌐 All Information": "🌐 All Information",
|
||||
"🏷️ Pre-trained Categories (Standard)": "🏷️ Pre-trained Categories (Standard)",
|
||||
"🎯 Custom Categories (Zero-shot)": "🎯 Custom Categories (Zero-shot)",
|
||||
"🛡️ Content Moderation & Safety": "🛡️ Content Moderation & Safety",
|
||||
"🏷️ General Image Tagging": "🏷️ General Image Tagging",
|
||||
"👤 People & Demographics": "👤 People & Demographics",
|
||||
"🎨 Creative & Media": "🎨 Creative & Media",
|
||||
"💼 Business & Commerce": "💼 Business & Commerce",
|
||||
"📎 Upload File": "📎 Upload File",
|
||||
"🔗 Image URL": "🔗 Image URL",
|
||||
"🌐 Comprehensive Report": "🌐 Comprehensive Report"
|
||||
}
|
||||
@@ -0,0 +1,264 @@
|
||||
{
|
||||
"Run inference on 100,000+ open ML models for NLP, vision, and audio tasks": "Run inference on 100,000+ open ML models for NLP, vision, and audio tasks",
|
||||
"Your Hugging Face API token (get it from https://huggingface.co/settings/tokens)": "Your Hugging Face API token (get it from https://huggingface.co/settings/tokens)",
|
||||
"Document Question Answering": "Document Question Answering",
|
||||
"Language Translation": "Language Translation",
|
||||
"Text Classification": "Text Classification",
|
||||
"Text Summarization": "Text Summarization",
|
||||
"Chat Completion": "Chat Completion",
|
||||
"Create Image": "Create Image",
|
||||
"Object Detection": "Object Detection",
|
||||
"Image Classification": "Image Classification",
|
||||
"Answer questions from document images using Hugging Face models": "Answer questions from document images using Hugging Face models",
|
||||
"Translate text between languages using specialized Hugging Face translation models": "Translate text between languages using specialized Hugging Face translation models",
|
||||
"Classify text into categories using Hugging Face models - includes zero-shot classification for custom categories": "Classify text into categories using Hugging Face models - includes zero-shot classification for custom categories",
|
||||
"Generate abstractive summaries of long text using Hugging Face models - optimized for business content": "Generate abstractive summaries of long text using Hugging Face models - optimized for business content",
|
||||
"Generate assistant replies using chat-style LLMs - perfect for FAQ bots, support agents, and content generation": "Generate assistant replies using chat-style LLMs - perfect for FAQ bots, support agents, and content generation",
|
||||
"Generate stunning images from text prompts using state-of-the-art diffusion models - perfect for marketing, product design, and creative content": "Generate stunning images from text prompts using state-of-the-art diffusion models - perfect for marketing, product design, and creative content",
|
||||
"Detect and locate objects in images with precise bounding boxes - perfect for inventory management, content moderation, and automated tagging": "Detect and locate objects in images with precise bounding boxes - perfect for inventory management, content moderation, and automated tagging",
|
||||
"Classify images with pre-trained models or custom categories - perfect for content moderation, automated tagging, and smart asset management": "Classify images with pre-trained models or custom categories - perfect for content moderation, automated tagging, and smart asset management",
|
||||
"Model": "Model",
|
||||
"Document Image": "Document Image",
|
||||
"Question": "Question",
|
||||
"Number of Answers": "Number of Answers",
|
||||
"Max Answer Length": "Max Answer Length",
|
||||
"Handle Impossible Answers": "Handle Impossible Answers",
|
||||
"OCR Language": "OCR Language",
|
||||
"Use Cache": "Use Cache",
|
||||
"Wait for Model": "Wait for Model",
|
||||
"Translation Model": "Translation Model",
|
||||
"Or Enter Custom Model ID": "Or Enter Custom Model ID",
|
||||
"Text to Translate": "Text to Translate",
|
||||
"Source Language (Optional)": "Source Language (Optional)",
|
||||
"Target Language (Optional)": "Target Language (Optional)",
|
||||
"Clean Up Extra Spaces": "Clean Up Extra Spaces",
|
||||
"Max Translation Length": "Max Translation Length",
|
||||
"Classification Type": "Classification Type",
|
||||
"Zero-Shot Model": "Zero-Shot Model",
|
||||
"Custom Categories": "Custom Categories",
|
||||
"Pre-trained Model": "Pre-trained Model",
|
||||
"Search Models": "Search Models",
|
||||
"Text to Classify": "Text to Classify",
|
||||
"Number of Results": "Number of Results",
|
||||
"Output Function": "Output Function",
|
||||
"Content Type": "Content Type",
|
||||
"Summarization Model": "Summarization Model",
|
||||
"Text to Summarize": "Text to Summarize",
|
||||
"Summary Length": "Summary Length",
|
||||
"Custom Min Length": "Custom Min Length",
|
||||
"Custom Max Length": "Custom Max Length",
|
||||
"Truncation Strategy": "Truncation Strategy",
|
||||
"Use Case": "Use Case",
|
||||
"Chat Model": "Chat Model",
|
||||
"Conversation Mode": "Conversation Mode",
|
||||
"User Message": "User Message",
|
||||
"System Prompt (Optional)": "System Prompt (Optional)",
|
||||
"Conversation History": "Conversation History",
|
||||
"Response Template": "Response Template",
|
||||
"Response Length": "Response Length",
|
||||
"Custom Max Tokens": "Custom Max Tokens",
|
||||
"Creativity Level": "Creativity Level",
|
||||
"Response Variety": "Response Variety",
|
||||
"Stop Sequences (Optional)": "Stop Sequences (Optional)",
|
||||
"Repetition Penalty": "Repetition Penalty",
|
||||
"Topic Diversity": "Topic Diversity",
|
||||
"Image Generation Model": "Image Generation Model",
|
||||
"Text Prompt": "Text Prompt",
|
||||
"Aspect Ratio": "Aspect Ratio",
|
||||
"Custom Width": "Custom Width",
|
||||
"Custom Height": "Custom Height",
|
||||
"Negative Prompt": "Negative Prompt",
|
||||
"Quality vs Speed": "Quality vs Speed",
|
||||
"Custom Inference Steps": "Custom Inference Steps",
|
||||
"Guidance Scale": "Guidance Scale",
|
||||
"Seed (Optional)": "Seed (Optional)",
|
||||
"Scheduler": "Scheduler",
|
||||
"Detection Model": "Detection Model",
|
||||
"Image to Analyze": "Image to Analyze",
|
||||
"Confidence Threshold": "Confidence Threshold",
|
||||
"Max Detections": "Max Detections",
|
||||
"Detection Filter": "Detection Filter",
|
||||
"Output Format": "Output Format",
|
||||
"Classification Mode": "Classification Mode",
|
||||
"Classification Model": "Classification Model",
|
||||
"Image Source": "Image Source",
|
||||
"Image File": "Image File",
|
||||
"Image URL": "Image URL",
|
||||
"Classification Template": "Classification Template",
|
||||
"Hugging Face document question answering model": "Hugging Face document question answering model",
|
||||
"Image of the document to analyze (invoice, contract, etc.)": "Image of the document to analyze (invoice, contract, etc.)",
|
||||
"Question to ask about the document (e.g., 'What is the invoice total?')": "Question to ask about the document (e.g., 'What is the invoice total?')",
|
||||
"Number of top answers to return": "Number of top answers to return",
|
||||
"Maximum length of predicted answers": "Maximum length of predicted answers",
|
||||
"Whether to accept 'impossible' as an answer when no answer is found": "Whether to accept 'impossible' as an answer when no answer is found",
|
||||
"Language to use for OCR text extraction": "Language to use for OCR text extraction",
|
||||
"Use cached results if available": "Use cached results if available",
|
||||
"Wait for model to load if not ready": "Wait for model to load if not ready",
|
||||
"Select a translation model or search from 7000+ available models": "Select a translation model or search from 7000+ available models",
|
||||
"Alternative: Enter any Hugging Face translation model ID directly (e.g., Helsinki-NLP/opus-mt-ja-en)": "Alternative: Enter any Hugging Face translation model ID directly (e.g., Helsinki-NLP/opus-mt-ja-en)",
|
||||
"The text content you want to translate": "The text content you want to translate",
|
||||
"Source language code (e.g., \"en\", \"es\", \"fr\"). Only needed for multilingual models that support multiple language pairs.": "Source language code (e.g., \"en\", \"es\", \"fr\"). Only needed for multilingual models that support multiple language pairs.",
|
||||
"Target language code (e.g., \"fr\", \"de\", \"zh\"). Only needed for multilingual models that support multiple language pairs.": "Target language code (e.g., \"fr\", \"de\", \"zh\"). Only needed for multilingual models that support multiple language pairs.",
|
||||
"Remove potential extra spaces in the translation output": "Remove potential extra spaces in the translation output",
|
||||
"Maximum length of the translated text (leave empty for default)": "Maximum length of the translated text (leave empty for default)",
|
||||
"Use cached results if available for faster responses": "Use cached results if available for faster responses",
|
||||
"Wait for model to load if not immediately available": "Wait for model to load if not immediately available",
|
||||
"Choose your classification approach": "Choose your classification approach",
|
||||
"Model for classifying into your custom categories": "Model for classifying into your custom categories",
|
||||
"Enter categories separated by commas (e.g., \"customer support, sales inquiry, spam, billing question\")": "Enter categories separated by commas (e.g., \"customer support, sales inquiry, spam, billing question\")",
|
||||
"Select a specialized pre-trained classification model": "Select a specialized pre-trained classification model",
|
||||
"Search from all available text classification models": "Search from all available text classification models",
|
||||
"The text content you want to classify": "The text content you want to classify",
|
||||
"Number of top predictions to return": "Number of top predictions to return",
|
||||
"How to calculate confidence scores": "How to calculate confidence scores",
|
||||
"Use cached results for faster responses": "Use cached results for faster responses",
|
||||
"What type of content are you summarizing?": "What type of content are you summarizing?",
|
||||
"Select the best model for your content type": "Select the best model for your content type",
|
||||
"The long text content you want to summarize (most models work best with 512-1024 tokens)": "The long text content you want to summarize (most models work best with 512-1024 tokens)",
|
||||
"How long should the summary be?": "How long should the summary be?",
|
||||
"Minimum number of tokens for the summary": "Minimum number of tokens for the summary",
|
||||
"Maximum number of tokens for the summary": "Maximum number of tokens for the summary",
|
||||
"Remove extra spaces and clean up formatting": "Remove extra spaces and clean up formatting",
|
||||
"How to handle text that exceeds model limits": "How to handle text that exceeds model limits",
|
||||
"What type of chat assistant are you building?": "What type of chat assistant are you building?",
|
||||
"Select the best model for your use case": "Select the best model for your use case",
|
||||
"How do you want to build the conversation?": "How do you want to build the conversation?",
|
||||
"The user message or question to respond to": "The user message or question to respond to",
|
||||
"Instructions for how the assistant should behave": "Instructions for how the assistant should behave",
|
||||
"Previous messages in the conversation (for multi-turn chat)": "Previous messages in the conversation (for multi-turn chat)",
|
||||
"Pre-built templates for common business scenarios": "Pre-built templates for common business scenarios",
|
||||
"How long should the response be?": "How long should the response be?",
|
||||
"Maximum number of tokens to generate": "Maximum number of tokens to generate",
|
||||
"How creative should responses be? (0.1 = focused, 1.0 = creative)": "How creative should responses be? (0.1 = focused, 1.0 = creative)",
|
||||
"Controls response diversity (0.1 = focused, 1.0 = varied)": "Controls response diversity (0.1 = focused, 1.0 = varied)",
|
||||
"Text sequences that will stop generation": "Text sequences that will stop generation",
|
||||
"Reduce repetitive responses (-2.0 to 2.0)": "Reduce repetitive responses (-2.0 to 2.0)",
|
||||
"Encourage diverse topics (-2.0 to 2.0)": "Encourage diverse topics (-2.0 to 2.0)",
|
||||
"Use cached responses for identical requests": "Use cached responses for identical requests",
|
||||
"What type of image generation do you need?": "What type of image generation do you need?",
|
||||
"Describe the image you want to generate. Be specific about style, colors, composition, and details.": "Describe the image you want to generate. Be specific about style, colors, composition, and details.",
|
||||
"Choose the dimensions for your image": "Choose the dimensions for your image",
|
||||
"Width in pixels (64-1024)": "Width in pixels (64-1024)",
|
||||
"Height in pixels (64-1024)": "Height in pixels (64-1024)",
|
||||
"Describe what you DON'T want in the image (blur, low quality, distorted, etc.)": "Describe what you DON'T want in the image (blur, low quality, distorted, etc.)",
|
||||
"Balance between image quality and generation time": "Balance between image quality and generation time",
|
||||
"Number of denoising steps (1-100)": "Number of denoising steps (1-100)",
|
||||
"How closely to follow the prompt (1-20). Higher values = more prompt adherence but may reduce creativity.": "How closely to follow the prompt (1-20). Higher values = more prompt adherence but may reduce creativity.",
|
||||
"Set a seed for reproducible results. Leave empty for random generation.": "Set a seed for reproducible results. Leave empty for random generation.",
|
||||
"Advanced: Choose the noise scheduler algorithm": "Advanced: Choose the noise scheduler algorithm",
|
||||
"What type of object detection do you need?": "What type of object detection do you need?",
|
||||
"Select the best model for your detection task": "Select the best model for your detection task",
|
||||
"Upload an image for object detection. Supports JPG, PNG, WebP formats.": "Upload an image for object detection. Supports JPG, PNG, WebP formats.",
|
||||
"Minimum confidence score for detections (0.1-0.9). Higher values = fewer but more accurate detections.": "Minimum confidence score for detections (0.1-0.9). Higher values = fewer but more accurate detections.",
|
||||
"Maximum number of objects to detect (1-100)": "Maximum number of objects to detect (1-100)",
|
||||
"How to handle detection results": "How to handle detection results",
|
||||
"How to structure the detection results": "How to structure the detection results",
|
||||
"How do you want to classify your images?": "How do you want to classify your images?",
|
||||
"What type of image classification do you need?": "What type of image classification do you need?",
|
||||
"How do you want to provide the image?": "How do you want to provide the image?",
|
||||
"Upload an image file for classification (JPG, PNG, WebP)": "Upload an image file for classification (JPG, PNG, WebP)",
|
||||
"URL of the image to classify": "URL of the image to classify",
|
||||
"Enter the categories you want to classify the image into (e.g., \"dog\", \"cat\", \"bird\")": "Enter the categories you want to classify the image into (e.g., \"dog\", \"cat\", \"bird\")",
|
||||
"Template for classification (advanced). Default: \"This image shows {}\"": "Template for classification (advanced). Default: \"This image shows {}\"",
|
||||
"Maximum number of classification results to return (1-20)": "Maximum number of classification results to return (1-20)",
|
||||
"Minimum confidence score for results (0.0-1.0)": "Minimum confidence score for results (0.0-1.0)",
|
||||
"How to structure the classification results": "How to structure the classification results",
|
||||
"impira/layoutlm-document-qa (Recommended)": "impira/layoutlm-document-qa (Recommended)",
|
||||
"microsoft/layoutlmv3-base": "microsoft/layoutlmv3-base",
|
||||
"nielsr/layoutlmv2-finetuned-docvqa": "nielsr/layoutlmv2-finetuned-docvqa",
|
||||
"English": "English",
|
||||
"Spanish": "Spanish",
|
||||
"French": "French",
|
||||
"German": "German",
|
||||
"Italian": "Italian",
|
||||
"Portuguese": "Portuguese",
|
||||
"🎯 Zero-Shot (Custom Categories)": "🎯 Zero-Shot (Custom Categories)",
|
||||
"📊 Pre-trained Models": "📊 Pre-trained Models",
|
||||
"🔍 Search All Models": "🔍 Search All Models",
|
||||
"🔥 Facebook BART-Large (5.4M downloads)": "🔥 Facebook BART-Large (5.4M downloads)",
|
||||
"🔥 DeBERTa TaskSource (904K downloads)": "🔥 DeBERTa TaskSource (904K downloads)",
|
||||
"🔥 DeBERTa MNLI-FEVER (668K downloads)": "🔥 DeBERTa MNLI-FEVER (668K downloads)",
|
||||
"🌍 DistilBERT Multilingual (520K downloads)": "🌍 DistilBERT Multilingual (520K downloads)",
|
||||
"😊 Sentiment: Twitter RoBERTa (3M downloads)": "😊 Sentiment: Twitter RoBERTa (3M downloads)",
|
||||
"😊 Sentiment: DistilBERT SST-2 (2.9M downloads)": "😊 Sentiment: DistilBERT SST-2 (2.9M downloads)",
|
||||
"🌍 Sentiment: Multilingual BERT (1.7M downloads)": "🌍 Sentiment: Multilingual BERT (1.7M downloads)",
|
||||
"💰 Finance: FinBERT Sentiment (1.5M downloads)": "💰 Finance: FinBERT Sentiment (1.5M downloads)",
|
||||
"💰 Finance: FinBERT Tone (1.4M downloads)": "💰 Finance: FinBERT Tone (1.4M downloads)",
|
||||
"🛡️ Hate Speech: RoBERTa (2M downloads)": "🛡️ Hate Speech: RoBERTa (2M downloads)",
|
||||
"🛡️ Toxicity: HateBERT (1.1M downloads)": "🛡️ Toxicity: HateBERT (1.1M downloads)",
|
||||
"🛡️ Toxicity: ToxDect RoBERTa (1.1M downloads)": "🛡️ Toxicity: ToxDect RoBERTa (1.1M downloads)",
|
||||
"🎧 Customer Service: Banking Intent": "🎧 Customer Service: Banking Intent",
|
||||
"📧 Spam: SMS Classification": "📧 Spam: SMS Classification",
|
||||
"Softmax (Recommended)": "Softmax (Recommended)",
|
||||
"Sigmoid": "Sigmoid",
|
||||
"None (Raw Scores)": "None (Raw Scores)",
|
||||
"📰 News Articles & Blog Posts": "📰 News Articles & Blog Posts",
|
||||
"📧 Emails & Support Tickets": "📧 Emails & Support Tickets",
|
||||
"🎯 Meetings & Conversations": "🎯 Meetings & Conversations",
|
||||
"📚 General Text & Documents": "📚 General Text & Documents",
|
||||
"🏥 Medical & Scientific": "🏥 Medical & Scientific",
|
||||
"🌍 Multilingual Content": "🌍 Multilingual Content",
|
||||
"📝 Brief (30-80 words)": "📝 Brief (30-80 words)",
|
||||
"📄 Medium (80-150 words)": "📄 Medium (80-150 words)",
|
||||
"📚 Detailed (150-300 words)": "📚 Detailed (150-300 words)",
|
||||
"⚙️ Custom Length": "⚙️ Custom Length",
|
||||
"Do Not Truncate": "Do Not Truncate",
|
||||
"Longest First": "Longest First",
|
||||
"Only First": "Only First",
|
||||
"Only Second": "Only Second",
|
||||
"FAQ & Customer Support": "FAQ & Customer Support",
|
||||
"Content Generation & Writing": "Content Generation & Writing",
|
||||
"General Conversation": "General Conversation",
|
||||
"Search All Models": "Search All Models",
|
||||
"Single Message (Simple Q&A)": "Single Message (Simple Q&A)",
|
||||
"Multi-turn Conversation": "Multi-turn Conversation",
|
||||
"Template-based Response": "Template-based Response",
|
||||
"Customer Support Agent": "Customer Support Agent",
|
||||
"FAQ Assistant": "FAQ Assistant",
|
||||
"Content Writer": "Content Writer",
|
||||
"Email Responder": "Email Responder",
|
||||
"E-commerce Assistant": "E-commerce Assistant",
|
||||
"Brief (50-100 tokens)": "Brief (50-100 tokens)",
|
||||
"Normal (100-200 tokens)": "Normal (100-200 tokens)",
|
||||
"Detailed (200-400 tokens)": "Detailed (200-400 tokens)",
|
||||
"Custom": "Custom",
|
||||
"Fast Generation (Quick Prototypes)": "Fast Generation (Quick Prototypes)",
|
||||
"High Quality (Marketing & Print)": "High Quality (Marketing & Print)",
|
||||
"Business Content (Products & Brands)": "Business Content (Products & Brands)",
|
||||
"📱 Portrait (512×768) - Social Media": "📱 Portrait (512×768) - Social Media",
|
||||
"🖥️ Landscape (768×512) - Banners": "🖥️ Landscape (768×512) - Banners",
|
||||
"⬜ Square (512×512) - Profile Pictures": "⬜ Square (512×512) - Profile Pictures",
|
||||
"📺 Wide (1024×576) - Headers": "📺 Wide (1024×576) - Headers",
|
||||
"⚙️ Custom Dimensions": "⚙️ Custom Dimensions",
|
||||
"⚡ Fast (10-20 steps)": "⚡ Fast (10-20 steps)",
|
||||
"⚖️ Balanced (20-30 steps)": "⚖️ Balanced (20-30 steps)",
|
||||
"🎯 High Quality (30-50 steps)": "🎯 High Quality (30-50 steps)",
|
||||
"🏆 Maximum Quality (50+ steps)": "🏆 Maximum Quality (50+ steps)",
|
||||
"⚙️ Custom Steps": "⚙️ Custom Steps",
|
||||
"DPM++ 2M Karras (Recommended)": "DPM++ 2M Karras (Recommended)",
|
||||
"Euler A (Fast)": "Euler A (Fast)",
|
||||
"DDIM (Stable)": "DDIM (Stable)",
|
||||
"LMS (Classic)": "LMS (Classic)",
|
||||
"📋 General Objects (COCO Dataset)": "📋 General Objects (COCO Dataset)",
|
||||
"📊 Documents & Tables": "📊 Documents & Tables",
|
||||
"🛡️ Security & Monitoring": "🛡️ Security & Monitoring",
|
||||
"🏢 Business & Commerce": "🏢 Business & Commerce",
|
||||
"🎯 High Confidence Only (>0.7)": "🎯 High Confidence Only (>0.7)",
|
||||
"⚖️ Balanced Results (>0.5)": "⚖️ Balanced Results (>0.5)",
|
||||
"📊 All Detections (>0.1)": "📊 All Detections (>0.1)",
|
||||
"⚙️ Custom Threshold": "⚙️ Custom Threshold",
|
||||
"📋 Business Summary": "📋 Business Summary",
|
||||
"🔧 Technical Details": "🔧 Technical Details",
|
||||
"📊 Statistical Analysis": "📊 Statistical Analysis",
|
||||
"🌐 All Information": "🌐 All Information",
|
||||
"🏷️ Pre-trained Categories (Standard)": "🏷️ Pre-trained Categories (Standard)",
|
||||
"🎯 Custom Categories (Zero-shot)": "🎯 Custom Categories (Zero-shot)",
|
||||
"🛡️ Content Moderation & Safety": "🛡️ Content Moderation & Safety",
|
||||
"🏷️ General Image Tagging": "🏷️ General Image Tagging",
|
||||
"👤 People & Demographics": "👤 People & Demographics",
|
||||
"🎨 Creative & Media": "🎨 Creative & Media",
|
||||
"💼 Business & Commerce": "💼 Business & Commerce",
|
||||
"📎 Upload File": "📎 Upload File",
|
||||
"🔗 Image URL": "🔗 Image URL",
|
||||
"🌐 Comprehensive Report": "🌐 Comprehensive Report"
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
import { createPiece, PieceAuth } from '@activepieces/pieces-framework';
|
||||
import { PieceCategory } from '@activepieces/shared';
|
||||
import { documentQuestionAnswering } from './lib/actions/document-question-answering';
|
||||
import { languageTranslation } from './lib/actions/language-translation';
|
||||
import { textClassification } from './lib/actions/text-classification';
|
||||
import { textSummarization } from './lib/actions/text-summarization';
|
||||
import { chatCompletion } from './lib/actions/chat-completion';
|
||||
import { createImage } from './lib/actions/create-image';
|
||||
import { objectDetection } from './lib/actions/object-detection';
|
||||
import { imageClassification } from './lib/actions/image-classification';
|
||||
|
||||
export const huggingFaceAuth = PieceAuth.SecretText({
|
||||
displayName: 'API Token',
|
||||
description:
|
||||
'Your Hugging Face API token (get it from https://huggingface.co/settings/tokens)',
|
||||
required: true,
|
||||
});
|
||||
|
||||
export const huggingface = createPiece({
|
||||
displayName: 'Hugging Face',
|
||||
description:
|
||||
'Run inference on 100,000+ open ML models for NLP, vision, and audio tasks',
|
||||
auth: huggingFaceAuth,
|
||||
minimumSupportedRelease: '0.36.1',
|
||||
logoUrl: 'https://cdn.activepieces.com/pieces/huggingface.svg',
|
||||
categories: [PieceCategory.ARTIFICIAL_INTELLIGENCE],
|
||||
authors: ['Ani-4x'],
|
||||
actions: [
|
||||
documentQuestionAnswering,
|
||||
languageTranslation,
|
||||
textClassification,
|
||||
textSummarization,
|
||||
chatCompletion,
|
||||
createImage,
|
||||
objectDetection,
|
||||
imageClassification,
|
||||
],
|
||||
triggers: [],
|
||||
});
|
||||
@@ -0,0 +1,652 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { InferenceClient } from '@huggingface/inference';
|
||||
import type { ChatCompletionInput } from '@huggingface/tasks';
|
||||
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
|
||||
import { huggingFaceAuth } from '../../index';
|
||||
|
||||
export const chatCompletion = createAction({
|
||||
name: 'chat_completion',
|
||||
auth: huggingFaceAuth,
|
||||
displayName: 'Chat Completion',
|
||||
description:
|
||||
'Generate assistant replies using chat-style LLMs - perfect for FAQ bots, support agents, and content generation',
|
||||
props: {
|
||||
useCase: Property.StaticDropdown({
|
||||
displayName: 'Use Case',
|
||||
description: 'What type of chat assistant are you building?',
|
||||
required: true,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{
|
||||
label: 'FAQ & Customer Support',
|
||||
value: 'faq',
|
||||
},
|
||||
{
|
||||
label: 'Content Generation & Writing',
|
||||
value: 'content',
|
||||
},
|
||||
{
|
||||
label: 'General Conversation',
|
||||
value: 'chat',
|
||||
},
|
||||
{
|
||||
label: 'Search All Models',
|
||||
value: 'search',
|
||||
},
|
||||
],
|
||||
},
|
||||
defaultValue: 'faq',
|
||||
}),
|
||||
model: Property.Dropdown({
|
||||
auth: huggingFaceAuth,
|
||||
displayName: 'Chat Model',
|
||||
description: 'Select the best model for your use case',
|
||||
required: true,
|
||||
refreshers: ['useCase'],
|
||||
options: async ({ auth, useCase }) => {
|
||||
// Define model options based on use case
|
||||
const getModelsByUseCase = (type: string) => {
|
||||
switch (type) {
|
||||
case 'faq':
|
||||
return [
|
||||
{
|
||||
label:
|
||||
'Llama-3.2-1B (3.3M downloads) - Fast FAQ responses',
|
||||
value: 'meta-llama/Llama-3.2-1B-Instruct',
|
||||
},
|
||||
{
|
||||
label: 'Qwen2.5-1.5B (3M downloads) - Efficient support',
|
||||
value: 'Qwen/Qwen2.5-1.5B-Instruct',
|
||||
},
|
||||
{
|
||||
label: 'Gemma-3-1B (2.6M downloads) - Google optimized',
|
||||
value: 'google/gemma-3-1b-it',
|
||||
},
|
||||
{
|
||||
label: 'FAQ ChatBot (E-commerce specialist)',
|
||||
value: 'Alkyema/FAQ_ChatBot',
|
||||
},
|
||||
];
|
||||
case 'content':
|
||||
return [
|
||||
{
|
||||
label: 'Llama-3.1-8B (14.2M downloads) - High quality',
|
||||
value: 'meta-llama/Llama-3.1-8B-Instruct',
|
||||
},
|
||||
{
|
||||
label: 'Qwen2.5-7B (9.1M downloads) - Great balance',
|
||||
value: 'Qwen/Qwen2.5-7B-Instruct',
|
||||
},
|
||||
{
|
||||
label: 'Qwen2.5-14B (12.2M downloads) - Best quality',
|
||||
value: 'Qwen/Qwen2.5-14B-Instruct',
|
||||
},
|
||||
{
|
||||
label: 'OpenAI GPT-OSS-20B (3.7M downloads) - Creative',
|
||||
value: 'openai/gpt-oss-20b',
|
||||
},
|
||||
];
|
||||
case 'chat':
|
||||
return [
|
||||
{
|
||||
label: 'Qwen2.5-7B (9.1M downloads) - Best overall',
|
||||
value: 'Qwen/Qwen2.5-7B-Instruct',
|
||||
},
|
||||
{
|
||||
label: 'Llama-3.2-1B (3.3M downloads) - Fast responses',
|
||||
value: 'meta-llama/Llama-3.2-1B-Instruct',
|
||||
},
|
||||
{
|
||||
label: 'Qwen2.5-1.5B (3M downloads) - Efficient',
|
||||
value: 'Qwen/Qwen2.5-1.5B-Instruct',
|
||||
},
|
||||
{
|
||||
label: 'Gemma-3-1B (2.6M downloads) - Reliable',
|
||||
value: 'google/gemma-3-1b-it',
|
||||
},
|
||||
];
|
||||
default:
|
||||
return [
|
||||
{
|
||||
label: 'Qwen2.5-7B (9.1M downloads)',
|
||||
value: 'Qwen/Qwen2.5-7B-Instruct',
|
||||
},
|
||||
];
|
||||
}
|
||||
};
|
||||
|
||||
// Return use case-specific models for non-search types
|
||||
if (useCase !== 'search') {
|
||||
return {
|
||||
disabled: false,
|
||||
options: getModelsByUseCase((useCase as string) || 'faq'),
|
||||
};
|
||||
}
|
||||
|
||||
// Handle search mode - load all conversational models
|
||||
const popularModels = [
|
||||
{
|
||||
label: 'Meta Llama-3.1-8B (14.2M downloads)',
|
||||
value: 'meta-llama/Llama-3.1-8B-Instruct',
|
||||
},
|
||||
{
|
||||
label: 'Qwen2.5-7B (9.1M downloads)',
|
||||
value: 'Qwen/Qwen2.5-7B-Instruct',
|
||||
},
|
||||
{
|
||||
label: 'Llama-3.2-1B (3.3M downloads)',
|
||||
value: 'meta-llama/Llama-3.2-1B-Instruct',
|
||||
},
|
||||
];
|
||||
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: popularModels,
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await httpClient.sendRequest({
|
||||
method: HttpMethod.GET,
|
||||
url: 'https://huggingface.co/api/models',
|
||||
queryParams: {
|
||||
filter: 'conversational',
|
||||
sort: 'downloads',
|
||||
direction: '-1',
|
||||
limit: '100',
|
||||
},
|
||||
});
|
||||
|
||||
const models = response.body as Array<{
|
||||
id: string;
|
||||
downloads: number;
|
||||
pipeline_tag: string;
|
||||
}>;
|
||||
|
||||
const conversationalModels = models
|
||||
.filter(
|
||||
(model) =>
|
||||
model.pipeline_tag === 'conversational' ||
|
||||
model.pipeline_tag === 'text-generation'
|
||||
)
|
||||
.map((model) => ({
|
||||
label: `${model.id} (${
|
||||
model.downloads?.toLocaleString() || 0
|
||||
} downloads)`,
|
||||
value: model.id,
|
||||
}))
|
||||
.slice(0, 50);
|
||||
|
||||
const allOptions = [
|
||||
...popularModels,
|
||||
...conversationalModels.filter(
|
||||
(model) =>
|
||||
!popularModels.some((popular) => popular.value === model.value)
|
||||
),
|
||||
];
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: allOptions,
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: popularModels,
|
||||
};
|
||||
}
|
||||
},
|
||||
defaultValue: 'meta-llama/Llama-3.2-1B-Instruct',
|
||||
}),
|
||||
conversationMode: Property.StaticDropdown({
|
||||
displayName: 'Conversation Mode',
|
||||
description: 'How do you want to build the conversation?',
|
||||
required: true,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{
|
||||
label: 'Single Message (Simple Q&A)',
|
||||
value: 'single',
|
||||
},
|
||||
{
|
||||
label: 'Multi-turn Conversation',
|
||||
value: 'multi',
|
||||
},
|
||||
{
|
||||
label: 'Template-based Response',
|
||||
value: 'template',
|
||||
},
|
||||
],
|
||||
},
|
||||
defaultValue: 'single',
|
||||
}),
|
||||
userMessage: Property.LongText({
|
||||
displayName: 'User Message',
|
||||
description: 'The user message or question to respond to',
|
||||
required: false,
|
||||
}),
|
||||
systemPrompt: Property.LongText({
|
||||
displayName: 'System Prompt (Optional)',
|
||||
description: 'Instructions for how the assistant should behave',
|
||||
required: false,
|
||||
}),
|
||||
conversationHistory: Property.Array({
|
||||
displayName: 'Conversation History',
|
||||
description:
|
||||
'Previous messages in the conversation (for multi-turn chat)',
|
||||
required: false,
|
||||
}),
|
||||
template: Property.StaticDropdown({
|
||||
displayName: 'Response Template',
|
||||
description: 'Pre-built templates for common business scenarios',
|
||||
required: false,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{
|
||||
label: 'Customer Support Agent',
|
||||
value: 'support',
|
||||
},
|
||||
{
|
||||
label: 'FAQ Assistant',
|
||||
value: 'faq',
|
||||
},
|
||||
{
|
||||
label: 'Content Writer',
|
||||
value: 'writer',
|
||||
},
|
||||
{
|
||||
label: 'Email Responder',
|
||||
value: 'email',
|
||||
},
|
||||
{
|
||||
label: 'E-commerce Assistant',
|
||||
value: 'ecommerce',
|
||||
},
|
||||
],
|
||||
},
|
||||
}),
|
||||
responseLength: Property.StaticDropdown({
|
||||
displayName: 'Response Length',
|
||||
description: 'How long should the response be?',
|
||||
required: false,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{ label: 'Brief (50-100 tokens)', value: 'brief' },
|
||||
{ label: 'Normal (100-200 tokens)', value: 'normal' },
|
||||
{ label: 'Detailed (200-400 tokens)', value: 'detailed' },
|
||||
{ label: 'Custom', value: 'custom' },
|
||||
],
|
||||
},
|
||||
defaultValue: 'normal',
|
||||
}),
|
||||
customMaxTokens: Property.Number({
|
||||
displayName: 'Custom Max Tokens',
|
||||
description: 'Maximum number of tokens to generate',
|
||||
required: false,
|
||||
}),
|
||||
temperature: Property.Number({
|
||||
displayName: 'Creativity Level',
|
||||
description:
|
||||
'How creative should responses be? (0.1 = focused, 1.0 = creative)',
|
||||
required: false,
|
||||
defaultValue: 0.7,
|
||||
}),
|
||||
topP: Property.Number({
|
||||
displayName: 'Response Variety',
|
||||
description: 'Controls response diversity (0.1 = focused, 1.0 = varied)',
|
||||
required: false,
|
||||
defaultValue: 0.9,
|
||||
}),
|
||||
stopSequences: Property.Array({
|
||||
displayName: 'Stop Sequences (Optional)',
|
||||
description: 'Text sequences that will stop generation',
|
||||
required: false,
|
||||
}),
|
||||
frequencyPenalty: Property.Number({
|
||||
displayName: 'Repetition Penalty',
|
||||
description: 'Reduce repetitive responses (-2.0 to 2.0)',
|
||||
required: false,
|
||||
defaultValue: 0.0,
|
||||
}),
|
||||
presencePenalty: Property.Number({
|
||||
displayName: 'Topic Diversity',
|
||||
description: 'Encourage diverse topics (-2.0 to 2.0)',
|
||||
required: false,
|
||||
defaultValue: 0.0,
|
||||
}),
|
||||
useCache: Property.Checkbox({
|
||||
displayName: 'Use Cache',
|
||||
description: 'Use cached responses for identical requests',
|
||||
required: false,
|
||||
defaultValue: true,
|
||||
}),
|
||||
waitForModel: Property.Checkbox({
|
||||
displayName: 'Wait for Model',
|
||||
description: 'Wait for model to load if not immediately available',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const {
|
||||
useCase,
|
||||
model,
|
||||
conversationMode,
|
||||
userMessage,
|
||||
systemPrompt,
|
||||
conversationHistory,
|
||||
template,
|
||||
responseLength,
|
||||
customMaxTokens,
|
||||
temperature,
|
||||
topP,
|
||||
stopSequences,
|
||||
frequencyPenalty,
|
||||
presencePenalty,
|
||||
} = context.propsValue;
|
||||
|
||||
const messages: Array<{ role: string; content: string }> = [];
|
||||
|
||||
const systemMessage = getSystemPrompt(
|
||||
template,
|
||||
systemPrompt,
|
||||
useCase as string
|
||||
);
|
||||
if (systemMessage) {
|
||||
messages.push({ role: 'system', content: systemMessage });
|
||||
}
|
||||
|
||||
switch (conversationMode) {
|
||||
case 'single':
|
||||
if (!userMessage?.trim()) {
|
||||
throw new Error(
|
||||
'Please provide a user message for single message mode'
|
||||
);
|
||||
}
|
||||
messages.push({ role: 'user', content: userMessage.trim() });
|
||||
break;
|
||||
|
||||
case 'multi':
|
||||
// Add conversation history
|
||||
if (conversationHistory && Array.isArray(conversationHistory)) {
|
||||
const historyMessages = conversationHistory
|
||||
.filter(
|
||||
(msg: unknown): msg is { role: string; content: string } => {
|
||||
if (!msg || typeof msg !== 'object' || msg === null) {
|
||||
return false;
|
||||
}
|
||||
const msgObj = msg as Record<string, unknown>;
|
||||
return (
|
||||
'role' in msgObj &&
|
||||
'content' in msgObj &&
|
||||
typeof msgObj['role'] === 'string' &&
|
||||
typeof msgObj['content'] === 'string'
|
||||
);
|
||||
}
|
||||
)
|
||||
.map((msg) => ({
|
||||
role: msg['role'] as string,
|
||||
content: msg['content'] as string,
|
||||
}));
|
||||
messages.push(...historyMessages);
|
||||
}
|
||||
|
||||
if (userMessage?.trim()) {
|
||||
messages.push({ role: 'user', content: userMessage.trim() });
|
||||
}
|
||||
break;
|
||||
|
||||
case 'template':
|
||||
if (!userMessage?.trim()) {
|
||||
throw new Error('Please provide a user message for template mode');
|
||||
}
|
||||
messages.push({ role: 'user', content: userMessage.trim() });
|
||||
break;
|
||||
|
||||
default:
|
||||
if (!userMessage?.trim()) {
|
||||
throw new Error('Please provide a user message');
|
||||
}
|
||||
messages.push({ role: 'user', content: userMessage.trim() });
|
||||
}
|
||||
|
||||
if (messages.length === 0) {
|
||||
throw new Error('No messages provided for the conversation');
|
||||
}
|
||||
|
||||
let maxTokens: number;
|
||||
switch (responseLength) {
|
||||
case 'brief':
|
||||
maxTokens = 100;
|
||||
break;
|
||||
case 'normal':
|
||||
maxTokens = 200;
|
||||
break;
|
||||
case 'detailed':
|
||||
maxTokens = 400;
|
||||
break;
|
||||
case 'custom':
|
||||
maxTokens = customMaxTokens || 200;
|
||||
break;
|
||||
default:
|
||||
maxTokens = 200;
|
||||
}
|
||||
|
||||
const hf = new InferenceClient(context.auth.secret_text);
|
||||
|
||||
const args: ChatCompletionInput = {
|
||||
model: model,
|
||||
messages: messages,
|
||||
max_tokens: maxTokens,
|
||||
temperature: temperature || 0.7,
|
||||
top_p: topP || 0.9,
|
||||
stream: false,
|
||||
};
|
||||
|
||||
if (
|
||||
stopSequences &&
|
||||
Array.isArray(stopSequences) &&
|
||||
stopSequences.length > 0
|
||||
) {
|
||||
const validStopSequences = stopSequences.filter(
|
||||
(seq): seq is string => typeof seq === 'string' && seq.trim().length > 0
|
||||
);
|
||||
if (validStopSequences.length > 0) {
|
||||
args.stop = validStopSequences;
|
||||
}
|
||||
}
|
||||
|
||||
if (frequencyPenalty !== undefined && frequencyPenalty !== 0) {
|
||||
args.frequency_penalty = frequencyPenalty;
|
||||
}
|
||||
|
||||
if (presencePenalty !== undefined && presencePenalty !== 0) {
|
||||
args.presence_penalty = presencePenalty;
|
||||
}
|
||||
|
||||
const chatResult = await hf.chatCompletion(args);
|
||||
|
||||
const assistantMessage = chatResult.choices?.[0]?.message?.content || '';
|
||||
const finishReason = chatResult.choices?.[0]?.finish_reason || 'unknown';
|
||||
|
||||
const userMessageLength = userMessage?.length || 0;
|
||||
const assistantMessageLength = assistantMessage.length;
|
||||
const tokenUsage = chatResult.usage;
|
||||
|
||||
return {
|
||||
response: assistantMessage,
|
||||
conversation: {
|
||||
userMessage: userMessage || '',
|
||||
assistantMessage: assistantMessage,
|
||||
fullConversation: [
|
||||
...messages,
|
||||
{ role: 'assistant', content: assistantMessage },
|
||||
],
|
||||
},
|
||||
metadata: {
|
||||
model: model,
|
||||
useCase: useCase,
|
||||
conversationMode: conversationMode,
|
||||
template: template || 'none',
|
||||
finishReason: finishReason,
|
||||
},
|
||||
metrics: {
|
||||
userMessageLength: userMessageLength,
|
||||
responseLength: assistantMessageLength,
|
||||
tokensUsed: tokenUsage?.total_tokens || 0,
|
||||
promptTokens: tokenUsage?.prompt_tokens || 0,
|
||||
completionTokens: tokenUsage?.completion_tokens || 0,
|
||||
estimatedCost: calculateEstimatedCost(
|
||||
model,
|
||||
tokenUsage?.total_tokens || 0
|
||||
),
|
||||
},
|
||||
businessInsights: {
|
||||
useCase: getUseCaseDescription(useCase as string),
|
||||
qualityTips: getQualityTips(assistantMessage, finishReason),
|
||||
nextSteps: getNextSteps(conversationMode, finishReason),
|
||||
},
|
||||
rawResult: chatResult,
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
function getSystemPrompt(
|
||||
template: string | undefined,
|
||||
customPrompt: string | undefined,
|
||||
useCase: string
|
||||
): string {
|
||||
if (customPrompt?.trim()) {
|
||||
return customPrompt.trim();
|
||||
}
|
||||
|
||||
const templates = {
|
||||
support:
|
||||
"You are a helpful customer support agent. Be empathetic, professional, and solution-focused. Always acknowledge the customer's concern and provide clear, actionable steps to resolve their issue.",
|
||||
faq: "You are an FAQ assistant. Provide concise, accurate answers to common questions. If you don't know the answer, politely suggest contacting support or checking documentation.",
|
||||
writer:
|
||||
'You are a professional content writer. Create engaging, well-structured content that is clear, informative, and appropriate for the target audience. Use proper grammar and formatting.',
|
||||
email:
|
||||
"You are an email response assistant. Write professional, courteous emails that address the recipient's needs clearly and concisely. Include appropriate greetings and closings.",
|
||||
ecommerce:
|
||||
'You are an e-commerce assistant. Help customers with product information, orders, shipping, and returns. Be knowledgeable about products and policies while maintaining a friendly, sales-oriented approach.',
|
||||
};
|
||||
|
||||
if (template && template in templates) {
|
||||
return templates[template as keyof typeof templates];
|
||||
}
|
||||
|
||||
const defaultPrompts = {
|
||||
faq: 'You are a helpful FAQ assistant. Provide clear, concise answers to user questions.',
|
||||
content:
|
||||
'You are a professional content creator. Generate high-quality, engaging content based on user requests.',
|
||||
chat: 'You are a helpful and friendly AI assistant. Provide helpful responses while being conversational and engaging.',
|
||||
};
|
||||
|
||||
return (
|
||||
defaultPrompts[useCase as keyof typeof defaultPrompts] ||
|
||||
'You are a helpful AI assistant.'
|
||||
);
|
||||
}
|
||||
|
||||
function getUseCaseDescription(useCase: string): string {
|
||||
const descriptions = {
|
||||
faq: 'Perfect for answering frequently asked questions and providing customer support',
|
||||
content:
|
||||
'Ideal for content creation, writing assistance, and creative projects',
|
||||
chat: 'Great for general conversation and interactive assistance',
|
||||
search: 'Custom model selection for specialized chat requirements',
|
||||
};
|
||||
|
||||
return (
|
||||
descriptions[useCase as keyof typeof descriptions] ||
|
||||
'General purpose chat assistance'
|
||||
);
|
||||
}
|
||||
|
||||
function getQualityTips(response: string, finishReason: string): string[] {
|
||||
const tips: string[] = [];
|
||||
|
||||
if (response.length < 20) {
|
||||
tips.push(
|
||||
'⚠️ Response is very short - consider using Normal or Detailed length'
|
||||
);
|
||||
}
|
||||
|
||||
if (response.length > 1000) {
|
||||
tips.push(
|
||||
'📝 Very long response - consider using Brief or Normal length for better user experience'
|
||||
);
|
||||
}
|
||||
|
||||
if (finishReason === 'length') {
|
||||
tips.push(
|
||||
'✂️ Response was truncated - increase max tokens for complete responses'
|
||||
);
|
||||
}
|
||||
|
||||
if (finishReason === 'stop') {
|
||||
tips.push(
|
||||
'🛑 Response stopped at stop sequence - this is expected behavior'
|
||||
);
|
||||
}
|
||||
|
||||
if (response.includes("I don't know") || response.includes('I cannot')) {
|
||||
tips.push(
|
||||
'🎯 Consider providing more context or using a template with better instructions'
|
||||
);
|
||||
}
|
||||
|
||||
if (tips.length === 0) {
|
||||
tips.push('✅ Good response quality achieved');
|
||||
}
|
||||
|
||||
return tips;
|
||||
}
|
||||
|
||||
function getNextSteps(
|
||||
conversationMode: string,
|
||||
finishReason: string
|
||||
): string[] {
|
||||
const steps: string[] = [];
|
||||
|
||||
if (conversationMode === 'single') {
|
||||
steps.push('💡 Switch to Multi-turn mode for follow-up conversations');
|
||||
}
|
||||
|
||||
if (conversationMode === 'multi') {
|
||||
steps.push('🔄 Add this response to conversation history for context');
|
||||
}
|
||||
|
||||
if (finishReason === 'length') {
|
||||
steps.push('⚙️ Increase max tokens or use Detailed response length');
|
||||
}
|
||||
|
||||
steps.push('📊 Monitor token usage for cost optimization');
|
||||
steps.push('🎯 Fine-tune temperature and penalties for better responses');
|
||||
|
||||
return steps;
|
||||
}
|
||||
|
||||
function calculateEstimatedCost(model: string, totalTokens: number): string {
|
||||
const costPer1M = model.includes('llama-3.1-8b')
|
||||
? 0.6
|
||||
: model.includes('qwen')
|
||||
? 0.3
|
||||
: model.includes('gemma')
|
||||
? 0.25
|
||||
: 0.5;
|
||||
|
||||
const estimatedCost = (totalTokens / 1000000) * costPer1M;
|
||||
|
||||
if (estimatedCost < 0.001) {
|
||||
return '< $0.001';
|
||||
}
|
||||
|
||||
return `~$${estimatedCost.toFixed(4)}`;
|
||||
}
|
||||
@@ -0,0 +1,524 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { InferenceClient } from '@huggingface/inference';
|
||||
import type { TextToImageInput } from '@huggingface/tasks';
|
||||
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
|
||||
import { huggingFaceAuth } from '../../index';
|
||||
|
||||
export const createImage = createAction({
|
||||
name: 'create_image',
|
||||
auth: huggingFaceAuth,
|
||||
displayName: 'Create Image',
|
||||
description:
|
||||
'Generate stunning images from text prompts using state-of-the-art diffusion models - perfect for marketing, product design, and creative content',
|
||||
props: {
|
||||
useCase: Property.StaticDropdown({
|
||||
displayName: 'Use Case',
|
||||
description: 'What type of image generation do you need?',
|
||||
required: true,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{
|
||||
label: 'Fast Generation (Quick Prototypes)',
|
||||
value: 'speed',
|
||||
},
|
||||
{
|
||||
label: 'High Quality (Marketing & Print)',
|
||||
value: 'quality',
|
||||
},
|
||||
{
|
||||
label: 'Business Content (Products & Brands)',
|
||||
value: 'business',
|
||||
},
|
||||
{
|
||||
label: 'Search All Models',
|
||||
value: 'search',
|
||||
},
|
||||
],
|
||||
},
|
||||
defaultValue: 'quality',
|
||||
}),
|
||||
model: Property.Dropdown({
|
||||
displayName: 'Image Generation Model',
|
||||
description: 'Select the best model for your use case',
|
||||
required: true,
|
||||
refreshers: ['useCase'],
|
||||
auth: huggingFaceAuth,
|
||||
options: async ({ useCase }) => {
|
||||
const getModelsByUseCase = (type: string) => {
|
||||
switch (type) {
|
||||
case 'speed':
|
||||
return [
|
||||
{
|
||||
label: 'FLUX.1 Schnell (⚡ Ultra Fast - 1-4 steps)',
|
||||
value: 'black-forest-labs/FLUX.1-schnell',
|
||||
description: '634K downloads | Best for rapid prototyping',
|
||||
},
|
||||
{
|
||||
label: 'SD Turbo (⚡ Real-time - 1 step)',
|
||||
value: 'stabilityai/sd-turbo',
|
||||
description: '1.2M downloads | Fastest generation',
|
||||
},
|
||||
{
|
||||
label: 'SDXL Turbo (⚡ Fast - 1-4 steps)',
|
||||
value: 'stabilityai/sdxl-turbo',
|
||||
description: '223K downloads | Fast with good quality',
|
||||
},
|
||||
];
|
||||
case 'quality':
|
||||
return [
|
||||
{
|
||||
label: 'FLUX.1 Dev (Premium Quality)',
|
||||
value: 'black-forest-labs/FLUX.1-dev',
|
||||
description: '1.4M downloads | State-of-the-art results',
|
||||
},
|
||||
{
|
||||
label: 'Stable Diffusion XL (🎯 Reliable Quality)',
|
||||
value: 'stabilityai/stable-diffusion-xl-base-1.0',
|
||||
description: '2.2M downloads | Industry standard',
|
||||
},
|
||||
{
|
||||
label: 'SD 3 Medium (🔬 Advanced Features)',
|
||||
value: 'stabilityai/stable-diffusion-3-medium',
|
||||
description: '13K downloads | Latest technology',
|
||||
},
|
||||
];
|
||||
case 'business':
|
||||
return [
|
||||
{
|
||||
label: 'Stable Diffusion XL (💼 Professional)',
|
||||
value: 'stabilityai/stable-diffusion-xl-base-1.0',
|
||||
description: '2.2M downloads | Business-ready quality',
|
||||
},
|
||||
{
|
||||
label: 'DreamShaper v7 (🎨 Versatile Style)',
|
||||
value: 'Lykon/dreamshaper-7',
|
||||
description: '833K downloads | Great for varied content',
|
||||
},
|
||||
{
|
||||
label: 'OpenJourney (🌟 Midjourney Style)',
|
||||
value: 'prompthero/openjourney',
|
||||
description: '8K downloads | Artistic business content',
|
||||
},
|
||||
];
|
||||
default:
|
||||
return [];
|
||||
}
|
||||
};
|
||||
|
||||
if (useCase === 'search') {
|
||||
try {
|
||||
const response = await httpClient.sendRequest({
|
||||
method: HttpMethod.GET,
|
||||
url: 'https://huggingface.co/api/models?pipeline_tag=text-to-image&sort=downloads&limit=50',
|
||||
});
|
||||
|
||||
const models = response.body as Array<{
|
||||
id: string;
|
||||
downloads: number;
|
||||
likes: number;
|
||||
}>;
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
placeholder: 'Select from 50+ popular models...',
|
||||
options: models
|
||||
.filter((model) => model.downloads > 50000)
|
||||
.slice(0, 20)
|
||||
.map((model) => ({
|
||||
label: `${model.id} (${(model.downloads / 1000).toFixed(
|
||||
0
|
||||
)}K downloads)`,
|
||||
value: model.id,
|
||||
})),
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: getModelsByUseCase('quality'),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: getModelsByUseCase(useCase as string),
|
||||
};
|
||||
},
|
||||
}),
|
||||
prompt: Property.LongText({
|
||||
displayName: 'Text Prompt',
|
||||
description:
|
||||
'Describe the image you want to generate. Be specific about style, colors, composition, and details.',
|
||||
required: true,
|
||||
defaultValue: '',
|
||||
}),
|
||||
aspectRatio: Property.StaticDropdown({
|
||||
displayName: 'Aspect Ratio',
|
||||
description: 'Choose the dimensions for your image',
|
||||
required: false,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{ label: '📱 Portrait (512×768) - Social Media', value: 'portrait' },
|
||||
{ label: '🖥️ Landscape (768×512) - Banners', value: 'landscape' },
|
||||
{ label: '⬜ Square (512×512) - Profile Pictures', value: 'square' },
|
||||
{ label: '📺 Wide (1024×576) - Headers', value: 'wide' },
|
||||
{ label: '⚙️ Custom Dimensions', value: 'custom' },
|
||||
],
|
||||
},
|
||||
defaultValue: 'square',
|
||||
}),
|
||||
customWidth: Property.Number({
|
||||
displayName: 'Custom Width',
|
||||
description: 'Width in pixels (64-1024)',
|
||||
required: false,
|
||||
}),
|
||||
customHeight: Property.Number({
|
||||
displayName: 'Custom Height',
|
||||
description: 'Height in pixels (64-1024)',
|
||||
required: false,
|
||||
}),
|
||||
negativePrompt: Property.LongText({
|
||||
displayName: 'Negative Prompt',
|
||||
description:
|
||||
"Describe what you DON'T want in the image (blur, low quality, distorted, etc.)",
|
||||
required: false,
|
||||
}),
|
||||
qualitySettings: Property.StaticDropdown({
|
||||
displayName: 'Quality vs Speed',
|
||||
description: 'Balance between image quality and generation time',
|
||||
required: false,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{ label: '⚡ Fast (10-20 steps)', value: 'fast' },
|
||||
{ label: '⚖️ Balanced (20-30 steps)', value: 'balanced' },
|
||||
{ label: '🎯 High Quality (30-50 steps)', value: 'quality' },
|
||||
{ label: '🏆 Maximum Quality (50+ steps)', value: 'maximum' },
|
||||
{ label: '⚙️ Custom Steps', value: 'custom' },
|
||||
],
|
||||
},
|
||||
defaultValue: 'balanced',
|
||||
}),
|
||||
customSteps: Property.Number({
|
||||
displayName: 'Custom Inference Steps',
|
||||
description: 'Number of denoising steps (1-100)',
|
||||
required: false,
|
||||
}),
|
||||
guidanceScale: Property.Number({
|
||||
displayName: 'Guidance Scale',
|
||||
description:
|
||||
'How closely to follow the prompt (1-20). Higher values = more prompt adherence but may reduce creativity.',
|
||||
required: false,
|
||||
defaultValue: 7.5,
|
||||
}),
|
||||
seed: Property.Number({
|
||||
displayName: 'Seed (Optional)',
|
||||
description:
|
||||
'Set a seed for reproducible results. Leave empty for random generation.',
|
||||
required: false,
|
||||
}),
|
||||
scheduler: Property.StaticDropdown({
|
||||
displayName: 'Scheduler',
|
||||
description: 'Advanced: Choose the noise scheduler algorithm',
|
||||
required: false,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{ label: 'DPM++ 2M Karras (Recommended)', value: 'DPM++2MKarras' },
|
||||
{ label: 'Euler A (Fast)', value: 'EulerA' },
|
||||
{ label: 'DDIM (Stable)', value: 'DDIM' },
|
||||
{ label: 'LMS (Classic)', value: 'LMS' },
|
||||
],
|
||||
},
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const {
|
||||
useCase,
|
||||
model,
|
||||
prompt,
|
||||
aspectRatio,
|
||||
customWidth,
|
||||
customHeight,
|
||||
negativePrompt,
|
||||
qualitySettings,
|
||||
customSteps,
|
||||
guidanceScale,
|
||||
seed,
|
||||
scheduler,
|
||||
} = context.propsValue;
|
||||
|
||||
if (!prompt?.trim()) {
|
||||
throw new Error('Please provide a text prompt for image generation');
|
||||
}
|
||||
|
||||
let width: number, height: number;
|
||||
switch (aspectRatio) {
|
||||
case 'portrait':
|
||||
width = 512;
|
||||
height = 768;
|
||||
break;
|
||||
case 'landscape':
|
||||
width = 768;
|
||||
height = 512;
|
||||
break;
|
||||
case 'square':
|
||||
width = 512;
|
||||
height = 512;
|
||||
break;
|
||||
case 'wide':
|
||||
width = 1024;
|
||||
height = 576;
|
||||
break;
|
||||
case 'custom':
|
||||
width = customWidth || 512;
|
||||
height = customHeight || 512;
|
||||
break;
|
||||
default:
|
||||
width = 512;
|
||||
height = 512;
|
||||
}
|
||||
|
||||
let numInferenceSteps: number;
|
||||
switch (qualitySettings) {
|
||||
case 'fast':
|
||||
numInferenceSteps = 15;
|
||||
break;
|
||||
case 'balanced':
|
||||
numInferenceSteps = 25;
|
||||
break;
|
||||
case 'quality':
|
||||
numInferenceSteps = 40;
|
||||
break;
|
||||
case 'maximum':
|
||||
numInferenceSteps = 60;
|
||||
break;
|
||||
case 'custom':
|
||||
numInferenceSteps = customSteps || 25;
|
||||
break;
|
||||
default:
|
||||
numInferenceSteps = 25;
|
||||
}
|
||||
|
||||
const hf = new InferenceClient(context.auth.secret_text);
|
||||
|
||||
// Build parameters object
|
||||
const parameters: Record<string, unknown> = {
|
||||
guidance_scale: guidanceScale || 7.5,
|
||||
num_inference_steps: numInferenceSteps,
|
||||
width: width,
|
||||
height: height,
|
||||
};
|
||||
|
||||
if (negativePrompt?.trim()) {
|
||||
parameters['negative_prompt'] = negativePrompt.trim();
|
||||
}
|
||||
|
||||
if (seed !== undefined && seed !== null) {
|
||||
parameters['seed'] = Math.floor(seed);
|
||||
}
|
||||
|
||||
if (scheduler) {
|
||||
parameters['scheduler'] = scheduler;
|
||||
}
|
||||
|
||||
const args: TextToImageInput = {
|
||||
model: model,
|
||||
inputs: prompt.trim(),
|
||||
parameters: parameters,
|
||||
};
|
||||
|
||||
const startTime = Date.now();
|
||||
|
||||
try {
|
||||
const imageBlob = await hf.textToImage(args, {
|
||||
retry_on_error: true,
|
||||
});
|
||||
|
||||
if (!(imageBlob instanceof Blob)) {
|
||||
throw new Error('Expected Blob response from text-to-image API');
|
||||
}
|
||||
|
||||
const imageBuffer = Buffer.from(await imageBlob.arrayBuffer());
|
||||
const base64Image = imageBuffer.toString('base64');
|
||||
|
||||
const generationTime = (Date.now() - startTime) / 1000;
|
||||
const imageSizeKB = Math.round(imageBuffer.length / 1024);
|
||||
|
||||
return {
|
||||
image: base64Image,
|
||||
imageData: {
|
||||
format: 'PNG',
|
||||
width: width,
|
||||
height: height,
|
||||
sizeKB: imageSizeKB,
|
||||
base64: `data:image/png;base64,${base64Image}`,
|
||||
},
|
||||
generation: {
|
||||
prompt: prompt.trim(),
|
||||
negativePrompt: negativePrompt?.trim() || '',
|
||||
model: model,
|
||||
useCase: useCase,
|
||||
},
|
||||
parameters: {
|
||||
width: width,
|
||||
height: height,
|
||||
aspectRatio: aspectRatio,
|
||||
guidanceScale: guidanceScale || 7.5,
|
||||
inferenceSteps: numInferenceSteps,
|
||||
scheduler: scheduler || 'auto',
|
||||
seed: seed || 'random',
|
||||
},
|
||||
metrics: {
|
||||
generationTimeSeconds: generationTime,
|
||||
imageSizeKB: imageSizeKB,
|
||||
resolution: `${width}×${height}`,
|
||||
qualitySetting: qualitySettings || 'balanced',
|
||||
estimatedCost: calculateEstimatedCost(
|
||||
model,
|
||||
width,
|
||||
height,
|
||||
numInferenceSteps
|
||||
),
|
||||
},
|
||||
businessInsights: {
|
||||
useCase: getUseCaseDescription(useCase as string),
|
||||
qualityTips: getQualityTips(
|
||||
prompt,
|
||||
negativePrompt,
|
||||
numInferenceSteps
|
||||
),
|
||||
nextSteps: getNextSteps(useCase as string, imageSizeKB),
|
||||
},
|
||||
rawResult: {
|
||||
blob: imageBlob,
|
||||
generationTime: generationTime,
|
||||
},
|
||||
};
|
||||
} catch (error: unknown) {
|
||||
const errorMessage =
|
||||
error instanceof Error ? error.message : String(error);
|
||||
throw new Error(`Image generation failed: ${errorMessage}`);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
function getUseCaseDescription(useCase: string): string {
|
||||
const descriptions = {
|
||||
speed: 'Optimized for rapid prototyping and quick content creation',
|
||||
quality:
|
||||
'High-resolution generation perfect for marketing and professional use',
|
||||
business:
|
||||
'Business-focused models ideal for product imagery and brand content',
|
||||
search: 'Custom model selection for specialized requirements',
|
||||
};
|
||||
|
||||
return (
|
||||
descriptions[useCase as keyof typeof descriptions] ||
|
||||
'AI-powered image generation'
|
||||
);
|
||||
}
|
||||
|
||||
function getQualityTips(
|
||||
prompt: string,
|
||||
negativePrompt: string | undefined,
|
||||
steps: number
|
||||
): string[] {
|
||||
const tips: string[] = [];
|
||||
|
||||
if (prompt.length < 20) {
|
||||
tips.push(
|
||||
'💡 Add more descriptive details to your prompt for better results'
|
||||
);
|
||||
}
|
||||
|
||||
if (!negativePrompt) {
|
||||
tips.push(
|
||||
'🚫 Consider adding negative prompts to avoid unwanted elements (blur, low quality, etc.)'
|
||||
);
|
||||
}
|
||||
|
||||
if (steps < 20) {
|
||||
tips.push(
|
||||
'⚡ Using fast generation - increase steps for higher quality if needed'
|
||||
);
|
||||
}
|
||||
|
||||
if (steps > 50) {
|
||||
tips.push(
|
||||
'⏱️ High step count may take longer - consider balanced setting for faster results'
|
||||
);
|
||||
}
|
||||
|
||||
if (
|
||||
!prompt.toLowerCase().includes('high quality') &&
|
||||
!prompt.toLowerCase().includes('detailed')
|
||||
) {
|
||||
tips.push(
|
||||
'🎯 Add quality keywords like "high resolution", "detailed", or "professional" to your prompt'
|
||||
);
|
||||
}
|
||||
|
||||
if (tips.length === 0) {
|
||||
tips.push('✅ Good generation parameters - expect quality results');
|
||||
}
|
||||
|
||||
return tips;
|
||||
}
|
||||
|
||||
|
||||
function getNextSteps(useCase: string, imageSizeKB: number): string[] {
|
||||
const steps: string[] = [];
|
||||
|
||||
if (useCase === 'business') {
|
||||
steps.push('🎨 Try variations with different styles or angles');
|
||||
steps.push(
|
||||
'📐 Consider generating multiple aspect ratios for different platforms'
|
||||
);
|
||||
}
|
||||
|
||||
if (useCase === 'speed') {
|
||||
steps.push('🔄 Generate variations quickly with different seeds');
|
||||
steps.push(
|
||||
'⬆️ Upscale to higher quality when you find the perfect concept'
|
||||
);
|
||||
}
|
||||
|
||||
if (imageSizeKB > 1000) {
|
||||
steps.push('📉 Consider optimizing image size for web use');
|
||||
}
|
||||
|
||||
steps.push('💾 Save successful prompts for consistent brand imagery');
|
||||
steps.push('🔄 Use the same seed to create variations of this concept');
|
||||
|
||||
return steps;
|
||||
}
|
||||
|
||||
function calculateEstimatedCost(
|
||||
model: string,
|
||||
width: number,
|
||||
height: number,
|
||||
steps: number
|
||||
): string {
|
||||
const basePixelCost = 0.000001;
|
||||
const stepMultiplier = steps / 25;
|
||||
const modelMultiplier = model.includes('FLUX.1-dev')
|
||||
? 2.5
|
||||
: model.includes('stable-diffusion-3')
|
||||
? 2.0
|
||||
: model.includes('turbo')
|
||||
? 0.5
|
||||
: 1.0;
|
||||
|
||||
const pixels = width * height;
|
||||
const estimatedCost =
|
||||
pixels * basePixelCost * stepMultiplier * modelMultiplier;
|
||||
|
||||
if (estimatedCost < 0.001) {
|
||||
return '< $0.001';
|
||||
}
|
||||
|
||||
return `~$${estimatedCost.toFixed(4)}`;
|
||||
}
|
||||
@@ -0,0 +1,189 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import {
|
||||
type DocumentQuestionAnsweringArgs,
|
||||
InferenceClient,
|
||||
} from '@huggingface/inference';
|
||||
import { huggingFaceAuth } from '../../index';
|
||||
|
||||
export const documentQuestionAnswering = createAction({
|
||||
name: 'document_question_answering',
|
||||
auth: huggingFaceAuth,
|
||||
displayName: 'Document Question Answering',
|
||||
description:
|
||||
'Answer questions from document images using Hugging Face models',
|
||||
props: {
|
||||
model: Property.StaticDropdown({
|
||||
displayName: 'Model',
|
||||
description: 'Hugging Face document question answering model',
|
||||
required: true,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{
|
||||
label: 'impira/layoutlm-document-qa (Recommended)',
|
||||
value: 'impira/layoutlm-document-qa',
|
||||
},
|
||||
{
|
||||
label: 'microsoft/layoutlmv3-base',
|
||||
value: 'microsoft/layoutlmv3-base',
|
||||
},
|
||||
{
|
||||
label: 'nielsr/layoutlmv2-finetuned-docvqa',
|
||||
value: 'nielsr/layoutlmv2-finetuned-docvqa',
|
||||
},
|
||||
],
|
||||
},
|
||||
defaultValue: 'impira/layoutlm-document-qa',
|
||||
}),
|
||||
image: Property.File({
|
||||
displayName: 'Document Image',
|
||||
description: 'Image of the document to analyze (invoice, contract, etc.)',
|
||||
required: true,
|
||||
}),
|
||||
question: Property.ShortText({
|
||||
displayName: 'Question',
|
||||
description:
|
||||
"Question to ask about the document (e.g., 'What is the invoice total?')",
|
||||
required: true,
|
||||
}),
|
||||
top_k: Property.Number({
|
||||
displayName: 'Number of Answers',
|
||||
description: 'Number of top answers to return',
|
||||
required: false,
|
||||
defaultValue: 1,
|
||||
}),
|
||||
max_answer_len: Property.Number({
|
||||
displayName: 'Max Answer Length',
|
||||
description: 'Maximum length of predicted answers',
|
||||
required: false,
|
||||
}),
|
||||
handle_impossible_answer: Property.Checkbox({
|
||||
displayName: 'Handle Impossible Answers',
|
||||
description:
|
||||
"Whether to accept 'impossible' as an answer when no answer is found",
|
||||
required: false,
|
||||
defaultValue: true,
|
||||
}),
|
||||
lang: Property.StaticDropdown({
|
||||
displayName: 'OCR Language',
|
||||
description: 'Language to use for OCR text extraction',
|
||||
required: false,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{ label: 'English', value: 'en' },
|
||||
{ label: 'Spanish', value: 'es' },
|
||||
{ label: 'French', value: 'fr' },
|
||||
{ label: 'German', value: 'de' },
|
||||
{ label: 'Italian', value: 'it' },
|
||||
{ label: 'Portuguese', value: 'pt' },
|
||||
],
|
||||
},
|
||||
defaultValue: 'en',
|
||||
}),
|
||||
use_cache: Property.Checkbox({
|
||||
displayName: 'Use Cache',
|
||||
description: 'Use cached results if available',
|
||||
required: false,
|
||||
defaultValue: true,
|
||||
}),
|
||||
wait_for_model: Property.Checkbox({
|
||||
displayName: 'Wait for Model',
|
||||
description: 'Wait for model to load if not ready',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const {
|
||||
model,
|
||||
image,
|
||||
question,
|
||||
top_k,
|
||||
max_answer_len,
|
||||
handle_impossible_answer,
|
||||
lang,
|
||||
use_cache,
|
||||
wait_for_model,
|
||||
} = context.propsValue;
|
||||
|
||||
const getMimeType = (filename: string): string => {
|
||||
const extension = filename.split('.').pop()?.toLowerCase() ?? '';
|
||||
switch (extension) {
|
||||
case 'jpg':
|
||||
case 'jpeg':
|
||||
return 'image/jpeg';
|
||||
case 'png':
|
||||
return 'image/png';
|
||||
case 'gif':
|
||||
return 'image/gif';
|
||||
case 'webp':
|
||||
return 'image/webp';
|
||||
case 'bmp':
|
||||
return 'image/bmp';
|
||||
case 'tiff':
|
||||
case 'tif':
|
||||
return 'image/tiff';
|
||||
case 'pdf':
|
||||
return 'application/pdf';
|
||||
default:
|
||||
return 'application/octet-stream';
|
||||
}
|
||||
};
|
||||
|
||||
const hf = new InferenceClient(context.auth.secret_text);
|
||||
const mimeType = getMimeType(image.filename);
|
||||
const imageBlob = new Blob([new Uint8Array(image.data)], {
|
||||
type: mimeType,
|
||||
});
|
||||
|
||||
const args: DocumentQuestionAnsweringArgs = {
|
||||
model: model,
|
||||
inputs: {
|
||||
image: imageBlob,
|
||||
question: question,
|
||||
},
|
||||
options: {
|
||||
use_cache: use_cache ?? true,
|
||||
wait_for_model: wait_for_model ?? false,
|
||||
},
|
||||
};
|
||||
|
||||
const parameters: {
|
||||
top_k?: number;
|
||||
max_answer_len?: number;
|
||||
handle_impossible_answer?: boolean;
|
||||
lang?: string;
|
||||
} = {};
|
||||
|
||||
if (top_k !== undefined) {
|
||||
parameters.top_k = top_k;
|
||||
}
|
||||
|
||||
if (max_answer_len !== undefined) {
|
||||
parameters.max_answer_len = max_answer_len;
|
||||
}
|
||||
|
||||
if (handle_impossible_answer !== undefined) {
|
||||
parameters.handle_impossible_answer = handle_impossible_answer;
|
||||
}
|
||||
|
||||
if (lang) {
|
||||
parameters.lang = lang;
|
||||
}
|
||||
|
||||
if (Object.keys(parameters).length > 0) {
|
||||
args.parameters = parameters;
|
||||
}
|
||||
|
||||
const result = await hf.documentQuestionAnswering(args);
|
||||
|
||||
return {
|
||||
answer: result.answer,
|
||||
score: result.score,
|
||||
start: result.start,
|
||||
end: result.end,
|
||||
raw_result: result,
|
||||
};
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,770 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { InferenceClient } from '@huggingface/inference';
|
||||
import type {
|
||||
ImageClassificationInput,
|
||||
ImageClassificationOutput,
|
||||
ZeroShotImageClassificationInput,
|
||||
ZeroShotImageClassificationOutput,
|
||||
} from '@huggingface/tasks';
|
||||
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
|
||||
import { huggingFaceAuth } from '../../index';
|
||||
|
||||
export const imageClassification = createAction({
|
||||
name: 'image_classification',
|
||||
auth: huggingFaceAuth,
|
||||
displayName: 'Image Classification',
|
||||
description:
|
||||
'Classify images with pre-trained models or custom categories - perfect for content moderation, automated tagging, and smart asset management',
|
||||
props: {
|
||||
classificationMode: Property.StaticDropdown({
|
||||
displayName: 'Classification Mode',
|
||||
description: 'How do you want to classify your images?',
|
||||
required: true,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{
|
||||
label: '🏷️ Pre-trained Categories (Standard)',
|
||||
value: 'standard',
|
||||
},
|
||||
{
|
||||
label: '🎯 Custom Categories (Zero-shot)',
|
||||
value: 'zero_shot',
|
||||
},
|
||||
],
|
||||
},
|
||||
defaultValue: 'standard',
|
||||
}),
|
||||
useCase: Property.StaticDropdown({
|
||||
displayName: 'Use Case',
|
||||
description: 'What type of image classification do you need?',
|
||||
required: true,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{
|
||||
label: '🛡️ Content Moderation & Safety',
|
||||
value: 'moderation',
|
||||
},
|
||||
{
|
||||
label: '🏷️ General Image Tagging',
|
||||
value: 'general',
|
||||
},
|
||||
{
|
||||
label: '👤 People & Demographics',
|
||||
value: 'people',
|
||||
},
|
||||
{
|
||||
label: '🎨 Creative & Media',
|
||||
value: 'creative',
|
||||
},
|
||||
{
|
||||
label: '💼 Business & Commerce',
|
||||
value: 'business',
|
||||
},
|
||||
{
|
||||
label: '🔍 Search All Models',
|
||||
value: 'search',
|
||||
},
|
||||
],
|
||||
},
|
||||
defaultValue: 'general',
|
||||
}),
|
||||
model: Property.Dropdown({
|
||||
auth: huggingFaceAuth,
|
||||
displayName: 'Classification Model',
|
||||
description: 'Select the best model for your use case',
|
||||
required: true,
|
||||
refreshers: ['classificationMode', 'useCase'],
|
||||
options: async ({ classificationMode, useCase }) => {
|
||||
const getModelsByUseCase = (mode: string, type: string) => {
|
||||
if (mode === 'zero_shot') {
|
||||
return [
|
||||
{
|
||||
label: 'CLIP ViT Base (⚡ Fast & Versatile)',
|
||||
value: 'openai/clip-vit-base-patch32',
|
||||
description: '18.5M downloads | General purpose zero-shot',
|
||||
},
|
||||
{
|
||||
label: 'CLIP ViT Large (🏆 High Accuracy)',
|
||||
value: 'openai/clip-vit-large-patch14',
|
||||
description:
|
||||
'9.3M downloads | Best accuracy for complex scenes',
|
||||
},
|
||||
{
|
||||
label: 'CLIP ViT Large 336 (🔬 Ultra Precise)',
|
||||
value: 'openai/clip-vit-large-patch14-336',
|
||||
description: '7.9M downloads | Highest resolution processing',
|
||||
},
|
||||
{
|
||||
label: 'Fashion CLIP (👗 Fashion Specialized)',
|
||||
value: 'patrickjohncyh/fashion-clip',
|
||||
description: '2.9M downloads | Perfect for fashion & retail',
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
switch (type) {
|
||||
case 'moderation':
|
||||
return [
|
||||
{
|
||||
label: 'NSFW Detection (🛡️ Content Safety)',
|
||||
value: 'Falconsai/nsfw_image_detection',
|
||||
description: '115M downloads | Industry-leading safety',
|
||||
},
|
||||
{
|
||||
label: 'AdamCodd NSFW Detector (🔍 Alternative Safety)',
|
||||
value: 'AdamCodd/vit-base-nsfw-detector',
|
||||
description: '745K downloads | Reliable content filtering',
|
||||
},
|
||||
{
|
||||
label: 'ViT Base General (📊 Multi-purpose Safety)',
|
||||
value: 'google/vit-base-patch16-224',
|
||||
description:
|
||||
'3.5M downloads | General classification + safety',
|
||||
},
|
||||
];
|
||||
case 'people':
|
||||
return [
|
||||
{
|
||||
label: 'Face Expression Detection (😊 Emotion Analysis)',
|
||||
value: 'trpakov/vit-face-expression',
|
||||
description: '5.4M downloads | 7 emotion categories',
|
||||
},
|
||||
{
|
||||
label: 'Age Classification (👶 Age Detection)',
|
||||
value: 'nateraw/vit-age-classifier',
|
||||
description: '1.2M downloads | Age group classification',
|
||||
},
|
||||
{
|
||||
label: 'FairFace Age Detection (📊 Demographic Analysis)',
|
||||
value: 'dima806/fairface_age_image_detection',
|
||||
description: '67M downloads | Professional demographics',
|
||||
},
|
||||
{
|
||||
label: 'Gender Classification (👥 Gender Analysis)',
|
||||
value: 'rizvandwiki/gender-classification',
|
||||
description: '1.1M downloads | Binary gender classification',
|
||||
},
|
||||
];
|
||||
case 'general':
|
||||
return [
|
||||
{
|
||||
label: 'ViT Base Patch16 (🏆 Industry Standard)',
|
||||
value: 'google/vit-base-patch16-224',
|
||||
description: '3.5M downloads | 1000+ ImageNet categories',
|
||||
},
|
||||
{
|
||||
label: 'ResNet-50 (⚡ Fast & Reliable)',
|
||||
value: 'timm/resnet50.a1_in1k',
|
||||
description: '16.8M downloads | Classic CNN architecture',
|
||||
},
|
||||
{
|
||||
label: 'ResNet-18 (🚀 Ultra Fast)',
|
||||
value: 'timm/resnet18.a1_in1k',
|
||||
description: '4.8M downloads | Lightweight classification',
|
||||
},
|
||||
{
|
||||
label: 'MobileNet V3 (📱 Mobile Optimized)',
|
||||
value: 'timm/mobilenetv3_small_100.lamb_in1k',
|
||||
description: '53M downloads | Edge deployment ready',
|
||||
},
|
||||
];
|
||||
case 'creative':
|
||||
return [
|
||||
{
|
||||
label: 'ViT Base Patch16 (🎨 Creative Content)',
|
||||
value: 'google/vit-base-patch16-224',
|
||||
description:
|
||||
'3.5M downloads | Art, design, creative analysis',
|
||||
},
|
||||
{
|
||||
label: 'MobileViT Small (📸 Media Processing)',
|
||||
value: 'apple/mobilevit-small',
|
||||
description: '1.3M downloads | Optimized for media workflows',
|
||||
},
|
||||
{
|
||||
label: 'ResNet-50 (🖼️ Image Analysis)',
|
||||
value: 'timm/resnet50.a1_in1k',
|
||||
description:
|
||||
'16.8M downloads | Versatile image understanding',
|
||||
},
|
||||
];
|
||||
case 'business':
|
||||
return [
|
||||
{
|
||||
label: 'ViT Base Patch16 (💼 Business Ready)',
|
||||
value: 'google/vit-base-patch16-224',
|
||||
description: '3.5M downloads | Professional grade accuracy',
|
||||
},
|
||||
{
|
||||
label: 'Fashion CLIP (🛍️ E-commerce)',
|
||||
value: 'patrickjohncyh/fashion-clip',
|
||||
description: '2.9M downloads | Product categorization',
|
||||
},
|
||||
{
|
||||
label: 'ResNet-50 (📊 Business Intelligence)',
|
||||
value: 'timm/resnet50.a1_in1k',
|
||||
description: '16.8M downloads | Reliable business workflows',
|
||||
},
|
||||
];
|
||||
default:
|
||||
return [];
|
||||
}
|
||||
};
|
||||
|
||||
if (useCase === 'search') {
|
||||
try {
|
||||
const pipelineTag =
|
||||
classificationMode === 'zero_shot'
|
||||
? 'zero-shot-image-classification'
|
||||
: 'image-classification';
|
||||
|
||||
const response = await httpClient.sendRequest({
|
||||
method: HttpMethod.GET,
|
||||
url: `https://huggingface.co/api/models?pipeline_tag=${pipelineTag}&sort=downloads&limit=50`,
|
||||
});
|
||||
|
||||
const models = response.body as Array<{
|
||||
id: string;
|
||||
downloads: number;
|
||||
likes: number;
|
||||
}>;
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
placeholder: 'Select from popular models...',
|
||||
options: models
|
||||
.filter((model) => model.downloads > 10000)
|
||||
.slice(0, 20)
|
||||
.map((model) => ({
|
||||
label: `${model.id} (${(model.downloads / 1000).toFixed(
|
||||
0
|
||||
)}K downloads)`,
|
||||
value: model.id,
|
||||
})),
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: getModelsByUseCase(
|
||||
classificationMode as string,
|
||||
'general'
|
||||
),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: getModelsByUseCase(
|
||||
classificationMode as string,
|
||||
useCase as string
|
||||
),
|
||||
};
|
||||
},
|
||||
}),
|
||||
imageSource: Property.StaticDropdown({
|
||||
displayName: 'Image Source',
|
||||
description: 'How do you want to provide the image?',
|
||||
required: true,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{ label: '📎 Upload File', value: 'upload' },
|
||||
{ label: '🔗 Image URL', value: 'url' },
|
||||
],
|
||||
},
|
||||
defaultValue: 'upload',
|
||||
}),
|
||||
imageFile: Property.File({
|
||||
displayName: 'Image File',
|
||||
description: 'Upload an image file for classification (JPG, PNG, WebP)',
|
||||
required: true,
|
||||
}),
|
||||
imageUrl: Property.ShortText({
|
||||
displayName: 'Image URL',
|
||||
description: 'URL of the image to classify',
|
||||
required: true,
|
||||
}),
|
||||
customCategories: Property.Array({
|
||||
displayName: 'Custom Categories',
|
||||
description:
|
||||
'Enter the categories you want to classify the image into (e.g., "dog", "cat", "bird")',
|
||||
required: true,
|
||||
}),
|
||||
hypothesisTemplate: Property.ShortText({
|
||||
displayName: 'Classification Template',
|
||||
description:
|
||||
'Template for classification (advanced). Default: "This image shows {}"',
|
||||
required: false,
|
||||
defaultValue: 'This image shows {}',
|
||||
}),
|
||||
topK: Property.Number({
|
||||
displayName: 'Number of Results',
|
||||
description: 'Maximum number of classification results to return (1-20)',
|
||||
required: false,
|
||||
defaultValue: 5,
|
||||
}),
|
||||
confidenceThreshold: Property.Number({
|
||||
displayName: 'Confidence Threshold',
|
||||
description: 'Minimum confidence score for results (0.0-1.0)',
|
||||
required: false,
|
||||
defaultValue: 0.1,
|
||||
}),
|
||||
outputFormat: Property.StaticDropdown({
|
||||
displayName: 'Output Format',
|
||||
description: 'How to structure the classification results',
|
||||
required: false,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{ label: '📋 Business Summary', value: 'business' },
|
||||
{ label: '🔧 Technical Details', value: 'technical' },
|
||||
{ label: '📊 Statistical Analysis', value: 'analytics' },
|
||||
{ label: '🌐 Comprehensive Report', value: 'comprehensive' },
|
||||
],
|
||||
},
|
||||
defaultValue: 'business',
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const {
|
||||
classificationMode,
|
||||
useCase,
|
||||
model,
|
||||
imageSource,
|
||||
imageFile,
|
||||
imageUrl,
|
||||
customCategories,
|
||||
hypothesisTemplate,
|
||||
topK,
|
||||
confidenceThreshold,
|
||||
outputFormat,
|
||||
} = context.propsValue;
|
||||
|
||||
const actualHypothesisTemplate = Array.isArray(hypothesisTemplate)
|
||||
? hypothesisTemplate[0] || 'This image shows {}'
|
||||
: hypothesisTemplate || 'This image shows {}';
|
||||
|
||||
const actualImageUrl = Array.isArray(imageUrl)
|
||||
? imageUrl[0] || ''
|
||||
: imageUrl || '';
|
||||
|
||||
if (
|
||||
classificationMode === 'zero_shot' &&
|
||||
(!customCategories || customCategories.length === 0)
|
||||
) {
|
||||
throw new Error(
|
||||
'Please provide custom categories for zero-shot classification'
|
||||
);
|
||||
}
|
||||
|
||||
if (imageSource === 'upload' && !imageFile?.data) {
|
||||
throw new Error('Please upload an image file');
|
||||
}
|
||||
|
||||
if (imageSource === 'url' && !actualImageUrl.trim()) {
|
||||
throw new Error('Please provide an image URL');
|
||||
}
|
||||
|
||||
// Get image blob
|
||||
let imageBlob: Blob;
|
||||
let imageName: string;
|
||||
|
||||
if (imageSource === 'upload') {
|
||||
const getMimeType = (filename: string): string => {
|
||||
const extension = filename.split('.').pop()?.toLowerCase() ?? '';
|
||||
switch (extension) {
|
||||
case 'jpg':
|
||||
case 'jpeg':
|
||||
return 'image/jpeg';
|
||||
case 'png':
|
||||
return 'image/png';
|
||||
case 'gif':
|
||||
return 'image/gif';
|
||||
case 'webp':
|
||||
return 'image/webp';
|
||||
default:
|
||||
return 'image/jpeg';
|
||||
}
|
||||
};
|
||||
|
||||
const mimeType = getMimeType(imageFile.filename);
|
||||
imageBlob = new Blob([new Uint8Array(imageFile.data)], {
|
||||
type: mimeType,
|
||||
});
|
||||
imageName = imageFile.filename;
|
||||
} else {
|
||||
try {
|
||||
const imageResponse = await httpClient.sendRequest({
|
||||
method: HttpMethod.GET,
|
||||
url: actualImageUrl.trim(),
|
||||
responseType: 'arraybuffer',
|
||||
});
|
||||
|
||||
const urlParts = actualImageUrl.split('/');
|
||||
imageName = urlParts[urlParts.length - 1] || 'image';
|
||||
|
||||
// Determine MIME type from URL or response headers
|
||||
const responseHeaders = imageResponse.headers || {};
|
||||
const contentType =
|
||||
(Array.isArray(responseHeaders['content-type'])
|
||||
? responseHeaders['content-type'][0]
|
||||
: responseHeaders['content-type']) || 'image/jpeg';
|
||||
imageBlob = new Blob([new Uint8Array(imageResponse.body)], {
|
||||
type: contentType,
|
||||
});
|
||||
} catch (error) {
|
||||
throw new Error(
|
||||
`Failed to fetch image from URL: ${
|
||||
error instanceof Error ? error.message : String(error)
|
||||
}`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
const hf = new InferenceClient(context.auth.secret_text);
|
||||
const startTime = Date.now();
|
||||
|
||||
try {
|
||||
let classificationResults:
|
||||
| ImageClassificationOutput
|
||||
| ZeroShotImageClassificationOutput;
|
||||
|
||||
if (classificationMode === 'zero_shot') {
|
||||
const candidateLabels = Array.isArray(customCategories)
|
||||
? customCategories.map((cat) => String(cat).trim()).filter(Boolean)
|
||||
: [String(customCategories).trim()].filter(Boolean);
|
||||
|
||||
const zeroShotArgs: ZeroShotImageClassificationInput = {
|
||||
inputs: imageBlob,
|
||||
parameters: {
|
||||
candidate_labels: candidateLabels,
|
||||
hypothesis_template: actualHypothesisTemplate,
|
||||
},
|
||||
};
|
||||
|
||||
classificationResults = await hf.zeroShotImageClassification(
|
||||
zeroShotArgs,
|
||||
{
|
||||
retry_on_error: true,
|
||||
}
|
||||
);
|
||||
} else {
|
||||
const standardArgs: ImageClassificationInput = {
|
||||
inputs: imageBlob,
|
||||
parameters: {
|
||||
top_k: topK || 5,
|
||||
},
|
||||
};
|
||||
|
||||
classificationResults = await hf.imageClassification(standardArgs, {
|
||||
retry_on_error: true,
|
||||
});
|
||||
}
|
||||
|
||||
const processingTime = (Date.now() - startTime) / 1000;
|
||||
const filteredResults = classificationResults.filter(
|
||||
(result) => result.score >= (confidenceThreshold || 0.1)
|
||||
);
|
||||
const limitedResults = filteredResults.slice(0, topK || 5);
|
||||
|
||||
const confidenceScores = limitedResults.map((r) => r.score);
|
||||
const avgConfidence =
|
||||
confidenceScores.reduce((sum, score) => sum + score, 0) /
|
||||
confidenceScores.length;
|
||||
const maxConfidence = Math.max(...confidenceScores);
|
||||
const minConfidence = Math.min(...confidenceScores);
|
||||
|
||||
const enhancedResults = limitedResults.map((result, index) => ({
|
||||
rank: index + 1,
|
||||
label: result.label,
|
||||
confidence: Math.round(result.score * 100) / 100,
|
||||
confidencePercent: Math.round(result.score * 100),
|
||||
category: result.label,
|
||||
isHighConfidence: result.score > 0.7,
|
||||
isMediumConfidence: result.score > 0.4 && result.score <= 0.7,
|
||||
isLowConfidence: result.score <= 0.4,
|
||||
}));
|
||||
|
||||
const topCategory = enhancedResults[0]?.label || 'unknown';
|
||||
const highConfidenceCount = enhancedResults.filter(
|
||||
(r) => r.isHighConfidence
|
||||
).length;
|
||||
const categoryDistribution = enhancedResults.reduce((acc, result) => {
|
||||
acc[result.label] = result.confidence;
|
||||
return acc;
|
||||
}, {} as Record<string, number>);
|
||||
|
||||
const businessSummary = {
|
||||
topCategory: topCategory,
|
||||
topConfidence: Math.round((enhancedResults[0]?.confidence || 0) * 100),
|
||||
totalCategories: enhancedResults.length,
|
||||
highConfidenceResults: highConfidenceCount,
|
||||
recommendedAction: getRecommendedAction(
|
||||
topCategory,
|
||||
enhancedResults[0]?.confidence || 0,
|
||||
useCase as string
|
||||
),
|
||||
};
|
||||
|
||||
const technicalDetails = {
|
||||
model: model,
|
||||
classificationMode: classificationMode,
|
||||
processingTimeSeconds: processingTime,
|
||||
originalResultCount: classificationResults.length,
|
||||
filteredResultCount: filteredResults.length,
|
||||
confidenceThreshold: confidenceThreshold || 0.1,
|
||||
imageSource: imageSource,
|
||||
imageName: imageName,
|
||||
};
|
||||
|
||||
const analytics = {
|
||||
confidenceStatistics: {
|
||||
average: avgConfidence,
|
||||
maximum: maxConfidence,
|
||||
minimum: minConfidence,
|
||||
standardDeviation: calculateStandardDeviation(confidenceScores),
|
||||
},
|
||||
categoryDistribution: categoryDistribution,
|
||||
qualityMetrics: {
|
||||
highConfidenceResults: enhancedResults.filter(
|
||||
(r) => r.isHighConfidence
|
||||
).length,
|
||||
mediumConfidenceResults: enhancedResults.filter(
|
||||
(r) => r.isMediumConfidence
|
||||
).length,
|
||||
lowConfidenceResults: enhancedResults.filter((r) => r.isLowConfidence)
|
||||
.length,
|
||||
},
|
||||
customCategories:
|
||||
classificationMode === 'zero_shot' ? customCategories : undefined,
|
||||
};
|
||||
|
||||
// Build response based on output format
|
||||
const baseResponse = {
|
||||
classifications: enhancedResults,
|
||||
summary: businessSummary,
|
||||
};
|
||||
|
||||
if (outputFormat === 'technical') {
|
||||
Object.assign(baseResponse, { technical: technicalDetails });
|
||||
} else if (outputFormat === 'analytics') {
|
||||
Object.assign(baseResponse, { analytics: analytics });
|
||||
} else if (outputFormat === 'comprehensive') {
|
||||
Object.assign(baseResponse, {
|
||||
technical: technicalDetails,
|
||||
analytics: analytics,
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
...baseResponse,
|
||||
classification: {
|
||||
mode: classificationMode,
|
||||
useCase: useCase,
|
||||
model: model,
|
||||
topCategory: topCategory,
|
||||
confidence: enhancedResults[0]?.confidence || 0,
|
||||
},
|
||||
metrics: {
|
||||
processingTimeSeconds: processingTime,
|
||||
totalResults: classificationResults.length,
|
||||
displayedResults: enhancedResults.length,
|
||||
averageConfidence: Math.round(avgConfidence * 100),
|
||||
estimatedCost: calculateEstimatedCost(model),
|
||||
},
|
||||
businessInsights: {
|
||||
useCase: getUseCaseDescription(
|
||||
useCase as string,
|
||||
classificationMode as string
|
||||
),
|
||||
classificationTips: getClassificationTips(
|
||||
enhancedResults,
|
||||
classificationMode as string,
|
||||
useCase as string
|
||||
),
|
||||
nextSteps: getNextSteps(
|
||||
useCase as string,
|
||||
topCategory,
|
||||
enhancedResults[0]?.confidence || 0
|
||||
),
|
||||
},
|
||||
rawResults: classificationResults,
|
||||
};
|
||||
} catch (error: unknown) {
|
||||
const errorMessage =
|
||||
error instanceof Error ? error.message : String(error);
|
||||
throw new Error(`Image classification failed: ${errorMessage}`);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
function calculateStandardDeviation(values: number[]): number {
|
||||
if (values.length === 0) return 0;
|
||||
const avg = values.reduce((sum, val) => sum + val, 0) / values.length;
|
||||
const squareDiffs = values.map((val) => Math.pow(val - avg, 2));
|
||||
const variance =
|
||||
squareDiffs.reduce((sum, val) => sum + val, 0) / values.length;
|
||||
return Math.sqrt(variance);
|
||||
}
|
||||
|
||||
function getRecommendedAction(
|
||||
category: string,
|
||||
confidence: number,
|
||||
useCase: string
|
||||
): string {
|
||||
if (confidence > 0.8) {
|
||||
if (useCase === 'moderation') {
|
||||
return category.toLowerCase().includes('nsfw') ||
|
||||
category.toLowerCase().includes('inappropriate')
|
||||
? '🚨 Block content - high confidence inappropriate material'
|
||||
: '✅ Approve content - safe for publication';
|
||||
}
|
||||
return `✅ High confidence classification as "${category}" - proceed with automated action`;
|
||||
} else if (confidence > 0.5) {
|
||||
return `⚠️ Medium confidence - consider manual review for "${category}"`;
|
||||
} else {
|
||||
return `❓ Low confidence - manual review recommended`;
|
||||
}
|
||||
}
|
||||
|
||||
function getUseCaseDescription(useCase: string, mode: string): string {
|
||||
const descriptions = {
|
||||
moderation: 'Content safety and moderation for safe user experiences',
|
||||
general: `${
|
||||
mode === 'zero_shot' ? 'Custom category' : 'General purpose'
|
||||
} image classification and tagging`,
|
||||
people: 'Human-focused analysis for demographics and emotions',
|
||||
creative: 'Creative content analysis for media and design workflows',
|
||||
business: 'Business-grade classification for commerce and automation',
|
||||
search: 'Custom model selection for specialized classification needs',
|
||||
};
|
||||
|
||||
return (
|
||||
descriptions[useCase as keyof typeof descriptions] ||
|
||||
'AI-powered image classification'
|
||||
);
|
||||
}
|
||||
|
||||
function getClassificationTips(
|
||||
results: Array<{
|
||||
label: string;
|
||||
confidence: number;
|
||||
isHighConfidence: boolean;
|
||||
}>,
|
||||
mode: string,
|
||||
useCase: string
|
||||
): string[] {
|
||||
const tips: string[] = [];
|
||||
|
||||
if (results.length === 0) {
|
||||
tips.push(
|
||||
'🔍 No confident classifications found - try adjusting the confidence threshold'
|
||||
);
|
||||
} else {
|
||||
const topResult = results[0];
|
||||
|
||||
if (topResult.confidence > 0.8) {
|
||||
tips.push(
|
||||
'✅ High confidence classification - reliable for automated decisions'
|
||||
);
|
||||
} else if (topResult.confidence > 0.5) {
|
||||
tips.push('⚖️ Medium confidence - good for most use cases');
|
||||
} else {
|
||||
tips.push(
|
||||
'⚠️ Low confidence - consider manual review or different model'
|
||||
);
|
||||
}
|
||||
|
||||
if (mode === 'zero_shot') {
|
||||
tips.push(
|
||||
'🎯 Zero-shot mode allows custom categories - refine labels for better accuracy'
|
||||
);
|
||||
}
|
||||
|
||||
if (
|
||||
useCase === 'moderation' &&
|
||||
results.some((r) => r.label.toLowerCase().includes('nsfw'))
|
||||
) {
|
||||
tips.push(
|
||||
'🛡️ Content moderation detected - implement appropriate content policies'
|
||||
);
|
||||
}
|
||||
|
||||
const highConfidenceCount = results.filter(
|
||||
(r) => r.isHighConfidence
|
||||
).length;
|
||||
if (highConfidenceCount > 3) {
|
||||
tips.push(
|
||||
'📊 Multiple high-confidence matches - image may fit several categories'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (tips.length === 0) {
|
||||
tips.push(
|
||||
'💡 Good classification results - suitable for automated processing'
|
||||
);
|
||||
}
|
||||
|
||||
return tips;
|
||||
}
|
||||
|
||||
function getNextSteps(
|
||||
useCase: string,
|
||||
topCategory: string,
|
||||
confidence: number
|
||||
): string[] {
|
||||
const steps: string[] = [];
|
||||
|
||||
if (useCase === 'moderation') {
|
||||
steps.push('🛡️ Implement content filtering rules based on classifications');
|
||||
steps.push('📊 Set up monitoring dashboards for content safety metrics');
|
||||
} else if (useCase === 'business') {
|
||||
steps.push('🏷️ Automate product tagging and categorization workflows');
|
||||
steps.push('📈 Analyze classification patterns for business insights');
|
||||
} else if (useCase === 'general') {
|
||||
steps.push(
|
||||
'📁 Create automated file organization based on classifications'
|
||||
);
|
||||
steps.push('🔍 Build searchable metadata from image classifications');
|
||||
}
|
||||
|
||||
if (confidence > 0.8) {
|
||||
steps.push(
|
||||
'⚡ Enable fully automated processing for high-confidence results'
|
||||
);
|
||||
} else {
|
||||
steps.push('👁️ Set up human review workflows for low-confidence results');
|
||||
}
|
||||
|
||||
steps.push(
|
||||
'💾 Save successful classification settings for consistent results'
|
||||
);
|
||||
steps.push('🔄 Process image batches with the same model configuration');
|
||||
|
||||
return steps;
|
||||
}
|
||||
|
||||
function calculateEstimatedCost(model: string): string {
|
||||
const baseClassificationCost = 0.0005; // Cost per classification
|
||||
const modelMultiplier = model.includes('clip-vit-large')
|
||||
? 2.0
|
||||
: model.includes('vit-base')
|
||||
? 1.5
|
||||
: model.includes('resnet')
|
||||
? 1.0
|
||||
: model.includes('mobile')
|
||||
? 0.5
|
||||
: 1.0;
|
||||
|
||||
const estimatedCost = baseClassificationCost * modelMultiplier;
|
||||
|
||||
if (estimatedCost < 0.001) {
|
||||
return '< $0.001';
|
||||
}
|
||||
|
||||
return `~$${estimatedCost.toFixed(4)}`;
|
||||
}
|
||||
@@ -0,0 +1,264 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { TranslationArgs, InferenceClient } from '@huggingface/inference';
|
||||
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
|
||||
import { huggingFaceAuth } from '../../index';
|
||||
|
||||
export const languageTranslation = createAction({
|
||||
name: 'language_translation',
|
||||
auth: huggingFaceAuth,
|
||||
displayName: 'Language Translation',
|
||||
description:
|
||||
'Translate text between languages using specialized Hugging Face translation models',
|
||||
props: {
|
||||
model: Property.Dropdown({
|
||||
auth: huggingFaceAuth,
|
||||
displayName: 'Translation Model',
|
||||
description:
|
||||
'Select a translation model or search from 7000+ available models',
|
||||
required: true,
|
||||
refreshers: [],
|
||||
defaultValue: 'Helsinki-NLP/opus-mt-fr-en',
|
||||
options: async ({ auth }) => {
|
||||
// Return popular models immediately, then fetch more if auth is available
|
||||
const popularModels = [
|
||||
// === TO ENGLISH (Most Popular) ===
|
||||
{
|
||||
label: '🔥 French → English (953K downloads)',
|
||||
value: 'Helsinki-NLP/opus-mt-fr-en',
|
||||
},
|
||||
{
|
||||
label: '🔥 Russian → English (426K downloads)',
|
||||
value: 'Helsinki-NLP/opus-mt-ru-en',
|
||||
},
|
||||
{
|
||||
label: '🔥 Dutch → English (389K downloads)',
|
||||
value: 'Helsinki-NLP/opus-mt-nl-en',
|
||||
},
|
||||
{
|
||||
label: '🔥 Chinese → English (362K downloads)',
|
||||
value: 'Helsinki-NLP/opus-mt-zh-en',
|
||||
},
|
||||
{
|
||||
label: '🔥 German → English (338K downloads)',
|
||||
value: 'Helsinki-NLP/opus-mt-de-en',
|
||||
},
|
||||
{
|
||||
label: '🔥 Spanish → English (181K downloads)',
|
||||
value: 'Helsinki-NLP/opus-mt-es-en',
|
||||
},
|
||||
|
||||
// === FROM ENGLISH ===
|
||||
{
|
||||
label: '🔥 English → German (276K downloads)',
|
||||
value: 'Helsinki-NLP/opus-mt-en-de',
|
||||
},
|
||||
{
|
||||
label: '🔥 English → French (223K downloads)',
|
||||
value: 'Helsinki-NLP/opus-mt-en-fr',
|
||||
},
|
||||
{
|
||||
label: '🔥 English → Spanish (204K downloads)',
|
||||
value: 'Helsinki-NLP/opus-mt-en-es',
|
||||
},
|
||||
|
||||
// === OTHER POPULAR ===
|
||||
{
|
||||
label: '🔥 Arabic → English (246K downloads)',
|
||||
value: 'Helsinki-NLP/opus-mt-ar-en',
|
||||
},
|
||||
{
|
||||
label: '🔥 Korean → English (236K downloads)',
|
||||
value: 'Helsinki-NLP/opus-mt-ko-en',
|
||||
},
|
||||
{
|
||||
label: '🔥 Italian → English (231K downloads)',
|
||||
value: 'Helsinki-NLP/opus-mt-it-en',
|
||||
},
|
||||
];
|
||||
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: popularModels,
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await httpClient.sendRequest({
|
||||
method: HttpMethod.GET,
|
||||
url: 'https://huggingface.co/api/models',
|
||||
queryParams: {
|
||||
filter: 'translation',
|
||||
sort: 'downloads',
|
||||
direction: '-1',
|
||||
limit: '200',
|
||||
},
|
||||
});
|
||||
|
||||
const models = response.body as Array<{
|
||||
id: string;
|
||||
downloads: number;
|
||||
pipeline_tag: string;
|
||||
}>;
|
||||
|
||||
const translationModels = models
|
||||
.filter((model) => model.pipeline_tag === 'translation')
|
||||
.map((model) => ({
|
||||
label: `${model.id} (${
|
||||
model.downloads?.toLocaleString() || 0
|
||||
} downloads)`,
|
||||
value: model.id,
|
||||
}))
|
||||
.slice(0, 100); // Limit for better performance
|
||||
|
||||
// Combine popular models (marked) with all available models
|
||||
const allOptions = [
|
||||
...popularModels,
|
||||
{ label: '─── All Available Models ───', value: '__separator__' },
|
||||
...translationModels.filter(
|
||||
(model) =>
|
||||
!popularModels.some((popular) => popular.value === model.value)
|
||||
),
|
||||
];
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: allOptions.filter(
|
||||
(option) => option.value !== '__separator__'
|
||||
),
|
||||
};
|
||||
} catch (error) {
|
||||
// If API fails, fallback to popular models
|
||||
return {
|
||||
disabled: false,
|
||||
options: popularModels,
|
||||
};
|
||||
}
|
||||
},
|
||||
}),
|
||||
customModel: Property.ShortText({
|
||||
displayName: 'Or Enter Custom Model ID',
|
||||
description:
|
||||
'Alternative: Enter any Hugging Face translation model ID directly (e.g., Helsinki-NLP/opus-mt-ja-en)',
|
||||
required: false,
|
||||
}),
|
||||
text: Property.LongText({
|
||||
displayName: 'Text to Translate',
|
||||
description: 'The text content you want to translate',
|
||||
required: true,
|
||||
}),
|
||||
sourceLanguage: Property.ShortText({
|
||||
displayName: 'Source Language (Optional)',
|
||||
description:
|
||||
'Source language code (e.g., "en", "es", "fr"). Only needed for multilingual models that support multiple language pairs.',
|
||||
required: false,
|
||||
}),
|
||||
targetLanguage: Property.ShortText({
|
||||
displayName: 'Target Language (Optional)',
|
||||
description:
|
||||
'Target language code (e.g., "fr", "de", "zh"). Only needed for multilingual models that support multiple language pairs.',
|
||||
required: false,
|
||||
}),
|
||||
cleanUpSpaces: Property.Checkbox({
|
||||
displayName: 'Clean Up Extra Spaces',
|
||||
description: 'Remove potential extra spaces in the translation output',
|
||||
required: false,
|
||||
defaultValue: true,
|
||||
}),
|
||||
maxLength: Property.Number({
|
||||
displayName: 'Max Translation Length',
|
||||
description:
|
||||
'Maximum length of the translated text (leave empty for default)',
|
||||
required: false,
|
||||
}),
|
||||
useCache: Property.Checkbox({
|
||||
displayName: 'Use Cache',
|
||||
description: 'Use cached results if available for faster responses',
|
||||
required: false,
|
||||
defaultValue: true,
|
||||
}),
|
||||
waitForModel: Property.Checkbox({
|
||||
displayName: 'Wait for Model',
|
||||
description: 'Wait for model to load if not immediately available',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const {
|
||||
model,
|
||||
customModel,
|
||||
text,
|
||||
sourceLanguage,
|
||||
targetLanguage,
|
||||
cleanUpSpaces,
|
||||
maxLength,
|
||||
useCache,
|
||||
waitForModel,
|
||||
} = context.propsValue;
|
||||
|
||||
// Determine which model to use
|
||||
const modelToUse = customModel?.trim() || model;
|
||||
|
||||
if (!modelToUse) {
|
||||
throw new Error(
|
||||
'Please select a model from the dropdown or enter a custom model ID'
|
||||
);
|
||||
}
|
||||
|
||||
const hf = new InferenceClient(context.auth.secret_text);
|
||||
|
||||
const args: TranslationArgs = {
|
||||
model: modelToUse,
|
||||
inputs: text,
|
||||
options: {
|
||||
use_cache: useCache ?? true,
|
||||
wait_for_model: waitForModel ?? false,
|
||||
},
|
||||
};
|
||||
|
||||
// Build parameters object
|
||||
const parameters: {
|
||||
clean_up_tokenization_spaces?: boolean;
|
||||
src_lang?: string;
|
||||
tgt_lang?: string;
|
||||
generate_parameters?: {
|
||||
max_length?: number;
|
||||
};
|
||||
} = {};
|
||||
|
||||
if (cleanUpSpaces !== undefined) {
|
||||
parameters.clean_up_tokenization_spaces = cleanUpSpaces;
|
||||
}
|
||||
|
||||
if (sourceLanguage?.trim()) {
|
||||
parameters.src_lang = sourceLanguage.trim();
|
||||
}
|
||||
|
||||
if (targetLanguage?.trim()) {
|
||||
parameters.tgt_lang = targetLanguage.trim();
|
||||
}
|
||||
|
||||
if (maxLength !== undefined && maxLength > 0) {
|
||||
parameters.generate_parameters = {
|
||||
max_length: maxLength,
|
||||
};
|
||||
}
|
||||
|
||||
if (Object.keys(parameters).length > 0) {
|
||||
args.parameters = parameters;
|
||||
}
|
||||
|
||||
const translationResult = await hf.translation(args);
|
||||
|
||||
return {
|
||||
translatedText: translationResult.translation_text,
|
||||
originalText: text,
|
||||
model: modelToUse,
|
||||
sourceLanguage: sourceLanguage || 'auto-detected',
|
||||
targetLanguage: targetLanguage || 'model-default',
|
||||
parameters: parameters,
|
||||
rawResult: translationResult,
|
||||
};
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,588 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { InferenceClient } from '@huggingface/inference';
|
||||
import type {
|
||||
ObjectDetectionInput,
|
||||
ObjectDetectionOutput,
|
||||
} from '@huggingface/tasks';
|
||||
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
|
||||
import { huggingFaceAuth } from '../../index';
|
||||
|
||||
export const objectDetection = createAction({
|
||||
name: 'object_detection',
|
||||
auth: huggingFaceAuth,
|
||||
displayName: 'Object Detection',
|
||||
description:
|
||||
'Detect and locate objects in images with precise bounding boxes - perfect for inventory management, content moderation, and automated tagging',
|
||||
props: {
|
||||
useCase: Property.StaticDropdown({
|
||||
displayName: 'Use Case',
|
||||
description: 'What type of object detection do you need?',
|
||||
required: true,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{
|
||||
label: '📋 General Objects (COCO Dataset)',
|
||||
value: 'general',
|
||||
},
|
||||
{
|
||||
label: '📊 Documents & Tables',
|
||||
value: 'documents',
|
||||
},
|
||||
{
|
||||
label: '🛡️ Security & Monitoring',
|
||||
value: 'security',
|
||||
},
|
||||
{
|
||||
label: '🏢 Business & Commerce',
|
||||
value: 'business',
|
||||
},
|
||||
{
|
||||
label: '🔍 Search All Models',
|
||||
value: 'search',
|
||||
},
|
||||
],
|
||||
},
|
||||
defaultValue: 'general',
|
||||
}),
|
||||
model: Property.Dropdown({
|
||||
auth: huggingFaceAuth,
|
||||
displayName: 'Detection Model',
|
||||
description: 'Select the best model for your detection task',
|
||||
required: true,
|
||||
refreshers: ['useCase'],
|
||||
options: async ({ useCase }) => {
|
||||
// Define model options based on use case
|
||||
const getModelsByUseCase = (type: string) => {
|
||||
switch (type) {
|
||||
case 'general':
|
||||
return [
|
||||
{
|
||||
label: 'DETR ResNet-50 (🏆 Industry Standard)',
|
||||
value: 'facebook/detr-resnet-50',
|
||||
description: '306K downloads | 80+ object classes',
|
||||
},
|
||||
{
|
||||
label: 'YOLOS Small (⚡ Fast Detection)',
|
||||
value: 'hustvl/yolos-small',
|
||||
description: '756K downloads | Lightweight & efficient',
|
||||
},
|
||||
{
|
||||
label: 'YOLOS Tiny (🚀 Ultra Fast)',
|
||||
value: 'hustvl/yolos-tiny',
|
||||
description: '128K downloads | Mobile-friendly',
|
||||
},
|
||||
{
|
||||
label: 'YOLOv8 (🔬 Latest Technology)',
|
||||
value: 'Ultralytics/YOLOv8',
|
||||
description: '4.6K downloads | State-of-the-art accuracy',
|
||||
},
|
||||
];
|
||||
case 'documents':
|
||||
return [
|
||||
{
|
||||
label: 'Table Transformer Detection (📊 Table Expert)',
|
||||
value: 'microsoft/table-transformer-detection',
|
||||
description: '2.3M downloads | Perfect for table detection',
|
||||
},
|
||||
{
|
||||
label: 'Table Structure Recognition (🔍 Structure Analysis)',
|
||||
value: 'microsoft/table-transformer-structure-recognition',
|
||||
description: '1.2M downloads | Analyzes table structure',
|
||||
},
|
||||
{
|
||||
label: 'Doc Table Detection (📋 Document Focus)',
|
||||
value: 'TahaDouaji/detr-doc-table-detection',
|
||||
description: '651K downloads | Document-specific tables',
|
||||
},
|
||||
];
|
||||
case 'security':
|
||||
return [
|
||||
{
|
||||
label: 'License Plate Detection (🚗 Vehicle Focus)',
|
||||
value: 'keremberke/yolov5n-license-plate',
|
||||
description: '151K downloads | Vehicle identification',
|
||||
},
|
||||
{
|
||||
label: 'CRAFT Text Detection (📝 Text Security)',
|
||||
value: 'hezarai/CRAFT',
|
||||
description: '101K downloads | Text content monitoring',
|
||||
},
|
||||
{
|
||||
label: 'DETR ResNet-50 (👁️ General Security)',
|
||||
value: 'facebook/detr-resnet-50',
|
||||
description: '306K downloads | People & object detection',
|
||||
},
|
||||
];
|
||||
case 'business':
|
||||
return [
|
||||
{
|
||||
label: 'Stock Pattern Detection (📈 Trading Analysis)',
|
||||
value: 'foduucom/stockmarket-pattern-detection-yolov8',
|
||||
description: '8.2K downloads | Financial chart analysis',
|
||||
},
|
||||
{
|
||||
label: 'RT-DETR R101 (💼 Professional Quality)',
|
||||
value: 'PekingU/rtdetr_r101vd_coco_o365',
|
||||
description: '139K downloads | High-precision detection',
|
||||
},
|
||||
{
|
||||
label: 'RT-DETR R50 (⚖️ Balanced Performance)',
|
||||
value: 'PekingU/rtdetr_r50vd_coco_o365',
|
||||
description: '84K downloads | Business-grade accuracy',
|
||||
},
|
||||
];
|
||||
default:
|
||||
return [];
|
||||
}
|
||||
};
|
||||
|
||||
if (useCase === 'search') {
|
||||
try {
|
||||
const response = await httpClient.sendRequest({
|
||||
method: HttpMethod.GET,
|
||||
url: 'https://huggingface.co/api/models?pipeline_tag=object-detection&sort=downloads&limit=50',
|
||||
});
|
||||
|
||||
const models = response.body as Array<{
|
||||
id: string;
|
||||
downloads: number;
|
||||
likes: number;
|
||||
}>;
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
placeholder: 'Select from 50+ detection models...',
|
||||
options: models
|
||||
.filter((model) => model.downloads > 10000)
|
||||
.slice(0, 25)
|
||||
.map((model) => ({
|
||||
label: `${model.id} (${(model.downloads / 1000).toFixed(
|
||||
0
|
||||
)}K downloads)`,
|
||||
value: model.id,
|
||||
})),
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: getModelsByUseCase('general'),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: getModelsByUseCase(useCase as string),
|
||||
};
|
||||
},
|
||||
}),
|
||||
image: Property.File({
|
||||
displayName: 'Image to Analyze',
|
||||
description:
|
||||
'Upload an image for object detection. Supports JPG, PNG, WebP formats.',
|
||||
required: true,
|
||||
}),
|
||||
confidenceThreshold: Property.Number({
|
||||
displayName: 'Confidence Threshold',
|
||||
description:
|
||||
'Minimum confidence score for detections (0.1-0.9). Higher values = fewer but more accurate detections.',
|
||||
required: false,
|
||||
defaultValue: 0.5,
|
||||
}),
|
||||
maxDetections: Property.Number({
|
||||
displayName: 'Max Detections',
|
||||
description: 'Maximum number of objects to detect (1-100)',
|
||||
required: false,
|
||||
defaultValue: 50,
|
||||
}),
|
||||
filterSettings: Property.StaticDropdown({
|
||||
displayName: 'Detection Filter',
|
||||
description: 'How to handle detection results',
|
||||
required: false,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{ label: '🎯 High Confidence Only (>0.7)', value: 'high_confidence' },
|
||||
{ label: '⚖️ Balanced Results (>0.5)', value: 'balanced' },
|
||||
{ label: '📊 All Detections (>0.1)', value: 'all_results' },
|
||||
{ label: '⚙️ Custom Threshold', value: 'custom' },
|
||||
],
|
||||
},
|
||||
defaultValue: 'balanced',
|
||||
}),
|
||||
outputFormat: Property.StaticDropdown({
|
||||
displayName: 'Output Format',
|
||||
description: 'How to structure the detection results',
|
||||
required: false,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{ label: '📋 Business Summary', value: 'business' },
|
||||
{ label: '🔧 Technical Details', value: 'technical' },
|
||||
{ label: '📊 Statistical Analysis', value: 'analytics' },
|
||||
{ label: '🌐 All Information', value: 'comprehensive' },
|
||||
],
|
||||
},
|
||||
defaultValue: 'business',
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const {
|
||||
useCase,
|
||||
model,
|
||||
image,
|
||||
confidenceThreshold,
|
||||
maxDetections,
|
||||
filterSettings,
|
||||
outputFormat,
|
||||
} = context.propsValue;
|
||||
|
||||
if (!image?.data) {
|
||||
throw new Error('Please provide an image file for analysis');
|
||||
}
|
||||
|
||||
// Determine actual confidence threshold
|
||||
let actualThreshold: number;
|
||||
switch (filterSettings) {
|
||||
case 'high_confidence':
|
||||
actualThreshold = 0.7;
|
||||
break;
|
||||
case 'balanced':
|
||||
actualThreshold = 0.5;
|
||||
break;
|
||||
case 'all_results':
|
||||
actualThreshold = 0.1;
|
||||
break;
|
||||
case 'custom':
|
||||
actualThreshold = confidenceThreshold || 0.5;
|
||||
break;
|
||||
default:
|
||||
actualThreshold = 0.5;
|
||||
}
|
||||
|
||||
// Get image MIME type
|
||||
const getMimeType = (filename: string): string => {
|
||||
const extension = filename.split('.').pop()?.toLowerCase() ?? '';
|
||||
switch (extension) {
|
||||
case 'jpg':
|
||||
case 'jpeg':
|
||||
return 'image/jpeg';
|
||||
case 'png':
|
||||
return 'image/png';
|
||||
case 'gif':
|
||||
return 'image/gif';
|
||||
case 'webp':
|
||||
return 'image/webp';
|
||||
default:
|
||||
return 'image/jpeg';
|
||||
}
|
||||
};
|
||||
|
||||
const mimeType = getMimeType(image.filename);
|
||||
const imageBlob = new Blob([new Uint8Array(image.data)], {
|
||||
type: mimeType,
|
||||
});
|
||||
|
||||
const hf = new InferenceClient(context.auth.secret_text);
|
||||
|
||||
// Build detection arguments
|
||||
const args: ObjectDetectionInput = {
|
||||
inputs: imageBlob,
|
||||
parameters: {
|
||||
threshold: actualThreshold,
|
||||
},
|
||||
};
|
||||
|
||||
// Track detection start time
|
||||
const startTime = Date.now();
|
||||
|
||||
try {
|
||||
// Perform object detection
|
||||
const detectionResults: ObjectDetectionOutput = await hf.objectDetection(
|
||||
args,
|
||||
{
|
||||
retry_on_error: true,
|
||||
}
|
||||
);
|
||||
|
||||
// Calculate detection metrics
|
||||
const detectionTime = (Date.now() - startTime) / 1000;
|
||||
const totalDetections = detectionResults.length;
|
||||
const limitedResults = detectionResults.slice(0, maxDetections || 50);
|
||||
|
||||
// Group detections by label
|
||||
const labelCounts = limitedResults.reduce((acc, detection) => {
|
||||
acc[detection.label] = (acc[detection.label] || 0) + 1;
|
||||
return acc;
|
||||
}, {} as Record<string, number>);
|
||||
|
||||
// Calculate confidence statistics
|
||||
const confidenceScores = limitedResults.map((d) => d.score);
|
||||
const avgConfidence =
|
||||
confidenceScores.reduce((sum, score) => sum + score, 0) /
|
||||
confidenceScores.length;
|
||||
const maxConfidence = Math.max(...confidenceScores);
|
||||
const minConfidence = Math.min(...confidenceScores);
|
||||
|
||||
// Prepare different output formats
|
||||
const businessSummary = {
|
||||
totalObjectsDetected: limitedResults.length,
|
||||
objectCategories: Object.keys(labelCounts).length,
|
||||
mostFrequentObject: Object.entries(labelCounts).sort(
|
||||
([, a], [, b]) => b - a
|
||||
)[0]?.[0],
|
||||
averageConfidence: Math.round(avgConfidence * 100),
|
||||
highConfidenceDetections: limitedResults.filter((d) => d.score > 0.8)
|
||||
.length,
|
||||
};
|
||||
|
||||
const technicalDetails = {
|
||||
model: model,
|
||||
threshold: actualThreshold,
|
||||
processingTime: detectionTime,
|
||||
imageFormat: mimeType,
|
||||
detectionCount: limitedResults.length,
|
||||
truncated: totalDetections > (maxDetections || 50),
|
||||
};
|
||||
|
||||
const analytics = {
|
||||
labelDistribution: labelCounts,
|
||||
confidenceStatistics: {
|
||||
average: avgConfidence,
|
||||
maximum: maxConfidence,
|
||||
minimum: minConfidence,
|
||||
standardDeviation: calculateStandardDeviation(confidenceScores),
|
||||
},
|
||||
qualityMetrics: {
|
||||
highQuality: limitedResults.filter((d) => d.score > 0.8).length,
|
||||
mediumQuality: limitedResults.filter(
|
||||
(d) => d.score > 0.5 && d.score <= 0.8
|
||||
).length,
|
||||
lowQuality: limitedResults.filter((d) => d.score <= 0.5).length,
|
||||
},
|
||||
};
|
||||
|
||||
// Enhanced detection results with additional metadata
|
||||
const enhancedDetections = limitedResults.map((detection, index) => {
|
||||
const boxArea =
|
||||
(detection.box.xmax - detection.box.xmin) *
|
||||
(detection.box.ymax - detection.box.ymin);
|
||||
const boxCenter = {
|
||||
x: (detection.box.xmin + detection.box.xmax) / 2,
|
||||
y: (detection.box.ymin + detection.box.ymax) / 2,
|
||||
};
|
||||
|
||||
return {
|
||||
id: index + 1,
|
||||
label: detection.label,
|
||||
confidence: Math.round(detection.score * 100) / 100,
|
||||
confidencePercent: Math.round(detection.score * 100),
|
||||
boundingBox: detection.box,
|
||||
metadata: {
|
||||
area: Math.round(boxArea * 10000) / 10000,
|
||||
center: {
|
||||
x: Math.round(boxCenter.x * 1000) / 1000,
|
||||
y: Math.round(boxCenter.y * 1000) / 1000,
|
||||
},
|
||||
width:
|
||||
Math.round((detection.box.xmax - detection.box.xmin) * 1000) /
|
||||
1000,
|
||||
height:
|
||||
Math.round((detection.box.ymax - detection.box.ymin) * 1000) /
|
||||
1000,
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
// Build response based on output format
|
||||
const baseResponse = {
|
||||
detections: enhancedDetections,
|
||||
summary: businessSummary,
|
||||
};
|
||||
|
||||
if (outputFormat === 'technical') {
|
||||
Object.assign(baseResponse, {
|
||||
technical: technicalDetails,
|
||||
});
|
||||
} else if (outputFormat === 'analytics') {
|
||||
Object.assign(baseResponse, {
|
||||
analytics: analytics,
|
||||
});
|
||||
} else if (outputFormat === 'comprehensive') {
|
||||
Object.assign(baseResponse, {
|
||||
technical: technicalDetails,
|
||||
analytics: analytics,
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
...baseResponse,
|
||||
detection: {
|
||||
useCase: useCase,
|
||||
model: model,
|
||||
imageFile: image.filename,
|
||||
threshold: actualThreshold,
|
||||
maxDetections: maxDetections || 50,
|
||||
},
|
||||
metrics: {
|
||||
detectionTimeSeconds: detectionTime,
|
||||
totalDetections: totalDetections,
|
||||
displayedDetections: limitedResults.length,
|
||||
averageConfidence: Math.round(avgConfidence * 100),
|
||||
processingCost: calculateEstimatedCost(model, totalDetections),
|
||||
},
|
||||
businessInsights: {
|
||||
useCase: getUseCaseDescription(useCase as string),
|
||||
detectionTips: getDetectionTips(
|
||||
enhancedDetections,
|
||||
actualThreshold,
|
||||
useCase as string
|
||||
),
|
||||
nextSteps: getNextSteps(
|
||||
useCase as string,
|
||||
limitedResults.length,
|
||||
Object.keys(labelCounts).length
|
||||
),
|
||||
},
|
||||
rawResults: detectionResults,
|
||||
};
|
||||
} catch (error: unknown) {
|
||||
const errorMessage =
|
||||
error instanceof Error ? error.message : String(error);
|
||||
throw new Error(`Object detection failed: ${errorMessage}`);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
// Helper function to calculate standard deviation
|
||||
function calculateStandardDeviation(values: number[]): number {
|
||||
const avg = values.reduce((sum, val) => sum + val, 0) / values.length;
|
||||
const squareDiffs = values.map((val) => Math.pow(val - avg, 2));
|
||||
const variance =
|
||||
squareDiffs.reduce((sum, val) => sum + val, 0) / values.length;
|
||||
return Math.sqrt(variance);
|
||||
}
|
||||
|
||||
// Helper function to get use case descriptions
|
||||
function getUseCaseDescription(useCase: string): string {
|
||||
const descriptions = {
|
||||
general: 'Versatile object detection for everyday items and common objects',
|
||||
documents:
|
||||
'Specialized detection for tables, forms, and document structures',
|
||||
security:
|
||||
'Security-focused detection for monitoring and identification tasks',
|
||||
business:
|
||||
'Business-oriented detection for inventory, products, and commerce',
|
||||
search: 'Custom model selection for specialized detection requirements',
|
||||
};
|
||||
|
||||
return (
|
||||
descriptions[useCase as keyof typeof descriptions] ||
|
||||
'AI-powered object detection'
|
||||
);
|
||||
}
|
||||
|
||||
// Helper function to provide detection tips
|
||||
function getDetectionTips(
|
||||
detections: Array<{ confidence: number; label: string }>,
|
||||
threshold: number,
|
||||
useCase: string
|
||||
): string[] {
|
||||
const tips: string[] = [];
|
||||
|
||||
if (detections.length === 0) {
|
||||
tips.push('🔍 No objects detected - try lowering the confidence threshold');
|
||||
tips.push('📸 Ensure image has clear, well-lit objects');
|
||||
} else if (detections.length < 3) {
|
||||
tips.push(
|
||||
'💡 Few objects detected - consider lowering threshold for more results'
|
||||
);
|
||||
} else if (detections.length > 20) {
|
||||
tips.push(
|
||||
'📊 Many objects detected - consider higher threshold for quality'
|
||||
);
|
||||
}
|
||||
|
||||
if (threshold > 0.7) {
|
||||
tips.push('🎯 High threshold set - only very confident detections shown');
|
||||
} else if (threshold < 0.3) {
|
||||
tips.push('⚠️ Low threshold may include false positives');
|
||||
}
|
||||
|
||||
const avgConfidence =
|
||||
detections.reduce((sum, d) => sum + d.confidence, 0) / detections.length;
|
||||
if (avgConfidence < 0.6) {
|
||||
tips.push('📈 Consider using a different model for better accuracy');
|
||||
}
|
||||
|
||||
if (
|
||||
useCase === 'documents' &&
|
||||
detections.some((d) => d.label.includes('table'))
|
||||
) {
|
||||
tips.push('📋 Tables detected - great for document processing workflows');
|
||||
}
|
||||
|
||||
if (tips.length === 0) {
|
||||
tips.push('✅ Good detection results - objects identified successfully');
|
||||
}
|
||||
|
||||
return tips;
|
||||
}
|
||||
|
||||
// Helper function to suggest next steps
|
||||
function getNextSteps(
|
||||
useCase: string,
|
||||
detectionCount: number,
|
||||
uniqueLabels: number
|
||||
): string[] {
|
||||
const steps: string[] = [];
|
||||
|
||||
if (useCase === 'business') {
|
||||
steps.push('📊 Use detections to trigger inventory management workflows');
|
||||
steps.push('🏷️ Implement automatic product tagging and categorization');
|
||||
}
|
||||
|
||||
if (useCase === 'security') {
|
||||
steps.push('🚨 Set up alerts for specific object types detected');
|
||||
steps.push('📹 Integrate with monitoring systems for real-time analysis');
|
||||
}
|
||||
|
||||
if (useCase === 'documents') {
|
||||
steps.push('📄 Extract detected tables for data processing');
|
||||
steps.push('🔍 Combine with OCR for complete document analysis');
|
||||
}
|
||||
|
||||
if (detectionCount > 10) {
|
||||
steps.push('📈 Consider batch processing for multiple images');
|
||||
}
|
||||
|
||||
if (uniqueLabels > 5) {
|
||||
steps.push('🏷️ Implement multi-category filtering and sorting');
|
||||
}
|
||||
|
||||
steps.push('💾 Save successful detection settings for consistent results');
|
||||
steps.push('🔄 Process similar images with the same model configuration');
|
||||
|
||||
return steps;
|
||||
}
|
||||
|
||||
// Helper function to estimate costs (rough approximation)
|
||||
function calculateEstimatedCost(model: string, detectionCount: number): string {
|
||||
const baseDetectionCost = 0.001; // Cost per detection
|
||||
const modelMultiplier = model.includes('microsoft/table-transformer')
|
||||
? 1.5
|
||||
: model.includes('yolov8') || model.includes('rtdetr')
|
||||
? 2.0
|
||||
: model.includes('yolos-tiny')
|
||||
? 0.5
|
||||
: 1.0;
|
||||
|
||||
const estimatedCost = baseDetectionCost * detectionCount * modelMultiplier;
|
||||
|
||||
if (estimatedCost < 0.001) {
|
||||
return '< $0.001';
|
||||
}
|
||||
|
||||
return `~$${estimatedCost.toFixed(4)}`;
|
||||
}
|
||||
@@ -0,0 +1,401 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import {
|
||||
TextClassificationArgs,
|
||||
ZeroShotClassificationArgs,
|
||||
InferenceClient,
|
||||
} from '@huggingface/inference';
|
||||
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
|
||||
import { huggingFaceAuth } from '../../index';
|
||||
|
||||
export const textClassification = createAction({
|
||||
name: 'text_classification',
|
||||
auth: huggingFaceAuth,
|
||||
displayName: 'Text Classification',
|
||||
description:
|
||||
'Classify text into categories using Hugging Face models - includes zero-shot classification for custom categories',
|
||||
props: {
|
||||
classificationMode: Property.StaticDropdown({
|
||||
displayName: 'Classification Type',
|
||||
description: 'Choose your classification approach',
|
||||
required: true,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{
|
||||
label: '🎯 Zero-Shot (Custom Categories)',
|
||||
value: 'zero-shot',
|
||||
},
|
||||
{
|
||||
label: '📊 Pre-trained Models',
|
||||
value: 'pretrained',
|
||||
},
|
||||
{
|
||||
label: '🔍 Search All Models',
|
||||
value: 'search',
|
||||
},
|
||||
],
|
||||
},
|
||||
defaultValue: 'zero-shot',
|
||||
}),
|
||||
zeroShotModel: Property.StaticDropdown({
|
||||
displayName: 'Zero-Shot Model',
|
||||
description: 'Model for classifying into your custom categories',
|
||||
required: false,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{
|
||||
label: '🔥 Facebook BART-Large (5.4M downloads)',
|
||||
value: 'facebook/bart-large-mnli',
|
||||
},
|
||||
{
|
||||
label: '🔥 DeBERTa TaskSource (904K downloads)',
|
||||
value: 'sileod/deberta-v3-base-tasksource-nli',
|
||||
},
|
||||
{
|
||||
label: '🔥 DeBERTa MNLI-FEVER (668K downloads)',
|
||||
value: 'MoritzLaurer/DeBERTa-v3-base-mnli-fever-anli',
|
||||
},
|
||||
{
|
||||
label: '🌍 DistilBERT Multilingual (520K downloads)',
|
||||
value:
|
||||
'lxyuan/distilbert-base-multilingual-cased-sentiments-student',
|
||||
},
|
||||
],
|
||||
},
|
||||
defaultValue: 'facebook/bart-large-mnli',
|
||||
}),
|
||||
customLabels: Property.LongText({
|
||||
displayName: 'Custom Categories',
|
||||
description:
|
||||
'Enter categories separated by commas (e.g., "customer support, sales inquiry, spam, billing question")',
|
||||
required: false,
|
||||
}),
|
||||
pretrainedModel: Property.StaticDropdown({
|
||||
displayName: 'Pre-trained Model',
|
||||
description: 'Select a specialized pre-trained classification model',
|
||||
required: false,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
// === SENTIMENT ANALYSIS ===
|
||||
{
|
||||
label: '😊 Sentiment: Twitter RoBERTa (3M downloads)',
|
||||
value: 'cardiffnlp/twitter-roberta-base-sentiment-latest',
|
||||
},
|
||||
{
|
||||
label: '😊 Sentiment: DistilBERT SST-2 (2.9M downloads)',
|
||||
value: 'distilbert/distilbert-base-uncased-finetuned-sst-2-english',
|
||||
},
|
||||
{
|
||||
label: '🌍 Sentiment: Multilingual BERT (1.7M downloads)',
|
||||
value: 'nlptown/bert-base-multilingual-uncased-sentiment',
|
||||
},
|
||||
|
||||
// === BUSINESS & FINANCE ===
|
||||
{
|
||||
label: '💰 Finance: FinBERT Sentiment (1.5M downloads)',
|
||||
value: 'ProsusAI/finbert',
|
||||
},
|
||||
{
|
||||
label: '💰 Finance: FinBERT Tone (1.4M downloads)',
|
||||
value: 'yiyanghkust/finbert-tone',
|
||||
},
|
||||
|
||||
// === CONTENT MODERATION ===
|
||||
{
|
||||
label: '🛡️ Hate Speech: RoBERTa (2M downloads)',
|
||||
value: 'facebook/roberta-hate-speech-dynabench-r4-target',
|
||||
},
|
||||
{
|
||||
label: '🛡️ Toxicity: HateBERT (1.1M downloads)',
|
||||
value: 'tomh/toxigen_hatebert',
|
||||
},
|
||||
{
|
||||
label: '🛡️ Toxicity: ToxDect RoBERTa (1.1M downloads)',
|
||||
value: 'Xuhui/ToxDect-roberta-large',
|
||||
},
|
||||
|
||||
// === CUSTOMER SERVICE ===
|
||||
{
|
||||
label: '🎧 Customer Service: Banking Intent',
|
||||
value:
|
||||
'atulgupta002/banking_customer_service_query_intent_classifier',
|
||||
},
|
||||
{
|
||||
label: '📧 Spam: SMS Classification',
|
||||
value: 'wesleyacheng/sms-spam-classification-with-bert',
|
||||
},
|
||||
],
|
||||
},
|
||||
defaultValue: 'cardiffnlp/twitter-roberta-base-sentiment-latest',
|
||||
}),
|
||||
searchModel: Property.Dropdown({
|
||||
auth: huggingFaceAuth,
|
||||
displayName: 'Search Models',
|
||||
description: 'Search from all available text classification models',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
const popularModels = [
|
||||
{
|
||||
label: '🔥 Facebook BART Zero-Shot (5.4M downloads)',
|
||||
value: 'facebook/bart-large-mnli',
|
||||
},
|
||||
{
|
||||
label: '🔥 Twitter Sentiment RoBERTa (3M downloads)',
|
||||
value: 'cardiffnlp/twitter-roberta-base-sentiment-latest',
|
||||
},
|
||||
{
|
||||
label: '🔥 DistilBERT Sentiment (2.9M downloads)',
|
||||
value: 'distilbert/distilbert-base-uncased-finetuned-sst-2-english',
|
||||
},
|
||||
];
|
||||
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: popularModels,
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await httpClient.sendRequest({
|
||||
method: HttpMethod.GET,
|
||||
url: 'https://huggingface.co/api/models',
|
||||
queryParams: {
|
||||
filter: 'text-classification',
|
||||
sort: 'downloads',
|
||||
direction: '-1',
|
||||
limit: '100',
|
||||
},
|
||||
});
|
||||
|
||||
const models = response.body as Array<{
|
||||
id: string;
|
||||
downloads: number;
|
||||
pipeline_tag: string;
|
||||
}>;
|
||||
|
||||
const classificationModels = models
|
||||
.filter(
|
||||
(model) =>
|
||||
model.pipeline_tag === 'text-classification' ||
|
||||
model.pipeline_tag === 'zero-shot-classification'
|
||||
)
|
||||
.map((model) => ({
|
||||
label: `${model.id} (${
|
||||
model.downloads?.toLocaleString() || 0
|
||||
} downloads)`,
|
||||
value: model.id,
|
||||
}))
|
||||
.slice(0, 50);
|
||||
|
||||
const allOptions = [
|
||||
...popularModels,
|
||||
...classificationModels.filter(
|
||||
(model) =>
|
||||
!popularModels.some((popular) => popular.value === model.value)
|
||||
),
|
||||
];
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: allOptions,
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: popularModels,
|
||||
};
|
||||
}
|
||||
},
|
||||
}),
|
||||
text: Property.LongText({
|
||||
displayName: 'Text to Classify',
|
||||
description: 'The text content you want to classify',
|
||||
required: true,
|
||||
}),
|
||||
topK: Property.Number({
|
||||
displayName: 'Number of Results',
|
||||
description: 'Number of top predictions to return',
|
||||
required: false,
|
||||
defaultValue: 3,
|
||||
}),
|
||||
functionToApply: Property.StaticDropdown({
|
||||
displayName: 'Output Function',
|
||||
description: 'How to calculate confidence scores',
|
||||
required: false,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{ label: 'Softmax (Recommended)', value: 'softmax' },
|
||||
{ label: 'Sigmoid', value: 'sigmoid' },
|
||||
{ label: 'None (Raw Scores)', value: 'none' },
|
||||
],
|
||||
},
|
||||
defaultValue: 'softmax',
|
||||
}),
|
||||
useCache: Property.Checkbox({
|
||||
displayName: 'Use Cache',
|
||||
description: 'Use cached results for faster responses',
|
||||
required: false,
|
||||
defaultValue: true,
|
||||
}),
|
||||
waitForModel: Property.Checkbox({
|
||||
displayName: 'Wait for Model',
|
||||
description: 'Wait for model to load if not immediately available',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const {
|
||||
classificationMode,
|
||||
zeroShotModel,
|
||||
customLabels,
|
||||
pretrainedModel,
|
||||
searchModel,
|
||||
text,
|
||||
topK,
|
||||
functionToApply,
|
||||
useCache,
|
||||
waitForModel,
|
||||
} = context.propsValue;
|
||||
|
||||
// Determine which model to use
|
||||
let modelToUse: string;
|
||||
let isZeroShot = false;
|
||||
|
||||
switch (classificationMode) {
|
||||
case 'zero-shot':
|
||||
if (!customLabels?.trim()) {
|
||||
throw new Error(
|
||||
'Please provide custom categories for zero-shot classification (e.g., "positive, negative, neutral")'
|
||||
);
|
||||
}
|
||||
modelToUse = zeroShotModel || 'facebook/bart-large-mnli';
|
||||
isZeroShot = true;
|
||||
break;
|
||||
case 'pretrained':
|
||||
modelToUse =
|
||||
pretrainedModel || 'cardiffnlp/twitter-roberta-base-sentiment-latest';
|
||||
break;
|
||||
case 'search':
|
||||
if (!searchModel) {
|
||||
throw new Error('Please select a model from the search dropdown');
|
||||
}
|
||||
modelToUse = searchModel;
|
||||
break;
|
||||
default:
|
||||
modelToUse = zeroShotModel || 'facebook/bart-large-mnli';
|
||||
isZeroShot = true;
|
||||
}
|
||||
|
||||
const hf = new InferenceClient(context.auth.secret_text);
|
||||
|
||||
if (isZeroShot) {
|
||||
// Handle zero-shot classification
|
||||
const labels = (customLabels || '')
|
||||
.split(',')
|
||||
.map((label: string) => label.trim())
|
||||
.filter((label: string) => label.length > 0);
|
||||
|
||||
if (labels.length === 0) {
|
||||
throw new Error(
|
||||
'Please provide at least one category for zero-shot classification'
|
||||
);
|
||||
}
|
||||
|
||||
const args: ZeroShotClassificationArgs = {
|
||||
model: modelToUse,
|
||||
inputs: text,
|
||||
parameters: {
|
||||
candidate_labels: labels,
|
||||
},
|
||||
options: {
|
||||
use_cache: useCache ?? true,
|
||||
wait_for_model: waitForModel ?? false,
|
||||
},
|
||||
};
|
||||
|
||||
const zeroShotResult = await hf.zeroShotClassification(args);
|
||||
|
||||
// The result is already an array of {label, score} objects
|
||||
const classifications = Array.isArray(zeroShotResult)
|
||||
? zeroShotResult
|
||||
: [zeroShotResult];
|
||||
|
||||
// Sort by score and limit to topK
|
||||
const sortedResults = classifications
|
||||
.sort((a: { score: number }, b: { score: number }) => b.score - a.score)
|
||||
.slice(0, topK || 3);
|
||||
|
||||
return {
|
||||
predictions: sortedResults,
|
||||
topPrediction: sortedResults[0],
|
||||
text: text,
|
||||
model: modelToUse,
|
||||
classificationMode: 'zero-shot',
|
||||
customCategories: labels,
|
||||
confidenceThreshold: 0.5,
|
||||
highConfidencePredictions: sortedResults.filter(
|
||||
(r: { score: number }) => r.score > 0.5
|
||||
),
|
||||
rawResult: zeroShotResult,
|
||||
};
|
||||
} else {
|
||||
// Handle regular text classification
|
||||
const args: TextClassificationArgs = {
|
||||
model: modelToUse,
|
||||
inputs: text,
|
||||
options: {
|
||||
use_cache: useCache ?? true,
|
||||
wait_for_model: waitForModel ?? false,
|
||||
},
|
||||
};
|
||||
|
||||
const parameters: {
|
||||
top_k?: number;
|
||||
function_to_apply?: 'softmax' | 'sigmoid' | 'none';
|
||||
} = {};
|
||||
|
||||
if (topK !== undefined && topK > 0) {
|
||||
parameters.top_k = topK;
|
||||
}
|
||||
|
||||
if (
|
||||
functionToApply &&
|
||||
(functionToApply === 'softmax' ||
|
||||
functionToApply === 'sigmoid' ||
|
||||
functionToApply === 'none')
|
||||
) {
|
||||
parameters.function_to_apply = functionToApply;
|
||||
}
|
||||
|
||||
if (Object.keys(parameters).length > 0) {
|
||||
args.parameters = parameters;
|
||||
}
|
||||
|
||||
const classificationResult = await hf.textClassification(args);
|
||||
|
||||
// Ensure result is an array
|
||||
const results = Array.isArray(classificationResult)
|
||||
? classificationResult
|
||||
: [classificationResult];
|
||||
|
||||
return {
|
||||
predictions: results,
|
||||
topPrediction: results[0],
|
||||
text: text,
|
||||
model: modelToUse,
|
||||
classificationMode: 'pretrained',
|
||||
confidenceThreshold: 0.5,
|
||||
highConfidencePredictions: results.filter(
|
||||
(r: { score: number }) => r.score > 0.5
|
||||
),
|
||||
rawResult: classificationResult,
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,496 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { SummarizationArgs, InferenceClient } from '@huggingface/inference';
|
||||
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
|
||||
import { huggingFaceAuth } from '../../index';
|
||||
|
||||
export const textSummarization = createAction({
|
||||
name: 'text_summarization',
|
||||
auth: huggingFaceAuth,
|
||||
displayName: 'Text Summarization',
|
||||
description:
|
||||
'Generate abstractive summaries of long text using Hugging Face models - optimized for business content',
|
||||
props: {
|
||||
contentType: Property.StaticDropdown({
|
||||
displayName: 'Content Type',
|
||||
description: 'What type of content are you summarizing?',
|
||||
required: true,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{
|
||||
label: '📰 News Articles & Blog Posts',
|
||||
value: 'news',
|
||||
},
|
||||
{
|
||||
label: '📧 Emails & Support Tickets',
|
||||
value: 'email',
|
||||
},
|
||||
{
|
||||
label: '🎯 Meetings & Conversations',
|
||||
value: 'meeting',
|
||||
},
|
||||
{
|
||||
label: '📚 General Text & Documents',
|
||||
value: 'general',
|
||||
},
|
||||
{
|
||||
label: '🏥 Medical & Scientific',
|
||||
value: 'medical',
|
||||
},
|
||||
{
|
||||
label: '🌍 Multilingual Content',
|
||||
value: 'multilingual',
|
||||
},
|
||||
{
|
||||
label: '🔍 Search All Models',
|
||||
value: 'search',
|
||||
},
|
||||
],
|
||||
},
|
||||
defaultValue: 'news',
|
||||
}),
|
||||
model: Property.Dropdown({
|
||||
auth: huggingFaceAuth,
|
||||
displayName: 'Summarization Model',
|
||||
description: 'Select the best model for your content type',
|
||||
required: true,
|
||||
refreshers: ['contentType'],
|
||||
options: async ({ auth, contentType }) => {
|
||||
// Define model options based on content type
|
||||
const getModelsByType = (type: string) => {
|
||||
switch (type) {
|
||||
case 'news':
|
||||
return [
|
||||
{
|
||||
label:
|
||||
'🔥 Facebook BART-CNN (4.5M downloads) - News optimized',
|
||||
value: 'facebook/bart-large-cnn',
|
||||
},
|
||||
{
|
||||
label: '⚡ DistilBART-CNN (2M downloads) - Faster',
|
||||
value: 'sshleifer/distilbart-cnn-12-6',
|
||||
},
|
||||
{
|
||||
label:
|
||||
'📝 Google Pegasus-XSum (118K downloads) - Abstractive',
|
||||
value: 'google/pegasus-xsum',
|
||||
},
|
||||
];
|
||||
case 'email':
|
||||
return [
|
||||
{
|
||||
label: '🔥 Facebook BART-CNN (4.5M downloads) - Best overall',
|
||||
value: 'facebook/bart-large-cnn',
|
||||
},
|
||||
{
|
||||
label:
|
||||
'📧 Falconsai Text Summary (30K downloads) - General text',
|
||||
value: 'Falconsai/text_summarization',
|
||||
},
|
||||
{
|
||||
label:
|
||||
'⚡ Google T5-Small (2.7M downloads) - Fast & versatile',
|
||||
value: 'google-t5/t5-small',
|
||||
},
|
||||
];
|
||||
case 'meeting':
|
||||
return [
|
||||
{
|
||||
label:
|
||||
'🎯 Meeting Summary (29K downloads) - Meeting optimized',
|
||||
value: 'knkarthick/MEETING_SUMMARY',
|
||||
},
|
||||
{
|
||||
label:
|
||||
'💬 BART SAMSum (104K downloads) - Conversation focused',
|
||||
value: 'philschmid/bart-large-cnn-samsum',
|
||||
},
|
||||
{
|
||||
label: '🔥 Facebook BART-CNN (4.5M downloads) - Reliable',
|
||||
value: 'facebook/bart-large-cnn',
|
||||
},
|
||||
];
|
||||
case 'general':
|
||||
return [
|
||||
{
|
||||
label: '🔥 Google T5-Base (1.7M downloads) - High quality',
|
||||
value: 'google-t5/t5-base',
|
||||
},
|
||||
{
|
||||
label: '⚡ Google T5-Small (2.7M downloads) - Fast',
|
||||
value: 'google-t5/t5-small',
|
||||
},
|
||||
{
|
||||
label: '🎯 Google T5-Large (327K downloads) - Best quality',
|
||||
value: 'google-t5/t5-large',
|
||||
},
|
||||
];
|
||||
case 'medical':
|
||||
return [
|
||||
{
|
||||
label:
|
||||
'🏥 Medical Summarization (45K downloads) - Medical optimized',
|
||||
value: 'Falconsai/medical_summarization',
|
||||
},
|
||||
{
|
||||
label: '📚 Google T5-Base (1.7M downloads) - General purpose',
|
||||
value: 'google-t5/t5-base',
|
||||
},
|
||||
{
|
||||
label: '🔥 Facebook BART-CNN (4.5M downloads) - Reliable',
|
||||
value: 'facebook/bart-large-cnn',
|
||||
},
|
||||
];
|
||||
case 'multilingual':
|
||||
return [
|
||||
{
|
||||
label: '🌍 mT5 Multilingual (37K downloads) - 44 languages',
|
||||
value: 'csebuetnlp/mT5_multilingual_XLSum',
|
||||
},
|
||||
{
|
||||
label:
|
||||
'⚡ Google T5-Small (2.7M downloads) - Multilingual capable',
|
||||
value: 'google-t5/t5-small',
|
||||
},
|
||||
{
|
||||
label: '🎯 Google T5-Base (1.7M downloads) - Better quality',
|
||||
value: 'google-t5/t5-base',
|
||||
},
|
||||
];
|
||||
default:
|
||||
return [
|
||||
{
|
||||
label: '🔥 Facebook BART-CNN (4.5M downloads)',
|
||||
value: 'facebook/bart-large-cnn',
|
||||
},
|
||||
];
|
||||
}
|
||||
};
|
||||
|
||||
// Return content-specific models for non-search types
|
||||
if (contentType !== 'search') {
|
||||
return {
|
||||
disabled: false,
|
||||
options: getModelsByType((contentType as string) || 'news'),
|
||||
};
|
||||
}
|
||||
|
||||
// Handle search mode - load all summarization models
|
||||
const popularModels = [
|
||||
{
|
||||
label: '🔥 Facebook BART-CNN (4.5M downloads)',
|
||||
value: 'facebook/bart-large-cnn',
|
||||
},
|
||||
{
|
||||
label: '⚡ DistilBART-CNN (2M downloads)',
|
||||
value: 'sshleifer/distilbart-cnn-12-6',
|
||||
},
|
||||
{
|
||||
label: '🎯 Google T5-Base (1.7M downloads)',
|
||||
value: 'google-t5/t5-base',
|
||||
},
|
||||
];
|
||||
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: popularModels,
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await httpClient.sendRequest({
|
||||
method: HttpMethod.GET,
|
||||
url: 'https://huggingface.co/api/models',
|
||||
queryParams: {
|
||||
filter: 'summarization',
|
||||
sort: 'downloads',
|
||||
direction: '-1',
|
||||
limit: '100',
|
||||
},
|
||||
});
|
||||
|
||||
const models = response.body as Array<{
|
||||
id: string;
|
||||
downloads: number;
|
||||
pipeline_tag: string;
|
||||
}>;
|
||||
|
||||
const summarizationModels = models
|
||||
.filter((model) => model.pipeline_tag === 'summarization')
|
||||
.map((model) => ({
|
||||
label: `${model.id} (${
|
||||
model.downloads?.toLocaleString() || 0
|
||||
} downloads)`,
|
||||
value: model.id,
|
||||
}))
|
||||
.slice(0, 50);
|
||||
|
||||
const allOptions = [
|
||||
...popularModels,
|
||||
...summarizationModels.filter(
|
||||
(model) =>
|
||||
!popularModels.some((popular) => popular.value === model.value)
|
||||
),
|
||||
];
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: allOptions,
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: popularModels,
|
||||
};
|
||||
}
|
||||
},
|
||||
defaultValue: 'facebook/bart-large-cnn',
|
||||
}),
|
||||
text: Property.LongText({
|
||||
displayName: 'Text to Summarize',
|
||||
description:
|
||||
'The long text content you want to summarize (most models work best with 512-1024 tokens)',
|
||||
required: true,
|
||||
}),
|
||||
summaryLength: Property.StaticDropdown({
|
||||
displayName: 'Summary Length',
|
||||
description: 'How long should the summary be?',
|
||||
required: false,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{ label: '📝 Brief (30-80 words)', value: 'brief' },
|
||||
{ label: '📄 Medium (80-150 words)', value: 'medium' },
|
||||
{ label: '📚 Detailed (150-300 words)', value: 'detailed' },
|
||||
{ label: '⚙️ Custom Length', value: 'custom' },
|
||||
],
|
||||
},
|
||||
defaultValue: 'medium',
|
||||
}),
|
||||
customMinLength: Property.Number({
|
||||
displayName: 'Custom Min Length',
|
||||
description: 'Minimum number of tokens for the summary',
|
||||
required: false,
|
||||
}),
|
||||
customMaxLength: Property.Number({
|
||||
displayName: 'Custom Max Length',
|
||||
description: 'Maximum number of tokens for the summary',
|
||||
required: false,
|
||||
}),
|
||||
cleanUpSpaces: Property.Checkbox({
|
||||
displayName: 'Clean Up Extra Spaces',
|
||||
description: 'Remove extra spaces and clean up formatting',
|
||||
required: false,
|
||||
defaultValue: true,
|
||||
}),
|
||||
truncationStrategy: Property.StaticDropdown({
|
||||
displayName: 'Truncation Strategy',
|
||||
description: 'How to handle text that exceeds model limits',
|
||||
required: false,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{ label: 'Do Not Truncate', value: 'do_not_truncate' },
|
||||
{ label: 'Longest First', value: 'longest_first' },
|
||||
{ label: 'Only First', value: 'only_first' },
|
||||
{ label: 'Only Second', value: 'only_second' },
|
||||
],
|
||||
},
|
||||
defaultValue: 'longest_first',
|
||||
}),
|
||||
useCache: Property.Checkbox({
|
||||
displayName: 'Use Cache',
|
||||
description: 'Use cached results for faster responses',
|
||||
required: false,
|
||||
defaultValue: true,
|
||||
}),
|
||||
waitForModel: Property.Checkbox({
|
||||
displayName: 'Wait for Model',
|
||||
description: 'Wait for model to load if not immediately available',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const {
|
||||
contentType,
|
||||
model,
|
||||
text,
|
||||
summaryLength,
|
||||
customMinLength,
|
||||
customMaxLength,
|
||||
cleanUpSpaces,
|
||||
truncationStrategy,
|
||||
useCache,
|
||||
waitForModel,
|
||||
} = context.propsValue;
|
||||
|
||||
// Calculate appropriate summary lengths based on selection
|
||||
let minLength: number;
|
||||
let maxLength: number;
|
||||
|
||||
switch (summaryLength) {
|
||||
case 'brief':
|
||||
minLength = 30;
|
||||
maxLength = 80;
|
||||
break;
|
||||
case 'medium':
|
||||
minLength = 80;
|
||||
maxLength = 150;
|
||||
break;
|
||||
case 'detailed':
|
||||
minLength = 150;
|
||||
maxLength = 300;
|
||||
break;
|
||||
case 'custom':
|
||||
minLength = customMinLength || 50;
|
||||
maxLength = customMaxLength || 150;
|
||||
break;
|
||||
default:
|
||||
minLength = 80;
|
||||
maxLength = 150;
|
||||
}
|
||||
|
||||
const hf = new InferenceClient(context.auth.secret_text);
|
||||
|
||||
const args: SummarizationArgs = {
|
||||
model: model,
|
||||
inputs: text,
|
||||
options: {
|
||||
use_cache: useCache ?? true,
|
||||
wait_for_model: waitForModel ?? false,
|
||||
},
|
||||
};
|
||||
|
||||
// Build parameters object
|
||||
const parameters: {
|
||||
clean_up_tokenization_spaces?: boolean;
|
||||
truncation?:
|
||||
| 'do_not_truncate'
|
||||
| 'longest_first'
|
||||
| 'only_first'
|
||||
| 'only_second';
|
||||
generate_parameters?: {
|
||||
min_length?: number;
|
||||
max_length?: number;
|
||||
do_sample?: boolean;
|
||||
temperature?: number;
|
||||
};
|
||||
} = {};
|
||||
|
||||
if (cleanUpSpaces !== undefined) {
|
||||
parameters.clean_up_tokenization_spaces = cleanUpSpaces;
|
||||
}
|
||||
|
||||
if (
|
||||
truncationStrategy &&
|
||||
(truncationStrategy === 'do_not_truncate' ||
|
||||
truncationStrategy === 'longest_first' ||
|
||||
truncationStrategy === 'only_first' ||
|
||||
truncationStrategy === 'only_second')
|
||||
) {
|
||||
parameters.truncation = truncationStrategy;
|
||||
}
|
||||
|
||||
// Add generation parameters
|
||||
parameters.generate_parameters = {
|
||||
min_length: minLength,
|
||||
max_length: maxLength,
|
||||
do_sample: false, // Use greedy decoding for consistent summaries
|
||||
temperature: 0.7, // Slight randomness for more natural summaries
|
||||
};
|
||||
|
||||
if (Object.keys(parameters).length > 0) {
|
||||
args.parameters = parameters;
|
||||
}
|
||||
|
||||
const summarizationResult = await hf.summarization(args);
|
||||
|
||||
// Calculate text statistics
|
||||
const originalLength = text.length;
|
||||
const originalWords = text.trim().split(/\s+/).length;
|
||||
const summaryText = summarizationResult.summary_text;
|
||||
const summaryWords = summaryText.trim().split(/\s+/).length;
|
||||
const compressionRatio = (
|
||||
((originalWords - summaryWords) / originalWords) *
|
||||
100
|
||||
).toFixed(1);
|
||||
|
||||
return {
|
||||
summary: summaryText,
|
||||
originalText: text,
|
||||
statistics: {
|
||||
originalLength: originalLength,
|
||||
originalWords: originalWords,
|
||||
summaryLength: summaryText.length,
|
||||
summaryWords: summaryWords,
|
||||
compressionRatio: `${compressionRatio}%`,
|
||||
lengthCategory: summaryLength,
|
||||
},
|
||||
model: model,
|
||||
contentType: contentType,
|
||||
businessInsights: {
|
||||
readingTimeSaved: `${Math.max(
|
||||
1,
|
||||
Math.round((originalWords - summaryWords) / 200)
|
||||
)} minutes`, // Assume 200 words per minute
|
||||
useCase: getSuggestedUseCase(contentType),
|
||||
qualityTips: getQualityTips(originalWords, summaryWords),
|
||||
},
|
||||
rawResult: summarizationResult,
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
// Helper function to suggest business use cases
|
||||
function getSuggestedUseCase(contentType: string): string {
|
||||
const useCases = {
|
||||
news: 'Perfect for news briefings, blog post previews, and content curation',
|
||||
email: 'Ideal for customer support dashboards and email triage systems',
|
||||
meeting:
|
||||
'Great for meeting minutes, call summaries, and action item extraction',
|
||||
general: 'Suitable for document summaries and knowledge base creation',
|
||||
medical: 'Designed for medical reports and research paper abstracts',
|
||||
multilingual:
|
||||
'Perfect for global content management and translation workflows',
|
||||
search: 'Custom model selection for specialized summarization needs',
|
||||
};
|
||||
return (
|
||||
useCases[contentType as keyof typeof useCases] ||
|
||||
'General purpose text summarization'
|
||||
);
|
||||
}
|
||||
|
||||
// Helper function to provide quality tips
|
||||
function getQualityTips(originalWords: number, summaryWords: number): string[] {
|
||||
const tips: string[] = [];
|
||||
|
||||
if (originalWords < 100) {
|
||||
tips.push('⚠️ Text is quite short - summaries work best with 200+ words');
|
||||
}
|
||||
|
||||
if (originalWords > 2000) {
|
||||
tips.push(
|
||||
'📝 Very long text - consider breaking into sections for better results'
|
||||
);
|
||||
}
|
||||
|
||||
if (summaryWords / originalWords > 0.7) {
|
||||
tips.push(
|
||||
'💡 Summary is quite long - try Brief mode for more concise results'
|
||||
);
|
||||
}
|
||||
|
||||
if (summaryWords / originalWords < 0.1) {
|
||||
tips.push(
|
||||
'🔍 Very aggressive summarization - try Medium or Detailed for more context'
|
||||
);
|
||||
}
|
||||
|
||||
if (tips.length === 0) {
|
||||
tips.push('✅ Good summarization ratio achieved');
|
||||
}
|
||||
|
||||
return tips;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"extends": "../../../../tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"strict": true,
|
||||
"noImplicitOverride": true,
|
||||
"noImplicitReturns": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"noPropertyAccessFromIndexSignature": true
|
||||
},
|
||||
"files": [],
|
||||
"include": [],
|
||||
"references": [
|
||||
{
|
||||
"path": "./tsconfig.lib.json"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"extends": "./tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"outDir": "../../../../dist/out-tsc",
|
||||
"declaration": true,
|
||||
"types": ["node"]
|
||||
},
|
||||
"exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"],
|
||||
"include": ["src/**/*.ts"]
|
||||
}
|
||||
Reference in New Issue
Block a user