from typing import Literal from langchain_core.tools import tool from pydantic import BaseModel, Field class TerminateInput(BaseModel): """終止對話的輸入參數""" status: Literal["success", "failure"] = Field( description="互動結束的狀態:'success' 表示任務完成,'failure' 表示無法繼續", examples=["success", "failure"] ) reason: str = Field( default="", description="可選:簡單說明為什麼結束(例如 '報告已生成' 或 '缺少關鍵資訊')", examples=["報告已成功生成", "無法取得足夠資料"] ) @tool(args_schema=TerminateInput) def terminate(status: str, reason: str = "") -> dict: """ 终止本次互动。 """ return { "messages": [], # 清空追加消息 "__end__": True, # 结束标记 "status": status, "reason": reason }