AI Agents & Tool Calling v1.0

هوش مصنوعی و ایجنت های مالیاتی مالیتور

اتصال مدل‌های زبانی هوش مصنوعی (LLMs) نظیر ChatGPT و Claude به سامانه مودیان از طریق وب سرویس و ابزارهای مالیتور.

1. ایجنت هوش مصنوعی (AI Agent) چیست و چه کمکی به حسابداری می‌کند؟

برخلاف چت‌بات‌های متنی ساده که فقط پاسخ نوشتاری تولید می‌کنند، ایجنت های هوش مصنوعی (AI Agents) سیستم‌هایی هستند که توانایی تفکر مرحله‌به‌مرحله، ارزیابی شرایط و اجرای عملیات واقعی را از طریق وب سرویس‌ها (Tool Calling) دارند.

در حوزه مالیات و کارپوشه مودیان، حسابدار به جای وارد کردن دستی اطلاعات، کافی است بگوید: «صورتحساب شماره ۵۰۲ را برای فلان مشتری صادر کن و اگر رد شد فاکتور اصلاحی بفرست». ایجنت با فراخوانی API مالیتور، داده‌ها را به کارپوشه شلیک کرده و پاسخ را تحلیل می‌کند.

2. سناریوهای عملیاتی ایجنت‌ها بر بستر مالیتور

دستیار حل خودکار خطاهای کارپوشه

ایجنت وضعیت فاکتور را استعلام می‌گیرد؛ اگر خطایی از سازمان مالیاتی دریافت شد، متن خطا را تحلیل کرده و با پر کردن فیلد referenceTaxId فاکتور اصلاحی یا ابطالی صادر می‌کند.

تبدیل شیت‌های نامنظم به فاکتور مالیاتی

حسابدار شیت اکسل نامنظم را بارگذاری می‌کند. ایجنت ستون‌ها و شناسه‌های کالا را تطبیق داده و مستقیماً متد POST /pattern1 مالیتور را صدا می‌زند.

مدیریت خودکار سهمیه و کیف پول

ایجنت سقف روزانه مودی را با متد /quota مانیتور می‌کند و در صورت نزدیک شدن به سقف مجاز، هشدار و پیشنهاد افزایش شارژ ارائه می‌دهد.

پلاگین مالیاتی برای سیستم‌های ERP

توسعه‌دهندگان نرم‌افزارهای حسابداری و CRM می‌توانند متدهای وب سرویس مالیتور را به عنوان ابزار به ایجنت های اختصاصی خود متصل کنند.

3. نحوه اتصال ایجنت به مالیتور (Function / Tool Calling)

مالیتور به عنوان یک ابزار اجرایی (Tool)

مدل‌های زبانی مانند GPT-4o یا Claude 3.5 نیاز به دسترسی به داده‌ها و وب سرویس‌ها دارند. کافی است مشخصات اندپوینت‌های مالیتور را به صورت یک Tool Schema به هوش مصنوعی معرفی کنید تا به محض تقاضای کاربر، مقادیر فاکتور را برای فراخوانی API مالیتور آماده کند.

4. نمونه کد پیاده‌سازی ابزار مالیتور (OpenAI Tool Calling)

تعریف ساختار ارسال فاکتور الگوی 1 برای هوش مصنوعی:

// 1. Tool Definition for OpenAI
const malitorToolDefinition = {
  "type": "function",
  "function": {
    "name": "send_malitor_invoice",
    "description": "Send a Pattern 1 invoice to the Taxpayer System via Malitor API",
    "parameters": {
      "type": "object",
      "properties": {
        "internalNo": { "type": "integer", "description": "Internal invoice number" },
        "buyerName": { "type": "string", "description": "Buyer name or company name" },
        "buyerNationalCode": { "type": "string", "description": "10-digit national code" },
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "sstid": { "type": "string", "description": "13-digit standard tax stuff id" },
              "am": { "type": "number", "description": "Quantity" },
              "fee": { "type": "number", "description": "Unit price" },
              "vra": { "type": "number", "description": "VAT rate" }
            },
            "required": ["sstid", "am", "fee", "vra"]
          }
        }
      },
      "required": ["internalNo", "buyerName", "items"]
    }
  }
};

نحوه دریافت پاسخ از هوش مصنوعی و ارسال به مالیتور در پایتون (Python):

import requests
import json
from openai import OpenAI

client = OpenAI(api_key="OPENAI_API_KEY")
MALITOR_KEY = "YOUR_MALITOR_API_KEY"

# Prompt from Accountant
prompt = "Issue invoice 1080 for Reza Mohammadi with national code 0012345678. 2 items of code 2720000114427 at unit price 500,000."

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": prompt}],
    tools=[malitorToolDefinition],
    tool_choice="auto"
)

# Extract tool call & send to Malitor API
tool_call = response.choices[0].message.tool_calls[0]
if tool_call.function.name == "send_malitor_invoice":
    data = json.loads(tool_call.function.arguments)
    data["invoiceDateTime"] = "2026-11-06T10:30:00"
    data["invoiceType"] = 1
    data["invoiceSubject"] = 1
    data["buyerType"] = 1
    data["settlementType"] = 1

    headers = {"X-API-KEY": MALITOR_KEY, "Content-Type": "application/json"}
    res = requests.post("https://apiaddress.ir/api/v1/Invoices/pattern1", headers=headers, json=data)
    print("Taxpayer Result:", res.json())