Expand description
§Batch OpenAI SDK with YARA Rule Validation and OpenAI API Client
This crate provides a comprehensive SDK for integrating OpenAI’s API with YARA rule validation,
including support for chat completions, streaming responses, and automated testing.
§Features
OpenAIAPI Client: Full-featured client with streaming support- Chat Completions: Support for role-based conversations and prompt templates
- Streaming Support: Real-time streaming responses with Server-Sent Events
- YARA Rule Validation: Complete validation pipeline using the yara-x engine
OpenAIBatch API Integration: Generate and manage batch jobs for rule creation- Comprehensive Testing: Unit tests, integration tests, and performance benchmarks
- Error Handling: Robust error handling with detailed validation results
- Performance Metrics: Compilation time, memory usage, and rule complexity analysis
§Quick Start - OpenAI API
use openai_rust_sdk::{OpenAIClient, ChatBuilder};
let client = OpenAIClient::new("your-api-key")?;
// Simple text generation
let response = client.generate_text("gpt-4", "Hello, world!").await?;
println!("Response: {response}");
// Chat conversation
let conversation = ChatBuilder::new()
.developer("You are a helpful assistant")
.user("What is Rust?");
let response = client.chat("gpt-4", conversation).await?;
println!("Chat response: {response}");§Quick Start - YARA Validation
ⓘ
use openai_rust_sdk::testing::YaraValidator;
let validator = YaraValidator::new();
let rule = r#"
rule test_rule {
strings:
$hello = "Hello World"
condition:
$hello
}
"#;
let result = validator.validate_rule(rule)?;
println!("Rule is valid: {}", result.is_valid);§Modules
client: MainOpenAIclient with all API functionalityapi: Individual API modules (responses, streaming)models: Data models for requests and responsestesting: YARA validation and testing functionalityerror: Error types and handling
§Examples
See the examples/ directory for complete usage examples:
chat_completion.rs: Chat completions and streaming examplesfull_integration.rs: Complete workflow demonstrationbasic_validation.rs: Simple rule validationstreaming_demo.rs: Streaming API integrationerror_handling.rs: Error handling patterns
Re-exports§
pub use api::AssistantsApi;pub use api::BatchApi;pub use api::CustomToolsApi;pub use api::FineTuningApi;pub use api::FunctionsApi;pub use api::RealtimeAudioApi;pub use api::ResponsesApi;pub use api::RunsApi;pub use api::StreamingApi;pub use api::ThreadsApi;pub use api::VectorStoresApi;pub use builders::FunctionBuilder;pub use builders::ObjectSchemaBuilder;pub use client::from_env;pub use client::from_env_with_base_url;pub use client::ChatBuilder;pub use client::OpenAIClient;pub use error::OpenAIError;pub use error::Result;pub use prompt_engineering::Example;pub use prompt_engineering::PromptBuilder;pub use prompt_engineering::PromptPatterns;pub use prompt_engineering::PromptTemplateBuilder;pub use prompt_engineering::XmlContentBuilder;pub use schema::EnhancedSchemaBuilder;pub use schema::JsonSchema;pub use schema::SchemaBuilder;pub use testing::batch_generator::BatchJobGenerator;pub use models::assistants::*;pub use models::functions::*;pub use models::responses::*;
Modules§
- api
OpenAIAPI functionality- builders
- Function and schema builders
- client
- Client implementations and builders
- constants
- Constants used throughout the SDK Constants used throughout the OpenAI API SDK
- error
- Error types and handling
- macros
- Common macros for reducing code duplication Common macros for reducing code duplication across the codebase
- models
- Data models and types
- prompt_
engineering - Prompt engineering utilities and builders
- schema
- JSON Schema utilities JSON Schema builder for structured outputs
- testing
- YARA testing and validation functionality
Macros§
- impl_
api_ client - Macro to implement the
ApiClienttrait for a struct that contains anHttpClient - impl_
builder_ setters - Macro to implement standard builder pattern setter methods
- impl_
map_ setters - Macro to generate builder methods for
HashMapfields - impl_
option_ setters - Macro to generate builder methods for optional non-string fields
- impl_
string_ setters - Macro to generate builder methods for optional string fields
- impl_
validation - Macro to implement common validation methods
- impl_
vec_ setters - Macro to generate builder methods for vector fields