2026-03-03 17:33:51 +08:00
|
|
|
|
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)
|
2026-03-11 21:45:46 +08:00
|
|
|
|
def terminate(status: str, reason: str = "") -> dict:
|
2026-03-03 17:33:51 +08:00
|
|
|
|
"""
|
2026-03-11 21:45:46 +08:00
|
|
|
|
终止本次互动。
|
2026-03-03 17:33:51 +08:00
|
|
|
|
"""
|
2026-03-11 21:45:46 +08:00
|
|
|
|
return {
|
|
|
|
|
|
"messages": [], # 清空追加消息
|
|
|
|
|
|
"__end__": True, # 结束标记
|
|
|
|
|
|
"status": status,
|
|
|
|
|
|
"reason": reason
|
|
|
|
|
|
}
|