An AI agent built to do Ralph loops - plan mode for planning and ralph mode for implementing.
at main 69 lines 2.3 kB view raw
1use rustagent::llm::openai::OpenAiClient; 2use rustagent::llm::{Message, ToolDefinition}; 3 4#[test] 5fn test_openai_format_request_basic() { 6 let client = OpenAiClient::new("test-key".to_string(), "gpt-4".to_string(), 4096); 7 8 let messages = vec![Message::user("Hello")]; 9 10 let request = client.format_request(&messages, &[]).unwrap(); 11 12 assert_eq!(request["model"], "gpt-4"); 13 assert_eq!(request["messages"][0]["role"], "user"); 14 assert_eq!(request["messages"][0]["content"], "Hello"); 15} 16 17#[test] 18fn test_openai_format_request_with_system() { 19 let client = OpenAiClient::new("test-key".to_string(), "gpt-4".to_string(), 4096); 20 21 let messages = vec![Message::system("You are helpful"), Message::user("Hello")]; 22 23 let request = client.format_request(&messages, &[]).unwrap(); 24 25 assert_eq!(request["messages"][0]["role"], "system"); 26 assert_eq!(request["messages"][1]["role"], "user"); 27} 28 29#[test] 30fn test_openai_format_request_with_tools() { 31 let client = OpenAiClient::new("test-key".to_string(), "gpt-4".to_string(), 4096); 32 33 let messages = vec![Message::user("Read file.txt")]; 34 35 let tools = vec![ToolDefinition { 36 name: "read_file".to_string(), 37 description: "Read a file".to_string(), 38 parameters: serde_json::json!({ 39 "type": "object", 40 "properties": { 41 "path": {"type": "string"} 42 }, 43 "required": ["path"] 44 }), 45 }]; 46 47 let request = client.format_request(&messages, &tools).unwrap(); 48 49 assert!(request["tools"].is_array()); 50 assert_eq!(request["tools"][0]["type"], "function"); 51 assert_eq!(request["tools"][0]["function"]["name"], "read_file"); 52} 53 54#[test] 55fn test_openai_format_request_with_tool_result() { 56 let client = OpenAiClient::new("test-key".to_string(), "gpt-4".to_string(), 4096); 57 58 let messages = vec![ 59 Message::user("Read file.txt"), 60 Message::assistant("I'll read that file"), 61 Message::tool_result("call_123", "File contents here"), 62 ]; 63 64 let request = client.format_request(&messages, &[]).unwrap(); 65 66 assert_eq!(request["messages"][2]["role"], "tool"); 67 assert_eq!(request["messages"][2]["tool_call_id"], "call_123"); 68 assert_eq!(request["messages"][2]["content"], "File contents here"); 69}