En mi artículo anterior sobre Pydantic, te presenté a Logfire en uno de los ejemplos de código como una plataforma de observabilidad diseñada para proporcionar a los desarrolladores información sobre las aplicaciones en Python. En este artículo, profundizarás en Logfire y sus capacidades que eventualmente simplificarán tu viaje de Observabilidad desde el rastreo hasta la depuración y el registro.
Logfire es una plataforma innovadora de observabilidad desarrollada por los creadores de Pydantic, diseñada para proporcionar a los desarrolladores poderosas ideas sobre sus aplicaciones en Python. Construido sobre los mismos principios que hicieron de Pydantic un éxito, Logfire tiene como objetivo facilitar la implementación y comprensión de la observabilidad, ofreciendo profundos conocimientos sobre el comportamiento de la aplicación.
Características clave
Integración sin fisuras
Logfire se integra sin esfuerzo con proyectos de Python existentes, requiriendo una configuración mínima. Con solo unas pocas líneas de código, los desarrolladores pueden comenzar a recopilar datos valiosos sobre el rendimiento y el comportamiento de su aplicación.
Integración con Pydantic
Logfire ofrece una integración excepcional con los modelos de Pydantic. Esto permite a los desarrolladores obtener ideas sin precedentes sobre la validación de datos y el uso de modelos en todas sus aplicaciones.
Instrumentación automática
Logfire puede instrumentar automáticamente bibliotecas y frameworks populares, reduciendo la necesidad de registros y rastreos manuales. Esta característica ahorra tiempo y garantiza una cobertura exhaustiva del comportamiento de la aplicación.
Compatible con OpenTelemetry
Construido sobre OpenTelemetry, Logfire asegura la compatibilidad con los estándares de la industria y permite opciones flexibles de exportación de datos.
Prerrequisitos
- Inicia sesión en Logfire.
- Sigue las indicaciones para crear tu cuenta. Esta cuenta te ayudará a organizar tus proyectos.
- Desde tu organización, haz clic en Nuevo proyecto para crear tu primer proyecto.
Empezar
Para empezar a usar Logfire, sigue estos sencillos pasos:
Paso 1. Instala el paquete de Logfire con el siguiente comando. Si estás utilizando Jupyter Notebook, ejecuta !pip install logfire
.
pip install logfire
Paso 2. Autentícate con el servicio de Logfire. Esto abrirá un navegador y pedirá las credenciales de inicio de sesión de Logfire.
logfire auth
3. Configura Logfire en tu aplicación. Una vez instalado el paquete, necesitas utilizar los siguientes comandos para configurar Logfire.
import logfire
logfire.configure()
Puedes seguir los pasos como parte de la configuración de tu proyecto:
Uso Básico
Un Span en Logfire es un bloque de construcción esencial de una traza. Puedes definir un span con logfire.span. En el ejemplo a continuación, el span exterior establece el tema: el cumpleaños del usuario. Al usuario se le pedirá su cumpleaños y se capturará a través de la terminal o el símbolo del sistema. El espacio captura la fecha de nacimiento ingresada por el usuario.
Aquí hay un ejemplo simple de cómo usar Logfire para rastreo 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)
Si no ves la salida DEBUG, haz clic en Filtrar datos locales –> Niveles –> debug.
Integración de Pydantic
Como se discutió en mi artículo anterior, la funcionalidad principal de Pydantic es la validación de datos. Utiliza anotaciones de tipo de Python para validar automáticamente la estructura y los tipos de datos. Cuando defines un modelo de Pydantic, cada campo se anota con su tipo esperado. Pydantic luego asegura que cualquier dato asignado a estos campos se ajuste a los tipos especificados.
La integración de Logfire con Pydantic es particularmente poderosa. Aquí te mostramos cómo puedes usarla para registrar las validaciones de los modelos de 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')
Esta configuración registrará automáticamente detalles sobre todas las validaciones de modelos de Pydantic, proporcionando información valiosa sobre el procesamiento de datos dentro de tu aplicación.
Integraciones de Frameworks
Logfire ofrece integraciones con populares frameworks y bibliotecas de Python. Para el ejemplo de código en Python a continuación, necesitas proporcionar la clave de API de OpenAI e instalar los paquetes requeridos (FASTAPI, instructor, OpenAI, etc.).
Para empezar, FastAPI es un framework web de Python que ayuda a los desarrolladores a crear interfaces de programación de aplicaciones (APIs). FastAPI es conocido por su escalabilidad, facilidad de uso y alto rendimiento.
Instructor es un paquete de Python que te ayuda a extraer fácilmente datos estructurados como JSON a partir de la salida de LLMs.
Aquí tienes un ejemplo de cómo integrar Logfire con FastAPI, la API de OpenAI 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
Esta configuración ofrece un registro exhaustivo de las solicitudes de FastAPI, llamadas a la API de OpenAI y validaciones de modelos de Pydantic, brindando una visión holística del comportamiento de tu aplicación.
Conclusión
Logfire representa un avance significativo para hacer que la observabilidad sea accesible y potente para los desarrolladores de Python. Logfire permite a los desarrolladores comprender y optimizar mejor sus aplicaciones al combinar facilidad de uso con información detallada. Ya sea que estés trabajando en un proyecto pequeño o una aplicación a gran escala, Logfire proporciona las herramientas para obtener información valiosa sobre el comportamiento y rendimiento de tu código.
¡Por favor demuestra tu apoyo con un me gusta y comparte con tu comunidad de desarrolladores!
Source:
https://dzone.com/articles/logfire-uncomplicated-observability-for-python-app