Skip to main content

Visão Geral

A biblioteca Python oficial da Muffins AI oferece integração simplificada com todos os recursos da plataforma. Compatível com Python 3.8+.

Pré-requisitos

Python 3.8+ e pip atualizado
  1. Conta Muffins AI: Crie uma conta
  2. Chave de API: Obtenha em Painel de API
  3. Ambiente virtual (recomendado): Guia de instalação

Instalação

Via pip

pip install muffinscorp
# ou para instalação específica
pip install muffinscorp==1.0.3

Configuração Inicial

1. Autenticação

from muffinscorp import MuffinsCorp

# Inicialização básica
client = MuffinsCorp(
    api_key="sua_chave_api",  # Recomendado usar variáveis de ambiente
    # base_url="<string>"  # Opcional para domínios personalizados
)

2. Variáveis de Ambiente

Crie um arquivo .env:
MUFFINS_AI_API_KEY=your_api_key_here
E carregue com python-dotenv:
from dotenv import load_dotenv
import os

load_dotenv()
client = MuffinsCorp(api_key=os.getenv("MUFFINS_AI_API_KEY"))

Uso Básico

Chat Completion

async def get_chat_response():
    try:
        response = await client.chat.create(
            model="chat-model-small",
            messages=[
                {"role": "system", "content": "You are a helpful assistant"},
                {"role": "user", "content": "Explain quantum computing"}
            ],
            temperature=0.7,
            max_tokens=500
        )
        print(response)
    except Exception as e:
        print(f"Error: {e}")

# Para executar
import asyncio
asyncio.run(get_chat_response())

Streaming

async def stream_response():
    stream = await client.chat.create(
        model="chat-model-small",
        messages=[...],
        stream=True
    )
    
    async for chunk in stream:
        print(chunk.choices[0].delta.get("content", ""), end="")

asyncio.run(stream_response())

Recursos Avançados

1. Gerenciamento de Modelos

# Listar modelos disponíveis
async def list_models():
    models = await client.models.list()
    print("Available AI Models:")
    print(models)

asyncio.run(list_models())

2. Gerenciamento de Assinaturas

# Listar planos de assinatura
async def list_subscriptions():
    subscriptions = await client.subscriptions.list()
    print("Available Subscription Plans:")
    print(subscriptions)

asyncio.run(list_subscriptions())

3. Verificar créditos disponíveis

async def check_balance():
    balance = await client.credits.get_balance()
    print("Current credit balance:")
    print(balance)

asyncio.run(check_balance())

Boas Práticas

  1. Tratamento de Erros
try:
    response = await client.chat.create(...)
except muffinscorp.APIError as e:
    print(f"API Error [{e.status_code}]: {e.message}")
    if e.status_code == 429:
        print(f"Retry after: {e.headers.get('retry-after')}")
except Exception as e:
    print(f"Unexpected error: {e}")
  1. Logging
import logging

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("muffinscorp")

# Configuração opcional para logs detalhados
client.configure_logging(logger)

Exemplo Completo (Aplicação CLI)

import asyncio
from muffinscorp import MuffinsCorp

async def chat_cli():
    client = MuffinsCorp(api_key="your_api_key")
    
    messages = [
        {"role": "system", "content": "You are a helpful assistant"}
    ]
    
    while True:
        user_input = input("You: ")
        if user_input.lower() in ["exit", "quit"]:
            break
            
        messages.append({"role": "user", "content": user_input})
        
        print("Assistant: ", end="", flush=True)
        response = await client.chat.create(
            model="chat-model-small",
            messages=messages,
            stream=True
        )
        
        full_response = ""
        async for chunk in response:
            content = chunk.choices[0].delta.get("content", "")
            print(content, end="", flush=True)
            full_response += content
        
        messages.append({"role": "assistant", "content": full_response})
        print("\n")

asyncio.run(chat_cli())

Troubleshooting

ErroSolução
401 UnauthorizedVerifique sua chave de API e permissões
429 Too Many RequestsImplemente retry com backoff exponencial
TimeoutErrorAumente timeout ou verifique conexão
Para mais ajuda, visite nosso Centro de Suporte.