Olá, comunidade! 👋
Estou animado para compartilhar um projeto recente que desenvolvi utilizando FastAPI e a API da OpenAI. O objetivo foi criar uma API de tradução eficiente e escalável, containerizada com Docker para facilitar o deployment.
🛠️ Tecnologias Utilizadas:
- FastAPI: Framework moderno e de alto desempenho para construir APIs com Python.
- OpenAI GPT-4: Modelo de linguagem avançado para realizar traduções precisas.
- Pydantic: Validação de dados robusta para garantir a integridade das entradas.
- Docker: Containerização da aplicação para garantir consistência em diferentes ambientes.
📂 Estrutura do Projeto:
- app.py: Contém a lógica da API, definição das rotas e integração com a OpenAI.
- Dockerfile: Configuração para containerizar a aplicação, facilitando o deployment em qualquer ambiente.
📈 Funcionalidades Implementadas:
- Validação de Dados: Utilizando Pydantic para garantir que a entrada seja uma string válida.
-
Rota de Tradução: Endpoint
/translate/que recebe uma string e retorna a tradução utilizando o modelo GPT-4. - Tratamento de Erros: Implementação de exceções para garantir a robustez da API.
- Containerização com Docker: Facilita a distribuição e execução da aplicação em qualquer infraestrutura.
💡 Desafios e Aprendizados:
- Integração com a API da OpenAI: Aprendi a otimizar as chamadas para obter respostas mais rápidas e precisas.
- Deploy com Docker: Ganhei experiência em criar ambientes consistentes e replicáveis, simplificando o processo de deployment.
🔗 Código Disponível:
Estou compartilhando parte do código abaixo para quem tiver interesse em entender melhor a implementação:
app.py
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from openai import OpenAI
import os
os.environ["OPENAI_API_KEY"] = "sua_senha"
openai_client = OpenAI()
app = FastAPI()
class TranslationRequest(BaseModel):
text_to_translate: str
def get_translated_text(text_to_translate: str) -> str:
try:
response = openai_client.chat.completions.create(
model="gpt-4-mini",
messages=[
{"role": "system", "content": "You are a translation expert."},
{"role": "user", "content": text_to_translate},
],
)
return response.choices[0].message.content
except Exception as error:
# Opcional: você pode registrar o erro aqui para depuração
raise error
@app.post("/translate/")
async def translate_text_endpoint(request: TranslationRequest):
try:
translated_text = get_translated_text(request.text_to_translate)
return {"translated_text": translated_text}
except Exception as error:
raise HTTPException(status_code=500, detail=str(error))
dockerfile
FROM python:3.11.5-slim
WORKDIR /app
COPY app.py /app
RUN pip install uvicorn fastapi openai pydantic
EXPOSE 8000
CMD [ "uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000" ]
🔗 Resultado Final:
Estou empolgado com as possibilidades futuras deste projeto e aberto a feedbacks e colaborações! 🤝
Obrigado por ler! Se tiverem dúvidas ou sugestões, fiquem à vontade para comentar abaixo. 👇

Top comments (0)