Lingara Lingara Dokumentasi Panduan API Pustaka Aplikasi Bina Apl web
Bahasa: Bahasa Melayu

Strim

Halaman ini diterjemahkan daripada bahasa Inggeris. Jika kedua-duanya berbeza, halaman bahasa Inggeris adalah yang betul. Baca halaman bahasa Inggeris

Empat operasi menstrim hasilnya sebagai server-sent events: menjana perbendaharaan kata, menghantar mesej kepada tutor, mencipta pelan pelajaran dan mengikuti pelan pelajaran. Setiap pustaka menukar aliran peristiwa menjadi jenis iterator bahasa itu sendiri, dan menyerahkan setiap peristiwa kepada anda dalam bentuk nilai bertaip yang sudah dinyahkod.

Bagaimana strim tamat

  • Apabila kerja selesai. Lelaran berhenti dengan sendirinya pada peristiwa terakhir strim. Bagi pelan pelajaran, peristiwa terakhir itu membawa hasilnya, jadi anda menerimanya sebelum gelung tamat.
  • Apabila API melaporkan ralat. Ralat yang tiba di dalam strim dilontarkan sebagai ralat API, jenis yang sama seperti ralat yang tiba sebelum strim bermula.
  • Apabila sambungan gagal. Strim yang tamat sebelum peristiwa terakhirnya, atau yang langsung tidak menghantar apa-apa selama 120 saat, dilontarkan sebagai ralat pengangkutan.
  • Apabila anda berhenti. Batalkan panggilan dengan cara biasa dalam bahasa anda, atau berhenti membaca, dan sambungan ditutup dengan segera.

Komen keepalive dan jenis peristiwa yang belum dikenali oleh pustaka akan dilangkau, jadi API yang lebih baharu tidak pernah merosakkan pustaka yang lebih lama.

Tidak pernah dimainkan semula

Strim yang telah menghantar walaupun satu peristiwa tidak pernah dicuba semula oleh pustaka, kerana mengulanginya boleh menghabiskan peruntukan anda dua kali. Jika strim pelan pelajaran terputus selepas ia bermula, ikuti pelan yang sama dengan streamLessonPlan dan plan_id daripada peristiwa pertamanya.

Bahasa contoh kod

TypeScript

const stream = client.generateVocabulary({ level: 2, source_lang: "en", target_lang: "zh", count: 8 });
for await (const ev of stream) {
  if (ev.event === "item") console.log(ev.data.word, ev.data.translation);
}

Rust

use lingara::models::{GenerateVocabularyEvent, VocabRequest};
use std::num::NonZeroU8;

let request = VocabRequest { level: 2, source_lang: "en".into(), target_lang: "zh".into(), count: NonZeroU8::new(8) };
let mut stream = client.generate_vocabulary(&request).await?;
while let Some(event) = stream.next().await {
    if let GenerateVocabularyEvent::Item(item) = event? {
        println!("{} {}", item.word, item.translation);
    }
}

Go

count := uint8(8)
s, err := client.GenerateVocabulary(ctx, lingara.VocabRequest{Level: 2, SourceLang: "en", TargetLang: "zh", Count: &count})
if err != nil {
	return err
}
defer s.Close()
for ev, err := range s.Events() {
	if err != nil {
		return err
	}
	if item, ok := ev.(lingara.GenerateVocabularyEventItem); ok {
		fmt.Println(item.Data.Word, item.Data.Translation)
	}
}

Java

import com.getlingara.client.model.GenerateVocabularyEvent;
import com.getlingara.client.model.VocabRequest;

VocabRequest request = new VocabRequest().level(2).sourceLang("en").targetLang("zh").count(8);
try (EventStream<GenerateVocabularyEvent> stream = client.generateVocabulary(request)) {
  for (GenerateVocabularyEvent event : stream) {
    if (event instanceof GenerateVocabularyEvent.Item item) {
      System.out.println(item.data().getWord() + " " + item.data().getTranslation());
    }
  }
}

Kotlin

import com.getlingara.kotlin.LingaraClient
import com.getlingara.kotlin.model.GenerateVocabularyEvent
import com.getlingara.kotlin.model.VocabRequest

val request = VocabRequest(level = 2, sourceLang = "en", targetLang = "zh", count = 8)
// The request is sent here; collect the stream once, inside use {}.
client.generateVocabulary(request).use { stream ->
    stream.collect { event ->
        when (event) {
            is GenerateVocabularyEvent.Item -> println("${event.data.word} ${event.data.translation}")
            is GenerateVocabularyEvent.Started -> Unit
        }
    }
}

Ruby

client.generate_vocabulary(level: 2, source_lang: "en", target_lang: "zh", count: 8) do |event|
  case event
  in Lingara::GenerateVocabularyEventItem => item then puts "#{item.data.word}: #{item.data.translation}"
  else nil
  end
end

PHP

use Lingara\Model\VocabRequest;
use Lingara\Stream\GenerateVocabularyEvent;

$request = new VocabRequest(['level' => 2, 'source_lang' => 'en', 'target_lang' => 'zh', 'count' => 8]);
foreach ($client->generateVocabulary($request) as $event) {
    if ($event instanceof GenerateVocabularyEvent\Item) {
        echo $event->data->getWord(), ': ', $event->data->getTranslation(), "\n";
    }
}

Perkara yang dibalut oleh halaman ini