다음 예제를 살펴보겠습니다.
examples/2_tool_basic.py
from langchain_core.tools import BaseTool, StructuredTool, ToolException, tool
(중략)
# ── 방법 3: BaseTool 상속 ──
class CalculatorTool(BaseTool):
name: str = "calculator"
description: str = (
"수학 수식을 계산합니다."
"'2 + 3 * 4'처럼 문자열 수식을 입력하면 결과를 반환합니다."
)
def _run(self, expression: str) -> str:
try:
return str(eval(expression)) # ➊
except Exception:
raise ToolException(f"'{expression}'은 유효한 수식이 아닙니다.") # ➋
async def _arun(self, expression: str) -> str: # ➌
return self._run(expression)
calc = CalculatorTool()
print(calc.invoke("2 + 3 * 4"))