במאמר הקודם שפרסמתי על 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 מציעה אינטגרציות עם מסגרות וספריות פייתון פופולריות. לדוגמה, עבור הקוד בפייתון שלמטה, עליך לספק את מפתח ה־API של OpenAI ולהתקין את החבילות הנדרשות (FASTAPI, instructor, OpenAI, וכו').
למתחילים, FastAPI הוא מסגרת אינטרנטית בפייתון שעוזרת למפתחים ליצור ממשקי תכנות ליישומים (APIs). 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