openai-core 0.1.1

Rust SDK for OpenAI-compatible ecosystem
Documentation
#[cfg(feature = "realtime")]
use futures_util::StreamExt;
#[cfg(feature = "realtime")]
use openai_core::{Client, SocketStreamMessage};

#[cfg(feature = "realtime")]
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = Client::builder()
        .api_key(std::env::var("OPENAI_API_KEY")?)
        .build()?;

    let socket = client
        .realtime()
        .ws()
        .model("gpt-4o-realtime-preview")
        .connect()
        .await?;

    let mut events = socket.stream();
    if let Some(SocketStreamMessage::Open) = events.next().await {
        socket
            .send_json(&serde_json::json!({
                "type": "response.create",
                "response": {
                    "modalities": ["text"],
                    "instructions": "介绍 Rust trait object"
                }
            }))
            .await?;
    }

    while let Some(event) = events.next().await {
        println!("{event:?}");
        if matches!(
            event,
            SocketStreamMessage::Close | SocketStreamMessage::Error(_)
        ) {
            break;
        }
    }

    Ok(())
}

#[cfg(not(feature = "realtime"))]
fn main() {
    eprintln!("该示例需要开启 `realtime` feature");
}