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
{ "modules": { "ai-provider": [ { "key": "custom-ai", "name": "Custom Open AI", "logo": "/logo.png", "url": "/ai-settings", "chatCompletionsUrl": "/chat/completions", "modelsUrl": "/models" } ] }}key | Typ: Erforderlich: ja Beschreibung: Kennung des Moduls innerhalb der Crowdin-App. |
name | Typ: Erforderlich: ja Beschreibung: Der für Menschen lesbare Name des Moduls. |
logo | Typ: Erforderlich: ja Beschreibung: Die relative URL zum Logo der benutzerdefinierten KI, das in der Crowdin-Benutzeroberfläche angezeigt wird. |
url | Typ: Erforderlich: nein Beschreibung: Die relative URL zur Seite mit den Moduleinstellungen (z. B. Einstellungen für die Zugangsdaten des KI-Anbieters usw.). |
chatCompletionsUrl | Typ: Erforderlich: ja Beschreibung: Die relative URL zum Abrufen von Chat-Vervollständigungen. |
modelsUrl | Typ: Erforderlich: ja Beschreibung: Die relative URL zum Abrufen der Liste der vom AI-Anbieter unterstützten Modelle. |
environments | Typ: Zulässige Werte: Beschreibung: Menge der Umgebungen, in denen ein Modul installiert werden kann. |
restrictAiToSameApp | Typ: 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. |
Kommunikation zwischen der benutzerdefinierten AI-App und Crowdin
Abschnitt betitelt „Kommunikation zwischen der benutzerdefinierten AI-App und Crowdin“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.
Anfrage von Crowdin an die App für chatCompletions
Abschnitt betitelt „Anfrage von Crowdin an die App für chatCompletions“HTTP-Anfrage:
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]Antwort der App an Crowdin für modelsUrl
Abschnitt betitelt „Antwort der App an Crowdin für modelsUrl“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.