Em meu artigo anterior sobre Pydantic, apresentei o Logfire em um dos exemplos de código como uma plataforma de observabilidade projetada para fornecer aos desenvolvedores insights sobre aplicativos Python. Neste artigo, você terá uma imersão profunda no Logfire e em suas capacidades que eventualmente simplificarão sua jornada de Observabilidade, desde rastreamento até depuração e registro.
O Logfire é uma plataforma de observabilidade inovadora desenvolvida pelos criadores do Pydantic, projetada para fornecer aos desenvolvedores insights poderosos sobre seus aplicativos Python. Construído com base nos mesmos princípios que tornaram o Pydantic um sucesso, o Logfire tem como objetivo tornar a observabilidade fácil de implementar e entender, oferecendo insights profundos sobre o comportamento do aplicativo.
Recursos Principais
Integração Perfeita
O Logfire se integra facilmente aos projetos Python existentes, exigindo configuração mínima. Com apenas algumas linhas de código, os desenvolvedores podem começar a reunir dados valiosos sobre o desempenho e o comportamento de seus aplicativos.
Integração com Pydantic
O Logfire oferece integração excepcional com modelos Pydantic. Isso permite aos desenvolvedores obter insights sem precedentes sobre a validação de dados e o uso de modelos em seus aplicativos.
Instrumentação Automática
O Logfire pode instrumentar automaticamente bibliotecas e frameworks populares, reduzindo a necessidade de registro e rastreamento manuais. Esse recurso economiza tempo e garante uma cobertura abrangente do comportamento do aplicativo.
Compatível com OpenTelemetry
Construído em cima do OpenTelemetry, Logfire garante compatibilidade com os padrões da indústria e permite opções flexíveis de exportação de dados.
Pré-requisitos
- Acesse Logfire.
- Siga as instruções para criar sua conta. Essa conta irá ajudar você a organizar seus projetos.
- A partir da sua organização, clique em Novo projeto para criar seu primeiro projeto.
Começando
Para começar a usar o Logfire, siga estes passos simples:
Passo 1. Instale o pacote Logfire com o comando abaixo. Se estiver usando o Jupyter Notebook, execute !pip install logfire
.
pip install logfire
Passo 2. Autentique-se com o serviço Logfire. Isso abrirá um navegador e solicitará suas credenciais de login do logfire.
logfire auth
3. Configure o Logfire em sua aplicação. Uma vez que o pacote esteja instalado, você precisará usar os comandos abaixo para configurar o logfire.
import logfire
logfire.configure()
Você pode seguir os passos como parte da configuração do seu projeto:
Uso Básico
Um span no Logfire é um bloco de construção essencial de um trace. Você pode definir um span com logfire.span. No exemplo abaixo, o span externo define o tópico – o aniversário do usuário. O usuário será solicitado a fornecer seu aniversário e capturado através do terminal ou prompt de comando. O espaço captura a data de nascimento inserida pelo usuário.
Aqui está um exemplo simples de como usar o Logfire para rastreamento manual:
import logfire
from datetime import date
logfire.configure()
logfire.info('Hello, {name}!', name='world')
with logfire.span('Asking the user their {question}', question='age'):
user_input = input('How old are you [YYYY-mm-dd]? ')
dob = date.fromisoformat(user_input)
logfire.debug('{dob=} {age=!r}', dob=dob, age=date.today() - dob)
Se você não visualizar a saída DEBUG, clique em Filtrar dados locais –> Níveis –> debug.
Integração Pydantic
Como discutido em meu artigo anterior, a funcionalidade central do Pydantic é a validação de dados. Ele utiliza dicas de tipo Python para validar automaticamente a estrutura e tipos de dados. Ao definir um modelo Pydantic, cada campo é anotado com seu tipo esperado. Pydantic então garante que quaisquer dados atribuídos a esses campos estejam em conformidade com os tipos especificados.
A integração do Logfire com Pydantic é particularmente poderosa. Veja como você pode usá-la para registrar validações de modelos Pydantic:
from datetime import date
import logfire
from pydantic import BaseModel
logfire.configure()
logfire.instrument_pydantic()
class User(BaseModel):
name: str
country_code: str
dob: date
User(name='Anne', country_code='USA', dob='2000-01-01')
User(name='Ben', country_code='USA', dob='2000-02-02')
User(name='Charlie', country_code='GBR', dob='1990-03-03')
Essa configuração irá automaticamente registrar detalhes sobre todas as validações de modelos Pydantic, fornecendo insights valiosos sobre o processamento de dados dentro de sua aplicação.
Integrações de Framework
O Logfire oferece integrações com frameworks e bibliotecas populares de Python. Para o exemplo de código Python abaixo, você precisa fornecer a chave da API OpenAI e instalar os pacotes necessários (FASTAPI, instrutor, OpenAI, etc.).
Para começar, FastAPI é um framework web Python que ajuda os desenvolvedores a criar interfaces de programação de aplicativos (APIs). FastAPI é conhecido por sua escalabilidade, facilidade de uso e alto desempenho.
Instructor é um pacote Python que ajuda a extrair facilmente dados estruturados como JSON a partir da saída LLMs.
Aqui está um exemplo de como integrar Logfire com FastAPI, OpenAI API e Instructor:
from fastapi import FastAPI
from openai import AsyncOpenAI
import os
import instructor
import logfire
from pydantic import BaseModel
app = FastAPI()
openai_client = AsyncOpenAI(
api_key=os.environ.get("OPENAI_API_KEY"))
logfire.configure()
logfire.instrument_pydantic()
logfire.instrument_openai(openai_client)
logfire.instrument_fastapi(app)
client = instructor.from_openai(openai_client)
class UserData(BaseModel):
query: str
class UserDetail(BaseModel):
name: str
age: int
post("/user", response_model=UserDetail) .
async def endpoint_function(data: UserData) -> UserDetail:
user_detail = await client.chat.completions.create(
model="gpt-3.5-turbo",
response_model=UserDetail,
messages=[
{"role": "user", "content": f"Extract: `{data.query}`"},
],
)
return user_detail
Essa configuração oferece um registro abrangente para solicitações FastAPI, chamadas de API OpenAI e validações de modelos Pydantic, oferecendo uma visão holística do comportamento de sua aplicação.
Conclusão
O Logfire representa um avanço significativo para tornar a observabilidade acessível e poderosa para os desenvolvedores Python. O Logfire permite que os desenvolvedores compreendam e otimizem melhor suas aplicações, combinando facilidade de uso com insights profundos. Se você está trabalhando em um projeto pequeno ou em uma aplicação em grande escala, o Logfire fornece as ferramentas para obter insights valiosos sobre o comportamento e desempenho do seu código.
Por favor, mostre seu apoio com um like e compartilhe com sua comunidade de desenvolvedores.
Source:
https://dzone.com/articles/logfire-uncomplicated-observability-for-python-app