في مقالتي السابقة حول Pydantic، قدمت لك Logfire في أحد أمثلة الشفرة كمنصة للملاحظة تهدف إلى توفير رؤى قوية للمطورين حول تطبيقات Python. في هذه المقالة، ستحصل على فهم عميق حول Logfire وقدراته التي ستبسط رحلتك في الملاحظة من تتبع الأخطاء إلى تصحيحها والتسجيل.
Logfire هي منصة مبتكرة للملاحظة تم تطويرها بواسطة مبتكري Pydantic، تهدف إلى توفير رؤى قوية للمطورين حول تطبيقاتهم باستخدام Python. مبنية على نفس المبادئ التي جعلت Pydantic ناجحة، تهدف Logfire إلى تبسيط مهمة الملاحظة وتوفير رؤى عميقة في سلوك التطبيق.
الميزات الرئيسية
التكامل السلس
Logfire يتكامل بسهولة مع مشاريع Python الحالية، متطلباً إعدادًا أدنى. باستخدام بضعة أسطر من الشفرة، يمكن للمطورين بدء جمع البيانات القيمة حول أداء تطبيقهم وسلوكه.
تكامل Pydantic
Logfire يوفر تكامل استثنائي مع نماذج Pydantic. يتيح هذا للمطورين الحصول على رؤى غير مسبوقة حول التحقق من البيانات واستخدام النموذج في تطبيقاتهم.
الأداة التلقائية
يمكن لـ Logfire تخصيص مكتبات وإطارات العمل الشهيرة تلقائيًا، مما يقلل من الحاجة إلى تسجيل وتتبع يدوي. توفر هذه الميزة الوقت وتضمن تغطية شاملة لسلوك التطبيق.
متوافق مع OpenTelemetry
مبني على OpenTelemetry، يضمن Logfire التوافق مع معايير الصناعة ويسمح بخيارات تصدير البيانات المرنة.
المتطلبات الأساسية
- قم بتسجيل الدخول إلى Logfire.
- اتبع التعليمات لإنشاء حسابك. سيساعدك هذا الحساب في تنظيم مشاريعك.
- من مؤسستك، انقر على مشروع جديد لإنشاء مشروعك الأول.
البدء
للشروع في استخدام Logfire، اتبع هذه الخطوات البسيطة:
الخطوة 1. قم بتثبيت حزمة Logfire باستخدام الأمر أدناه. إذا كنت تستخدم Jupyter Notebook، قم بتشغيل !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 أدناه، يجب عليك توفير مفتاح واجهة برمجة التطبيقات لـ OpenAI وتثبيت الحزم المطلوبة (FASTAPI، instructor، OpenAI، إلخ).
بالنسبة للمبتدئين، FastAPI هو إطار عمل ويب Python يساعد المطورين على إنشاء واجهات برمجة تطبيقات (APIs). يُعرف FastAPI بقابليته للتوسع، وسهولة الاستخدام، والأداء العالي.
المدرب هو حزمة Python تساعدك على استخراج البيانات المهيكلة مثل JSON من إخراج LLMs بسهولة.
إليك مثال على كيفية دمج Logfire مع FastAPI، واجهة برمجة تطبيقات OpenAI، والمدرب:
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، وتحققات نموذج Pydantic، مما يقدم رؤية شاملة لسلوك تطبيقك.
الاستنتاج
يمثل Logfire خطوة هامة نحو جعل القابلية للمراقبة متاحة وقوية لمطوري Python. يتيح Logfire للمطورين فهم تطبيقاتهم بشكل أفضل وتحسينها عن طريق الجمع بين سهولة الاستخدام والرؤى العميقة. سواء كنت تعمل على مشروع صغير أو تطبيق بمقياس كبير، يوفر Logfire الأدوات للحصول على رؤى قيمة حول سلوك وأداء كودك.
يرجى مشاركة حبك بـ إعجاب ومشاركته مع مجتمع المطورين الخاص بك.
Source:
https://dzone.com/articles/logfire-uncomplicated-observability-for-python-app