Construindo uma API LLM de Alto Desempenho e Pronta para Produção com FastAPI: Um Guia Passo a Passo

2/19/2026
6 min read

Construindo uma API LLM de Alto Desempenho e Pronta para Produção com FastAPI: Um Guia Passo a Passo

FastAPI, como um framework Web Python moderno e de alto desempenho, é popular devido à sua facilidade de uso, velocidade e documentação de API gerada automaticamente. Especialmente na construção de APIs de backend para aplicações LLM (Large Language Model), o FastAPI demonstra uma forte vantagem. Este artigo irá ensiná-lo passo a passo como construir uma API LLM pronta para produção usando FastAPI e explorar algumas das melhores práticas.

Por que escolher FastAPI?

Ao construir a API de uma aplicação LLM, o FastAPI oferece as seguintes vantagens principais:

  • Alto desempenho: Baseado em ASGI, o FastAPI pode lidar com solicitações de alta concorrência, o que é crucial para aplicações LLM que exigem respostas rápidas.
  • Suporte assíncrono: O FastAPI possui suporte integrado para as palavras-chave async e await, o que facilita o tratamento de operações assíncronas, como chamar a inferência LLM, evitando o bloqueio da thread principal.
  • Documentação automática da API: O FastAPI usa OpenAPI e JSON Schema para gerar automaticamente documentação de API interativa (Swagger UI), facilitando para os desenvolvedores testar e usar sua API.
  • Validação de dados: O FastAPI usa Pydantic para validação de dados, garantindo a correção dos parâmetros de solicitação e reduzindo erros.
  • Injeção de dependência: O sistema de injeção de dependência do FastAPI facilita o gerenciamento e o compartilhamento de recursos, como modelos LLM.
  • Comunidade ativa: O FastAPI tem uma comunidade grande e ativa, onde você pode obter muitos recursos e suporte.

Preparação

  1. Instale o Python: Certifique-se de ter o Python 3.7 ou superior instalado.

  2. Instale FastAPI e Uvicorn: Use pip para instalar FastAPI e Uvicorn (servidor ASGI):

    pip install fastapi uvicorn
    
  3. Selecione o modelo LLM: Escolha o modelo LLM que você deseja usar. Pode ser um modelo da OpenAI ou um modelo de código aberto, como o TinyLlama. Se você escolher OpenAI, precisará obter uma chave de API da OpenAI. Se você escolher TinyLlama, precisará baixar o arquivo do modelo.

Passo 1: Criar a aplicação FastAPI

Crie um arquivo chamado main.py e adicione o seguinte código:

from fastapi import FastAPI, HTTPException
from pydantic import BaseModel

app = FastAPI(title="LLM API", description="A simple API for interacting with LLMs.")

class InputText(BaseModel):
    text: str

class OutputText(BaseModel):
    generated_text: str

Este código define uma aplicação FastAPI e define dois modelos Pydantic: InputText para receber texto de entrada e OutputText para retornar o texto gerado.

Passo 2: Adicionar lógica de inferência LLM

De acordo com o modelo LLM que você escolher, adicione a lógica de inferência correspondente. Aqui, tomamos como exemplo o uso da API OpenAI:

import openai
import os

# Obtenha a chave da API OpenAI
openai.api_key = os.environ.get("OPENAI_API_KEY")  # Recomenda-se usar variáveis de ambiente
@app.post("/generate", response_model=OutputText)
async def generate_text(input_text: InputText):
    """
    Gera texto com base no texto de entrada usando OpenAI.
    """
    try:
        response = openai.Completion.create(
            engine="text-davinci-003", # Seleciona o modelo
            prompt=input_text.text,
            max_tokens=150,
            n=1,
            stop=None,
            temperature=0.7,
        )
        generated_text = response.choices[0].text.strip()
        return OutputText(generated_text=generated_text)
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))

Este código define uma rota /generate que recebe um objeto InputText como entrada, chama a API OpenAI para gerar texto e retorna o texto gerado como um objeto OutputText. Observe que você deve substituir text-davinci-003 pelo modelo apropriado de sua escolha.

Se você estiver usando um modelo local como o TinyLlama, você precisa instalar a biblioteca correspondente, como transformers, e carregar o modelo na memória. Um exemplo de código é o seguinte:

from transformers import pipeline
import torch

generator = pipeline('text-generation', model="TinyLlama/TinyLlama-1.1B-Chat-v1.0", torch_dtype=torch.bfloat16, device_map="auto")

@app.post("/generate", response_model=OutputText)
async def generate_text(input_text: InputText):
    """
    Gera texto com base no texto de entrada usando TinyLlama.
    """
    try:
        generated_text = generator(input_text.text, max_length=50, do_sample=True, temperature=0.7)[0]['generated_text']
        return OutputText(generated_text=generated_text)
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))

Passo 3: Executando a aplicação FastAPI

Execute a aplicação FastAPI usando Uvicorn:

uvicorn main:app --reload
```Isso iniciará um servidor local, e você pode acessar `http://127.0.0.1:8000/docs` no seu navegador para ver a documentação da API gerada automaticamente. O parâmetro `--reload` pode reiniciar o servidor automaticamente após modificações no código, facilitando o desenvolvimento.

## Passo 4: Testar a API

Use a documentação da API ou ferramentas como curl para testar sua API. Por exemplo, use curl para enviar uma requisição POST:

```bash
curl -X POST -H "Content-Type: application/json" -d '{"text": "Tell me a joke about cats."}' http://127.0.0.1:8000/generate

Você deverá receber uma resposta JSON contendo o texto gerado.

Passo 5: Implantação em Produção

Implante sua aplicação FastAPI em um ambiente de produção, por exemplo:

  • Docker: Use Docker para containerizar sua aplicação, facilitando a implantação e o gerenciamento.
  • Plataforma de Nuvem: Implante em uma plataforma de nuvem, como AWS, Google Cloud Platform ou Azure. O Azure Cosmos DB e o Azure Functions mencionados no texto podem ser usados para construir uma API serverless. Modal também pode ser usado para implantar aplicações FastAPI com escalabilidade automática.
  • Servidor: Implante em seu próprio servidor.

Melhores Práticas

  • Use variáveis de ambiente para armazenar informações sensíveis: Não coloque chaves de API e outras informações sensíveis diretamente no código. Em vez disso, use variáveis de ambiente.
  • Adicione registro de logs: Use o módulo de registro de logs para registrar o estado de execução da API, facilitando a depuração e o monitoramento.
  • Adicione tratamento de erros: Use blocos try...except para tratar possíveis exceções e retornar mensagens de erro apropriadas.
  • Limitação de taxa: Use um limitador de taxa para evitar o uso abusivo da API. FastAPI tem algumas bibliotecas de limitação de taxa prontas para uso.
  • Cache: Para requisições repetidas, use cache para melhorar o desempenho.
  • Monitoramento: Use ferramentas de monitoramento para monitorar o desempenho e a disponibilidade da API.

Dicas Avançadas

  • Processamento assíncrono: Para inferência de LLM demorada, use as palavras-chave async e await para processamento assíncrono, evitando o bloqueio da thread principal.
  • Resposta em fluxo: Use a resposta em fluxo (StreamingResponse) para retornar o texto gerado em tempo real, melhorando a experiência do usuário.
  • Multithreading/Multiprocessing: Para inferência de LLM intensiva em CPU, use multithreading ou multiprocessamento para melhorar o desempenho.
  • Aceleração por GPU: Se o seu modelo LLM suportar aceleração por GPU, use CUDA ou outras bibliotecas de aceleração por GPU para aumentar a velocidade de inferência.

ConclusãoFastAPI é uma ferramenta poderosa para construir APIs de LLM de alto desempenho e prontas para produção. Através deste guia, você pode rapidamente configurar uma API de LLM e expandi-la e otimizá-la de acordo com suas necessidades. Lembre-se, aprendizado e prática contínuos são a chave para se tornar um excelente desenvolvedor de aplicações de LLM. Hornbeam, mencionado no artigo, também é um servidor ASGI que vale a pena observar, alegando ser mais rápido e estável que o Gunicorn, e pode ser usado para implantar aplicações FastAPI.

Published in Technology

You Might Also Like