Os três valores necessários
Uma pergunta sobre a URL base da API glm geralmente vem de alguém que tem um cliente que quer uma URL, uma chave e um nome de modelo, e não sabe quais valores vão onde. Aqui estão eles em um só lugar.
| Configuração | Valor |
|---|---|
| URL base | https://api.glmapi.cc/v1 |
| ID do modelo | uncensored |
| Cabeçalho de autenticação | Authorization: Bearer YOUR_KEY |
| Endpoint de chat | POST /v1/chat/completions |
| Lista de modelos | GET /v1/models |
Um esclarecimento antes de copiar qualquer coisa. O nome no domínio refere-se ao termo de busca, não ao modelo. Esta é uma API de texto compatível com OpenAI hospedada para um único modelo de pesos abertos, executada por um provedor independente, ajustada para responder sem recusas de conteúdo para uso adulto legal. Não é a API oficial do fornecedor por trás do GLM, nem um roteador que encaminha para outros fornecedores. Se você precisar de um modelo GLM oficial, use o serviço próprio desse fornecedor.
Você recebe uma chave cadastrando-se com Google ou com e-mail e senha. A página da chave de API também tem um crédito de teste grátis de $0,50 com um clique, válido por 7 dias sem cartão.
Verifique a conexão com curl
Antes de tocar qualquer SDK ou app, confirme a chave e a URL com uma solicitação simples. Se isso funcionar, todo problema posterior está na configuração do seu cliente e não na conta. Primeiro, liste os modelos:
curl https://api.glmapi.cc/v1/models \
-H "Authorization: Bearer YOUR_KEY"Você deve receber uma lista JSON que inclui o id uncensored. Então envie uma conclusão de chat:
curl https://api.glmapi.cc/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Reply with the word ready."}],
"max_tokens": 20
}'Adicione -i para ver os cabeçalhos de resposta. Eles incluem X-Request-Id, X-Balance-USD (seu crédito restante), X-RateLimit-Limit-Requests e X-RateLimit-Limit-Concurrency. Mantenha o ID de solicitação se precisar pedir suporte sobre uma chamada.
Python e Node
Ambos os SDKs oficiais OpenAI aceitam uma URL base personalizada. Você altera dois argumentos do construtor e o nome do modelo; o resto do seu código permanece como está.
Python
from openai import OpenAI
client = OpenAI(
base_url="https://api.glmapi.cc/v1",
api_key="YOUR_KEY",
)
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Give me three names for a tavern."}],
)
print(resp.choices[0].message.content)Node.js
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.glmapi.cc/v1",
apiKey: process.env.GLM_API_KEY,
});
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Give me three names for a tavern." }],
});
console.log(resp.choices[0].message.content);A propriedade Node é baseURL com letras maiúsculas, enquanto o argumento Python é base_url. Misturá-los é uma maneira clássica de cair silenciosamente no host padrão do SDK e obter um erro de autenticação do servidor errado.
Variáveis de ambiente em vez de código
Os SDKs OpenAI leem OPENAI_BASE_URL e OPENAI_API_KEY do ambiente quando você não os passa explicitamente. Essa é a maneira menos invasiva de redirecionar uma ferramenta que você não pode editar, como um script de um repositório ou um framework que constrói o cliente para você.
export OPENAI_BASE_URL="https://api.glmapi.cc/v1"
export OPENAI_API_KEY="YOUR_KEY"
python my_existing_script.pyVocê ainda precisa definir o nome do modelo dentro da ferramenta ou seu arquivo de configuração para uncensored, porque nenhuma variável de ambiente o carrega. Se a ferramenta tiver um menu suspenso de modelo que lista apenas nomes que conhece, procure uma opção de modelo personalizado ou texto livre.
Mantenha os valores em um só lugar
Depois que a conexão funcionar, evite colar a URL em cinco arquivos. Coloque os três valores em um só lugar e leia-os em todos os outros. Um arquivo .env funciona para projetos pequenos:
GLM_BASE_URL=https://api.glmapi.cc/v1
GLM_API_KEY=YOUR_KEY
GLM_MODEL=uncensoredEntão carregue-os uma vez na inicialização e construa um único cliente que o resto do programa importa. O benefício aparece no dia em que você altera chaves, adiciona uma chave de staging com saldo de teste ou compara este endpoint com outro. Você edita um arquivo, não sua base de código.
Mantenha chaves separadas para desenvolvimento e produção onde a conta permitir, e rotacione uma chave imediatamente se ela aparecer em um commit, uma captura de tela ou um log compartilhado. Uma chave vazada gasta seu crédito pré-pago e o crédito não volta.
Apps de chat e frameworks
As interfaces front ends diferem na redação, mas pedem os mesmos três valores. Procure um tipo de conexão chamado OpenAI-compatible, custom OpenAI ou similar, então preencha:
- URL da API / URL base:
https://api.glmapi.cc/v1 - Chave de API: a chave da sua conta
- Modelo:
uncensored
SillyTavern permite adicionar um endpoint compatível com OpenAI através de sua fonte de conclusão de chat personalizada, e Open WebUI tem um tipo de conexão compatível com OpenAI nas configurações. Frameworks como LangChain usam um base_url em sua classe de modelo de chat, e LiteLLM pode rotear um modelo estilo OpenAI através de uma URL base de API personalizada. Os nomes dos menus mudam entre versões, então siga a documentação atual de cada projeto para saber exatamente onde o campo está.
Alguns apps perguntam se devem anexar /chat/completions para você. Muitos fazem, o que significa que a URL que você insere deve parar em /v1. Se um app pedir o endpoint completo, forneça https://api.glmapi.cc/v1/chat/completions. O quickstart mostra os campos de solicitação suportados com mais detalhes.
Por que a primeira chamada falha
Se o teste curl passar e seu app ainda der erro, a causa é quase sempre uma destas:
- Falta
/v1. Usar apenashttps://api.glmapi.ccprovavelmente falhará com um erro not-found, porque as rotas ficam sob/v1. - Caminho duplicado. O app anexa
/chat/completionse você também digitou, produzindo/chat/completions/chat/completions. Remova-o da URL base. - Barra final. Alguns clientes juntam caminhos mal. Remova uma
/final se vir uma barra dupla na URL registrada. - Nome de modelo errado. O único ID de modelo é
uncensored. Nomes de outros serviços não corresponderão. - Problemas com a chave. Verifique se há um espaço ou quebra de linha estranhos ao colar, e se a chave está sendo enviada como
Bearerduas vezes por um app que já adiciona o prefixo. - Chamando o host errado. Em um app de navegador, uma URL base não definida volta para o padrão do SDK. Registre a URL de solicitação real.
Chamadas do lado do navegador também expõem sua chave para qualquer um que abra as ferramentas de desenvolvedor. Para um site público, envie solicitações do seu próprio servidor e mantenha a chave lá.
Quando nada disso explica, volte do menor caso. Execute o comando curl de antes na mesma máquina do app com falha. Se o curl tiver sucesso lá, a rede e a chave estão boas e o app está construindo a solicitação de forma diferente, então ative o log de depuração dele e compare a URL registrada, cabeçalhos e corpo JSON com a versão curl, caractere por caractere. Se o curl falhar apenas nessa máquina, procure proxies corporativos, regras de VPN e filtros DNS, que às vezes bloqueiam nomes de host de API desconhecidos. Uma solicitação que nunca chega ao servidor não retorna X-Request-Id, o que é uma maneira rápida de distinguir os dois casos.
Limites e respostas 429
Uma chave completa permite 8 requisições simultâneas e 300 requisições por minuto. Uma chave de teste permite 2 e 60. Ao exceder qualquer um desses limites, a API retorna HTTP 429 com o código rate_limited (muitas por minuto) ou concurrency (muitas ao mesmo tempo). Durante sobrecarga temporária, você também recebe 429, com o cabeçalho Retry-After: 5.
Uma requisição em streaming mantém seu slot de concorrência até o fim do streaming, então um aplicativo que abre um streaming e o abandona sem fechar a conexão pode esgotar seu próprio slot. O corpo máximo da requisição é de 8 MB, e a janela de contexto é de 100.000 tokens cobrindo prompt e conclusão juntos. Para tarifas e recargas, consulte a página de preços.
Streaming, ferramentas e JSON usam a mesma URL
Não há endereço separado para streaming ou chamada de funções. Tudo vai para /v1/chat/completions e você ativa recursos no corpo da solicitação. Uma solicitação streaming define "stream": true e retorna eventos enviados pelo servidor; uma solicitação com ferramentas adiciona tools e opcionalmente tool_choice; o modo JSON adiciona response_format com o tipo json_object. Campos de amostragem como temperature, top_p, stop, seed e as penalidades são passados.
Aqui está uma chamada curl em streaming. O sinalizador -N desativa o buffer de saída do curl, para que você veja os blocos conforme chegam:
curl -N https://api.glmapi.cc/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"uncensored","stream":true,"messages":[{"role":"user","content":"Count to five."}]}'Se seu proxy ou camada de hospedagem armazenar as respostas em buffer, o streaming parecerá uma única resposta atrasada. Proxies reversos geralmente precisam ter o armazenamento de resposta desativado para eventos enviados pelo servidor, então verifique essa configuração antes de culpar a API. Para uma versão Python funcional de cada recurso, consulte o quickstart.
Mais guias
Perguntas e respostas
Qual é a URL base desta API?
https://api.glmapi.cc/v1. As solicitações de chat vão para /chat/completions sob essa URL, e a lista de modelos está em /models.
Qual nome de modelo devo usar?
Use uncensored. É o único ID de modelo e funciona em qualquer cliente estilo OpenAI que permita digitar um modelo personalizado.
Esta é a API oficial da GLM?
Não. É um serviço independente e compatível com OpenAI que executa um único modelo de pesos abertos, e não é a API oficial de nenhum fornecedor.
Qual cabeçalho contém a chave?
Authorization: Bearer seguido pela sua chave. Os SDKs da OpenAI adicionam isso automaticamente quando você passa a chave.
Preciso de um cartão para testar a conexão?
Não. Um teste com um clique de $0,50, válida por 7 dias, está disponível na página da chave de API após o login.
Sua chave está a um formulário de distância
Crie uma conta, copie a chave e altere a URL base. Essa é toda a configuração.
