mirror of
https://github.com/agent0ai/agent-zero.git
synced 2026-10-21 13:51:06 +00:00
The synthetic Hello! user turn was limited to the main agent, so subordinate agents started their history without the few-shot example of the response tool-call JSON. Remove the agent-number guard so every agent receives the seed turn, which the initial_seed metadata marker already keeps out of chat naming for delegated children. Validation: pytest tests/test_initial_message.py plugins/_chat_naming/tests/test_chat_naming.py (20 passed) on the framework runtime.
76 lines
2.8 KiB
Python
76 lines
2.8 KiB
Python
import json
|
|
from types import SimpleNamespace
|
|
|
|
import pytest
|
|
from langchain_core.messages import HumanMessage, AIMessage
|
|
|
|
from extensions.python.agent_init._10_initial_message import InitialMessage
|
|
from helpers import history
|
|
from helpers.llm_result import result_from_metadata
|
|
from helpers.log import Log
|
|
|
|
|
|
@pytest.mark.parametrize("greeting", [
|
|
json.dumps({"tool_name": "response", "tool_args": {"text": "Welcome."}}, indent=2),
|
|
"Welcome to this profile.",
|
|
])
|
|
def test_initial_greeting_keeps_user_first_order_and_linked_log_after_reload(greeting):
|
|
messages = []
|
|
log = Log()
|
|
|
|
def add_ai(content, llm_result):
|
|
message = history.Message(True, content, metadata=llm_result.metadata())
|
|
messages.append(message)
|
|
return message
|
|
|
|
agent = SimpleNamespace(
|
|
number=0,
|
|
context=SimpleNamespace(log=log),
|
|
read_prompt=lambda name: "Hello!" if name == "fw.initial_user_message.md" else greeting,
|
|
hist_add_user_message=lambda message: messages.append(history.Message(False, message.message)) or messages[-1],
|
|
hist_add_ai_response=add_ai,
|
|
)
|
|
extension = InitialMessage(agent)
|
|
extension.execute()
|
|
extension.execute()
|
|
assert len(messages) == 2
|
|
assert len(log.logs) == 1
|
|
assert log.logs[0].id == messages[1].id
|
|
assert log.logs[0].id != messages[0].id
|
|
|
|
reloaded = [history.Message.from_dict(message.to_dict(), history=None) for message in messages]
|
|
rendered = history.output_langchain([item for message in reloaded for item in message.output()])
|
|
assert [type(item) for item in rendered] == [HumanMessage, AIMessage]
|
|
assert rendered[0].content == "Hello!"
|
|
assert rendered[1].content == messages[1].content
|
|
result = result_from_metadata(reloaded[1].metadata)
|
|
assert result.mode == "" and result.state == "off" and not result.response_id
|
|
if greeting.startswith("{"):
|
|
assert "\n" not in rendered[1].content
|
|
assert log.logs[0].content == "Welcome."
|
|
else:
|
|
assert log.logs[0].content == greeting
|
|
|
|
|
|
def test_subordinate_agents_receive_the_seed_turn_as_few_shot_example():
|
|
messages = []
|
|
log = Log()
|
|
|
|
def add_ai(content, llm_result):
|
|
message = history.Message(True, content, metadata=llm_result.metadata())
|
|
messages.append(message)
|
|
return message
|
|
|
|
agent = SimpleNamespace(
|
|
number=1,
|
|
context=SimpleNamespace(log=log),
|
|
read_prompt=lambda name: "Hello!" if name == "fw.initial_user_message.md" else "A1: Responding",
|
|
hist_add_user_message=lambda message: messages.append(history.Message(False, message.message)) or messages[-1],
|
|
hist_add_ai_response=add_ai,
|
|
)
|
|
extension = InitialMessage(agent)
|
|
extension.execute()
|
|
|
|
assert len(messages) == 2
|
|
assert messages[0].content == "Hello!"
|
|
assert messages[0].metadata["initial_seed"] is True
|