sniff-cli 0.1.1

An exhaustive LLM-backed slop finder for codebases
Documentation
pub(super) fn openai_payload(model: &str, sys_ctx: &str, prompt: &str) -> serde_json::Value {
    let mut messages = Vec::new();
    if !sys_ctx.is_empty() {
        messages.push(serde_json::json!({
            "role": "system",
            "content": sys_ctx
        }));
    }
    messages.push(serde_json::json!({
        "role": "user",
        "content": prompt
    }));

    serde_json::json!({
        "model": model,
        "temperature": 0,
        "max_tokens": 1024,
        "stream": false,
        "thinking": {"type": "disabled"},
        "messages": messages,
        "response_format": {"type": "json_object"}
    })
}

pub(super) fn anthropic_payload(model: &str, sys_ctx: &str, prompt: &str) -> serde_json::Value {
    let mut payload = serde_json::json!({
        "model": model,
        "temperature": 0,
        "max_tokens": 1024,
        "stream": false,
        "thinking": {"type": "disabled"},
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "text",
                        "text": prompt
                    }
                ]
            }
        ]
    });

    if !sys_ctx.is_empty() {
        payload["system"] = serde_json::Value::String(sys_ctx.to_string());
    }

    payload
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn openai_payload_disables_thinking() {
        let payload = openai_payload("test-model", "system", "prompt");
        assert_eq!(payload["thinking"]["type"], "disabled");
        assert_eq!(payload["response_format"]["type"], "json_object");
        assert_eq!(payload["stream"], false);
        assert_eq!(payload["max_tokens"], 1024);
    }

    #[test]
    fn anthropic_payload_disables_thinking() {
        let payload = anthropic_payload("test-model", "system", "prompt");
        assert_eq!(payload["thinking"]["type"], "disabled");
        assert_eq!(payload["messages"][0]["role"], "user");
        assert_eq!(payload["stream"], false);
        assert_eq!(payload["max_tokens"], 1024);
    }
}