Roteador de chamadas LLM por model:provider, multi-provider, com retorno consistente.
Project description
aigen
Roteador multi-provider para chamadas de IA com retorno consistente.
O caller escolhe explicitamente a key model:provider; o pacote instancia o
provider correspondente, executa a chamada e devolve um dataclass padronizado
com resposta, metadados técnicos e tokens reportados pelo provider.
Decisões de produto como tiers, créditos, planos, cobrança, limites comerciais
ou cálculo de custo não pertencem ao aigen. Quem chama o pacote pode usar
total_tokens, input_tokens, output_tokens e reasoning_tokens para fazer
qualquer cálculo externo.
Instalação
SDKs de provider são extras opcionais. Instale só os que usar:
pip install "ai-generator[openai]" # OpenAI, Groq, z.ai, Kimi, Alibaba, DeepSeek
pip install "ai-generator[gemini]" # Google Gemini
pip install "ai-generator[claude]" # Anthropic Claude
pip install "ai-generator[cerebras]" # Cerebras
pip install "ai-generator[all]" # tudo
# Desenvolvimento:
pip install -e ".[all]"
Providers HTTP puros funcionam só com o core (httpx, requests).
Uso
Sempre passe model='model:provider'.
import aigen
r = aigen.generate_text(
'Resuma o texto X',
model='gemini-2.5-flash:gemini',
)
print(r.content)
print(r.total_tokens)
Outras mídias usam o mesmo padrão:
img = aigen.generate_image('um gato astronauta', model='gpt-image-2:openai')
video = aigen.generate_video('clipe contínuo de...', model='bytedance/seedance-1.5-pro:kie')
music = aigen.generate_music('lo-fi chill', model='music-2.6:minimax')
text = aigen.transcribe(audio_url, model='whisper-large-v3:groq')
audio = aigen.synthesize('Olá', model='elevenlabs/text-to-speech-turbo-2-5:kie')
Entry genérico:
r = aigen.generate(prompt, mode='text', model='glm-5.2:zai')
r = aigen.generate(prompt, mode='video', model='bytedance/seedance-1.5-pro:kie')
r = aigen.generate(audio_url, mode='stt', model='whisper-large-v3:groq')
mode: text · image · video · music · stt · tts.
Contrato
Sucesso retorna o dataclass do tipo. Falha levanta exception tipada.
| Mídia | Função | Retorno |
|---|---|---|
| Texto | generate_text |
TextResponse |
| Imagem | generate_image |
ProviderResponse |
| Vídeo | generate_video |
VideoResponse |
| Música | generate_music |
TTMResponse |
| STT | transcribe |
STTResponse |
| TTS | synthesize |
TTSResponse |
Texto retorna content, raw_content, input_tokens, output_tokens,
total_tokens, reasoning_tokens, response_time e model. Outras mídias
seguem o mesmo padrão de resposta padronizada e metadados técnicos quando o
provider fornece.
Erros
ProviderError
├─ ProviderBlocked
└─ ProviderRetryable
├─ ProviderRateLimit
└─ ProviderTimeout
Cada exception carrega .provider, .model, .status_code, .response_time
e .raw_error.
Catálogo
O catálogo em aigen/constants/{text,image,audio,video}.py contém fatos técnicos:
providers suportados, variável de ambiente da API key, modelos conhecidos e
capabilities. Ele não contém preço, crédito, tier ou regra de cobrança.
Para registrar um modelo novo de um provider já suportado:
import aigen
aigen.register_model('text', 'openai', 'gpt-5.4')
Providers novos exigem implementação de classe e registro no código do pacote.
API keys
Cada provider lê a key de uma variável de ambiente (api_key_env no catálogo).
Defaults incluem GOOGLE_API_KEY, OPENAI_API_KEY, CLAUDE_API_KEY,
GROQ_API_KEY, CEREBRAS_API_KEY, ZAI_API_KEY, MOONSHOT_AI_API_KEY,
DASHSCOPE_API_KEY, DEEPSEEK_API_KEY, MINIMAX_API_KEY e KIE_API_KEY.
Logs
O pacote usa logging.getLogger(__name__) e não configura handler. Para ver logs,
o app habilita logging no boot:
import logging
logging.basicConfig(level=logging.INFO)
Stats de fim de chamada podem ser desligadas com LOG_PROVIDER_STATS=0.
Project details
Release history Release notifications | RSS feed
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 ai_generator-0.2.0.tar.gz.
File metadata
- Download URL: ai_generator-0.2.0.tar.gz
- Upload date:
- Size: 41.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d98eccabf00e00c5defab874829b1821d5e8a9d80c2bb9f7519267047249984
|
|
| MD5 |
d722c8e41d1cab4c64d55f5a54eedda3
|
|
| BLAKE2b-256 |
9bf119daa8cea7be8aada807ee2a757eee62887dabca087816498c45e511e00e
|
File details
Details for the file ai_generator-0.2.0-py3-none-any.whl.
File metadata
- Download URL: ai_generator-0.2.0-py3-none-any.whl
- Upload date:
- Size: 59.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4793fe66f8bbf10e6f87c2e3d134a7a7fd8fc059fd564267e8b1d09ba844b918
|
|
| MD5 |
59c194aabb1986dc6ce987a7bbe76417
|
|
| BLAKE2b-256 |
0780ee97a4f20a2a7d8343121ef6e2c00f3ef8d020b623db299ba2d562d5e166
|