더북(TheBook)

다음 예제를 살펴보겠습니다.

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"))