Crate openai_rust_sdk

Crate openai_rust_sdk 

Source
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

  • OpenAI API 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
  • OpenAI Batch 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: Main OpenAI client with all API functionality
  • api: Individual API modules (responses, streaming)
  • models: Data models for requests and responses
  • testing: YARA validation and testing functionality
  • error: Error types and handling

§Examples

See the examples/ directory for complete usage examples:

  • chat_completion.rs: Chat completions and streaming examples
  • full_integration.rs: Complete workflow demonstration
  • basic_validation.rs: Simple rule validation
  • streaming_demo.rs: Streaming API integration
  • error_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
OpenAI API 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 ApiClient trait for a struct that contains an HttpClient
impl_builder_setters
Macro to implement standard builder pattern setter methods
impl_map_setters
Macro to generate builder methods for HashMap fields
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