Apresentando o pplx-api
API rápida e eficiente do Perplexity Labs para LLMs de código aberto

Atenção: os itens abaixo foram descontinuados para os modelos atuais. Saiba mais sobre nossas APIs
Temos o prazer de anunciar a pplx-api, projetada para ser uma das maneiras mais rápidas de acessar os modelos Mistral 7B, Llama2 13B, Code Llama 34B, Llama2 70B e replit-code-v1.5-3b. A pplx-api facilita para os desenvolvedores a integração de LLMs de código aberto de última geração em seus projetos.
Nossa pplx-api oferece:
Facilidade de uso: os desenvolvedores podem usar modelos de código aberto de última geração prontos para uso e começar em minutos com uma API REST familiar.
Inferência incrivelmente rápida: nosso sistema de inferência cuidadosamente projetado é eficiente e atinge uma latência até 2,9x menor que a da Replicate e 3,1x menor que a da Anyscale.
Infraestrutura testada em batalha: a pplx-api provou ser confiável, atendendo a tráfego em nível de produção tanto em nosso mecanismo de resposta Perplexity quanto em nosso ambiente de testes Labs.
Solução completa para LLMs de código aberto: nossa equipe se dedica a adicionar novos modelos de código aberto à medida que são lançados. Por exemplo, adicionamos os modelos Llama e Mistral poucas horas após o lançamento, sem acesso pré-lançamento.
A pplx-api está em versão beta pública e é gratuita para usuários com uma assinatura Perplexity Pro.
Use a pplx-api para um hackathon casual de fim de semana ou como uma solução comercial para criar produtos novos e inovadores. Esperamos ver como as pessoas podem criar produtos incríveis e inovadores com nossa API por meio deste lançamento. Entre em contato com api@perplexity.ai se você tiver um caso de uso comercial para a pplx-api. Adoraríamos saber sua opinião!
Benefícios da pplx-api
Facilidade de uso
A implantação e a inferência de LLMs exigem um esforço significativo de infraestrutura para tornar o atendimento de modelos eficiente e com custo otimizado. Os desenvolvedores podem usar nossa API sem necessidade de configuração adicional, sem conhecimento profundo de C++/CUDA ou acesso a GPUs, enquanto ainda desfrutam de desempenho de última geração. Nossa inferência de LLM também abstrai a complexidade e a necessidade de gerenciar seu próprio hardware, aumentando ainda mais a facilidade de uso.
Inferência incrivelmente rápida
A API de LLM da Perplexity foi cuidadosamente projetada e otimizada para inferência rápida. Para conseguir isso, construímos uma infraestrutura de inferência de LLM proprietária em torno do TensorRT-LLM da NVIDIA, que é executado em GPUs A100 fornecidas pela AWS. Saiba mais na seção Visão geral da infraestrutura da pplx-api. Como resultado, a pplx-api é uma das APIs Llama e Mistral mais rápidas disponíveis comercialmente.
Para fazer um comparativo com as soluções existentes, comparamos a latência da pplx-api com outras bibliotecas de inferência de LLM. Em nossos experimentos, a pplx-api atinge uma latência geral até 2,92x mais rápida em comparação com o Text Generation Inference (TGI) e uma latência de resposta inicial até 4,35x mais rápida. Para este experimento, comparamos o TGI e a inferência da Perplexity para cenários de fluxo único e de servidor em 2 GPUs A100 usando um modelo Llama-2-13B-chat distribuído em ambas as GPUs. Para o cenário de fluxo único, o servidor processa uma solicitação após a outra. No cenário de servidor, o cliente envia solicitações de acordo com uma distribuição de Poisson com taxas de solicitação variadas para emular uma carga variada. Para a taxa de solicitação, realizamos uma pequena varredura até um máximo de 1 solicitação/segundo, o rendimento máximo sustentado pelo TGI. Usamos dados do mundo real com uma variedade de comprimentos de token de entrada e saída para simular o comportamento de produção. As solicitações têm uma média de ~700 tokens de entrada e ~550 tokens de saída.
Usando as mesmas entradas e enviando um único fluxo de solicitações, também medimos as latências médias das APIs da Replicate e da Anyscale para este mesmo modelo, a fim de obter uma linha de base de desempenho em relação a outras APIs existentes.


Usando a mesma configuração experimental, comparamos a taxa de transferência máxima da pplx-api com o TGI, tendo a velocidade de decodificação como uma restrição de latência. Em nossos experimentos, a pplx-api processa tokens de 1,90x a 6,75x mais rápido que o TGI, e o TGI falha totalmente em atender às nossas restrições de latência mais rigorosas a 60 e 80 tokens/segundo. Avaliamos o TGI sob as mesmas condições de hardware e carga que usamos para avaliar a pplx-api. Não é possível comparar essa métrica com a Replicate e a Anyscale, pois não podemos controlar seus fatores de hardware e carga.
Para referência, a velocidade média de leitura humana é de 5 tokens/segundo, o que significa que a pplx-api é capaz de atender a uma taxa mais rápida do que a capacidade de leitura.

Visão geral da infraestrutura da pplx-api
Alcançar esses números de latência requer uma combinação de software e hardware de última geração.
As instâncias p4d da AWS alimentadas por GPUs NVIDIA A100 estabelecem o cenário como a opção mais econômica e confiável para dimensionar GPUs com velocidades de clock líderes no setor.
Para que o software aproveite esse hardware, executamos o TensorRT-LLM da NVIDIA, uma biblioteca de código aberto que acelera e otimiza a inferência de LLM. O TensorRT-LLM encapsula o compilador de aprendizado profundo do TensorRT e inclui os kernels otimizados mais recentes feitos para implementações de ponta do FlashAttention e atenção multi-head mascarada (MHA) para as fases de contexto e geração da execução do modelo LLM.
A partir daí, a espinha dorsal da AWS e sua robusta integração com o Kubernetes nos permitem escalar elasticamente além de centenas de GPUs e minimizar o tempo de inatividade e a sobrecarga de rede.
Caso de uso: nossa API em produção
pplx-api no Perplexity: Redução de custos e confiabilidade
Nossa API já alimenta um dos principais recursos do produto Perplexity. Apenas a alteração de um único recurso de uma API externa para a pplx-api resultou em uma economia de custos de US$ 0,62 milhão/ano, o que representa uma redução de custos de aproximadamente 4x. Executamos testes A/B e monitoramos métricas de infraestrutura para garantir que não houvesse degradação de qualidade. Ao longo de 2 semanas, não observamos nenhuma diferença estatisticamente significativa no teste A/B. Além disso, a pplx-api pôde sustentar uma carga diária de mais de um milhão de solicitações, totalizando quase um bilhão de tokens processados diariamente.
Os resultados dessa exploração inicial são muito encorajadores, e antecipamos que a pplx-api alimentará mais recursos de nossos produtos ao longo do tempo.

Também usamos a pplx-api para alimentar o Perplexity Labs, nosso ambiente de testes de modelos que atende a vários modelos de código aberto.

Nossa equipe está comprometida em fornecer acesso aos mais recentes LLMs de código aberto de última geração. Integramos o Mistral 7B, o Code Llama 34b e todos os modelos Llama 2 poucas horas após o lançamento, e planejamos fazer o mesmo à medida que LLMs de código aberto mais capazes estiverem disponíveis.
Comece a usar a API de IA da Perplexity
Você pode acessar a API REST da pplx-api usando solicitações HTTPS. A autenticação na pplx-api envolve as seguintes etapas:
Gere uma chave de API na Página de configurações da conta Perplexity. A chave de API é um token de acesso de longa duração que pode ser usado até ser atualizado ou excluído manualmente.

Envie a chave de API como um token de portador no cabeçalho Authorization em cada solicitação da pplx-api.
No exemplo a seguir, PERPLEXITY_API_KEY é uma variável de ambiente vinculada a uma chave gerada usando as instruções acima. O CURL é usado para enviar uma solicitação de conclusão de chat.
curl -X POST \
--url https://perplexity.coolkeypoint.com/__p/api.perplexity.ai/chat/completions \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--header "Authorization: Bearer ${PERPLEXITY_API_KEY}" \
--data '{
"model": "mistral-7b-instruct",
"stream": false,
"max_tokens": 1024,
"frequency_penalty": 1,
"temperature": 0.0,
"messages": [
{
"role": "system",
"content": "Be precise and concise in your responses."
},
{
"role": "user",
"content": "How many stars are there in our galaxy?"
}
]
}'O que produz a seguinte resposta, tendo content-type: application/json
{
"id": "3fbf9a47-ac23-446d-8c6b-d911e190a898",
"model": "mistral-7b-instruct",
"object": "chat.completion",
"created": 1765322,
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": " The Milky Way galaxy contains an estimated 200-400 billion stars.."
},
"delta": {
"role": "assistant",
"content": " The Milky Way galaxy contains an estimated 200-400 billion stars.."
}
}
],
"usage": {
"prompt_tokens": 40,
"completion_tokens": 22,
"total_tokens": 62
}
}Aqui está um exemplo de chamada em Python:
from openai import OpenAI
YOUR_API_KEY = "INSERT API KEY HERE"
messages = [
{
"role": "system",
"content": (
"You are an artificial intelligence assistant and you need to "
"engage in a helpful, detailed, polite conversation with a user."
),
},
{
"role": "user",
"content": (
"Count to 100, with a comma between each number and no newlines. "
"E.g., 1, 2, 3, ..."
),
},
]
client = OpenAI(api_key=YOUR_API_KEY, base_url="https://perplexity.coolkeypoint.com/__p/api.perplexity.ai")
# demo chat completion without streaming
response = client.chat.completions.create(
model="mistral-7b-instruct",
messages=messages,
)
print(response)
# demo chat completion with streaming
response_stream = client.chat.completions.create(
model="mistral-7b-instruct",
messages=messages,
stream=True,
)
for response in response_stream:
print(response)Atualmente, oferecemos suporte a Mistral 7B, Llama 13B, Code Llama 34B, Llama 70B, e a API é convenientemente compatível com o cliente OpenAI para fácil integração com aplicativos existentes.
Para obter mais informações, visite nossa documentação da API e o Guia de início rápido.
O que vem a seguir
Em um futuro próximo, a pplx-api dará suporte a:
LLMs personalizados da Perplexity e outros LLMs de código aberto.
Embeddings personalizados da Perplexity e embeddings de código aberto.
Estrutura de preços de API dedicada com acesso geral após o término da versão beta pública.
API Perplexity RAG-LLM com grounding para fatos e citações.
Entre em contato com api@perplexity.ai se tiver interesse em algum destes casos de uso.
Este também é o início de nossa série de postagens no blog do Perplexity. Em nossa próxima postagem, compartilharemos uma análise detalhada da comparação de desempenho entre A100 e H100 para inferência de LLM. Fique ligado!
Estamos contratando! Se você quiser trabalhar em um produto implantado em escala massiva e criar conosco uma infraestrutura de modelos de linguagem grandes e generativos cuidadosamente projetada e otimizada, junte-se a nós.
Siga-nos no Twitter, LinkedIn e participe do nosso Discord para mais discussões.
Autores:
Lauren Yang, Kevin Hu, Aarash Heydari, William Zhang, Dmitry Pervukhin, Grigorii Alekseev, Alexandr Yarats
Privacidade de dados
Ao escolher a pplx-api, você pode aproveitar todo o potencial dos LLMs enquanto protege a privacidade e a confiança de seus usuários e clientes. Entendemos a importância de proteger suas informações pessoais e estamos comprometidos em manter a segurança e a privacidade de nossos usuários. Os dados da API são excluídos automaticamente após 30 dias, e nunca realizamos treinamento com nenhum dado transmitido por meio da pplx-api. Os usuários têm a opção de desativar a retenção de dados nas configurações de sua conta. Encontre nossa política de privacidade da API aqui.