VinogradovAI's picture
Update tools/group_tool.py
aee7d6f verified
from langchain.tools import BaseTool
class GroupTool(BaseTool):
name: str = "group_tool"
description: str = (
"Perform algebraic/group-theory computations and set-based reasoning. Use for tasks like finding counter-examples to algebraic properties (commutativity, associativity, etc.) from a Cayley table."
)
def _run(self, table: str) -> str:
# Оставляем только строки с '|'
lines = [l for l in table.splitlines() if "|" in l]
if len(lines) < 2:
return "ERROR: Table format not recognized."
header_cells = lines[0].split("|")[1:-1]
elems = [c.strip() for c in header_cells if c.strip()]
if not elems:
return "ERROR: No elements in header."
# матрица
mat = []
for row in lines[1:]:
cells = row.split("|")[1:-1]
if len(cells) != len(elems):
return "ERROR: Row length mismatch."
mat.append([c.strip() for c in cells])
# проверка коммутативности
bad = set()
n = len(elems)
for i in range(n):
for j in range(n):
if mat[i][j] != mat[j][i]:
bad.add(elems[i])
bad.add(elems[j])
return ",".join(sorted(bad)) if bad else "Commutes everywhere"
async def _arun(self, table: str) -> str:
raise NotImplementedError("Async not supported.")