use futures_util::{StreamExt, FutureExt}; use lazy_static::lazy_static; use openai_rust; use std::env::var; lazy_static! { static ref KEY: String = var("OPENAI_API_KEY").unwrap(); } #[tokio::test] pub async fn list_models() { let c = openai_rust::Client::new(&KEY); c.list_models().await.unwrap(); } #[tokio::test] pub async fn create_chat() { let c = openai_rust::Client::new(&KEY); let args = openai_rust::chat::ChatArguments::new( "gpt-3.5-turbo", vec![openai_rust::chat::Message { role: "user".to_owned(), content: "Hello GPT!".to_owned(), }], ); c.create_chat(args).await.unwrap(); } #[tokio::test] pub async fn create_chat_stream() { let c = openai_rust::Client::new(&KEY); let args = openai_rust::chat::ChatArguments::new( "gpt-3.5-turbo", vec![openai_rust::chat::Message { role: "user".to_owned(), content: "Hello GPT!".to_owned(), }], ); c.create_chat_stream(args) .await .unwrap() .collect::>() .await; } #[tokio::test] pub async fn create_completion() { let c = openai_rust::Client::new(&KEY); let args = openai_rust::completions::CompletionArguments::new( "text-davinci-003", "The quick brown fox".to_owned(), ); c.create_completion(args).await.unwrap(); } #[tokio::test] pub async fn create_completion_logprobs() { let c = openai_rust::Client::new(&KEY); let mut args = openai_rust::completions::CompletionArguments::new( "text-davinci-003", "The quick brown fox".to_owned(), ); args.logprobs = Some(1); c.create_completion(args).await.unwrap(); } #[tokio::test] pub async fn create_edit() { let c = openai_rust::Client::new(&KEY); let args = openai_rust::edits::EditArguments::new( "text-davinci-edit-001", "The quick brown fox".to_owned(), "Complete this sentence.".to_owned(), ); c.create_edit(args).await.unwrap(); } #[tokio::test] pub async fn create_embeddings() { let c = openai_rust::Client::new(&KEY); let args = openai_rust::embeddings::EmbeddingsArguments::new( "text-embedding-ada-002", "The food was delicious and the waiter...".to_owned(), ); c.create_embeddings(args).await.unwrap(); } #[tokio::test] pub async fn external_client() { use reqwest; let req_c = reqwest::ClientBuilder::new() .user_agent("My cool program") .build() .unwrap(); let c = openai_rust::Client::new_with_client(&KEY, req_c); c.list_models().await.unwrap(); } #[tokio::test] pub async fn create_image() { let c = openai_rust::Client::new(&KEY); let args = openai_rust::images::ImageArguments::new("Lovecraftian Dagon"); c.create_image(args).await.unwrap(); }