2025-05-29 13:33:41 -07:00
|
|
|
//! hermesllm: A library for translating LLM API requests and responses
|
|
|
|
|
//! between Mistral, Grok, Gemini, and OpenAI-compliant formats.
|
|
|
|
|
|
2025-06-02 23:57:03 -07:00
|
|
|
pub mod providers;
|
2025-05-29 13:33:41 -07:00
|
|
|
|
|
|
|
|
#[cfg(test)]
|
|
|
|
|
mod tests {
|
2025-06-03 15:00:57 -07:00
|
|
|
use crate::providers::openai::types::ChatCompletionsRequest;
|
|
|
|
|
|
2025-05-29 13:33:41 -07:00
|
|
|
#[test]
|
2025-06-02 23:57:03 -07:00
|
|
|
fn openai_builder() {
|
2025-06-03 15:00:57 -07:00
|
|
|
let request = ChatCompletionsRequest::builder("gpt-3.5-turbo", vec![])
|
2025-06-02 23:57:03 -07:00
|
|
|
.temperature(0.7)
|
|
|
|
|
.top_p(0.9)
|
|
|
|
|
.n(1)
|
|
|
|
|
.max_tokens(100)
|
|
|
|
|
.stream(false)
|
|
|
|
|
.stop(vec!["\n".to_string()])
|
|
|
|
|
.presence_penalty(0.0)
|
|
|
|
|
.frequency_penalty(0.0)
|
2025-06-03 00:17:22 -07:00
|
|
|
.build()
|
|
|
|
|
.expect("Failed to build OpenAIRequest");
|
2025-06-02 23:57:03 -07:00
|
|
|
|
2025-06-03 15:00:57 -07:00
|
|
|
assert_eq!(request.model, "gpt-3.5-turbo");
|
|
|
|
|
assert_eq!(request.temperature, Some(0.7));
|
|
|
|
|
assert_eq!(request.top_p, Some(0.9));
|
|
|
|
|
assert_eq!(request.n, Some(1));
|
|
|
|
|
assert_eq!(request.max_tokens, Some(100));
|
|
|
|
|
assert_eq!(request.stream, Some(false));
|
|
|
|
|
assert_eq!(request.stop, Some(vec!["\n".to_string()]));
|
|
|
|
|
assert_eq!(request.presence_penalty, Some(0.0));
|
|
|
|
|
assert_eq!(request.frequency_penalty, Some(0.0));
|
2025-05-29 13:33:41 -07:00
|
|
|
}
|
|
|
|
|
}
|