feat:修复孤儿工具报错,为replyer等tool添加统一的控制台展示接口
This commit is contained in:
49
tests/test_maisaka_orphan_tool_results.py
Normal file
49
tests/test_maisaka_orphan_tool_results.py
Normal file
@@ -0,0 +1,49 @@
|
||||
from datetime import datetime
|
||||
|
||||
from src.common.data_models.message_component_data_model import MessageSequence, TextComponent
|
||||
from src.llm_models.payload_content.tool_option import ToolCall
|
||||
from src.maisaka.chat_loop_service import MaisakaChatLoopService
|
||||
from src.maisaka.context_messages import AssistantMessage, SessionBackedMessage, ToolResultMessage
|
||||
|
||||
|
||||
def _build_user_message(text: str) -> SessionBackedMessage:
|
||||
return SessionBackedMessage(
|
||||
raw_message=MessageSequence([TextComponent(text)]),
|
||||
visible_text=text,
|
||||
timestamp=datetime.now(),
|
||||
)
|
||||
|
||||
|
||||
def test_select_llm_context_messages_drops_orphan_tool_results_anywhere() -> None:
|
||||
assistant_message = AssistantMessage(
|
||||
content="",
|
||||
timestamp=datetime.now(),
|
||||
tool_calls=[ToolCall(call_id="call_1", func_name="wait", args={"seconds": 30})],
|
||||
)
|
||||
orphan_tool_message = ToolResultMessage(
|
||||
content="当前对话循环已暂停,等待新消息到来。",
|
||||
timestamp=datetime.now(),
|
||||
tool_call_id="orphan_call",
|
||||
)
|
||||
matched_tool_message = ToolResultMessage(
|
||||
content="等待 30 秒。",
|
||||
timestamp=datetime.now(),
|
||||
tool_call_id="call_1",
|
||||
tool_name="wait",
|
||||
)
|
||||
chat_history = [
|
||||
_build_user_message("第一条消息"),
|
||||
orphan_tool_message,
|
||||
assistant_message,
|
||||
matched_tool_message,
|
||||
_build_user_message("第二条消息"),
|
||||
]
|
||||
|
||||
selected_history, _ = MaisakaChatLoopService.select_llm_context_messages(
|
||||
chat_history,
|
||||
max_context_size=8,
|
||||
)
|
||||
|
||||
assert orphan_tool_message not in selected_history
|
||||
assert assistant_message in selected_history
|
||||
assert matched_tool_message in selected_history
|
||||
Reference in New Issue
Block a user