[Bug] Official Autogen tutorial "Using Termination Conditions" does not work as expected

### What happened?

This issue relates to the [Autogen AgentChat tutorial](https://microsoft.github.io/autogen/stable/user-guide/agentchat-user-guide/tutorial/human-in-the-loop.html) under the section "Using Termination Conditions".

The example code provided in the tutorial does not function as expected. Instead of properly terminating when "TERMINATE" is reached, the assistant continuously hands off the task to the user.
Steps to Reproduce：
Run the following code, which is copied directly from the tutorial:


```python
import asyncio
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.base import Handoff
from autogen_agentchat.conditions import HandoffTermination, TextMentionTermination
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_agentchat.ui import Console
from autogen_ext.models.openai import OpenAIChatCompletionClient

async def main():
    model_client = OpenAIChatCompletionClient(model="gpt-4o-2024-08-06")

    lazy_agent = AssistantAgent(
        "lazy_assistant",
        model_client=model_client,
        handoffs=[Handoff(target="user", message="Transfer to user.")],
        system_message="Always transfer to user when you don't know the answer. Respond 'TERMINATE' when task is complete.",
    )

    handoff_termination = HandoffTermination(target="user")
    text_termination = TextMentionTermination("TERMINATE")
    combined_termination = handoff_termination | text_termination

    lazy_agent_team = RoundRobinGroupChat([lazy_agent], termination_condition=combined_termination)

    await Console(lazy_agent_team.run_stream(task="The weather in New York is sunny."))

if __name__ == "__main__":
    asyncio.run(main())
````

Expected Behavior：

After receiving the input "The weather in New York is sunny.", the assistant should recognize the termination condition and respond with "TERMINATE", stopping the execution.

Actual Behavior：

Instead of terminating, the assistant continues to call handoff, passing the task to the user again.
```
---------- user ----------
The weather in New York is sunny.
---------- lazy_assistant ----------
Thank you for sharing the weather update for New York! If you have any other requests or questions, feel free to let me know.
---------- lazy_assistant ----------
[FunctionCall(id='call_gP0O4ZXEM0jo5l5LeAYpLcBe', arguments='{}', name='transfer_to_user')]
---------- lazy_assistant ----------
[FunctionExecutionResult(content='Transfer to user.', call_id='call_gP0O4ZXEM0jo5l5LeAYpLcBe')]
---------- lazy_assistant ----------
Transfer to user.
```


### What did you expect to happen?

To ensure proper termination, update the system_message to only trigger handoff when the assistant cannot complete the task, allowing "TERMINATE" to be processed correctly.
**Corrected Code:**
`lazy_agent = AssistantAgent(
    "lazy_assistant",
    model_client=model_client,
    handoffs=[Handoff(target="user", message="Transfer to user.")],
    system_message="If you cannot complete the task, transfer to the user. Otherwise, when finished, respond with 'TERMINATE'.",
)
`
**Alternative Fix:**
If the tutorial is correct in its approach, then the documentation should clarify that "TERMINATE" will not be reached in the original code due to the handoff priority.
**Suggested Documentation Update：**
If the original behavior is intentional, the tutorial should explain why "TERMINATE" does not trigger and suggest modifying system_message accordingly.

Example update:

Note: The current configuration will always transfer the task before reaching "TERMINATE". If you want "TERMINATE" to work as expected, modify the system_message to distinguish between handoff situations and termination scenarios.

### How can we reproduce it (as minimally and precisely as possible)?

Corrected Code:
``lazy_agent = AssistantAgent(
    "lazy_assistant",
    model_client=model_client,
    handoffs=[Handoff(target="user", message="Transfer to user.")],
    system_message="If you cannot complete the task, transfer to the user. Otherwise, when finished, respond with 'TERMINATE'.",
)


### AutoGen version

0.4.3

### Which package was this bug in

AgentChat

### Model used

model="gpt-4o-2024-08-06"

### Python version

3.11

### Operating system

win11

### Any additional info you think would be helpful for fixing this bug

- This issue occurs in the official tutorial: [Using Termination Conditions](https://microsoft.github.io/autogen/stable/user-guide/agentchat-user-guide/tutorial/human-in-the-loop.html).
- The assistant is designed to always perform a handoff before it can reach the `"TERMINATE"` condition, making termination impossible in the original example.
- The provided fix modifies the `system_message` so that `"TERMINATE"` can be reached properly.
- If this behavior is intentional, the tutorial should include a note explaining why `"TERMINATE"` does not trigger and how users can modify the assistant's behavior accordingly.

Labels: needs-triage
State: closed