Skip to main content

quota-sdk (Python)

SDK oficial em Python para telemetria, monitoramento de latência e consumo de tokens de modelos de IA (OpenAI, Anthropic, Gemini, Groq, etc.) para a plataforma Quota.


📦 Instalação

pip install quota-sdk

🚀 Uso Rápido (1 Linha de Configuração)

Basta chamar Quota.init() no início da sua aplicação (ex: main.py ou app.py).

from quota import Quota
from openai import OpenAI

# 1. Inicializa o monitoramento do Quota (uma única vez na inicialização)
Quota.init(api_key="qta_live_sua_chave_de_api")

# 2. Use qualquer SDK oficial de IA normalmente!
client = OpenAI()

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Olá!"}]
)

print(response.choices[0].message.content)

🤖 Exemplos de Uso por Provedor em Python

Como o Quota.init() intercepta automaticamente chamadas via httpx e requests, você pode usar os SDKs oficiais das IAs diretamente:

1. OpenAI SDK (openai)

from quota import Quota
from openai import OpenAI

Quota.init(api_key="qta_live_sua_chave")

client = OpenAI()
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Resuma este artigo."}]
)

2. Anthropic SDK (anthropic)

from quota import Quota
import anthropic

Quota.init(api_key="qta_live_sua_chave")

client = anthropic.Anthropic()
message = client.messages.create(
    model="claude-3-5-sonnet-20241022",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explique astrofísica."}]
)

3. Groq SDK (groq)

from quota import Quota
from groq import Groq

Quota.init(api_key="qta_live_sua_chave")

client = Groq()
response = client.chat.completions.create(
    model="llama-3.3-70b-versatile",
    messages=[{"role": "user", "content": "Olá Groq!"}]
)

4. Google Gemini (google-generativeai)

from quota import Quota
import google.generativeai as genai

Quota.init(api_key="qta_live_sua_chave")

genai.configure(api_key="SUA_CHAVE_GEMINI")
model = genai.GenerativeModel("gemini-1.5-pro")
response = model.generate_content("Escreva uma história curta.")

5. Mistral AI SDK (mistralai)

from quota import Quota
from mistralai import Mistral

Quota.init(api_key="qta_live_sua_chave")

client = Mistral(api_key="SUA_CHAVE_MISTRAL")
response = client.chat.complete(
    model="mistral-large-latest",
    messages=[{"role": "user", "content": "Olá Mistral!"}]
)

🏷️ Passando Metadados de Observabilidade (Opcional)

Se você desejar categorizar e filtrar suas métricas no painel do Quota por Agente, Projeto, Equipe/Grupo, Usuário Final ou Tags, existem duas formas de enviar esses dados:

Opção A: Metadados Globais na Inicialização (Recomendado)

Defina os parâmetros diretamente no Quota.init(). Todas as chamadas de IA da sua aplicação herdarão essas informações automaticamente:

from quota import Quota

Quota.init(
    api_key="qta_live_sua_chave",
    project="portal-cliente",     # Projeto / Setor
    agent="bot-suporte",          # Agente / Assistente
    environment="production"      # Ambiente (production, staging, etc)
)

Opção B: Metadados Dinâmicos por Requisição (via Cabeçalhos)

Para informações dinâmicas que mudam a cada requisição (como o ID do usuário logado ou tags específicas), passe os cabeçalhos x-quota-* ou extra_headers:

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Qual o meu saldo?"}],
    extra_headers={
        "x-quota-user-id": "usr_991823",        # ID do usuário final
        "x-quota-tags": "vip,financeiro",        # Tags separadas por vírgula
        "x-quota-billing-group": "equipe-vendas" # Grupo de faturamento/equipe
    }
)

📋 Parâmetros e Cabeçalhos Suportados:

Parâmetro no Quota.init() Cabeçalho HTTP Descrição
project x-quota-project Nome do Projeto ou Setor da empresa.
agent x-quota-agent Nome do Agente ou Robô de IA.
environment x-quota-environment Ambiente (production, staging, development).
external_user_id x-quota-user-id ID do usuário final da sua aplicação.
request_group x-quota-request-group Agrupamento de fluxo de execução.
billing_group x-quota-billing-group Grupo de faturamento, centro de custo ou equipe.
tags x-quota-tags Lista ou string de tags separadas por vírgula (tag1,tag2).
trace_id x-quota-trace-id ID de rastreamento/tracing distribuído.

🛠️ Ambiente Local (Desenvolvimento)

Por padrão, a telemetria é enviada para a API em produção (https://quota-api.up.railway.app/collector). Para testar localmente contra o seu servidor de desenvolvimento:

Quota.init(
    api_key="qta_live_sua_chave_de_api",
    endpoint="http://localhost:3000/collector"  # Sobrescreve para ambiente local
)

Ou definindo a variável de ambiente no .env:

QUOTA_ENDPOINT=http://localhost:3000/collector

🔧 Configurando o Ambiente de Desenvolvimento Local (.venv)

Para rodar os exemplos locais e desenvolver a SDK Python:

  1. Crie e ative um ambiente virtual (.venv):

    # Windows (PowerShell)
    python -m venv .venv
    .\.venv\Scripts\Activate.ps1
    
    # Linux / macOS
    python3 -m venv .venv
    source .venv/bin/activate
    
  2. Instale as dependências em modo editável:

    pip install -e .
    
  3. Resolução de Avisos do IDE / Type Checker (Pyright / Pylance): Se o seu editor (VS Code, Cursor, PyCharm) exibir avisos como Cannot find module httpx ou Cannot find module requests:

    • Selecione o interpretador Python do projeto apontando para .venv/Scripts/python.exe (Ctrl + Shift + P -> Python: Select Interpreter).
    • O projeto já inclui suporte a pyrightconfig.json e [tool.pyright] no pyproject.toml vinculados à pasta .venv.

📊 Rastreamento Manual (Quota.track_usage)

Para enviar eventos de uso customizados:

from quota import Quota

# 1. Inicializa com a sua Quota API Key
Quota.init(api_key="quota_live_sua_chave")

# 2. Envia o evento de telemetria manual
Quota.track_usage({
    "provider": "openai",
    "model": "gpt-4o",
    "promptTokens": 150,
    "completionTokens": 50,
    "latencyMs": 380,
    "metadata": {
        "project": "meu-projeto",
        "agent": "bot-atendimento",
        "externalUserId": "user_123"
    }
})

🛡️ Segurança & Performance

  • Zero Latência (Thread Daemon Assíncrona): O envio de dados é processado em background sem travar o loop de execução principal.
  • Fail-Safe: Falhas na rede de telemetria nunca afetam ou interrompem o funcionamento da sua chamada de IA.

Metadata

Release files for quota-sdk 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for quota-sdk 1.0.1
File Size Uploaded Provenance Actions
quota_sdk-1.0.1.tar.gz 11.3 kB Without provenance Details for quota_sdk-1.0.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for quota-sdk 1.0.1
File Interpreter ABI Platform Actions
quota_sdk-1.0.1-py3-none-any.whl Python 3 none any Details for quota_sdk-1.0.1-py3-none-any.whl

Total release size: 19.8 kB

Release files / quota_sdk-1.0.1.tar.gz

Download URL quota_sdk-1.0.1.tar.gz
Size 11.3 kB
Tags Source
SHA-256 checksum
How to use checksums
4d07d1874b39227dbc77a5b470104d85eb4bbf9dc7b18aecab8ee6b879ecf6ae
BLAKE2b-256 checksum
How to use checksums
e30fb2deab26a56d771272bc39c288c11e4081860752e5c66683818eb98ab8ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.10

Release files / quota_sdk-1.0.1-py3-none-any.whl

Download URL quota_sdk-1.0.1-py3-none-any.whl
Size 8.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e539af855e001d386ed0c24c437ce52844513acb6f8e51149f7a06c016cbb46a
BLAKE2b-256 checksum
How to use checksums
af8fc7f17c8573de042aa9086fe26ad5bcdd47f37d5ea01f8169d52db002efe4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.10

Security for quota-sdk 1.0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page