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!"}]
)
[!IMPORTANT] API Key do Quota (
qta_live_...) é a única chave aceita para autenticação! Certifique-se de passar uma Quota API Key válida criada no painel da plataforma. Caso seja informada uma chave inexistente ou não cadastrada no ambiente, os dados de consumo e telemetria não poderão ser gravados (HTTP 401).Os parâmetros de categorização (Projeto, Agente, Ambiente, Usuário Final, Tags e Grupo de Faturamento) são 100% opcionais.
🏷️ 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:
-
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
-
Instale as dependências em modo editável:
pip install -e .
-
Resolução de Avisos do IDE / Type Checker (Pyright / Pylance): Se o seu editor (VS Code, Cursor, PyCharm) exibir avisos como
Cannot find module httpxouCannot 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.jsone[tool.pyright]nopyproject.tomlvinculados à pasta.venv.
- Selecione o interpretador Python do projeto apontando para
📊 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.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file quota_sdk-1.0.0.tar.gz.
File metadata
- Download URL: quota_sdk-1.0.0.tar.gz
- Upload date:
- Size: 11.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b0ca3c1627f3cddd9d0e37644a5167f4de9d623ae5f79dd77ab9ca9a60413ac9
|
|
| MD5 |
8145fca58b01674941c5265925653cc3
|
|
| BLAKE2b-256 |
2b1b38644062a2eca3a88f5ea2a5e94045bca40dacebdc652935bc44091be3aa
|
File details
Details for the file quota_sdk-1.0.0-py3-none-any.whl.
File metadata
- Download URL: quota_sdk-1.0.0-py3-none-any.whl
- Upload date:
- Size: 8.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
602a8c7f8df55a3a05333e18825e1746f19e0166f0ddcb11b2ef3a6833ee068d
|
|
| MD5 |
6f7f8ffe883e83f3fe8d20778ea9a28a
|
|
| BLAKE2b-256 |
50a7af3094f984a221cc027908b4b2a24d4d6c5d652a675921f1f02241944f8e
|