Curso
Introdução
Os Large Language Models (LLMs) estão na linha de frente da IA generativa, transformando a forma como máquinas entendem e geram texto semelhante ao humano. Modelos LLM como GPT, Claude, LLaMA, Mistral, etc. impulsionam inovações em chatbots, criação de conteúdo e muito mais, oferecendo capacidades inéditas de processamento e geração de linguagem natural.
No entanto, a verdadeira utilidade dos LLMs vai além do poder computacional bruto; acessibilidade é fundamental. APIs, ou Application Programming Interfaces, funcionam como pontes, permitindo que diversos aplicativos aproveitem o potencial dos LLMs. Elas permitem que desenvolvedores integrem recursos sofisticados de compreensão e geração de linguagem aos seus aplicativos, desde análises de texto simples até sistemas de diálogo complexos.
Neste tutorial, vamos construir um aplicativo simples em Python usando o modelo GPT da OpenAI e disponibilizá-lo por meio de um endpoint de API desenvolvido com o framework FastAPI em Python.
Large Language Models
Large Language Models (LLMs) são sistemas avançados de inteligência artificial projetados para entender e gerar texto semelhante ao humano. Esses modelos são treinados com enormes volumes de dados, o que lhes permite captar padrões complexos, compreender nuances da linguagem e produzir respostas coerentes.
Os LLMs conseguem executar diversas tarefas de linguagem, como tradução, completar textos, sumarização e até manter conversas. GPT é um exemplo de LLM.
Neste post, vamos criar um aplicativo simples em Python usando a API do GPT da OpenAI e, em seguida, criar um endpoint REST para nosso aplicativo com o framework FastAPI em Python.
LLM é um tipo de IA generativa. Se você quiser aprender mais sobre IA generativa e como ela pode turbinar sua criatividade, confira nossos posts sobre como usar IA generativa para impulsionar sua criatividade e nosso podcast, Inside the Generative AI Revolution.
Você também pode se inscrever no nosso próximo curso sobre conceitos de Large Language Models.
O que é uma API?
Application Programming Interface (API) é a espinha dorsal da comunicação de software, permitindo que diferentes sistemas, aplicativos e dispositivos interajam e compartilhem dados sem atrito. Ela funciona como um conjunto de regras e protocolos que possibilitam a comunicação entre entidades de software, oferecendo uma forma predefinida para que um aplicativo utilize capacidades ou dados de outro sem precisar conhecer seus detalhes internos.
As APIs estão em toda parte no ecossistema digital atual, alimentando serviços web, aplicativos móveis e computação em nuvem, facilitando a comunicação entre aplicativos e a integração de serviços de terceiros. Elas simplificam o desenvolvimento ao fornecer blocos de construção que os desenvolvedores podem usar para acelerar a criação de novos softwares, ampliando a funcionalidade e a experiência do usuário sem começar do zero.
Com APIs, desenvolvedores conseguem estender seus aplicativos de formas que seriam complexas ou impossíveis de outro modo, tornando-as um componente crítico no desenvolvimento de software moderno.
Se você quer aprender sobre engenharia aplicada à implantação de modelos de machine learning no mundo real, confira este guia completo sobre machine learning, pipelines, deployment e MLOps. Você também pode fazer o curso gratuito Introdução a APIs na Datacamp.
FastAPI
FastAPI é um framework Python criado para construir APIs de alta performance. Sua ascensão se deve à velocidade, facilidade de uso e compatibilidade com programação assíncrona. O FastAPI ajuda desenvolvedores a expor funcionalidades de LLMs como endpoints de API, facilitando a implantação, o gerenciamento e a escalabilidade de serviços com IA.
O FastAPI se destaca pelo desempenho e eficiência, aproveitando recursos modernos do Python como type hints e programação assíncrona para oferecer ganhos de velocidade que rivalizam com NodeJS e até Go.
Essa vantagem de performance é crucial para aplicativos que exigem processamento em tempo real e tratamento de requisições concorrentes, como os que interagem com LLMs. Sua capacidade de validar automaticamente dados de entrada e serializar respostas reduz boilerplate, tornando o desenvolvimento de APIs mais limpo e direto.
A documentação automática, baseada em padrões como OpenAPI, oferece a desenvolvedores e usuários uma documentação clara e interativa da API, simplificando ainda mais integração e testes.
Exemplo de criação de API:
from typing import Union
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
return {"item_id": item_id, "q": q}
Esse código cria um servidor web simples usando FastAPI. O servidor responde a dois tipos de requisição: uma que cumprimenta o usuário com "Hello World" quando ele acessa a página inicial ("/"), e outra que exibe o ID de um item e um parâmetro de consulta opcional "q" quando o usuário acessa a página de um item específico ("/items/{item_id}"). O ID do item é obrigatório e deve ser um inteiro, enquanto o parâmetro "q" é opcional e pode ser uma string ou não estar presente.
Execute o servidor FastAPI com:

Crie um aplicativo ponta a ponta em Python
O objetivo principal deste blog é mostrar como você pode criar rapidamente endpoints REST para seus aplicativos com LLM. Vamos criar um aplicativo simples em Python (apenas uma função) que usa a API do OpenAI GPT-4 e traduz texto em inglês para francês. Este aplicativo tem apenas uma função, translate_text:
from openai import OpenAI
import os
os.environ["OPENAI_API_KEY"] = "..."
# Initialize OpenAI client with your API key
client = OpenAI()
def translate_text(input_str):
completion = client.chat.completions.create(
model="gpt-4-0125-preview",
messages=[
{
"role": "system",
"content": "You are an expert translator who translates text from english to french and only return translated text",
},
{"role": "user", "content": input_str},
],
)
return completion.choices[0].message.content
Essa função recebe uma entrada do usuário e simplesmente a repassa para o modelo GPT-4 da OpenAI. Há um prompt de sistema para definir o contexto, e o prompt do usuário é o texto que recebemos em input_str.
Você pode testar essa função executando o seguinte. Você deverá receber o texto em francês de volta.
# test the function
translate_text("this is a test string to translate")
Se você pretende compartilhar esse aplicativo com outras pessoas, simplesmente enviar o arquivo Python para que elas executem no terminal pode funcionar para alguns usuários, especialmente os familiarizados com Python e linha de comando.
Mas essa abordagem tem limitações. Nem todo mundo se sente à vontade usando o terminal e, mesmo para quem se sente, rodar um script Python exige ter o ambiente configurado com todas as dependências. Isso pode ser trabalhoso e criar barreiras para que os usuários acessem com facilidade a funcionalidade do seu tradutor.
É aqui que empacotar seu aplicativo com FastAPI para expô-lo como um endpoint REST se torna uma solução poderosa. Assim, você cria uma interface acessível ao seu aplicativo pela internet, sem exigir que os usuários executem scripts Python. Eles podem interagir por requisições web simples, feitas a partir de várias plataformas e linguagens de programação, não apenas Python.
Criar uma API REST com FastAPI automatiza o processo de receber solicitações de tradução e enviar as respostas. Os usuários podem enviar o texto a ser traduzido por uma interface web ou chamada de API programática, deixando tudo muito mais fácil e flexível para diferentes casos de uso.
Para converter essa função simples em um endpoint de API usando FastAPI, vamos ajustar nosso código:
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import os
os.environ["OPENAI_API_KEY"] = "..."
# Initialize OpenAI client with your API key
client = OpenAI()
# Initialize FastAPI client
app = FastAPI()
# Create class with pydantic BaseModel
class TranslationRequest(BaseModel):
input_str: str
def translate_text(input_str):
completion = client.chat.completions.create(
model="gpt-4-0125-preview",
messages=[
{
"role": "system",
"content": "You are an expert translator who translates text from english to french and only return translated text",
},
{"role": "user", "content": input_str},
],
)
return completion.choices[0].message.content
@app.post("/translate/") # This line decorates 'translate' as a POST endpoint
async def translate(request: TranslationRequest):
try:
# Call your translation function
translated_text = translate_text(request.input_str)
return {"translated_text": translated_text}
except Exception as e:
# Handle exceptions or errors during translation
raise HTTPException(status_code=500, detail=str(e))
Para executar e testar essa API localmente, basta rodar o seguinte comando:
uvicorn main:app --reload
Aqui, main.py é o arquivo que contém seu código. O termo app aponta para a instância da aplicação FastAPI, identificada no seu código por app = FastAPI().
Acesse localhost:8000/docs para ver uma interface gráfica, que deve se parecer com isto:

Clique em POST, depois em Try it out, informe seu texto e clique em Execute.

Você verá um comando curl enviado para a API, a URL da requisição (que por enquanto é seu localhost) e a resposta do servidor. O código 200 significa sucesso; ao lado, você pode ver a tradução para o francês.

Conclusão
Neste blog, mostramos como configurar um endpoint de API com FastAPI para servir aplicativos impulsionados por Large Language Models como o GPT. Com seu desempenho e simplicidade, o FastAPI oferece um caminho direto para construir APIs de alta performance, sendo uma ótima escolha para quem quer integrar LLMs aos seus projetos.
Se você quer descobrir todo o potencial dos LLMs com um curso conceitual único que cobre aplicações, metodologias de treinamento, considerações éticas e as pesquisas mais recentes, confira o curso gratuito Mastering Large Language Models (LLMs) na Datacamp.
Quer ampliar seu repertório de habilidades e ferramentas? Conheça as 21 ferramentas essenciais de Python para desenvolvimento de software, web scraping e desenvolvimento web, análise e visualização de dados e machine learning.




