tools.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. """LangChain Tools(工具)适配层。"""
  2. from __future__ import annotations
  3. from langchain.tools import tool
  4. from vendor_guard.repository import JsonRepository
  5. from vendor_guard.settings import Settings
  6. _settings = Settings.from_env()
  7. _repository = JsonRepository(_settings.project_root / "fixtures")
  8. @tool
  9. def query_vendor_registry(vendor_name: str) -> dict:
  10. """查询供应商主数据、付款状态、履约率和历史争议。"""
  11. return _repository.get_vendor(vendor_name)
  12. @tool
  13. def search_sanctions(vendor_name: str) -> dict:
  14. """查询供应商及其受益所有人的制裁或监管名单命中。"""
  15. return {
  16. "vendor": vendor_name,
  17. "hits": _repository.get_sanctions(vendor_name),
  18. }
  19. @tool
  20. def lookup_security_incidents(vendor_name: str) -> dict:
  21. """查询供应商公开披露的数据泄露和重大安全事故。"""
  22. return {
  23. "vendor": vendor_name,
  24. "incidents": _repository.get_incidents(vendor_name),
  25. }
  26. @tool
  27. def search_adverse_news(vendor_name: str) -> dict:
  28. """查询供应商近两年的重大负面新闻及来源。"""
  29. return {
  30. "vendor": vendor_name,
  31. "items": _repository.get_adverse_news(vendor_name),
  32. }
  33. @tool
  34. def submit_onboarding_decision(
  35. vendor_name: str,
  36. decision: str,
  37. report_path: str,
  38. ) -> str:
  39. """向采购系统提交供应商准入决定;该操作具有外部副作用。"""
  40. return f"已提交:{vendor_name} -> {decision};依据:{report_path}"