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.