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

Observe: os itens abaixo foram descontinuados para os modelos atuais.Saiba mais sobre nossas APIs
Estamos entusiasmados em anunciar a pplx-api, projetada para ser uma das formas mais rápidas de acessar modelos Mistral 7B, Llama2 13B, Code Llama 34B, Llama2 70B, replit-code-v1.5-3b. A pplx-api facilita a integração de LLMs de código aberto de ponta aos projetos dos desenvolvedores.
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 extremamente rápida: nosso sistema de inferência cuidadosamente projetado é eficiente e alcança latência até 2,9x menor que a Replicate e 3,1x menor que a Anyscale.
Infraestrutura testada em batalha: a pplx-api comprovadamente é confiável, servindo tráfego de nível de produção tanto em nosso mecanismo de resposta da Perplexity quanto em nosso playground Labs.
Solução completa para LLMs de código aberto: nossa equipe dedica-se a adicionar novos modelos de código aberto assim que são lançados. Por exemplo, adicionamos 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 construir produtos novos e inovadores. Esperamos aprender como as pessoas podem criar produtos legais e inovadores com nossa API por meio deste lançamento. Entre em contato com api@perplexity.ai se tiver um caso de uso comercial para a pplx-api. Adoraríamos ouvir você!
Benefícios da pplx-api
Facilidade de uso
A implantação e a inferência de LLM exigem um esforço de infraestrutura significativo para tornar o fornecimento do modelo eficiente e com bom custo-benefício. Os desenvolvedores podem usar nossa API pronta para uso, 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 sua facilidade de uso.
Inferência extremamente rápida
A API de LLM da Perplexity é cuidadosamente projetada e otimizada para inferência rápida. Para conseguir isso, construímos uma infraestrutura proprietária de inferência de LLM em torno do TensorRT-LLM da NVIDIA, servida 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 realizar benchmarking em relação às soluções existentes, comparamos a latência da pplx-api com outras bibliotecas de inferência de LLM. Em nossos experimentos, a pplx-api alcança latência geral até 2,92x mais rápida em comparação com o Text Generation Inference (TGI), e 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 servidor em 2 GPUs A100 usando um modelo Llama-2-13B-chat particionado entre 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 variáveis para emular uma carga variável. Para a taxa de solicitação, realizamos uma pequena varredura até um máximo de 1 solicitação/segundo, a taxa de transferência máxima sustentada pelo TGI. Usamos dados do mundo real com uma variedade de comprimentos de tokens de entrada e saída para simular o comportamento de produção. As solicitações têm em média ~700 tokens de entrada e ~550 tokens de saída.
Usando as mesmas entradas e enviando um fluxo único 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 base de desempenho em comparação com outras APIs existentes.


Usando a mesma configuração experimental, comparamos a taxa de transferência máxima da pplx-api em relação ao TGI, com a velocidade de decodificação como uma restrição de latência. Em nossos experimentos, a pplx-api processa tokens 1,90x a 6,75x mais rápido que o TGI, e o TGI falha completamente em satisfazer nossas restrições de latência mais rígidas em 60 e 80 tokens/segundo. Avaliamos o TGI sob as mesmas condições de hardware e carga que usamos para avaliar a pplx-api. Comparar essa métrica com a Replicate e a Anyscale não é possível, 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 servir a uma taxa mais rápida do que alguém consegue ler.

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 AWS p4d, equipadas com GPUs NVIDIA A100, preparam o terreno como a opção mais confiável e de melhor custo-benefício para escalar GPUs com velocidades de clock de primeira classe.
Para que o software tire proveito desse 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 envolve 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 mascarada multi-cabeça (MHA) para as fases de contexto e geração da execução do modelo LLM.
A partir daqui, a espinha dorsal da AWS e sua integração robusta com o Kubernetes nos capacitam a 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 na Perplexity: Redução de custos e confiabilidade
Nossa API já está alimentando um dos principais recursos do produto da Perplexity. Apenas a mudança 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, aproximadamente uma redução de 4x nos custos. Realizamos 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 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 playground de modelos que serve 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, Code Llama 34b e todos os modelos Llama 2 em questão de horas após seu lançamento, e planejamos fazer o mesmo à medida que LLMs de código aberto mais capazes se tornarem disponíveis.
Comece com a API de IA da Perplexity
Você pode acessar a API REST pplx-api usando solicitações HTTPS. A autenticação na pplx-api envolve as seguintes etapas:
Gere uma chave de API através da página de configurações da conta da 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 (bearer token) no cabeçalho Authorization com 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. 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 gera 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 facilitar a 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 oferecerá 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 precificação dedicada da API com acesso geral após o término da versão beta pública.
API RAG-LLM da Perplexity com base em fatos e citações.
Entre em contato com api@perplexity.ai se você tiver interesse em algum desses casos de uso.
Este também é o início da nossa série de postagens no blog da Perplexity. Em nossa próxima postagem, compartilharemos uma análise profunda da comparação de desempenho A100 vs H100 para inferência de LLM. Fique ligado!
Estamos contratando! Se você deseja trabalhar em um produto implantado em escala massiva e construir conosco uma infraestrutura de modelo de linguagem grande e generativa, cuidadosamente projetada e otimizada, por favor, 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 treinamos modelos usando dados transmitidos via pplx-api. Os usuários têm a opção de cancelar a retenção de dados nas configurações de suas contas. Encontre nossa política de privacidade de API aqui.