diff --git a/libs/langchain/langchain/chains/qa_with_sources/base.py b/libs/langchain/langchain/chains/qa_with_sources/base.py index d0408059a8e..3e3023ce2b2 100644 --- a/libs/langchain/langchain/chains/qa_with_sources/base.py +++ b/libs/langchain/langchain/chains/qa_with_sources/base.py @@ -120,9 +120,9 @@ class BaseQAWithSourcesChain(Chain, ABC): def _split_sources(self, answer: str) -> Tuple[str, str]: """Split sources from answer.""" - if re.search(r"SOURCES?[:\s]", answer, re.IGNORECASE): + if re.search(r"SOURCES?:", answer, re.IGNORECASE): answer, sources = re.split( - r"SOURCES?[:\s]|QUESTION:\s", answer, flags=re.IGNORECASE + r"SOURCES?:|QUESTION:\s", answer, flags=re.IGNORECASE )[:2] sources = re.split(r"\n", sources)[0].strip() else: diff --git a/libs/langchain/tests/unit_tests/chains/test_qa_with_sources.py b/libs/langchain/tests/unit_tests/chains/test_qa_with_sources.py index 56daf006859..825284e2949 100644 --- a/libs/langchain/tests/unit_tests/chains/test_qa_with_sources.py +++ b/libs/langchain/tests/unit_tests/chains/test_qa_with_sources.py @@ -27,6 +27,12 @@ from tests.unit_tests.llms.fake_llm import FakeLLM "This Agreement is governed by English law.\n", "28-pl", ), + ( + "According to the sources the agreement is governed by English law.\n" + "Source: 28-pl", + "According to the sources the agreement is governed by English law.\n", + "28-pl", + ), ( "This Agreement is governed by English law.\n" "SOURCES: 28-pl\n\n"