"""LangChain Tools(工具)适配层。""" from __future__ import annotations from langchain.tools import tool from vendor_guard.repository import JsonRepository from vendor_guard.settings import Settings _settings = Settings.from_env() _repository = JsonRepository(_settings.project_root / "fixtures") @tool def query_vendor_registry(vendor_name: str) -> dict: """查询供应商主数据、付款状态、履约率和历史争议。""" return _repository.get_vendor(vendor_name) @tool def search_sanctions(vendor_name: str) -> dict: """查询供应商及其受益所有人的制裁或监管名单命中。""" return { "vendor": vendor_name, "hits": _repository.get_sanctions(vendor_name), } @tool def lookup_security_incidents(vendor_name: str) -> dict: """查询供应商公开披露的数据泄露和重大安全事故。""" return { "vendor": vendor_name, "incidents": _repository.get_incidents(vendor_name), } @tool def search_adverse_news(vendor_name: str) -> dict: """查询供应商近两年的重大负面新闻及来源。""" return { "vendor": vendor_name, "items": _repository.get_adverse_news(vendor_name), } @tool def submit_onboarding_decision( vendor_name: str, decision: str, report_path: str, ) -> str: """向采购系统提交供应商准入决定;该操作具有外部副作用。""" return f"已提交:{vendor_name} -> {decision};依据:{report_path}"