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:
-
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.
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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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.