from __future__ import annotations from inference.response_clean import ( prepare_display_reply, reply_ends_complete_sentence, strip_reasoning_output, strip_thinking_blocks, ) _RT_OPEN = "<" + "redacted_thinking" + ">" _RT_CLOSE = "" _THINK_OPEN = "<" + "think" + ">" _THINK_CLOSE = "" def test_strips_redacted_thinking_block(): raw = f"{_RT_OPEN}\nplanning...\n{_RT_CLOSE}\n\nThe capital of France is Paris." assert strip_reasoning_output(raw) == "The capital of France is Paris." def test_strips_unclosed_redacted_thinking_block(): raw = f"{_RT_OPEN}\nplanning without a final answer that never closes" assert strip_reasoning_output(raw) == "" assert strip_thinking_blocks(raw) == "" def test_strips_think_block(): raw = f"{_THINK_OPEN}\nplanning...\n{_THINK_CLOSE}\n\nAgents use memory [1]." assert strip_reasoning_output(raw) == "Agents use memory [1]." def test_strip_thinking_blocks_preserves_json_payload(): raw = f"{_THINK_OPEN}\nplanning...\n{_THINK_CLOSE}\n\n{{\"title\": \"T\"}}" assert strip_thinking_blocks(raw) == '{"title": "T"}' def test_strips_malformed_think_prefix_and_extracts_summary(): raw = """think> We need to summarize the document. First, identify sources. Let's draft: Summary: This review covers AI agent applications, evaluation, and future work [1].""" out = strip_reasoning_output(raw) assert out.startswith("This review covers") assert "We need to summarize" not in out def test_preserves_normal_answer(): text = "AI agents combine perception, planning, and action [1]." assert strip_reasoning_output(text) == text def test_extracts_final_answer_from_plain_chain_of_thought(): raw = """First, I need to explain finetuning in plain language. I should keep it concise. Let me draft: 1. Finetuning adjusts a model for a task. 2. Best practices include good data. Final answer: Finetuning small model adjusts a model to improve its performance on a specific task. For example, fine-tuning a language model can enhance its ability to understand complex queries. Best practices include using diverse and high-quality data. That's about 3 sentences. I think it covers it. Let me write: Finetuning small model involves training the model with additional data to specialize in a task. For instance, fine-tuning a computer vision model can improve its object""" out = strip_reasoning_output(raw) assert out.startswith("Finetuning small model adjusts") assert "First, I need" not in out assert "Let me draft" not in out assert "That's about 3 sentences" not in out def test_prepare_display_reply_collapses_plain_chain_of_thought(): raw = """First, I need to plan the answer. Final answer: Finetuning teaches a small model to specialize on your task using extra training data.""" out = prepare_display_reply(raw) assert out.startswith(_THINK_OPEN) assert _THINK_CLOSE in out assert "Finetuning teaches a small model" in out assert "First, I need to plan" in out def test_extracts_labeled_sentence_draft(): raw = """First, the user wants me to explain finetuning. Let me outline my response: 1. Start with a simple definition. Now, write the response: Sentence 1: Finetuning is training a small model to improve its performance on a specific task, like recognizing objects in photos. Sentence 2: For example, a model might be fine-tuned on a dataset of medical scans to detect tumors more accurately. That's two sentences. I can add one more if needed. Sentence 3: This process enhances efficiency and reduces overfitting. So, three""" out = strip_reasoning_output(raw) assert "Finetuning is training a small model" in out assert "medical scans" in out assert "enhances efficiency" in out assert "First, the user" not in out assert "Sentence 1:" not in out def test_reply_ends_complete_sentence(): assert reply_ends_complete_sentence("Finetuning teaches a small model to specialize.") assert not reply_ends_complete_sentence("The lesson aims to teach how to fine-tune small") def test_prepare_display_reply_wraps_malformed_think_prefix(): raw = "think> We need to plan the answer.\n\nThe answer is 42." out = prepare_display_reply(raw) assert out.startswith(_THINK_OPEN) assert _THINK_CLOSE in out assert "We need to plan the answer." in out