This directory contains comprehensive examples demonstrating how to use the OpenAI API client library. Each example is a standalone Rust program that showcases different aspects of the API.
Before running any examples, make sure you have:
-
API Key: Set your OpenAI API key in one of these ways:
- Environment variable:
export OPENAI_API_KEY="your-api-key" - Secret file: Create
secret/-secret.shwithexport OPENAI_API_KEY="your-api-key"
- Environment variable:
-
Dependencies: Run
cargo buildto install all required dependencies.
To run any example:
cargo run --example <example_name>For example:
cargo run --example responses_create| Example | Description | Key Features | API Endpoints |
|---|---|---|---|
responses_create.rs |
Basic response creation (planned) | Simple text input, response parsing | POST /responses |
openai_responses_create_image_input.rs |
Multimodal response with image input | Image + text processing, vision capabilities | POST /responses |
responses_create_stream.rs |
Streaming response generation (planned) | Real-time text streaming, event handling | POST /responses (stream) |
openai_responses_create_with_tools.rs |
Response with function calling | Tool definitions, function execution | POST /responses |
openai_responses_get.rs |
Retrieve existing response | Response retrieval by ID | GET /responses/{id} |
openai_responses_list_input_items.rs |
List response input items | Input item enumeration, pagination | GET /responses/{id}/input_items |
openai_responses_delete.rs |
Delete a response | Response cleanup, deletion verification | DELETE /responses/{id} |
openai_responses_update.rs |
Update response metadata | Metadata modification, response updates | PATCH /responses/{id} |
openai_responses_cancel.rs |
Cancel in-progress response | Stream cancellation, cleanup | POST /responses/{id}/cancel |
| Example | Description | Key Features | API Endpoints |
|---|---|---|---|
openai_realtime_response_create.rs |
Create realtime response | WebSocket connection, realtime communication | WebSocket /realtime |
openai_realtime_response_cancel.rs |
Cancel realtime response | Realtime cancellation, connection cleanup | WebSocket /realtime |
openai_realtime_conversation_item_create.rs |
Create conversation item | Conversation management, item creation | WebSocket /realtime |
openai_realtime_conversation_item_delete.rs |
Delete conversation item | Item cleanup, conversation management | WebSocket /realtime |
openai_realtime_conversation_item_retrieve.rs |
Retrieve conversation item | Item retrieval, conversation access | WebSocket /realtime |
openai_realtime_conversation_item_truncate.rs |
Truncate conversation item | Item modification, content truncation | WebSocket /realtime |
openai_realtime_input_audio_buffer_append.rs |
Append audio buffer | Audio streaming, buffer management | WebSocket /realtime |
openai_realtime_input_audio_buffer_clear.rs |
Clear audio buffer | Buffer cleanup, audio management | WebSocket /realtime |
openai_realtime_input_audio_buffer_commit.rs |
Commit audio buffer | Buffer processing, audio finalization | WebSocket /realtime |
openai_realtime_session_update.rs |
Update realtime session | Session configuration, parameter updates | WebSocket /realtime |
openai_realtime_transcription_session_update.rs |
Update transcription session | Transcription settings, session management | WebSocket /realtime |
Note: Chat completion examples are planned but not yet implemented. Use responses API examples for similar functionality.
Note: Audio API examples are planned but not yet implemented.
Note: Images API examples are planned but not yet implemented.
Note: Files API examples are planned but not yet implemented.
Note: Fine-tuning API examples are planned but not yet implemented.
Note: Assistants API examples are planned but not yet implemented.
Note: Vector Stores API examples are planned but not yet implemented.
Note: Moderations API examples are planned but not yet implemented.
Note: Models API examples are planned but not yet implemented.
Note: Embeddings API examples are planned but not yet implemented.
Start with these if you're new to the OpenAI API:
responses_create.rs- Basic text generation (planned)openai_responses_get.rs- Retrieve responses by IDopenai_realtime_response_create.rs- Real-time communication basics
These showcase more complex functionality:
openai_responses_create_with_tools.rs- Function callingresponses_create_stream.rs- Real-time streaming (planned)openai_responses_create_image_input.rs- Multimodal processingopenai_realtime_input_audio_buffer_append.rs- Audio streaming
Learn how to manage API resources:
openai_responses_update.rs&openai_responses_delete.rs- Response managementopenai_responses_cancel.rs- Cancel in-progress operationsopenai_realtime_session_update.rs- Session configuration
All examples include proper error handling:
match result {
Ok(response) => {
// Handle success
println!("Success: {:?}", response);
},
Err(e) => {
// Handle errors gracefully
eprintln!("Error: {:?}", e);
}
}Examples use environment-based authentication:
let secret = api_openai::exposed::Secret::load_from_env("OPENAI_API_KEY")
.unwrap_or_else(|_| api_openai::exposed::Secret::new("dummy_key".to_string()));Standard client setup pattern:
let env = api_openai::exposed::environment::OpenaiEnvironmentImpl::build(
secret, None, None, None, None
).expect("Failed to create environment");
let client = Client::build(env).expect("Failed to create client");When adding new examples:
- Naming: Use descriptive names following the pattern
{api}_{action}.rs - Documentation: Include comprehensive comments and docstrings
- Error Handling: Always handle errors gracefully
- Output: Provide clear, informative output
- Update Index: Add your example to this README table
For issues or questions:
- Check the API documentation
- Review existing examples for patterns
- Open an issue in the repository
Note: All examples require a valid OpenAI API key and may incur API usage costs. Please review OpenAI's pricing before running examples extensively.