Uygulamayı aç
Moonborn — Developers

Rust

Resmi Rust SDK. Async-first (Tokio), serde-typed, mümkün olduğunda no_std-clean. Her API release'inden bir hafta içinde gönderir.

Rust SDK crates.io'da moonborn. Kanonik OpenAPI spec'inden generate edilir; idiomatic Rust — async-first, serde-typed, error-typed.

Kur

[dependencies]
moonborn = "1.0"
tokio = { version = "1", features = ["full"] }

İlk çağrı

use moonborn::{Client, CreatePersonaInput};
use std::env;
 
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = Client::new(env::var("MOONBORN_API_KEY")?);
 
    let persona = client.personas().create_persona(CreatePersonaInput {
        intent: "İstanbul'dan 34 yaşında bir kurucu. Parlak ama huzursuz.".into(),
        workspace_id: "ws_...".into(),
        ..Default::default()
    }).await?;
 
    println!("{} {}", persona.id, persona.status);
    Ok(())
}

Streaming

use futures::StreamExt;
 
let mut stream = client.chat().stream_message(StreamMessageInput {
    session_id: session.id.clone(),
    content: "Sessiz bir gerçek söyle.".into(),
}).await?;
 
while let Some(chunk) = stream.next().await {
    match chunk? {
        Chunk::Token { delta } => print!("{}", delta),
        Chunk::Completed { drift_score, .. } => println!("\ndrift: {}", drift_score),
    }
}

Error handling

match client.personas().get_persona(GetPersonaInput { id: "persona_...".into() }).await {
    Ok(persona) => { /* ... */ }
    Err(Error::Api(api_err)) if api_err.code == "rate_limited" => {
        tokio::time::sleep(api_err.retry_after).await;
    }
    Err(e) => return Err(e.into()),
}

Tarif

Her tier.

Sonraki