Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion haystack/agents/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ def __init__(
memory: Optional[Memory] = None,
prompt_parameters_resolver: Optional[Callable] = None,
max_steps: int = 8,
final_answer_pattern: str = r"Final Answer\s*:\s*(.*)",
final_answer_pattern: str = r"(?s)Final Answer\s*:\s*(.*)",
streaming: bool = True,
):
"""
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
fixes:
- |
Fixed the bug that caused the agent to discard part of final answers if they were distributed across multiple lines.
4 changes: 3 additions & 1 deletion test/agents/test_agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@ def test_extract_final_answer():
"Final Answer:42",
"Final Answer: ",
"Final Answer: The answer is 99 ",
"Final Answer:42 should be the answer\n\nBut it's not the only one\n\n\n\n the answer is 1948",
]
expected_answers = [
"Florida",
Expand All @@ -159,10 +160,11 @@ def test_extract_final_answer():
"42",
"",
"The answer is 99",
"42 should be the answer\n\nBut it's not the only one\n\n\n\n the answer is 1948",
]

for example, expected_answer in zip(match_examples, expected_answers):
agent_step = AgentStep(prompt_node_response=example, final_answer_pattern=r"Final Answer\s*:\s*(.*)")
agent_step = AgentStep(prompt_node_response=example, final_answer_pattern=r"(?s)Final Answer\s*:\s*(.*)")
final_answer = agent_step.final_answer(query="irrelevant")
assert final_answer["answers"][0].answer == expected_answer

Expand Down