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
| Methode | Route | Was Sie erhalten |
|---|---|---|
| Text klassifizieren | POST /v2/documents:classifyText | bis zu 5 Themenkategorien mit Konfidenz, aus der aktuellen Kategorienliste |
| Text klassifizieren (v1-Route) | POST /v1/documents:classifyText | dasselbe, für Code, der für die v1-Route geschrieben wurde; senden Sie die unten gezeigte Option |
| Stimmung | POST /v1/documents:analyzeSentiment | die Gesamttonalität des Textes und jedes Satzes |
| Entitäten | POST /v1/documents:analyzeEntities | Personen, Organisationen, Orte, Ereignisse, Produkte und andere Entitäten mit ihren Erwähnungen |
| Entitätsstimmung | POST /v1/documents:analyzeEntitySentiment | Entitäten plus die Tonalität gegenüber jeder einzelnen |
| Moderation | POST /v1/documents:moderateText | eine Konfidenz für jede von 16 sensiblen Kategorien |
| Mehrere auf einmal | POST /v1/documents:annotateText | eine beliebige Kombination der obigen in einem Aufruf |
Syntaxanalyse (analyzeSyntax) wird nicht angeboten.
Preis
| Methode | Preis | Gezählt pro | Preis pro 1 Mio. Zeichen |
|---|---|---|---|
classifyText (v1 und v2) | $0.001 | 1.000 Zeichen | $1.00 |
analyzeSentiment | $0.0005 | 1.000 Zeichen | $0.50 |
analyzeEntities | $0.0005 | 1.000 Zeichen | $0.50 |
analyzeEntitySentiment | $0.001 | 1.000 Zeichen | $1.00 |
moderateText | $0.00025 | 100 Zeichen | $2.50 |
annotateText | die Summe der eingeschalteten Funktionen | wie 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.
| Feld | Erforderlich | Werte |
|---|---|---|
document.type | ja | PLAIN_TEXT oder HTML |
document.content | ja | der Text selbst, nicht leer, bis zu 1.000.000 Bytes in UTF-8 |
document.languageCode | nein | ein Sprachcode wie en; wird automatisch erkannt, wenn er fehlt |
encodingType | nein | NONE (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:
| Feld | Bedeutung |
|---|---|
name | die Entität, wie sie im Text geschrieben steht |
type | PERSON, ORGANIZATION, LOCATION, EVENT, WORK_OF_ART, CONSUMER_GOOD, OTHER, dazu DATE, NUMBER, PRICE, PHONE_NUMBER |
salience | 0–1, wie zentral die Entität für den Text ist; die Liste ist danach sortiert |
mentions | jede Stelle, an der sie vorkommt: text (content, beginOffset) und type (PROPER, COMMON oder TYPE_UNKNOWN für Datumsangaben, Zahlen, Preise und Telefonnummern) |
metadata | zusätzliche strukturierte Daten, sofern verfügbar |
sentiment | score 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
| Code | Wann |
|---|---|
400 | fehlendes oder leeres document, ein falscher type, Text über 1.000.000 Bytes, eine nicht unterstützte Sprache, ein unbekanntes Feld oder eine unbekannte Funktion |
401 | fehlender oder ungültiger API-Schlüssel |
403 | der Schlüssel darf dieses Produkt nicht nutzen |
404 | eine unbekannte Methode, einschließlich analyzeSyntax |
429 | zu 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 |
500 | vorübergehendes Problem; wiederholen Sie eine begrenzte Anzahl von Malen |
Das gemeinsame Format und Hinweise zu Wiederholungen finden Sie unter Fehler.