PT ▾
Obter chave de API

InícioGuia

Chave de API do AnythingLLM: Conecte um endpoint OpenAI personalizado personalizado

Para usar uma chave de API do AnythingLLM com um endpoint personalizado, selecione o provedor Generic OpenAI e insira uma URL base, uma chave e um ID de modelo. As etapas e testes estão abaixo.

Qual chave de API você quer dizer

As pessoas que procuram anything llm api key geralmente querem dizer uma de duas coisas, e as duas são fáceis de confundir. A primeira é a chave que o AnythingLLM envia a um provedor de modelo para que ele possa gerar respostas. A segunda é uma chave de API de desenvolvedor que o próprio AnythingLLM cria, para que outros programas possam chamar a própria API do AnythingLLM. São chaves diferentes com funções diferentes.

Este artigo cobre o primeiro caso: fornecer ao AnythingLLM uma chave e endpoint para uma API de chat compatível com OpenAI. Você pegará a chave na página da chave de API, colará no AnythingLLM junto com a URL base https://api.llmapisource.com/v1 e usará o ID do modelo uncensored. Se precisar chamar o AnythingLLM do seu código, gere essa chave nas configurações do AnythingLLM; não tem relação com a chave deste provedor.

Antes de começar: teste a chave fora do AnythingLLM

Metade das perguntas de suporte sobre endpoints personalizados acaba sendo uma chave errada ou um erro de digitação na URL. Um teste de trinta segundos com curl separa "o endpoint está errado" de "o aplicativo está configurado errado". Liste os modelos primeiro:

curl https://api.llmapisource.com/v1/models \
  -H "Authorization: Bearer YOUR_KEY" | grep uncensored

Você deve ver uma linha que inclui uncensored. Depois, envie uma solicitação de chat:

curl https://api.llmapisource.com/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
  }'

Se ambas as chamadas funcionarem, a chave e a URL estão boas e qualquer falha posterior é uma configuração dentro do aplicativo. Se você ainda não tem uma chave, cadastre-se com Google ou com e-mail e senha. Novos usuários podem reivindicar $0,50 de crédito de teste com um clique na página da chave, sem necessidade de cartão e válido por 7 dias. Isso é suficiente para concluir toda esta configuração e testá-la.

Configurando no AnythingLLM

O AnythingLLM suporta vários provedores de LLM, e uma das opções é uma opção genérica compatível com OpenAI. A redação dos menus muda entre as versões, então trate os nomes abaixo como um guia, não como um roteiro exato.

  1. Abra as configurações do AnythingLLM e encontre a preferência de LLM (às vezes rotulada como provedor de LLM).
  2. Escolha Generic OpenAI na lista de provedores.
  3. Defina a URL Base para https://api.llmapisource.com/v1. Inclua o /v1 e não inclua um /chat/completions no final; o aplicativo adiciona o caminho sozinho.
  4. Cole sua chave no campo Chave de API. O aplicativo a envia como Authorization: Bearer, que é o que esta API espera.
  5. Defina o Nome do Modelo de Chat como uncensored.
  6. Defina a Janela de contexto de token como 100000. A janela do modelo é de 100.000 tokens, prompt mais conclusão, e um valor baixo aqui faz o AnythingLLM reduzir seu histórico mais cedo do que o necessário.
  7. Deixe max_tokens vazio ou defina um limite com o qual você se sinta confortável. É opcional no lado da API.
  8. Salve, abra um espaço de trabalho e envie uma mensagem.

Se o espaço de trabalho tiver suas próprias configurações de chat, verifique se ele está usando o provedor padrão do sistema em vez de uma substituição mais antiga. Um espaço de trabalho fixado em um provedador anterior é uma razão comum para uma alteração parecer não fazer nada.

Embeddings e documentos precisam de um componente separado

AnythingLLM faz dois trabalhos. Ele conversa com um modelo e indexa seus documentos para que o modelo possa responder com base neles. O segundo trabalho usa um modelo de embedding, e esta API não oferece embeddings. Ela expõe POST /v1/chat/completions e GET /v1/models, com texto como entrada e texto como saída.

Isso não o bloqueia. AnythingLLM permite que você escolha o modelo de embedding separadamente do modelo de chat, e ele pode usar um modelo de embedding local integrado ou outro provedor que você configurar. Defina o modelo de embedding para algo que não seja este endpoint e use este endpoint apenas para o modelo de chat. O mesmo se aplica a recursos de imagem ou áudio: o modelo é apenas de texto, sem geração de imagem, áudio ou vídeo e sem ajuste fino.

Quando você conversa com documentos, os trechos recuperados são colados no prompt, então os tokens de entrada aumentam. A $0,15 por 1M de tokens de entrada, um prompt de 6.000 tokens com 500 tokens de saída custa 6.000 x $0,15 / 1.000.000 = $0,0009 para entrada mais 500 x $0,50 / 1.000.000 = $0,00025 para saída, ou $0,00115 por pergunta. Workspaces com muitos documentos custam mais do que o chat simples, mas ainda uma fração de centavo por pergunta.

Verificando streaming, ferramentas e modo JSON

O AnythingLLM transmite respostas, e a API suporta Server-Sent Events com stream: true, terminando com um chunk de uso. Se suas respostas aparecerem todas de uma vez em vez de token por token, o problema geralmente é um proxy na frente do aplicativo que armazena as respostas, não o endpoint. Você pode verificar o streaming de um script com o SDK Python da OpenAI:

from openai import OpenAI

client = OpenAI(
    base_url="https://api.llmapisource.com/v1",
    api_key="YOUR_KEY",
)

stream = client.chat.completions.create(
    model="uncensored",
    messages=[{"role": "user", "content": "List three uses of a local knowledge base."}],
    stream=True,
    stream_options={"include_usage": True},
)

for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)
    if chunk.usage:
        print("\ntokens:", chunk.usage.prompt_tokens, chunk.usage.completion_tokens)

A chamada de funções e o modo JSON funcionam através do mesmo endpoint de chat, o que é importante se você construir agentes ou fluxos em torno do aplicativo. O modo JSON é um único campo:

curl https://api.llmapisource.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "response_format": {"type": "json_object"},
    "messages": [
      {"role": "system", "content": "Return a JSON object with keys title and summary."},
      {"role": "user", "content": "Summarize: a notes app that works offline."}
    ]
  }'

As ferramentas usam os campos usuais tools e tool_choice, com resultados retornados como mensagens role: "tool". Se o AnythingLLM expõe uma funcionalidade de agente específica depende da versão do app, então teste a chamada em um script primeiro e depois experimente a funcionalidade no app. A documentação mostra um exemplo completo de chamada de ferramentas.

Corrigindo erros comuns

SintomaCausa provávelCorreção
401 ou um erro de autenticaçãoChave colada com um espaço, ou uma chave antigaCopie a chave novamente da página da chave e cole-a sem espaços
404 ou "não encontrado"URL base faltando /v1, ou tem /chat/completions no finalUse exatamente https://api.llmapisource.com/v1
Modelo não encontradoNome do modelo digitado de forma diferenteUse uncensored, minúsculas, nada adicionado
429 com rate_limitedMais de 300 requisições por minuto (60 em uma chave de teste)Reduza a velocidade ou faça lotes menos agressivos
429 com concurrencyMais de 8 requisições ao mesmo tempo (2 em uma chave de teste)Reduza workspaces paralelos ou agentes; um stream mantém seu slot até o fim
429 com um cabeçalho Retry-After: 5Sobrecarga temporáriaAguarde 5 segundos e tente novamente
Respostas cortadas antecipadamentemax_tokens baixo no aplicativoAumente ou limpe

O cabeçalho X-Request-Id em cada resposta ajuda se você entrar em contato com a suporte sobre uma chamada específica. O saldo em X-Balance-USD também mostra rapidamente se uma falha é apenas uma conta vazia.

Obtendo respostas melhores de um workspace

Uma vez que a conexão funcione, alguns hábitos de workspace fazem uma diferença visível. Escreva um prompt de sistema para o workspace que indique a função, o tom e o que fazer quando os documentos não contêm a resposta. Sem essa última instrução, um modelo frequentemente adivinhará, e uma adivinhação que soa confiante é pior do que um simples "Não encontrei isso nos documentos".

Temperature é a outra alavanca. Para responder perguntas sobre seus próprios arquivos, um valor baixo como 0,2 a 0,4 mantém as respostas próximas ao texto recuperado. Para brainstorming ou rascunho, aumente-o para perto de 0,8. A API passa temperature, top_p, stop, seed e as penalidades através, então qualquer coisa que o aplicativo envie chega ao modelo inalterada.

Monitore quantos snippets o workspace anexa a cada pergunta. Cada snippet extra é mais tokens de entrada, e com uma janela de 100.000 tokens você tem espaço, mas também paga por cada um em cada interação. Comece com um pequeno número de snippets e aumente apenas quando as respostas perderem material relevante.

Notas de privacidade e custo

Os prompts enviados pela API não são usados para treinamento. Seus documentos ainda são enviados ao endpoint dentro dos prompts quando o AnythingLLM recupera trechos, então decida quais workspaces você se sente confortável em enviar. Para materiais que nunca devem sair do seu computador, use um modelo local.

A cobrança é pagamento por uso a partir de crédito pré-pago: $0,15 por 1M de tokens de entrada e $0,50 por 1M de tokens de saída, recarregos de $20 a $500, com bônus de 5% a partir de $50, 10% a partir de $100 e 15% a partir de $200. O crédito nunca expira, e requisições falhas ou recusadas não são cobradas. A página de preços lista os métodos de pagamento.

Perguntas e respostas

Qual opção de provider eu escolho no AnythingLLM?

Escolha Generic OpenAI. Insira https://api.llmapisource.com/v1 como a URL base, sua chave como a chave de API e uncensored como o nome do modelo de chat.

Qual janela de contexto de tokens devo inserir?

Use 100000, que corresponde à janela de 100,000 tokens do modelo para prompt mais conclusão.

Posso usar este endpoint para embeddings no AnythingLLM?

Não. A API oferece apenas chat completions e uma lista de modelos. Escolha um embedder diferente no AnythingLLM e mantenha este endpoint para o modelo de chat.

A chave de API do developer do AnythingLLM é a mesma coisa?

Não. Essa chave é criada dentro do AnythingLLM para que outros programas possam chamar o app. A chave deste serviço é o que o AnythingLLM envia para o endpoint de chat.

Cena isométrica de um bloco de app conectado a um servidor por um cabo brilhante e uma chave, mostrando uma conexão de API key