Zum Hauptinhalt springen

API für natürliche Sprache

Senden Sie einen Text und erhalten Sie strukturierte Fakten darüber: zu welchen Themenkategorien er gehört, wie positiv oder negativ er ist, welche Personen, Unternehmen, Orte und Produkte er erwähnt und ob er sensible Themen berührt. Nutzen Sie die API, um Inhalte in großem Umfang zu verschlagworten, Support-Nachrichten weiterzuleiten, Markenerwähnungen zu beobachten oder Seiten vor der Veröffentlichung zu prüfen.

Die API verwendet das Standard-Anfrageformat documents:<method>: ein JSON-Body mit einem document, eine Antwort pro Aufruf. Wenn Ihr Code bereits Anfragen in diesem Format sendet, funktioniert er hier nach zwei Änderungen: der Basis-URL und dem Schlüssel.

Die API für natürliche Sprache funktioniert mit jedem OmevAI-API-Schlüssel ohne gesonderte Freischaltung und wird vom üblichen Guthaben des Schlüssels abgerechnet. Für größere Volumen oder Fragen wenden Sie sich an support@omev.be.

Methoden​

MethodeRouteWas Sie erhalten
Text klassifizierenPOST /v2/documents:classifyTextbis zu 5 Themenkategorien mit Konfidenz, aus der aktuellen Kategorienliste
Text klassifizieren (v1-Route)POST /v1/documents:classifyTextdasselbe, für Code, der für die v1-Route geschrieben wurde; senden Sie die unten gezeigte Option
StimmungPOST /v1/documents:analyzeSentimentdie Gesamttonalität des Textes und jedes Satzes
EntitätenPOST /v1/documents:analyzeEntitiesPersonen, Organisationen, Orte, Ereignisse, Produkte und andere Entitäten mit ihren Erwähnungen
EntitätsstimmungPOST /v1/documents:analyzeEntitySentimentEntitäten plus die Tonalität gegenüber jeder einzelnen
ModerationPOST /v1/documents:moderateTexteine Konfidenz für jede von 16 sensiblen Kategorien
Mehrere auf einmalPOST /v1/documents:annotateTexteine beliebige Kombination der obigen in einem Aufruf

Syntaxanalyse (analyzeSyntax) wird nicht angeboten.

Preis​

MethodePreisGezählt proPreis pro 1 Mio. Zeichen
classifyText (v1 und v2)$0.0011.000 Zeichen$1.00
analyzeSentiment$0.00051.000 Zeichen$0.50
analyzeEntities$0.00051.000 Zeichen$0.50
analyzeEntitySentiment$0.0011.000 Zeichen$1.00
moderateText$0.00025100 Zeichen$2.50
annotateTextdie Summe der eingeschalteten Funktionenwie oben

Gezählt werden Unicode-Zeichen von document.content, aufgerundet auf ganze Einheiten: Ein Text mit 2.300 Zeichen ergibt drei Einheiten für die Klassifizierung und 23 Einheiten für die Moderation. Bei annotateText wird extractEntitySentiment als Entitätsstimmung berechnet und ersetzt die Berechnung für extractEntities. Eine Anfrage, die mit einem Fehler endet, wird nicht berechnet.

Einen Text klassifizieren​

curl -sS "https://llmapi.omev.be/v2/documents:classifyText" \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"document": {
"type": "PLAIN_TEXT",
"content": "Slow-cooked beef ragù: brown the meat, add tomatoes and red wine, then simmer for three hours and serve over fresh pappardelle."
}
}'
{
"categories": [
{"name": "/Food & Drink/Cooking & Recipes", "confidence": 0.93}
],
"languageCode": "en",
"languageSupported": true
}

categories enthält bis zu 5 Kategoriepfade, die beste zuerst. Auf der v1-Route enthält die Antwort nur categories, und die Anfrage muss die aktuelle Kategorienliste anfordern: "classificationModelOptions": {"v2Model": {"contentCategoriesVersion": "V2"}}. Die frühere (V1-)Kategorienliste wird nicht angeboten; eine v1-Anfrage ohne diese Option wird nicht bearbeitet und nicht berechnet.

Das Dokument​

Jede Methode nimmt dasselbe document-Objekt entgegen.

FeldErforderlichWerte
document.typejaPLAIN_TEXT oder HTML
document.contentjader Text selbst, nicht leer, bis zu 1.000.000 Bytes in UTF-8
document.languageCodeneinein Sprachcode wie en; wird automatisch erkannt, wenn er fehlt
encodingTypeneinNONE (Standard), UTF8, UTF16, UTF32: wie beginOffset-Werte gezählt werden; von moderateText nicht akzeptiert

Nur direkt übergebener Text wird akzeptiert; Links zu gespeicherten Dateien werden mit 400 abgelehnt. Unbekannte Felder werden mit 400 abgelehnt.

Stimmung, Entitäten, Moderation und annotateText funktionieren in 26 Sprachen: en, ru, uk, de, fr, es, it, pt, nl, pl, cs, sk, sl, hr, sr, sv, da, no, fi, hu, ro, bg, el, lt, lv, et. Text in einer anderen Sprache wird mit 400 beantwortet.

Stimmung​

curl -sS "https://llmapi.omev.be/v1/documents:analyzeSentiment" \
-H "Authorization: Bearer $OMEV_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"document": {"type": "PLAIN_TEXT", "content": "The parcel arrived two days late. Support fixed it in minutes, though."},
"encodingType": "UTF8"
}'
{
"documentSentiment": {"magnitude": 1.4, "score": 0.1},
"sentences": [
{"text": {"content": "The parcel arrived two days late.", "beginOffset": 0},
"sentiment": {"magnitude": 0.6, "score": -0.6}},
{"text": {"content": "Support fixed it in minutes, though.", "beginOffset": 34},
"sentiment": {"magnitude": 0.8, "score": 0.8}}
],
"language": "en"
}

score reicht von -1 (negativ) bis 1 (positiv). magnitude (ab 0) gibt an, wie viel Emotion der Text insgesamt transportiert: Ein gemischter Text kann einen Wert nahe 0 und zugleich eine hohe Intensität haben.

Entitäten und Entitätsstimmung​

analyzeEntities und analyzeEntitySentiment nehmen denselben Body entgegen. Jedes Element von entities hat:

FeldBedeutung
namedie Entität, wie sie im Text geschrieben steht
typePERSON, ORGANIZATION, LOCATION, EVENT, WORK_OF_ART, CONSUMER_GOOD, OTHER, dazu DATE, NUMBER, PRICE, PHONE_NUMBER
salience0–1, wie zentral die Entität für den Text ist; die Liste ist danach sortiert
mentionsjede Stelle, an der sie vorkommt: text (content, beginOffset) und type (PROPER, COMMON oder TYPE_UNKNOWN für Datumsangaben, Zahlen, Preise und Telefonnummern)
metadatazusätzliche strukturierte Daten, sofern verfügbar
sentimentscore und magnitude gegenüber dieser Entität (nur analyzeEntitySentiment)

Moderation​

moderateText nimmt nur document entgegen. Die Antwort listet jede Kategorie mit einer confidence von 0 bis 1 dafür auf, dass der Text zu ihr gehört (sie behandelt, zeigt oder ausdrückt, ob positiv oder negativ):

{
"moderationCategories": [
{"name": "Toxic", "confidence": 0.04},
{"name": "Health", "confidence": 0.81}
]
}

Kategorien: Toxic, Insult, Profanity, Derogatory, Violent, Sexual, Death, Harm & Tragedy, Firearms & Weapons, Public Safety, Health, Religion & Belief, Illicit Drugs, War & Conflict, Finance, Politics, Legal. Wählen Sie Ihren eigenen Schwellenwert pro Kategorie.

Mehrere Analysen in einem Aufruf​

{
"document": {"type": "PLAIN_TEXT", "content": "…"},
"features": {
"extractEntities": true,
"extractDocumentSentiment": true,
"classifyText": true,
"moderateText": true
}
}

features akzeptiert extractEntities, extractEntitySentiment, extractDocumentSentiment, classifyText, moderateText und classificationModelOptions. Mindestens eine Funktion muss true sein; extractSyntax wird mit 400 beantwortet. Ist classifyText eingeschaltet, fügen Sie features "classificationModelOptions": {"v2Model": {"contentCategoriesVersion": "V2"}} hinzu, wie bei der v1-Klassifizierungsroute. Die Antwort enthält language sowie die Felder jeder eingeschalteten Analyse: entities, documentSentiment, categories, moderationCategories.

Fehler​

CodeWann
400fehlendes oder leeres document, ein falscher type, Text über 1.000.000 Bytes, eine nicht unterstützte Sprache, ein unbekanntes Feld oder eine unbekannte Funktion
401fehlender oder ungültiger API-Schlüssel
403der Schlüssel darf dieses Produkt nicht nutzen
404eine unbekannte Methode, einschließlich analyzeSyntax
429zu viele Anfragen, oder Guthaben bzw. Budget des Schlüssels reichen für den Aufruf nicht aus; wiederholen Sie nach einer kurzen Pause oder laden Sie Guthaben auf
500vorübergehendes Problem; wiederholen Sie eine begrenzte Anzahl von Malen

Das gemeinsame Format und Hinweise zu Wiederholungen finden Sie unter Fehler.