Examples

Basic Question-Answering

Simple Query

from taxia import TaxiaEngine

engine = TaxiaEngine()
result = engine.answer("What is the corporate tax filing deadline?")

print(f"Answer: {result.answer}")
print(f"Citations: {result.citations}")

Multiple Queries

queries = [
    "What is the comprehensive income tax filing deadline for 2025?",
    "Who must file corporate tax returns?",
    "What is the standard VAT rate?",
]

for query in queries:
    result = engine.answer(query)
    print(f"Q: {query}")
    print(f"A: {result.answer}\n")

Citations and Audit Trail

Display Citations

result = engine.answer("How to calculate taxable income from salary?")

print(f"Answer: {result.answer}")
print(f"\nLegal Citations:")
for i, citation in enumerate(result.citations, 1):
    print(f"  {i}. {citation}")

Save Audit Log

import json

result = engine.answer("What is the dividend income tax rate?")

audit_log = {
    "trace_id": result.trace_id,
    "question": "What is the dividend income tax rate?",
    "answer": result.answer,
    "citations": result.citations,
    "timestamp": result.timestamp,
}

with open("audit_log.json", "w", encoding="utf-8") as f:
    json.dump(audit_log, f, ensure_ascii=False, indent=2)

Data Indexing

Index Tax Law Documents

from taxia import TaxiaEngine

engine = TaxiaEngine()

# Index all documents in directory
engine.index_documents("./koreantaxlaw")

# Query indexed data
result = engine.answer("What is the content of Article 27 of the Corporate Tax Act?")
print(result.answer)

Batch Indexing

from pathlib import Path

data_dir = Path("./koreantaxlaw")

for year_dir in sorted(data_dir.iterdir()):
    if year_dir.is_dir():
        print(f"Indexing {year_dir.name}...")
        engine.index_documents(str(year_dir))

REST API Usage

Start API Server

taxia server --host 0.0.0.0 --port 8000

Query API with curl

curl -X POST "http://localhost:8000/ask" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "What is the corporate tax filing deadline?",
    "top_k": 3
  }'

Query API with Python

import requests

response = requests.post(
    "http://localhost:8000/ask",
    json={
        "query": "What is the corporate tax filing deadline?",
        "top_k": 3
    }
)

result = response.json()
print(f"Answer: {result['answer']}")
print(f"Citations: {result['citations']}")

Advanced Usage

Custom Configuration

from taxia import TaxiaEngine, TaxiaConfig

config = TaxiaConfig(
    llm_provider="anthropic",
    llm_model="claude-3-5-sonnet-20241022",
    qdrant_host="localhost",
    qdrant_port=6333,
    top_k=10,  # Retrieve more documents
    enable_graph_rag=True,
)

engine = TaxiaEngine(config=config)

Graph-RAG Query

# Enable Neo4j for enhanced retrieval
config = TaxiaConfig(
    enable_graph_rag=True,
    neo4j_uri="bolt://localhost:7687",
    neo4j_user="neo4j",
    neo4j_password="password",
)

engine = TaxiaEngine(config=config)

# Query will use both vector search and graph relationships
result = engine.answer("What enforcement decrees relate to Article 27 of the Corporate Tax Act?")
print(result.answer)

CLI Examples

Check System Health

taxia health

View Configuration

taxia config show

Index Documents

taxia index ./koreantaxlaw --collection taxia_2025

Query from CLI

taxia ask "What is the corporate tax filing deadline?"

Start API Server

taxia server --host 0.0.0.0 --port 8000 --reload

JavaScript Examples

Error Handling

Handle Query Errors

from taxia import TaxiaEngine
from taxia.exceptions import TaxiaError

engine = TaxiaEngine()

try:
    result = engine.answer("What is the corporate tax filing deadline?")
    print(result.answer)
except TaxiaError as e:
    print(f"Error: {e}")

Validate Configuration

from taxia import TaxiaConfig

try:
    config = TaxiaConfig(
        llm_provider="invalid_provider",
    )
except ValueError as e:
    print(f"Configuration error: {e}")