В моей предыдущей статье о Pydantic я познакомил вас с Logfire в одном из примеров кода как с платформой наблюдаемости, предназначенной для предоставления разработчикам информации о Python-приложениях. В этой статье вы глубже погрузитесь в Logfire и его возможности, которые в конечном итоге упростят ваше путешествие по наблюдаемости от трассировки до отладки и логирования.
Logfire — это инновационная платформа наблюдаемости, разработанная создателями Pydantic, предназначенная для предоставления разработчикам мощных сведений о их Python-приложениях. Построенная на тех же принципах, которые сделали Pydantic успешным, Logfire стремится сделать наблюдаемость легкой для реализации и понимания, при этом предлагая глубокие сведения о поведении приложений.
Ключевые особенности
Бесшовная интеграция
Logfire интегрируется с существующими проектами на Python без усилий, требуя минимальной настройки. С помощью всего лишь нескольких строк кода разработчики могут начать собирать ценные данные о производительности и поведении своего приложения.
Интеграция с Pydantic
Logfire предлагает исключительную интеграцию с моделями Pydantic. Это позволяет разработчикам получать беспрецедентные сведения о валидации данных и использовании моделей на протяжении всего их приложения.
Автоматическая инструментализация
Logfire может автоматически инструментировать популярные библиотеки и фреймворки, уменьшая необходимость в ручном логировании и трассировке. Эта функция экономит время и обеспечивает полное покрытие поведения приложения.
Совместимость с OpenTelemetry
Построенный на базе OpenTelemetry, Logfire обеспечивает совместимость со стандартами отрасли и позволяет выбирать гибкие параметры экспорта данных.
Предварительные требования
- Войдите в систему под учетной записью Logfire.
- Следуйте инструкциям для создания своей учетной записи. Эта учетная запись поможет вам организовать ваши проекты.
- Из вашей организации перейдите к новому проекту, чтобы создать свой первый проект.
Начало работы
Чтобы начать использовать Logfire, следуйте этим простым шагам:
Шаг 1. Установите пакет Logfire с помощью указанной ниже команды. Если вы используете блокнот Jupyter, выполните команду !pip install logfire
.
pip install logfire
Шаг 2. Аутентифицируйтесь в службе Logfire. Это откроет браузер и запросит учетные данные для входа в logfire.
logfire auth
3. Настройте Logfire в своем приложении. После установки пакета вам необходимо использовать указанные ниже команды для настройки logfire.
import logfire
logfire.configure()
Вы можете следовать этим шагам в рамках настройки вашего проекта:
Основное использование
Span в Logfire является важным строительным блоком трассировки. Вы можете определить span с помощью logfire.span. В приведенном ниже примере внешний span устанавливает тему — день рождения пользователя. Пользователя попросят указать свой день рождения и зафиксировать его через терминал или командную строку. Пространство захватывает введенную дату рождения пользователя.
Вот простой пример того, как использовать Logfire для ручного трассирования:
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)
Если вы не видите вывод DEBUG, нажмите на Фильтр локальных данных –> Уровни –> debug.
Интеграция с Pydantic
Как обсуждалось в моей предыдущей статье, основная функция Pydantic заключается в валидации данных. Он использует подсказки типов Python для автоматической проверки структуры и типов данных. Когда вы определяете модель Pydantic, каждое поле аннотируется ожидаемым типом. Затем Pydantic гарантирует, что любые данные, присвоенные этим полям, соответствуют указанным типам.
Интеграция Logfire с Pydantic особенно мощная. Вот как вы можете использовать ее для логирования валидаций моделей 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')
Эта конфигурация автоматически будет логировать детали о всех валидациях моделей Pydantic, предоставляя ценную информацию о обработке данных в вашем приложении.
Интеграции с фреймворками
Logfire предлагает интеграции с популярными фреймворками и библиотеками Python. Для примера кода на Python ниже вам нужно предоставить ключ API OpenAI и установить необходимые пакеты (FASTAPI, instructor, OpenAI и т. д.).
Для начала, FastAPI — это веб-фреймворк Python, который помогает разработчикам создавать интерфейсы программирования приложений (API). FastAPI известен своей масштабируемостью, простотой использования и высокой производительностью.
Instructor — это пакет Python, который помогает легко извлекать структурированные данные, такие как JSON, из вывода LLMs.
Вот пример того, как интегрировать Logfire с FastAPI, OpenAI API и 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
Эта настройка обеспечивает всестороннее логирование запросов FastAPI, вызовов OpenAI API и валидаций моделей Pydantic, предлагая целостный взгляд на поведение вашего приложения.
Заключение
Logfire представляет собой значительный шаг вперед в обеспечении доступности и мощи наблюдаемости для разработчиков на Python. Logfire позволяет разработчикам лучше понимать и оптимизировать свои приложения, сочетая простоту использования с глубокими аналитическими данными. Если вы работаете над небольшим проектом или крупным приложением, Logfire предоставляет инструменты для получения ценной информации о поведении и производительности вашего кода.
Пожалуйста, проявите свою любовь, поставив лайк, и поделитесь с вашим сообществом разработчиков.
Source:
https://dzone.com/articles/logfire-uncomplicated-observability-for-python-app