Enhance markdown feature based on PR feedback

Co-Authored-By: Joe Moura <joao@crewai.com>
This commit is contained in:
Devin AI
2025-05-20 05:44:56 +00:00
parent 2c26ab27c0
commit 05e3e9c2ff
2 changed files with 66 additions and 17 deletions

View File

@@ -526,10 +526,14 @@ class Task(BaseModel):
return guardrail_result
def prompt(self) -> str:
"""Prompt the task.
"""Generates the task prompt with optional markdown formatting.
When the markdown attribute is True, instructions for formatting the
response in Markdown syntax will be added to the prompt.
Returns:
Prompt of the task.
str: The formatted prompt string containing the task description,
expected output, and optional markdown formatting instructions.
"""
tasks_slices = [self.description]
@@ -539,9 +543,15 @@ class Task(BaseModel):
tasks_slices = [self.description, output]
if self.markdown:
markdown_instruction = "Your final answer MUST be formatted in Markdown syntax."
markdown_instruction = """Your final answer MUST be formatted in Markdown syntax.
Follow these guidelines:
- Use # for headers
- Use ** for bold text
- Use * for italic text
- Use - or * for bullet points
- Use `code` for inline code
- Use ```language for code blocks"""
tasks_slices.append(markdown_instruction)
return "\n".join(tasks_slices)
def interpolate_inputs_and_add_conversation_history(

View File

@@ -6,8 +6,15 @@ from unittest.mock import patch
from crewai import Agent, Task
def test_markdown_option_in_task_prompt():
"""Test that when markdown=True, the task prompt includes markdown formatting instructions."""
@pytest.mark.parametrize(
"markdown_enabled,should_contain_instructions",
[
(True, True),
(False, False),
],
)
def test_markdown_option_in_task_prompt(markdown_enabled, should_contain_instructions):
"""Test that markdown flag correctly controls the inclusion of markdown formatting instructions."""
researcher = Agent(
role="Researcher",
@@ -19,35 +26,67 @@ def test_markdown_option_in_task_prompt():
task = Task(
description="Research advances in AI in 2023",
expected_output="A summary of key AI advances in 2023",
markdown=markdown_enabled,
agent=researcher,
)
prompt = task.prompt()
assert "Research advances in AI in 2023" in prompt
assert "A summary of key AI advances in 2023" in prompt
if should_contain_instructions:
assert "Your final answer MUST be formatted in Markdown syntax." in prompt
assert "Use # for headers" in prompt
assert "Use ** for bold text" in prompt
else:
assert "Your final answer MUST be formatted in Markdown syntax." not in prompt
def test_markdown_with_empty_description():
"""Test markdown formatting with empty description."""
researcher = Agent(
role="Researcher",
goal="Research a topic",
backstory="You're a researcher.",
allow_delegation=False,
)
task = Task(
description="",
expected_output="A summary",
markdown=True,
agent=researcher,
)
prompt = task.prompt()
assert "Research advances in AI in 2023" in prompt
assert "A summary of key AI advances in 2023" in prompt
assert prompt.strip() != ""
assert "A summary" in prompt
assert "Your final answer MUST be formatted in Markdown syntax." in prompt
def test_markdown_option_not_in_task_prompt_by_default():
"""Test that by default (markdown=False), the task prompt does not include markdown formatting instructions."""
def test_markdown_with_complex_output_format():
"""Test markdown with JSON output format to ensure compatibility."""
researcher = Agent(
role="Researcher",
goal="Research a topic",
backstory="You're a researcher specialized in providing well-formatted content.",
backstory="You're a researcher.",
allow_delegation=False,
)
task = Task(
description="Research advances in AI in 2023",
expected_output="A summary of key AI advances in 2023",
description="Research topic",
expected_output="Research results",
markdown=True,
output_json=True,
agent=researcher,
)
prompt = task.prompt()
assert "Research advances in AI in 2023" in prompt
assert "A summary of key AI advances in 2023" in prompt
assert "Your final answer MUST be formatted in Markdown syntax." not in prompt
assert "Your final answer MUST be formatted in Markdown syntax." in prompt
assert "Research topic" in prompt
assert "Research results" in prompt