MandAPI
Español ▾
Claves y consumo

Registra el uso por usuario anónimo en tu aplicación

Añade identificadores propios y eventos mínimos sin depender de una API de análisis de MandAPI no verificada.

Usa esta guía con tu asistente de programación

Leer las instrucciones
Añade eventos mínimos propios de la aplicación alrededor de la llamada de chat a MandAPI. Genera un ID interno, utiliza un usuario anónimo controlado por el servidor y registra función, fecha, duración, estado, ID de respuesta y tokens cuando existan. Conserva el uso ausente como desconocido. No guardes claves, prompts, mensajes de clientes ni correos. No inventes APIs de análisis de MandAPI ni afirmes que el gateway guarda metadatos arbitrarios. Empieza con eventos sintéticos y conserva el tratamiento de errores de la aplicación.
TXT

Define qué necesita tu aplicación

Esta receta guarda un evento local por solicitud al modelo. Asigna un usuario anónimo de la aplicación, una función y un identificador propio de solicitud. Son registros de tu aplicación; el ejemplo no crea análisis de organizaciones ni garantiza que los metadatos aparezcan en el panel de MandAPI.

Utilízalo para saber qué función está activa o investigar una solicitud fallida. En un servicio real, asigna los identificadores anónimos desde el servidor con tu sistema de cuentas. No aceptes directamente desde el navegador una identidad que pueda pertenecer a otro cliente.

Guarda un evento mínimo

Instala el cliente Python de OpenAI y configura MANDAPI_API_KEY y MANDAPI_MODEL_ID. Guarda el ejemplo como tracked_request.py. Utiliza un usuario y mensaje sintéticos. Al ejecutarlo hace una solicitud real y escribe usage-events.jsonl en la carpeta actual.

python
# tracked_request.py
import json
import os
import time
import uuid
from datetime import datetime, timezone
from openai import OpenAI

request_id = uuid.uuid4().hex
started = time.monotonic()
record = {
    "request_id": request_id,
    "anonymous_user_id": "demo-user-a",
    "feature": "support-demo",
    "time": datetime.now(timezone.utc).isoformat(),
}

with OpenAI(
    api_key=os.environ["MANDAPI_API_KEY"],
    base_url="https://api.mandapi.com/v1",
    timeout=30.0,
    max_retries=0,
) as client:
    try:
        result = client.chat.completions.create(
            model=os.environ["MANDAPI_MODEL_ID"],
            messages=[{"role": "user", "content": "Say hello in Spanish."}],
        )
        record.update(status="ok", response_id=result.id, model=result.model)
        if result.usage:
            record.update(
                prompt_tokens=result.usage.prompt_tokens,
                completion_tokens=result.usage.completion_tokens,
            )
    except Exception as error:
        record.update(status="error", error_type=type(error).__name__)
        raise RuntimeError("MandAPI request failed: " + type(error).__name__) from None
    finally:
        record["duration_ms"] = round((time.monotonic() - started) * 1000)
        with open("usage-events.jsonl", "a", encoding="utf-8") as log:
            log.write(json.dumps(record, ensure_ascii=False) + "\n")
print("Saved local event:", request_id)

El evento guarda estado y duración incluso si la solicitud falla. Los tokens solo se añaden si fueron devueltos. El identificador propio es diferente del ID de respuesta del modelo; ninguno equivale a un cargo monetario.

Utiliza los registros

Abre el archivo JSONL y comprueba que cada ejecución añade un evento. Relaciona los eventos mediante el ID propio, el usuario anónimo y la función. Si calculas un coste, anota la fecha de tarifa y las suposiciones. Concilia los créditos reales con tu panel de MandAPI.

El ejemplo no envía identificadores de clientes a MandAPI. Tampoco guarda prompts, respuestas, correos ni claves. Configura acceso y conservación adecuados antes de recopilar actividad de clientes reales.

Comprueba el resultado

Una llamada correcta debe guardar un evento ok con ID de respuesta y el uso que exista. Un fallo debe guardar un evento error sin inventar tokens. En servicios con varios procesos, sustituye el archivo de demostración por una base de datos o sistema de registros que admita escritura concurrente. Crea informes con tus eventos, sin presuponer una ruta de análisis de plataforma no verificada.

Referencias

Temas inspirados en documentación pública; instrucciones y ejemplos adaptados para MandAPI.