Zum Inhalt springen

Benutzerdefiniertes AI-Modul

Mit diesem Modul kannst du AI-Anbieter verbinden, die von Crowdin noch nicht unterstützt werden. Nachdem du eine solche App erstellt hast, kannst du deine Inhalte mit dem verbundenen AI-Anbieter automatisch übersetzen und den AI-Anbieter als Assistenten im Editor verwenden.

Du kannst Zugriff auf dieses Modul für eine der folgenden Benutzerkategorien gewähren:

Für Crowdin:

  • Nur ich (also der Projektinhaber)
  • Alle Projektmitglieder
  • Ausgewählte Benutzer

Für Crowdin Enterprise:

  • Nur Organisationsadministratoren
  • Alle Benutzer in den Projekten der Organisation
  • Ausgewählte Benutzer
manifest.json
{
"modules": {
"ai-provider": [
{
"key": "custom-ai",
"name": "Custom Open AI",
"logo": "/logo.png",
"url": "/ai-settings",
"chatCompletionsUrl": "/chat/completions",
"modelsUrl": "/models"
}
]
}
}
key

Typ: string

Erforderlich: ja

Beschreibung: Kennung des Moduls innerhalb der Crowdin-App.

name

Typ: string

Erforderlich: ja

Beschreibung: Der für Menschen lesbare Name des Moduls.

logo

Typ: string

Erforderlich: ja

Beschreibung: Die relative URL zum Logo der benutzerdefinierten KI, das in der Crowdin-Benutzeroberfläche angezeigt wird.
Die empfohlene Auflösung beträgt 48×48 Pixel.

url

Typ: String

Erforderlich: nein

Beschreibung: Die relative URL zur Seite mit den Moduleinstellungen (z. B. Einstellungen für die Zugangsdaten des KI-Anbieters usw.).

chatCompletionsUrl

Typ: string

Erforderlich: ja

Beschreibung: Die relative URL zum Abrufen von Chat-Vervollständigungen.

modelsUrl

Typ: string

Erforderlich: ja

Beschreibung: Die relative URL zum Abrufen der Liste der vom AI-Anbieter unterstützten Modelle.

environments

Typ: string

Zulässige Werte: crowdin, crowdin-enterprise

Beschreibung: Menge der Umgebungen, in denen ein Modul installiert werden kann.
Dieser Parameter wird für produktübergreifende Anwendungen benötigt.

restrictAiToSameApp

Typ: boolean

Beschreibung: Wenn deine Anwendung sowohl die Module AI Provider als auch AI Prompt Provider implementiert und du sie auf die Verwendung als Paar beschränken musst, kannst du diese Eigenschaft aktivieren, um dieses Verhalten sicherzustellen. Wenn diese Eigenschaft aktiviert ist, können Prompts, die den KI-Anbieter der Anwendung verwenden, nur gespeichert werden, wenn sie denselben KI-Prompt-Anbieter der Anwendung verwenden, und umgekehrt.

Crowdin sendet Prompts über chatCompletionsUrl an die App. Die App verarbeitet diese Prompts anschließend und antwortet Crowdin.

Für eine bessere Erfahrung bei der Verwendung deiner benutzerdefinierten AI als Assistent im Crowdin Editor wird empfohlen, den Parameter stream mithilfe von Server-Sent Events zu implementieren.

Wenn Streaming unterstützt wird, können AI-generierte Inhalte schrittweise bereitgestellt werden und Nutzern Echtzeit-Feedback geben. Dadurch wird der Workflow verbessert, da sofortige Vorschläge oder Korrekturen angeboten werden, ohne auf eine vollständige Antwort warten zu müssen. So entsteht eine reibungslose, interaktive Erfahrung bei Aufgaben wie der Bestätigung von Terminologie und der Überprüfung der Konsistenz.

Crowdin fügt Anfragen an die App für chatCompletions den Parameter stream mit dem Wert true hinzu und erwartet eine Antwort im entsprechenden Format.

Beim Konfigurieren eines benutzerdefinierten AI-Anbieters auf der Seite AI > Providers sendet Crowdin mithilfe von modelsUrl eine Anfrage an die App, um verfügbare Modelle im entsprechenden Eingabefeld des Anbieters für benutzerdefinierte AI anzuzeigen. Du kannst die benötigten Modelle auswählen und speichern. Sie werden anschließend für die automatische Übersetzung von Inhalten und die Kommunikation mit dem Assistenten über chatCompletionsUrl verwendet.

HTTP-Anfrage:

Terminal-Fenster
https://{AppBaseUrl}/chat/completions/

Anfrage-Header

Die Anfrage an chatCompletionsUrl enthält Autorisierungs-Header (z. B. Authorization: Bearer \<App JWT token>).

Beispiel für die Nutzlast der Anfrage:

{
"model": "gpt-3.5-turbo",
"stream": false,
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Prompt"
},
{
"type": "image",
"mimeType": "image/png",
"url": "https://picsum.photos/200/300"
}
]
},
{
"role": "assistant",
"content": "Reply"
},
{
"role": "user",
"content": "New prompt"
}
]
}

Beispiel für die Nutzlast der Antwort:

{
"choices": [
{
"message": {
"role": "assistant",
"content": "New reply"
}
}
]
}

Beispiel für die Nutzlast der Antwort:

data: {"choices":[{"delta":{"role":"assistant","content":"Your"}}]}
data: {"choices":[{"delta":{"role":"assistant","content":" rephrased"}}]}
....
data: {"choices":[{"delta":{"role":"assistant","content":" translation"}}]}
[DONE]

Beispiel für die Nutzlast der Antwort:

{
"data": [
{
"id": "gpt-3.5-turbo",
"supportsJsonMode": true,
"supportsFunctionCalling": true,
"supportsVision": false,
"contextWindowLimit": 16385,
"outputLimit": 4096
},
{
"id": "gpt-4-turbo",
"supportsJsonMode": true,
"supportsFunctionCalling": true,
"supportsVision": true,
"contextWindowLimit": 128000,
"outputLimit": 4096
},
{
"id": "gpt-5-power",
"supportsJsonMode": true,
"supportsFunctionCalling": true,
"supportsVision": true,
"contextWindowLimit": 1000000,
"outputLimit": 8192
},
{
"id": "gpt-6-devil",
"supportsJsonMode": true,
"supportsFunctionCalling": true,
"supportsStreaming": true,
"supportsVision": true,
"contextWindowLimit": 1000000,
"outputLimit": 8192
},
{
"id": "gpt-7-magic",
"supportsJsonMode": true,
"supportsFunctionCalling": true,
"supportsStreaming": true,
"supportsVision": true,
"contextWindowLimit": 1000000,
"outputLimit": 8192
}
]
}

Standardwerte:

  • supportsJsonMode: false
  • supportsFunctionCalling: false
  • supportsStreaming: false
  • supportsVision: false
  • contextWindowLimit: 4096
  • outputLimit: 4096

Die Struktur der Antworten der App muss den dargestellten Beispielen entsprechen. Andernfalls betrachtet Crowdin sie als ungültig.

War diese Seite hilfreich?