Lingara Lingara Dokumentasie Gidse API Biblioteke Apps Bou Webtoepassing
Taal: Afrikaans

Stuur 'n tutorbeurt

API-weergawe 2026-10-affable-towhee

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

Stuur een boodskap aan die tutor en stroom die antwoord as delta-gebeurtenisse, wat eindig met done. Niks word gestoor nie: stuur die onlangse gesprek in history, tot 20 inskrywings. character en situation stel die toneel. Vereis 'n betaalde plan.

Omvange tutor:converse

Parameters

Lingara-Versionheaderstringopsioneel
Die API-weergawe waaronder hierdie versoek beantwoord word. Daarsonder kry 'n toegangstoken die weergawe waaraan sy kliënt gekoppel is, en 'n versoek sonder 'n token kry die huidige weergawe. Die weergawe wat nog ontwikkel word, is slegs bereikbaar deur dit hier te noem. 'n Onbekende weergawe gee 400 met kode api_version_unknown. GET /v1/versions lys die weergawes.

Versoekliggaam application/json

messagestringverplig
historyarray of TurnEntryopsioneel
roleTurnRoleverplig
contentstringverplig
source_langstringverplig
target_langstringverplig
levelinteger | nullopsioneel
characterstring | nullopsioneel
situationstring | nullopsioneel

Antwoorde

200 Die tutor se antwoord, stuk vir stuk

Stroomgebeurtenisse text/event-stream

Stuur geen keepalive-opmerkings nie.

delta TurnDelta
textstringverplig
notice Notice
codestringverplig
messagestringverplig
done Done Beëindig die stroom
error StreamError Beëindig die stroom

Kom binne die 200-antwoord aan. Die statusreël is reeds gestuur, so 'n fout nadat die stroom oopgemaak is, word as hierdie gebeurtenis gerapporteer.

codestringverplig
messagestringverplig
plan_idstring | nullopsioneel

Foute

402application/json
'n Oproep van 'n gemeterde kliënt is geweier voordat dit iets bestee het. spend_cap_reached: die kliënt of sy rekening het sy maandelikse bestedingslimiet bereik; verhoog die limiet op die Integrasies-bladsy. metered_billing_inactive: gebruiksfakturering is nie aktief vir hierdie rekening nie; stel dit op, of werk die betaalmetode by, op die Integrasies-bladsy.
410application/json
Die API-weergawe waaronder hierdie versoek beantwoord word, is gestaak. Stuur 'n ondersteunde weergawe in Lingara-Version, of koppel die kliënt aan 'n ander weergawe.
4XXapplication/json
Die versoek is geweier. code sê hoekom, en error sê dit in woorde.
503application/json · text/plain
Die diens is tydelik onbeskikbaar; probeer weer na die aantal sekondes in Retry-After. Tydens onderhoud is die liggaam gewone teks eerder as die foutomhulsel.
5XXapplication/json
Die versoek is geweier. code sê hoekom, en error sê dit in woorde.
codestringverplig

Waarom die versoek geweier is, as 'n stabiele kode om op te vertak: byvoorbeeld insufficient_scope (403), rate_limited (429) en, vir 'n gemeterde kliënt, spend_cap_reached (402) en metered_billing_inactive (402).

errorstringverplig

Voorbeeld

Taal van die kodevoorbeeld

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";

Verkies jy 'n biblioteek? Sien die Biblioteke-afdeling.

Voorbeeldstroom

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

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

event: done
data: {}

Indien 'n vertaling en die Engelse verwysing verskil, is die Engelse verwysing korrek.