Geração de Texto Avançada com Modelos de Linguagem Grandes (LLMs)
Os Modelos de Linguagem Grandes (LLMs) são sofisticadas redes neurais treinadas com vastos volumes de dados textuais. Essa arquitetura permite que gerem respostas coesas, contextualmente relevantes e criativas a partir de instruções textuais (prompts). Na plataforma SipPulse AI, oferecemos acesso a uma seleção diversificada de LLMs dos principais desenvolvedores globais, como OpenAI, Google, Anthropic, Meta, Qwen, Deepseek, entre outros. Cada modelo possui características distintas de desempenho, custo e especialização.
Para uma visão completa de todos os modelos, suas especificações técnicas detalhadas e a estrutura de preços, consulte nossa página oficial de Pricing.
Playground Interativo
O Playground de Geração de Texto (acessar aqui) é uma interface web amigável, projetada para facilitar a experimentação e avaliação do comportamento de cada LLM.

Seleção do Modelo
- Navegue e escolha qualquer LLM listado no seletor.
Configuração de Parâmetros
- Controle parâmetros como
temperature,max_tokens,top_pe outros. Veja o Guia de Parâmetros para detalhes. - Importante: Cada modelo suporta parâmetros diferentes. O Playground exibe automaticamente apenas os controles relevantes para o modelo selecionado.
Parâmetros Dinâmicos por Modelo
Modelos de raciocínio (como GPT-5, o1) usam parâmetros especiais como reasoning_effort em vez de temperature. Modelos tradicionais (GPT-4o, Claude) usam temperature, top_p, max_tokens. Selecione um modelo no Playground para ver seus parâmetros disponíveis.
Criação de Prompts e Mensagens
- Defina uma Mensagem de Sistema (System Message) para instruir o LLM sobre o tom, estilo, persona ou regras específicas que deve seguir nas respostas.
- Insira uma sequência de mensagens de usuário e assistente para simular conversas complexas e testar a capacidade do modelo de manter o contexto.
- Para aprender a criar prompts e mensagens de sistema eficazes, consulte nosso Guia de Engenharia de Prompts para LLMs.
Execução e Visualização
- Obtenha feedback instantâneo. As respostas do modelo são exibidas imediatamente após cada envio de prompt.
Geração de Código
- Com um clique em "Ver Código", o Playground gera automaticamente trechos de código em cURL, Python e JavaScript.
- Esses exemplos incluem o modelo e os parâmetros exatos que você configurou, prontos para serem copiados e colados em seus projetos.
- Selecione facilmente a linguagem desejada utilizando as abas na parte superior do modal de código.

Atalhos de Teclado
| Atalho | Ação |
|---|---|
Cmd/Ctrl + Enter | Enviar mensagem |
Shift + Enter | Nova linha (sem enviar) |
Gerenciamento de Conversas
O Playground oferece controles para gerenciar sua conversa de teste:
- Editar mensagens: Clique no ícone de lápis para editar qualquer mensagem enviada
- Alternar role: Troque entre "user" e "assistant" para simular diferentes cenários
- Limpar conversa: Use o botão "Clear" para reiniciar a conversa
- Múltiplas mensagens: Adicione várias mensagens antes de executar para testar contextos complexos
Informações do Modelo
O card do modelo selecionado exibe informações úteis:
- Context window: Tamanho máximo do contexto em tokens
- Pricing: Custo por milhão de tokens (input/output)
- Badge "Agent": Indica que o modelo suporta tool calling
O Playground é uma ferramenta valiosa tanto para usuários sem experiência em programação, que desejam entender o potencial dos LLMs, quanto para desenvolvedores experientes que buscam validar rapidamente diferentes configurações e modelos antes da implementação.
Consumo via API REST
Integre o poder dos LLMs diretamente em suas aplicações, scripts personalizados e fluxos de trabalho automatizados através de chamadas ao nosso endpoint RESTful.
Para detalhes sobre como usar a API, consulte a documentação da REST API.
# Exemplo de requisição para completar um texto
# Substitua $SIPPULSE_API_KEY pela sua chave de API.
curl -X POST 'https://api.sippulse.ai/v1/llms/completion' \
-H 'Content-Type: application/json' \
-H 'api-key: $SIPPULSE_API_KEY' \
-d '{
"model": "gpt-4o-mini",
"messages": [
{ "role": "system", "content": "Você é um assistente de IA especializado em história espacial." },
{ "role": "user", "content": "Descreva em detalhes a importância da missão Apollo 11." }
],
"temperature": 0.7,
"max_tokens": 250,
"stream": false # Defina como true para receber a resposta em partes (streaming)
}'import os
import requests
import json
def generate_text_completion(messages: list, model: str = "gpt-4o-mini", temperature: float = 0.7, max_tokens: int = 250, stream: bool = False) -> dict:
"""
Chama o endpoint /v1/llms/completion para gerar texto com um LLM.
Args:
messages: Lista de mensagens (histórico da conversa).
model: Identificador do modelo a ser usado.
temperature: Controla a aleatoriedade da saída.
max_tokens: Número máximo de tokens a serem gerados.
stream: Se true, a resposta será enviada em partes.
Returns:
Dicionário contendo a resposta da API.
"""
api_url = "https://api.sippulse.ai/v1/llms/completion"
api_key = os.getenv("SIPPULSE_API_KEY")
if not api_key:
raise ValueError("A variável de ambiente SIPPULSE_API_KEY não está definida.")
headers = {
"Content-Type": "application/json",
"api-key": api_key
}
payload = {
"model": model,
"messages": messages,
"temperature": temperature,
"max_tokens": max_tokens,
"stream": stream
}
try:
response = requests.post(api_url, headers=headers, json=payload)
response.raise_for_status() # Lança uma exceção para respostas de erro (4xx ou 5xx)
return response.json()
except requests.exceptions.RequestException as e:
print(f"Erro na requisição API: {e}")
if response is not None:
print(f"Detalhes do erro: {response.text}")
return None
if __name__ == "__main__":
convo_messages = [
{"role": "system", "content": "Você é um assistente de IA especializado em história espacial."},
{"role": "user", "content": "Descreva em detalhes a importância da missão Apollo 11."}
]
completion_result = generate_text_completion(convo_messages, model="gpt-4o-mini")
if completion_result:
# A estrutura da resposta pode variar dependendo do modelo e se stream=true
# Geralmente, o conteúdo gerado está em completion_result['choices'][0]['message']['content']
print(json.dumps(completion_result, indent=2, ensure_ascii=False))// Exemplo usando a Fetch API no Node.js ou navegador
async function getTextCompletion(messages, model = "gpt-4o-mini", temperature = 0.7, maxTokens = 250, stream = false) {
const apiUrl = "https://api.sippulse.ai/v1/llms/completion";
const apiKey = process.env.SIPPULSE_API_KEY; // Certifique-se que SIPPULSE_API_KEY está no ambiente
if (!apiKey) {
throw new Error("A variável de ambiente SIPPULSE_API_KEY não está definida.");
}
try {
const response = await fetch(apiUrl, {
method: "POST",
headers: {
"Content-Type": "application/json",
"api-key": apiKey
},
body: JSON.stringify({
model,
messages,
temperature,
max_tokens: maxTokens,
stream
})
});
if (!response.ok) {
const errorBody = await response.text();
throw new Error(`Erro na API: ${response.status} ${response.statusText} - ${errorBody}`);
}
return response.json();
} catch (error) {
console.error("Falha ao chamar a API de completion:", error);
throw error;
}
}
// Exemplo de uso
const conversationMessages = [
{ role: "system", content: "Você é um assistente de IA especializado em história espacial." },
{ role: "user", content: "Descreva em detalhes a importância da missão Apollo 11." }
];
getTextCompletion(conversationMessages)
.then(result => console.log(JSON.stringify(result, null, 2)))
.catch(error => console.error(error));Estrutura da Resposta
A API retorna um objeto com a resposta gerada, informações de uso e métricas de desempenho:
{
"choices": [
{
"message": {
"role": "assistant",
"content": "A missão Apollo 11 foi um marco histórico..."
},
"finish_reason": "stop"
}
],
"created": 1704067200000,
"model": "gpt-4o-mini",
"usage": {
"input_tokens": 45,
"output_tokens": 120,
"total_tokens": 165
},
"performance": {
"delay": 150,
"execution_time": 1200,
"relative_execution_time": 100.0
}
}| Campo | Descrição |
|---|---|
choices | Array de respostas geradas pelo modelo |
choices[].message | Mensagem do assistente com role e content |
choices[].finish_reason | Motivo do término: stop, length, tool_calls |
usage.input_tokens | Tokens consumidos pelo prompt de entrada |
usage.output_tokens | Tokens gerados na resposta |
performance.execution_time | Tempo de execução em milissegundos |
Streaming de Respostas
Para respostas em tempo real conforme são geradas, defina stream: true. A API retorna chunks no formato Server-Sent Events (SSE), ideal para interfaces de chat.
Quando Usar Streaming
| Cenário | Recomendação |
|---|---|
| Chat interativo | ✅ Usar streaming |
| Processamento em batch | ❌ Não usar |
| Respostas longas | ✅ Usar streaming |
| Integração simples | ❌ Não usar |
Formato dos Chunks
Cada chunk segue o formato SSE:
data: {"choices":[{"delta":{"content":"texto"}}]}
data: {"choices":[{"delta":{"content":" parcial"}}]}
data: [DONE]| Campo | Descrição |
|---|---|
delta.content | Fragmento de texto gerado |
delta.role | Presente apenas no primeiro chunk |
delta.tool_calls | Presente quando há tool calls em streaming |
Exemplos Completos
async function streamCompletion(messages) {
const response = await fetch('https://api.sippulse.ai/v1/llms/completion', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'api-key': process.env.SIPPULSE_API_KEY
},
body: JSON.stringify({
model: 'gpt-4o-mini',
messages,
stream: true
})
});
const reader = response.body.getReader();
const decoder = new TextDecoder();
let fullContent = '';
while (true) {
const { done, value } = await reader.read();
if (done) break;
const chunk = decoder.decode(value);
const lines = chunk.split('\n');
for (const line of lines) {
if (line.startsWith('data: ') && line !== 'data: [DONE]') {
try {
const data = JSON.parse(line.slice(6));
const content = data.choices[0]?.delta?.content || '';
fullContent += content;
process.stdout.write(content); // Exibe em tempo real
} catch (e) {
// Ignora linhas mal formatadas
}
}
}
}
return fullContent;
}import requests
import json
import os
def stream_completion(messages):
response = requests.post(
'https://api.sippulse.ai/v1/llms/completion',
headers={
'Content-Type': 'application/json',
'api-key': os.environ['SIPPULSE_API_KEY']
},
json={
'model': 'gpt-4o-mini',
'messages': messages,
'stream': True
},
stream=True
)
full_content = ''
for line in response.iter_lines():
if line:
line_text = line.decode('utf-8')
if line_text.startswith('data: ') and line_text != 'data: [DONE]':
try:
data = json.loads(line_text[6:])
content = data['choices'][0]['delta'].get('content', '')
full_content += content
print(content, end='', flush=True)
except json.JSONDecodeError:
pass
return full_contentStreaming com Tool Calls
Em streaming, tool calls são enviados incrementalmente:
data: {"choices":[{"delta":{"tool_calls":[{"index":0,"id":"call_abc","function":{"name":"get_weather"}}]}}]}
data: {"choices":[{"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"ci"}}]}}]}
data: {"choices":[{"delta":{"tool_calls":[{"index":0,"function":{"arguments":"ty\": \"SP\"}"}}]}}]}
data: [DONE]Você deve acumular os fragmentos de arguments até receber [DONE].
Chunk Final com Uso de Tokens
O último chunk antes de [DONE] inclui informações de uso:
{
"choices": [{"delta": {}, "finish_reason": "stop"}],
"usage": {
"input_tokens": 45,
"output_tokens": 120
}
}Tool Calling (Function Calling)
Modelos com a capability tools: true suportam chamadas de ferramentas, permitindo que o modelo solicite a execução de funções externas e use os resultados para gerar respostas.
Verificar Compatibilidade
Verifique se o modelo suporta tools consultando o array resources na resposta de /v1/llms/models. Se resources contém "tools", o modelo suporta tool calling.
Definindo Ferramentas
{
"model": "gpt-4o",
"messages": [
{ "role": "user", "content": "Qual a previsão do tempo em São Paulo?" }
],
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Obtém a previsão do tempo para uma cidade",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "Nome da cidade"
}
},
"required": ["city"]
}
}
}
]
}Resposta com Tool Call
Quando o modelo decide usar uma ferramenta, a resposta inclui tool_calls:
{
"choices": [{
"message": {
"role": "assistant",
"content": null,
"tool_calls": [{
"id": "call_abc123",
"type": "function",
"function": {
"name": "get_weather",
"arguments": "{\"city\": \"São Paulo\"}"
}
}]
},
"finish_reason": "tool_calls"
}]
}Enviando Resultado da Ferramenta
Após executar a ferramenta em seu sistema, envie o resultado de volta:
{
"model": "gpt-4o",
"messages": [
{ "role": "user", "content": "Qual a previsão do tempo em São Paulo?" },
{
"role": "assistant",
"tool_calls": [{
"id": "call_abc123",
"type": "function",
"function": { "name": "get_weather", "arguments": "{\"city\": \"São Paulo\"}" }
}]
},
{
"role": "tool",
"tool_call_id": "call_abc123",
"content": "{\"temperature\": 25, \"condition\": \"ensolarado\", \"humidity\": 60}"
}
]
}O modelo então gera uma resposta usando os dados da ferramenta:
{
"choices": [{
"message": {
"role": "assistant",
"content": "Em São Paulo, a temperatura está em 25°C com céu ensolarado e umidade de 60%."
},
"finish_reason": "stop"
}]
}Modelos Disponíveis
Para manter sua aplicação atualizada com os LLMs habilitados para sua organização, utilize o endpoint /v1/llms/models. Isso permite que sua aplicação se adapte dinamicamente aos modelos disponíveis sem necessidade de atualizações manuais de código.
# Lista todos os modelos de LLM disponíveis para sua chave de API
curl -X GET 'https://api.sippulse.ai/v1/llms/models' \
-H 'api-key: $SIPPULSE_API_KEY'import os
import requests
import json
def list_available_models() -> dict:
"""
Recupera a lista de LLMs disponíveis para a organização associada à chave API.
"""
api_url = "https://api.sippulse.ai/v1/llms/models"
api_key = os.getenv("SIPPULSE_API_KEY")
if not api_key:
raise ValueError("A variável de ambiente SIPPULSE_API_KEY não está definida.")
headers = { "api-key": api_key }
try:
response = requests.get(api_url, headers=headers)
response.raise_for_status()
return response.json()
except requests.exceptions.RequestException as e:
print(f"Erro na requisição API para listar modelos: {e}")
if response is not None:
print(f"Detalhes do erro: {response.text}")
return None
if __name__ == "__main__":
models_data = list_available_models()
if models_data:
print("Modelos Disponíveis:")
print(json.dumps(models_data, indent=2, ensure_ascii=False))// Exemplo usando a Fetch API para listar modelos
async function listAvailableModels() {
const apiUrl = "https://api.sippulse.ai/v1/llms/models";
const apiKey = process.env.SIPPULSE_API_KEY;
if (!apiKey) {
throw new Error("A variável de ambiente SIPPULSE_API_KEY não está definida.");
}
try {
const response = await fetch(apiUrl, {
method: "GET",
headers: { "api-key": apiKey }
});
if (!response.ok) {
const errorBody = await response.text();
throw new Error(`Erro na API ao listar modelos: ${response.status} ${response.statusText} - ${errorBody}`);
}
return response.json();
} catch (error) {
console.error("Falha ao chamar a API para listar modelos:", error);
throw error;
}
}
listAvailableModels()
.then(models => console.log("Modelos Disponíveis:", JSON.stringify(models, null, 2)))
.catch(error => console.error(error));Exemplo de Resposta
[
{
"name": "gpt-4o",
"status": "active",
"execution_type": "cloud",
"resources": ["tools", "json_schema"]
},
{
"name": "gpt-4o-mini",
"status": "active",
"execution_type": "cloud",
"resources": ["tools", "json_schema"]
},
{
"name": "claude-sonnet-4-20250514",
"status": "active",
"execution_type": "cloud",
"resources": ["tools", "json_schema"]
}
]| Campo | Descrição |
|---|---|
name | Identificador do modelo para uso na API |
status | Status do modelo: active, inactive, deprecated |
execution_type | Tipo de execução (sempre cloud) |
resources | Array de capabilities: tools, json_schema |
Campo Resources
O campo resources indica capabilities suportadas pelo modelo:
"tools"- Suporta tool calling (function calling)"json_schema"- Suporta structured output com JSON Schema
Para informações detalhadas sobre cada modelo (context window, pricing, parâmetros), consulte a página de Pricing.
SDK da OpenAI
Para desenvolvedores familiarizados com o SDK oficial da OpenAI, o SipPulse AI oferece uma integração simplificada. Basta configurar o baseURL do cliente OpenAI para apontar para o nosso endpoint compatível: https://api.sippulse.ai/v1/openai.
Isso permite que você utilize todas as funcionalidades e convenções do SDK da OpenAI, enquanto as requisições são processadas pela infraestrutura do SipPulse AI, aproveitando nossa seleção de modelos e otimizações.
# Exemplo de uso com o SDK Python da OpenAI
import os
from openai import OpenAI
# Configura o cliente OpenAI para usar o endpoint do SipPulse AI
client = OpenAI(
api_key=os.environ.get("SIPPULSE_API_KEY"),
base_url="https://api.sippulse.ai/v1/openai"
)
try:
chat_completion = client.chat.completions.create(
model="gpt-4o-mini", # Ou qualquer outro modelo compatível disponível no SipPulse AI
messages=[
{"role": "system", "content": "Você é um assistente prestativo que adora trocadilhos."},
{"role": "user", "content": "Conte uma piada sobre programação."}
],
temperature=0.6,
max_tokens=100
)
print(chat_completion.choices[0].message.content)
except Exception as e:
print(f"Ocorreu um erro: {e}")// Exemplo de uso com o SDK JavaScript da OpenAI
import OpenAI from "openai";
const openai = new OpenAI({
apiKey: process.env.SIPPULSE_API_KEY, // Sua chave SipPulse AI
baseURL: "https://api.sippulse.ai/v1/openai" // Endpoint compatível do SipPulse AI
});
async function main() {
try {
const response = await openai.chat.completions.create({
model: "gpt-4o-mini", // Ou qualquer outro modelo compatível
messages: [
{ role: "system", content: "Você é um assistente prestativo que adora trocadilhos." },
{ role: "user", content: "Conte uma piada sobre programação." }
],
temperature: 0.6,
max_tokens: 100
});
console.log(response.choices[0].message.content);
} catch (error) {
console.error("Ocorreu um erro:", error);
}
}
main();Benefício: Esta abordagem permite que você mantenha a familiaridade e as conveniências do SDK da OpenAI, como tipagem e métodos específicos, enquanto suas chamadas são roteadas e executadas através da plataforma SipPulse AI. Você pode alternar entre modelos da OpenAI e outros modelos oferecidos pelo SipPulse AI, se suportado pelo endpoint de compatibilidade.
Tratamento de Erros
Códigos HTTP
| Código | Erro | Descrição |
|---|---|---|
| 400 | bad_request | Requisição malformada ou parâmetros inválidos |
| 401 | unauthorized | API key inválida ou ausente |
| 404 | model_not_found | Modelo não existe ou não disponível |
| 429 | rate_limit_exceeded | Limite de requisições excedido |
| 500 | internal_error | Erro interno do servidor |
| 503 | service_unavailable | Serviço temporariamente indisponível |
| 504 | timeout | Tempo limite excedido |
Estrutura de Erro
{
"error": {
"code": "model_not_found",
"message": "The model 'gpt-99' does not exist or is not available for your organization."
}
}Erros Comuns e Soluções
| Código | Causa Comum | Solução |
|---|---|---|
invalid_api_key | Chave API incorreta | Verifique a chave em Configurações > API Keys |
model_does_not_support_json_schema | Modelo incompatível com structured output | Use modelo com structured_output: true |
context_length_exceeded | Prompt muito longo | Reduza o tamanho das mensagens ou use modelo com context maior |
rate_limit_exceeded | Muitas requisições | Aguarde ou integre sua própria chave API |
Integração de Chave API Própria
Se você frequentemente atinge limites de taxa, considere integrar sua própria chave API de provedores como OpenAI ou Anthropic. Isso permite usar seus próprios limites e faturamento direto.
Exemplo de Tratamento
try {
const response = await fetch('https://api.sippulse.ai/v1/llms/completion', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'api-key': apiKey },
body: JSON.stringify({ model, messages })
});
if (!response.ok) {
const error = await response.json();
switch (error.error?.code) {
case 'rate_limit_exceeded':
// Implementar retry com backoff
await sleep(5000);
return retry();
case 'context_length_exceeded':
// Truncar mensagens
return retryWithShorterContext();
default:
throw new Error(error.error?.message || 'Unknown error');
}
}
return response.json();
} catch (e) {
console.error('API Error:', e.message);
}import time
def call_with_retry(messages, max_retries=3):
for attempt in range(max_retries):
try:
response = requests.post(
'https://api.sippulse.ai/v1/llms/completion',
headers={'api-key': api_key, 'Content-Type': 'application/json'},
json={'model': 'gpt-4o-mini', 'messages': messages}
)
if response.status_code == 429:
# Rate limited - esperar e tentar novamente
time.sleep(2 ** attempt)
continue
response.raise_for_status()
return response.json()
except requests.exceptions.RequestException as e:
if attempt == max_retries - 1:
raise
time.sleep(2 ** attempt)Guia de Parâmetros
Os parâmetros de geração variam de acordo com o modelo selecionado. O Playground exibe automaticamente apenas os controles relevantes para o modelo escolhido.
Parâmetros por Tipo de Modelo
- Modelos de raciocínio (GPT-5, o1): usam
reasoning_effortem vez detemperature - Modelos tradicionais (GPT-4o, Claude): usam
temperature,top_p,max_tokens
Parâmetros Comuns
| Parâmetro | Faixa | Descrição |
|---|---|---|
temperature | 0-2 | Controla aleatoriedade. Baixo = focado, alto = criativo |
max_tokens | 1-128k | Limite máximo de tokens na resposta |
top_p | 0-1 | Amostragem nucleus. Alternativa ao temperature |
top_k | 1-100 | Limita seleção aos K tokens mais prováveis |
frequency_penalty | -2 a 2 | Penaliza repetição de tokens |
presence_penalty | -2 a 2 | Incentiva novos tópicos |
Dicas de Uso
- Tarefas precisas (código, extração): use
temperaturebaixo (0.0-0.3) - Tarefas criativas (escrita, brainstorming): use
temperaturemais alto (0.7-1.0) - Ajuste
temperatureoutop_p, não ambos ao mesmo tempo - O
max_tokenstotal (prompt + resposta) não pode exceder o limite do modelo
A melhor forma de entender esses parâmetros é experimentar no Playground.
