Lingara Lingara Dokumentation Ratgeber API Bibliotheken Apps Erstellen Web-App
Sprache: Deutsch

Tutor-Zug senden

API-Version 2026-10-affable-towhee

post https://api.getlingara.com/v1/tutor/message

Sendet eine Nachricht an den Tutor und streamt die Antwort als delta-Ereignisse, abschließend mit done. Nichts wird gespeichert: Sende den bisherigen Gesprächsverlauf in history, bis zu 20 Einträge. character und situation legen die Szene fest. Erfordert einen kostenpflichtigen Plan.

Scopes tutor:converse

Parameter

Lingara-Versionheaderstringoptional
Die API-Version, unter der diese Anfrage beantwortet wird. Ohne sie erhält ein Zugriffstoken die Version, an die sein Client gebunden ist, und eine Anfrage ohne Token die aktuelle Version. Die Version in Entwicklung ist nur erreichbar, indem man sie hier nennt. Eine unbekannte Version wird mit 400 und dem Code api_version_unknown beantwortet. GET /v1/versions listet die Versionen auf.

Anfragetext application/json

messagestringerforderlich
historyarray of TurnEntryoptional
roleTurnRoleerforderlich
contentstringerforderlich
source_langstringerforderlich
target_langstringerforderlich
levelinteger | nulloptional
characterstring | nulloptional
situationstring | nulloptional

Antworten

200 Die Antwort des Tutors, Stück für Stück

Stream-Ereignisse text/event-stream

Sendet keine Keepalive-Kommentare.

delta TurnDelta
textstringerforderlich
notice Notice
codestringerforderlich
messagestringerforderlich
done Done Beendet den Stream
error StreamError Beendet den Stream

Kommt innerhalb der 200-Antwort an. Die Statuszeile wurde bereits gesendet, daher wird ein Fehler nach dem Öffnen des Streams als dieses Ereignis gemeldet.

codestringerforderlich
messagestringerforderlich
plan_idstring | nulloptional

Fehler

402application/json
Der Aufruf eines nutzungsbasiert abgerechneten Clients wurde abgelehnt, bevor er etwas verbraucht hat. spend_cap_reached: Der Client oder sein Konto hat sein monatliches Ausgabenlimit erreicht; erhöhe das Limit auf der Seite Integrationen. metered_billing_inactive: Die Nutzungsabrechnung ist für dieses Konto nicht aktiv; richte sie ein oder aktualisiere die Zahlungsmethode auf der Seite Integrationen.
410application/json
Die API-Version, unter der diese Anfrage beantwortet wird, wurde eingestellt. Sende eine unterstützte Version in Lingara-Version oder binde den Client an eine andere Version.
4XXapplication/json
Die Anfrage wurde abgelehnt. code nennt den Grund, und error beschreibt ihn in Worten.
503application/json · text/plain
Der Dienst ist vorübergehend nicht verfügbar; versuche es nach der in Retry-After angegebenen Anzahl Sekunden erneut. Während Wartungsarbeiten ist der Body reiner Text statt des Fehlerumschlags.
5XXapplication/json
Die Anfrage wurde abgelehnt. code nennt den Grund, und error beschreibt ihn in Worten.
codestringerforderlich

Warum die Anfrage abgelehnt wurde, als stabiler Code, nach dem du verzweigen kannst: zum Beispiel insufficient_scope (403), rate_limited (429) und, bei einem nutzungsbasiert abgerechneten Client, spend_cap_reached (402) und metered_billing_inactive (402).

errorstringerforderlich

Beispiel

Sprache des Codebeispiels

curl

curl -N -X POST "https://api.getlingara.com/v1/tutor/message" \
  -H "Authorization: Bearer $LINGARA_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"message":"我要两斤荔枝。","history":[{"role":"assistant","content":"欢迎!今天的荔枝很新鲜。"}],"source_lang":"en","target_lang":"zh","level":2,"character":"a fruit seller in a night market","situation":"buying lychees, haggling"}'

TypeScript

const reply = client.sendTutorMessage({
  message: "你好!我想点一杯茶。",
  history: [],
  source_lang: "en",
  target_lang: "zh",
});
for await (const ev of reply) {
  if (ev.event === "delta") process.stdout.write(ev.data.text);
}

Rust

use lingara::models::{SendTutorMessageEvent, TutorTurnRequest};

let request = TutorTurnRequest {
    message: "你好!我想点一杯茶。".into(),
    history: Vec::new(),
    source_lang: "en".into(),
    target_lang: "zh".into(),
    level: None,
    character: None,
    situation: None,
};
let mut reply = client.send_tutor_message(&request).await?;
while let Some(event) = reply.next().await {
    if let SendTutorMessageEvent::Delta(delta) = event? {
        print!("{}", delta.text);
    }
}

Go

s, err := client.SendTutorMessage(ctx, lingara.TutorTurnRequest{
	Message:    "你好!我想点一杯茶。",
	SourceLang: "en",
	TargetLang: "zh",
})
if err != nil {
	return err
}
defer s.Close()
for ev, err := range s.Events() {
	if err != nil {
		return err
	}
	if delta, ok := ev.(lingara.SendTutorMessageEventDelta); ok {
		fmt.Print(delta.Data.Text)
	}
}

Java

import com.getlingara.client.model.SendTutorMessageEvent;
import com.getlingara.client.model.TutorTurnRequest;

TutorTurnRequest turn =
    new TutorTurnRequest().message("荔枝多少钱?").sourceLang("en").targetLang("zh").level(2);
try (EventStream<SendTutorMessageEvent> stream = client.sendTutorMessage(turn)) {
  for (SendTutorMessageEvent event : stream) {
    if (event instanceof SendTutorMessageEvent.Delta delta) {
      System.out.print(delta.data().getText());
    } else if (event instanceof SendTutorMessageEvent.Notice notice) {
      System.out.println("\n(" + notice.data().getMessage() + ")");
    }
  }
}

Kotlin

import com.getlingara.kotlin.LingaraClient
import com.getlingara.kotlin.model.SendTutorMessageEvent
import com.getlingara.kotlin.model.TutorTurnRequest

val turn = TutorTurnRequest(message = "荔枝多少钱?", sourceLang = "en", targetLang = "zh", level = 2)
client.sendTutorMessage(turn).use { stream ->
    stream.collect { event ->
        when (event) {
            is SendTutorMessageEvent.Delta -> print(event.data.text)
            is SendTutorMessageEvent.Notice -> println("\n(${event.data.message})")
        }
    }
}

Ruby

history = [{role: "user", content: "你好"}, {role: "assistant", content: "你好!你想练习什么?"}]
client.send_tutor_message(message: "我想点菜", history: history, source_lang: "en", target_lang: "zh") do |event|
  case event
  in Lingara::SendTutorMessageEventDelta => delta then print delta.data.text
  in Lingara::SendTutorMessageEventNotice => notice then warn notice.data.message
  else nil
  end
end
puts

PHP

use Lingara\Model\TutorTurnRequest;
use Lingara\Stream\SendTutorMessageEvent;

$turn = new TutorTurnRequest(['message' => '荔枝多少钱?', 'source_lang' => 'en', 'target_lang' => 'zh', 'level' => 2]);
foreach ($client->sendTutorMessage($turn) as $event) {
    if ($event instanceof SendTutorMessageEvent\Delta) {
        echo $event->data->getText();
    } elseif ($event instanceof SendTutorMessageEvent\Notice) {
        echo "\n(", $event->data->getMessage(), ')';
    }
}
echo "\n";

Lieber eine Bibliothek? Siehe den Bereich Bibliotheken.

Beispiel-Stream

event: delta
data: {"text":"两斤荔枝,"}

event: delta
data: {"text":"一共三十块。"}

event: done
data: {}

Weichen eine Übersetzung und die englische Referenz voneinander ab, ist die englische Referenz maßgeblich.