pub struct ResponseUtils;Expand description
Response post-processing utilities
Implementations§
Source§impl ResponseUtils
impl ResponseUtils
Sourcepub fn extract_code_blocks(response: &str) -> Vec<CodeBlock>
pub fn extract_code_blocks(response: &str) -> Vec<CodeBlock>
Extract code blocks from markdown-formatted response
Recognizes both ``` and ` code fence formats.
§Examples
use oxify_connect_llm::ResponseUtils;
let response = "```rust\nfn main() {}\n```";
let blocks = ResponseUtils::extract_code_blocks(response);
assert_eq!(blocks.len(), 1);
assert_eq!(blocks[0].language, Some("rust".to_string()));Sourcepub fn extract_code_by_language(
response: &str,
language: &str,
) -> Option<String>
pub fn extract_code_by_language( response: &str, language: &str, ) -> Option<String>
Extract first code block of a specific language
§Examples
use oxify_connect_llm::ResponseUtils;
let response = "```python\nprint('hello')\n```\n```rust\nprintln!(\"hi\")\n```";
let python_code = ResponseUtils::extract_code_by_language(response, "python");
assert_eq!(python_code, Some("print('hello')".to_string()));Sourcepub fn extract_all_code(response: &str) -> String
pub fn extract_all_code(response: &str) -> String
Extract all code regardless of language
Returns concatenated code from all blocks.
§Examples
use oxify_connect_llm::ResponseUtils;
let response = "```\ncode1\n```\n```\ncode2\n```";
let code = ResponseUtils::extract_all_code(response);
assert!(code.contains("code1"));
assert!(code.contains("code2"));Sourcepub fn parse_json(response: &str) -> Result<Value, Error>
pub fn parse_json(response: &str) -> Result<Value, Error>
Try to parse response as JSON
Attempts to extract JSON from the response, handling cases where the LLM wraps JSON in markdown code blocks.
§Examples
use oxify_connect_llm::ResponseUtils;
let response = r#"```json
{"name": "Alice", "age": 30}
```"#;
let json = ResponseUtils::parse_json(response);
assert!(json.is_ok());Sourcepub fn strip_markdown(response: &str) -> String
pub fn strip_markdown(response: &str) -> String
Remove markdown formatting from response
Strips common markdown elements like headers, bold, italic, etc.
§Examples
use oxify_connect_llm::ResponseUtils;
let response = "# Title\n**Bold** and *italic*";
let plain = ResponseUtils::strip_markdown(response);
assert!(!plain.contains('*'));
assert!(!plain.contains('#'));Sourcepub fn extract_numbered_list(response: &str) -> Vec<String>
pub fn extract_numbered_list(response: &str) -> Vec<String>
Extract numbered list items from response
§Examples
use oxify_connect_llm::ResponseUtils;
let response = "1. First\n2. Second\n3. Third";
let items = ResponseUtils::extract_numbered_list(response);
assert_eq!(items, vec!["First", "Second", "Third"]);Sourcepub fn extract_bullet_list(response: &str) -> Vec<String>
pub fn extract_bullet_list(response: &str) -> Vec<String>
Extract bullet list items from response
§Examples
use oxify_connect_llm::ResponseUtils;
let response = "- First\n* Second\n- Third";
let items = ResponseUtils::extract_bullet_list(response);
assert_eq!(items.len(), 3);Sourcepub fn truncate(response: &str, max_length: usize) -> String
pub fn truncate(response: &str, max_length: usize) -> String
Truncate response to a maximum length
Tries to truncate at sentence boundary if possible.
§Examples
use oxify_connect_llm::ResponseUtils;
let response = "First sentence. Second sentence. Third sentence.";
let truncated = ResponseUtils::truncate(response, 20);
assert!(truncated.len() <= 23); // 20 + "..."Sourcepub fn extract_urls(response: &str) -> Vec<String>
pub fn extract_urls(response: &str) -> Vec<String>
Extract URLs from response
§Examples
use oxify_connect_llm::ResponseUtils;
let response = "Check out https://example.com and http://test.org";
let urls = ResponseUtils::extract_urls(response);
assert_eq!(urls.len(), 2);Sourcepub fn count_sentences(response: &str) -> usize
pub fn count_sentences(response: &str) -> usize
Count sentences in response
§Examples
use oxify_connect_llm::ResponseUtils;
let response = "First sentence. Second sentence! Third sentence?";
assert_eq!(ResponseUtils::count_sentences(response), 3);Sourcepub fn count_words(response: &str) -> usize
pub fn count_words(response: &str) -> usize
Count words in response
§Examples
use oxify_connect_llm::ResponseUtils;
let response = "This is a test response";
assert_eq!(ResponseUtils::count_words(response), 5);Sourcepub fn normalize_whitespace(response: &str) -> String
pub fn normalize_whitespace(response: &str) -> String
Remove extra whitespace from response
§Examples
use oxify_connect_llm::ResponseUtils;
let response = "Too many spaces";
let normalized = ResponseUtils::normalize_whitespace(response);
assert_eq!(normalized, "Too many spaces");