Exemplos Praticos Apis

💻 Exemplos Práticos de Uso das APIs C-Suite

Data: 2025-12-06
Versão: 1.0


📋 Índice

  1. Setup e Autenticação
  2. Exemplos com 4C APIs
  3. Exemplos com Executive APIs
  4. Exemplos com Context APIs
  5. Exemplos com Cashflow APIs
  6. Exemplos Integrados

🔧 Setup e Autenticação

Instalação de Dependências

pip install httpx python-dotenv

Configuração

# config.py
import os
from dotenv import load_dotenv

load_dotenv()

# URLs das APIs
BASE_URL = os.getenv("CSUITE_BASE_URL", "https://csuite.internut.com.br")
FOURC_DECISION_API = f"{BASE_URL}/4c/decision"
FOURC_FEATURE_API = f"{BASE_URL}/4c/feature-service"
FOURC_SCORING_API = f"{BASE_URL}/4c/scoring-service"
EXECUTIVE_API = f"{BASE_URL}/executive"
CONTEXT_API = f"{BASE_URL}/context/api/csuite"
CASHFLOW_API = f"{BASE_URL}/cashflow/api/cashflow"

# Credenciais
AUTH_EMAIL = os.getenv("CSUITE_EMAIL")
AUTH_PASSWORD = os.getenv("CSUITE_PASSWORD")

Função de Autenticação

# auth.py
import httpx
from config import BASE_URL

async def get_auth_token():
    """Obtém token de autenticação"""
    async with httpx.AsyncClient() as client:
        response = await client.post(
            f"{BASE_URL}/auth/login",
            json={
                "email": AUTH_EMAIL,
                "password": AUTH_PASSWORD
            }
        )
        response.raise_for_status()
        return response.json()["access_token"]

# Cache do token
_token = None

async def get_token():
    """Retorna token (com cache)"""
    global _token
    if _token is None:
        _token = await get_auth_token()
    return _token

🔵 Exemplos com 4C APIs

Exemplo 1: Obter Features de Cliente

# examples/4c_features.py
import httpx
from config import FOURC_FEATURE_API, get_token

async def get_customer_features(customer_id: int, context: dict = None):
    """
    Obtém features agregadas de um cliente

    Args:
        customer_id: ID do cliente
        context: Contexto adicional (ex: SKU específico)

    Returns:
        Dict com features do cliente
    """
    token = await get_token()

    async with httpx.AsyncClient() as client:
        response = await client.post(
            f"{FOURC_FEATURE_API}/features/customer",
            json={
                "customer_id": customer_id,
                "context": context or {}
            },
            headers={"Authorization": f"Bearer {token}"}
        )
        response.raise_for_status()
        return response.json()

# Uso
import asyncio

async def main():
    features = await get_customer_features(
        customer_id=123,
        context={"sku": "BK4-2516"}
    )
    print(f"Features do cliente 123:")
    print(f"  - Recency: {features['features']['recency_days']} dias")
    print(f"  - Frequência (12m): {features['features']['freq_12m']}")
    print(f"  - Valor (12m): R$ {features['features']['value_12m']:.2f}")
    print(f"  - RFM Score: {features['features']['rfm']:.2f}")

asyncio.run(main())

Exemplo 2: Calcular Score de Intenção

# examples/4c_scoring.py
import httpx
from config import FOURC_SCORING_API, FOURC_FEATURE_API, get_token

async def calculate_intent_score(customer_id: int):
    """
    Calcula score de intenção de compra

    Args:
        customer_id: ID do cliente

    Returns:
        Dict com score de intenção
    """
    token = await get_token()

    # 1. Obter features
    async with httpx.AsyncClient() as client:
        features_resp = await client.post(
            f"{FOURC_FEATURE_API}/features/customer",
            json={"customer_id": customer_id},
            headers={"Authorization": f"Bearer {token}"}
        )
        features_resp.raise_for_status()
        features = features_resp.json()["features"]

    # 2. Calcular score de intenção
    async with httpx.AsyncClient() as client:
        score_resp = await client.post(
            f"{FOURC_SCORING_API}/score/intent",
            json={
                "customer_id": customer_id,
                "features": features
            },
            headers={"Authorization": f"Bearer {token}"}
        )
        score_resp.raise_for_status()
        return score_resp.json()

# Uso
async def main():
    score = await calculate_intent_score(customer_id=123)
    print(f"Score de intenção do cliente 123: {score['intent_score']:.2%}")
    print(f"Modelo usado: {score['model_version']}")

asyncio.run(main())

Exemplo 3: Tomar Decisão Completa

# examples/4c_decision.py
import httpx
from config import FOURC_DECISION_API, get_token

async def make_decision(
    customer_id: int,
    candidates: list,
    constraints: dict = None
):
    """
    Toma decisão completa (cliente, oferta, canal, timing)

    Args:
        customer_id: ID do cliente
        candidates: Lista de ofertas candidatas
        constraints: Constraints (min_intent, max_contacts, etc)

    Returns:
        Dict com decisão completa
    """
    token = await get_token()

    async with httpx.AsyncClient() as client:
        response = await client.post(
            f"{FOURC_DECISION_API}/decide",
            json={
                "customer_id": customer_id,
                "candidates": candidates,
                "constraints": constraints or {},
                "include_explanations": True,
                "include_natural_justification": True
            },
            headers={"Authorization": f"Bearer {token}"}
        )
        response.raise_for_status()
        return response.json()

# Uso
async def main():
    decision = await make_decision(
        customer_id=123,
        candidates=[
            {"sku": "BK4-2516", "price": 1500.00},
            {"sku": "BK4-2517", "price": 2000.00}
        ],
        constraints={
            "min_intent": 0.45,
            "max_contacts_per_day": 2,
            "respect_opt_out": True
        }
    )

    if decision["approved"]:
        print(f"✅ Decisão aprovada!")
        print(f"  - Oferta: {decision['offer']['sku']} (R$ {decision['offer']['price']:.2f})")
        print(f"  - Canal: {decision['channel']}")
        print(f"  - Timing: {decision['timing']['send_at']}")
        print(f"  - Scores:")
        print(f"    * Intenção: {decision['scores']['intent']:.2%}")
        print(f"    * Oferta: {decision['scores']['offer']:.2%}")
        print(f"    * Canal: {decision['scores']['channel']:.2%}")
        print(f"    * Timing: {decision['scores']['timing']:.2%}")
        if decision.get("natural_justification"):
            print(f"  - Justificativa: {decision['natural_justification']}")
    else:
        print(f"❌ Decisão pulada: {decision['skip_reason']}")

asyncio.run(main())

Exemplo 4: Decisão Automática

# examples/4c_auto_decision.py
import httpx
from config import FOURC_DECISION_API, get_token

async def auto_decision(customer_id: int):
    """
    Decisão automática (sistema escolhe oferta)

    Args:
        customer_id: ID do cliente

    Returns:
        Dict com decisão automática
    """
    token = await get_token()

    async with httpx.AsyncClient() as client:
        response = await client.post(
            f"{FOURC_DECISION_API}/decide/auto",
            json={
                "customer_id": customer_id,
                "include_explanations": True,
                "include_natural_justification": True
            },
            headers={"Authorization": f"Bearer {token}"}
        )
        response.raise_for_status()
        return response.json()

# Uso
async def main():
    decision = await auto_decision(customer_id=123)

    if decision["approved"]:
        print(f"✅ Decisão automática gerada!")
        print(f"  - Oferta escolhida: {decision['offer']['sku']}")
        print(f"  - Canal: {decision['channel']}")
        print(f"  - Enviar em: {decision['timing']['send_at']}")

asyncio.run(main())

Exemplo 5: Executar Decisão (Enviar Mensagem)

# examples/4c_execute.py
import httpx
from config import FOURC_DECISION_API, get_token

async def execute_decision(decision_id: str):
    """
    Executa decisão (envia mensagem via WhatsApp/Email)

    Args:
        decision_id: ID da decisão

    Returns:
        Dict com resultado da execução
    """
    token = await get_token()

    async with httpx.AsyncClient() as client:
        response = await client.post(
            f"{FOURC_DECISION_API}/send",
            json={"decision_id": decision_id},
            headers={"Authorization": f"Bearer {token}"}
        )
        response.raise_for_status()
        return response.json()

# Uso
async def main():
    # 1. Gerar decisão
    decision = await auto_decision(customer_id=123)

    if decision["approved"]:
        # 2. Executar decisão
        execution = await execute_decision(decision["decision_id"])
        print(f"✅ Mensagem enviada!")
        print(f"  - Execution ID: {execution['execution_id']}")
        print(f"  - Status: {execution['status']}")
        print(f"  - Canal: {execution['channel']}")

asyncio.run(main())

🟢 Exemplos com Executive APIs

Exemplo 6: Obter Dashboard Executivo

# examples/executive_dashboard.py
import httpx
from config import EXECUTIVE_API, get_token

async def get_executive_dashboard(org_id: int):
    """
    Obtém resumo do dashboard executivo

    Args:
        org_id: ID da organização

    Returns:
        Dict com resumo executivo
    """
    token = await get_token()

    async with httpx.AsyncClient() as client:
        response = await client.get(
            f"{EXECUTIVE_API}/dashboard/summary/{org_id}",
            headers={"Authorization": f"Bearer {token}"}
        )
        response.raise_for_status()
        return response.json()

# Uso
async def main():
    dashboard = await get_executive_dashboard(org_id=1)

    print(f"📊 Dashboard Executivo - Org {dashboard['org_id']}")
    print(f"  - Alertas abertos: {dashboard['alerts_open']}")
    print(f"  - Alertas fechados: {dashboard['alerts_closed']}")
    print(f"  - Action items pendentes: {dashboard['items_pending']}")
    print(f"  - Action items completados: {dashboard['items_completed']}")
    print(f"  - Última execução: {dashboard['last_run']}")
    print(f"  - Métricas (30 dias):")
    print(f"    * Receita: R$ {dashboard['metrics']['revenue_30d']:,.2f}")
    print(f"    * Pedidos: {dashboard['metrics']['orders_30d']}")
    print(f"    * Clientes ativos: {dashboard['metrics']['customers_active']}")

asyncio.run(main())

Exemplo 7: Executar Agente CFO

# examples/executive_agent.py
import httpx
from config import EXECUTIVE_API, get_token

async def run_cfo_agent(org_id: int, force: bool = False):
    """
    Executa agente CFO para análise financeira

    Args:
        org_id: ID da organização
        force: Forçar execução mesmo se já executado recentemente

    Returns:
        Dict com resultado da execução
    """
    token = await get_token()

    async with httpx.AsyncClient() as client:
        response = await client.post(
            f"{EXECUTIVE_API}/agents/{org_id}/cfo/run",
            json={"force": force},
            headers={"Authorization": f"Bearer {token}"}
        )
        response.raise_for_status()
        return response.json()

# Uso
async def main():
    result = await run_cfo_agent(org_id=1, force=False)

    print(f"✅ Agente CFO executado!")
    print(f"  - Run ID: {result['run_id']}")
    print(f"  - Status: {result['status']}")
    print(f"  - Alertas gerados: {result.get('alerts_generated', 0)}")
    print(f"  - Action items criados: {result.get('action_items_created', 0)}")

asyncio.run(main())

Exemplo 8: Obter Alertas

# examples/executive_alerts.py
import httpx
from config import EXECUTIVE_API, get_token

async def get_alerts(org_id: int = None, priority: str = None, status: str = "open"):
    """
    Obtém lista de alertas

    Args:
        org_id: ID da organização (opcional)
        priority: Prioridade (high, medium, low)
        status: Status (open, closed, in_progress)

    Returns:
        Lista de alertas
    """
    token = await get_token()

    params = {}
    if org_id:
        params["org_id"] = org_id
    if priority:
        params["priority"] = priority
    if status:
        params["status"] = status

    async with httpx.AsyncClient() as client:
        response = await client.get(
            f"{EXECUTIVE_API}/alerts",
            params=params,
            headers={"Authorization": f"Bearer {token}"}
        )
        response.raise_for_status()
        return response.json()

# Uso
async def main():
    alerts = await get_alerts(priority="high", status="open")

    print(f"🚨 Alertas de Alta Prioridade ({len(alerts)}):")
    for alert in alerts:
        print(f"  - {alert['title']}")
        print(f"    Tipo: {alert['type']}")
        print(f"    Severidade: {alert['severity']}")
        print(f"    Criado em: {alert['created_at']}")
        print()

asyncio.run(main())

Exemplo 9: Criar Action Item

# examples/executive_action_items.py
import httpx
from config import EXECUTIVE_API, get_token

async def create_action_item(
    alert_id: str,
    title: str,
    description: str,
    priority: str = "medium",
    due_date: str = None
):
    """
    Cria action item a partir de alerta

    Args:
        alert_id: ID do alerta
        title: Título do action item
        description: Descrição
        priority: Prioridade (high, medium, low)
        due_date: Data de vencimento (ISO format)

    Returns:
        Dict com action item criado
    """
    token = await get_token()

    async with httpx.AsyncClient() as client:
        response = await client.post(
            f"{EXECUTIVE_API}/action-items",
            json={
                "alert_id": alert_id,
                "title": title,
                "description": description,
                "priority": priority,
                "due_date": due_date
            },
            headers={"Authorization": f"Bearer {token}"}
        )
        response.raise_for_status()
        return response.json()

# Uso
async def main():
    # 1. Obter alerta
    alerts = await get_alerts(priority="high", status="open")
    if alerts:
        alert = alerts[0]

        # 2. Criar action item
        action_item = await create_action_item(
            alert_id=alert["id"],
            title="Resolver problema de fluxo de caixa",
            description="Acelerar cobrança de clientes com pagamento em atraso",
            priority="high",
            due_date="2025-12-10T00:00:00Z"
        )

        print(f"✅ Action item criado!")
        print(f"  - ID: {action_item['id']}")
        print(f"  - Título: {action_item['title']}")
        print(f"  - Prioridade: {action_item['priority']}")

asyncio.run(main())

🟡 Exemplos com Context APIs

Exemplo 10: Detectar Eventos

# examples/context_events.py
import httpx
from config import CONTEXT_API, get_token

async def get_events(days: int = 7, event_type: str = None):
    """
    Obtém eventos de curto prazo

    Args:
        days: Número de dias para buscar
        event_type: Tipo de evento (opcional)

    Returns:
        Lista de eventos
    """
    token = await get_token()

    params = {"days": days}
    if event_type:
        params["type"] = event_type

    async with httpx.AsyncClient() as client:
        response = await client.get(
            f"{CONTEXT_API}/events",
            params=params,
            headers={"Authorization": f"Bearer {token}"}
        )
        response.raise_for_status()
        return response.json()

# Uso
async def main():
    events = await get_events(days=7)

    print(f"📅 Eventos dos últimos 7 dias ({len(events)}):")
    for event in events:
        print(f"  - {event['title']}")
        print(f"    Tipo: {event['type']}")
        print(f"    Data: {event['date']}")
        print(f"    Impacto: {event.get('impact', 'N/A')}")
        print()

asyncio.run(main())

Exemplo 11: Detectar Tendências

# examples/context_trends.py
import httpx
from config import CONTEXT_API, get_token

async def get_trends(metric: str = None, days: int = 30):
    """
    Obtém tendências de médio prazo

    Args:
        metric: Métrica específica (opcional)
        days: Período em dias

    Returns:
        Lista de tendências
    """
    token = await get_token()

    params = {"days": days}
    if metric:
        params["metric"] = metric

    async with httpx.AsyncClient() as client:
        response = await client.get(
            f"{CONTEXT_API}/trends",
            params=params,
            headers={"Authorization": f"Bearer {token}"}
        )
        response.raise_for_status()
        return response.json()

# Uso
async def main():
    trends = await get_trends(days=30)

    print(f"📈 Tendências (30 dias):")
    for trend in trends:
        print(f"  - {trend['metric']}: {trend['direction']} ({trend['strength']:.2%})")
        print(f"    Período: {trend['period']}")
        print()

asyncio.run(main())

🔵 Exemplos com Cashflow APIs

Exemplo 12: Obter Timeline de Fluxo de Caixa

# examples/cashflow_timeline.py
import httpx
from config import CASHFLOW_API, get_token

async def get_cashflow_timeline(days: int = 90):
    """
    Obtém timeline de fluxo de caixa

    Args:
        days: Número de dias para projetar

    Returns:
        Dict com timeline
    """
    token = await get_token()

    async with httpx.AsyncClient() as client:
        response = await client.get(
            f"{CASHFLOW_API}/timeline",
            params={"days": days},
            headers={"Authorization": f"Bearer {token}"}
        )
        response.raise_for_status()
        return response.json()

# Uso
async def main():
    timeline = await get_cashflow_timeline(days=90)

    print(f"💰 Timeline de Fluxo de Caixa (90 dias):")
    print(f"  - Saldo inicial: R$ {timeline['initial_balance']:,.2f}")
    print(f"  - Saldo final projetado: R$ {timeline['final_balance']:,.2f}")
    print(f"  - Entradas totais: R$ {timeline['total_inflows']:,.2f}")
    print(f"  - Saídas totais: R$ {timeline['total_outflows']:,.2f}")
    print(f"  - Saldo mínimo: R$ {timeline['min_balance']:,.2f}")

asyncio.run(main())

Exemplo 13: Simular Cenário

# examples/cashflow_simulate.py
import httpx
from config import CASHFLOW_API, get_token

async def simulate_scenario(scenario_name: str, parameters: dict):
    """
    Simula cenário de fluxo de caixa

    Args:
        scenario_name: Nome do cenário
        parameters: Parâmetros da simulação

    Returns:
        Dict com resultado da simulação
    """
    token = await get_token()

    async with httpx.AsyncClient() as client:
        response = await client.post(
            f"{CASHFLOW_API}/simulator/run",
            json={
                "scenario": scenario_name,
                "parameters": parameters
            },
            headers={"Authorization": f"Bearer {token}"}
        )
        response.raise_for_status()
        return response.json()

# Uso
async def main():
    # Simular cenário de acelerar cobrança
    result = await simulate_scenario(
        scenario_name="accelerate_collection",
        parameters={
            "collection_days_reduction": 5,
            "discount_rate": 0.02  # 2% de desconto
        }
    )

    print(f"📊 Simulação: Acelerar Cobrança")
    print(f"  - Saldo final: R$ {result['final_balance']:,.2f}")
    print(f"  - Impacto: R$ {result['impact']:,.2f}")
    print(f"  - Risco: {result['risk_level']}")

asyncio.run(main())

🔗 Exemplos Integrados

Exemplo 14: Workflow Completo - Reativação de Cliente

# examples/integrated_reactivation.py
import httpx
import asyncio
from config import *

async def reactivate_customer_workflow(customer_id: int):
    """
    Workflow completo de reativação de cliente:
    1. Detectar cliente inativo (Context API)
    2. Obter features (4C Feature Service)
    3. Calcular score de intenção (4C Scoring Service)
    4. Gerar decisão de reativação (4C Decision API)
    5. Executar decisão (4C Executor)
    6. Monitorar resultado
    """
    token = await get_token()
    headers = {"Authorization": f"Bearer {token}"}

    async with httpx.AsyncClient() as client:
        # 1. Verificar se cliente está inativo
        signals = await client.get(
            f"{CONTEXT_API}/signals",
            params={"type": "customer_inactive", "customer_id": customer_id},
            headers=headers
        )
        signals.raise_for_status()
        signals_data = signals.json()

        if not signals_data:
            print(f"Cliente {customer_id} não está inativo")
            return

        print(f"✅ Cliente {customer_id} detectado como inativo")

        # 2. Obter features
        features_resp = await client.post(
            f"{FOURC_FEATURE_API}/features/customer",
            json={"customer_id": customer_id, "context": {"goal": "reactivation"}},
            headers=headers
        )
        features_resp.raise_for_status()
        features = features_resp.json()["features"]
        print(f"✅ Features obtidas (RFM: {features['rfm']:.2f})")

        # 3. Calcular score de intenção
        intent_resp = await client.post(
            f"{FOURC_SCORING_API}/score/intent",
            json={"customer_id": customer_id, "features": features},
            headers=headers
        )
        intent_resp.raise_for_status()
        intent_score = intent_resp.json()["intent_score"]
        print(f"✅ Score de intenção: {intent_score:.2%}")

        if intent_score < 0.3:
            print(f"❌ Score muito baixo, não prosseguir com reativação")
            return

        # 4. Gerar decisão de reativação
        decision_resp = await client.post(
            f"{FOURC_DECISION_API}/decide/auto",
            json={
                "customer_id": customer_id,
                "context": {"goal": "reactivation", "urgency": "medium"},
                "include_explanations": True
            },
            headers=headers
        )
        decision_resp.raise_for_status()
        decision = decision_resp.json()

        if not decision["approved"]:
            print(f"❌ Decisão não aprovada: {decision['skip_reason']}")
            return

        print(f"✅ Decisão gerada:")
        print(f"  - Oferta: {decision['offer']['sku']}")
        print(f"  - Canal: {decision['channel']}")
        print(f"  - Timing: {decision['timing']['send_at']}")

        # 5. Executar decisão
        execute_resp = await client.post(
            f"{FOURC_DECISION_API}/send",
            json={"decision_id": decision["decision_id"]},
            headers=headers
        )
        execute_resp.raise_for_status()
        execution = execute_resp.json()

        print(f"✅ Mensagem enviada!")
        print(f"  - Execution ID: {execution['execution_id']}")
        print(f"  - Status: {execution['status']}")

        return {
            "customer_id": customer_id,
            "decision_id": decision["decision_id"],
            "execution_id": execution["execution_id"],
            "intent_score": intent_score
        }

# Uso
asyncio.run(reactivate_customer_workflow(customer_id=123))

Exemplo 15: Responder a Alerta Financeiro

# examples/integrated_alert_response.py
import httpx
import asyncio
from config import *

async def respond_to_financial_alert(alert_id: str):
    """
    Responde a alerta financeiro:
    1. Obter alerta (Executive API)
    2. Simular impacto de ações (Cashflow API)
    3. Gerar decisões para clientes com atraso (4C Decision API)
    4. Criar action items (Executive API)
    5. Fechar alerta quando resolvido
    """
    token = await get_token()
    headers = {"Authorization": f"Bearer {token}"}

    async with httpx.AsyncClient() as client:
        # 1. Obter alerta
        alert_resp = await client.get(
            f"{EXECUTIVE_API}/alerts/{alert_id}",
            headers=headers
        )
        alert_resp.raise_for_status()
        alert = alert_resp.json()

        print(f"🚨 Alerta: {alert['title']}")
        print(f"  - Tipo: {alert['type']}")
        print(f"  - Severidade: {alert['severity']}")

        if alert["type"] != "financial":
            print("❌ Alerta não é financeiro")
            return

        # 2. Simular impacto de acelerar cobrança
        simulate_resp = await client.post(
            f"{CASHFLOW_API}/simulator/run",
            json={
                "scenario": "accelerate_collection",
                "parameters": {
                    "collection_days_reduction": 5,
                    "discount_rate": 0.02
                }
            },
            headers=headers
        )
        simulate_resp.raise_for_status()
        simulation = simulate_resp.json()

        print(f"📊 Simulação:")
        print(f"  - Impacto: R$ {simulation['impact']:,.2f}")
        print(f"  - Saldo final: R$ {simulation['final_balance']:,.2f}")

        # 3. Obter clientes com atraso (assumindo que vem do alerta)
        # Em produção, isso viria de uma query ao banco
        customers_with_delay = [123, 456, 789]  # Exemplo

        # 4. Gerar decisões para clientes com atraso
        decisions = []
        for customer_id in customers_with_delay:
            decision_resp = await client.post(
                f"{FOURC_DECISION_API}/decide/auto",
                json={
                    "customer_id": customer_id,
                    "context": {
                        "goal": "collection",
                        "urgency": "high"
                    }
                },
                headers=headers
            )
            decision_resp.raise_for_status()
            decision = decision_resp.json()

            if decision["approved"]:
                decisions.append(decision)
                print(f"✅ Decisão gerada para cliente {customer_id}")

        # 5. Criar action item
        action_item_resp = await client.post(
            f"{EXECUTIVE_API}/action-items",
            json={
                "alert_id": alert_id,
                "title": "Acelerar cobrança de clientes",
                "description": f"Geradas {len(decisions)} decisões para clientes com atraso",
                "priority": "high",
                "due_date": "2025-12-10T00:00:00Z"
            },
            headers=headers
        )
        action_item_resp.raise_for_status()
        action_item = action_item_resp.json()

        print(f"✅ Action item criado: {action_item['id']}")

        return {
            "alert_id": alert_id,
            "simulation": simulation,
            "decisions_generated": len(decisions),
            "action_item_id": action_item["id"]
        }

# Uso
asyncio.run(respond_to_financial_alert(alert_id="alert-123"))

📚 Scripts Completos

Todos os exemplos acima podem ser salvos em arquivos .py e executados diretamente:

# Exemplo
python examples/4c_decision.py
python examples/integrated_reactivation.py

Última atualização: 2025-12-06

🔊 Text-to-Speech

1.0x
1.0
Pronto para reproduzir