एजेंट चरणों के लिए ट्रेस लॉगिंग
बाद की विश्लेषण प्रक्रिया के लिए प्रत्येक तर्क चरण, टूल कॉल और परिणाम को लॉग करना।
एजेंट चरणों के लिए ट्रेस लॉगिंग, CoddyKit पर AI एजेंट का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह AI एजेंट सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। AI एजेंट पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
एजेंटों के लिए ट्रेस लॉग लेखन आवश्यक क्यों है
मानक अनुप्रयोग लॉग त्रुटियों और घटनाओं को दर्ज करते हैं। एजेंट के ट्रेस लॉग उसके तर्क-विचार को दर्ज करते हैं: हर चरण में एजेंट ने क्या सोचा, उसने कौन-सा उपकरण चुना, कौन-से तर्कों का उपयोग किया और उपकरण ने क्या लौटाया?
ट्रेस लॉग लेखन के बिना, एजेंट की विफलता का समस्या-निवारण करना ऐसा है जैसे डैशबोर्ड के बिना कार की समस्या का निदान करना — आप केवल अनुमान लगा सकते हैं।
पाइथन के लॉगिंग मॉड्यूल की स्थापना
पाइथन का अंतर्निर्मित logging मॉड्यूल मानक उपकरण है। एजेंट की शुरुआत में इसे ऐसे प्रारूप के साथ कॉन्फ़िगर करें जिसमें समय-मुहर, स्तर और संदेश शामिल हों। ट्रेस डेटा के लिए DEBUG स्तर का उपयोग करें — उत्पादन में इसे बंद किया जा सकता है।
import logging
import sys
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s [%(levelname)s] %(name)s: %(message)s',
datefmt='%H:%M:%S',
stream=sys.stdout
)
logger = logging.getLogger('myagent')
# Usage:
logger.debug('Step 1: reasoning started')
logger.info('Agent task completed in 5 steps')
logger.warning('Tool returned empty result')
logger.error('Failed to parse tool arguments')
# Output:
# 14:32:01 [DEBUG] myagent: Step 1: reasoning started
# 14:32:03 [INFO] myagent: Agent task completed in 5 stepsहर तर्क-विचार चरण को लॉग करना
हर चरण की शुरुआत में मुख्य तथ्यों को लॉग करें: चरण संख्या, LLM द्वारा प्रस्तुत तर्क-विचार, चुना गया उपकरण और भेजे गए तर्क। इससे एजेंट की निर्णय प्रक्रिया का पूरा रिकॉर्ड बनता है।
import logging
import json
logger = logging.getLogger('myagent')
def log_step(step: int, thought: str, tool_name: str, tool_args: dict):
logger.debug(
f'Step {step}: '
f'reasoning="{thought[:100]}" '
f'tool={tool_name} '
f'args={json.dumps(tool_args, ensure_ascii=False)[:200]}'
)
# Example usage in the agent loop:
# log_step(
# step=1,
# thought='I need to find the current weather in Tokyo',
# tool_name='get_weather',
# tool_args={'city': 'Tokyo', 'unit': 'celsius'}
# )
if __name__ == '__main__':
import sys
logging.basicConfig(level=logging.DEBUG, format='%(message)s', stream=sys.stdout)
log_step(
step=1,
thought='I need to find the current weather in Tokyo',
tool_name='get_weather',
tool_args={'city': 'Tokyo', 'unit': 'celsius'}
)
उपकरण परिणामों को लॉग करना
हर उपकरण कॉल के बाद लॉग करें कि वह सफल हुई या नहीं और परिणाम का एक पूर्वावलोकन दर्ज करें। पूरा परिणाम लॉग करना अत्यधिक विस्तृत हो सकता है — पठनीयता के लिए उसे पहले 200 अक्षरों तक सीमित करें।
import logging
logger = logging.getLogger('myagent')
def log_tool_result(step: int, tool_name: str, result: str, success: bool):
status = 'OK' if success else 'ERROR'
preview = str(result)[:200].replace('\n', ' ')
logger.debug(
f'Step {step} result [{status}]: tool={tool_name} '
f'result_preview="{preview}"'
)
if not success:
logger.warning(f'Tool {tool_name} failed at step {step}')
# Log at the start of the step:
# log_step(step, thought, tool_name, tool_args)
# result = execute_tool(tool_name, tool_args)
# log_tool_result(step, tool_name, result, success=True)
if __name__ == '__main__':
import sys
logging.basicConfig(level=logging.DEBUG, format='%(message)s', stream=sys.stdout)
log_tool_result(1, 'get_weather', '{"temp_c": 18, "condition": "cloudy"}', success=True)
log_tool_result(2, 'get_weather', 'Connection timed out', success=False)
JSON प्रारूप के साथ संरचित लॉग लेखन
सादा पाठ वाले लॉग पढ़ने में आसान होते हैं, लेकिन उनमें खोज करना कठिन होता है। संरचित JSON लॉग को लॉग एकत्रीकरण प्रणालियों (डेटाडॉग, स्प्लंक, CloudWatch) में ग्रहण किया जा सकता है, जहाँ उनका उपयोग फ़िल्टर, डैशबोर्ड और चेतावनियों के लिए होता है।
import logging
import json
import sys
class JSONFormatter(logging.Formatter):
def format(self, record: logging.LogRecord) -> str:
log_obj = {
'timestamp': self.formatTime(record),
'level': record.levelname,
'logger': record.name,
'message': record.getMessage()
}
# Add any extra fields attached to the log record
if hasattr(record, 'step'):
log_obj['step'] = record.step
if hasattr(record, 'tool'):
log_obj['tool'] = record.tool
return json.dumps(log_obj)
handler = logging.StreamHandler(sys.stdout)
handler.setFormatter(JSONFormatter())
logger = logging.getLogger('agent_trace')
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
logger.setLevel(logging.DEBUG)
logger.debug('Step 3: tool=search_web', extra={'step': 3, 'tool': 'search_web'})
अतिरिक्त फ़ील्ड के साथ लॉग लेखन
JSON फ़ॉर्मेटर या लॉग एकत्रीकरण प्रणालियों द्वारा फ़िल्टर और विश्लेषण में उपयोग किए जा सकने वाले संरचित फ़ील्ड जोड़ने के लिए लॉग कॉल में extra={} दें।
import logging
logger = logging.getLogger('agent_trace')
def log_step_structured(step: int, tool: str, thought: str, args: dict):
logger.debug(
f'Step {step}: tool={tool}',
extra={
'step': step,
'tool': tool,
'thought': thought[:200],
'tool_args': args
}
)
# If using a JSON formatter, this produces:
# {
# 'timestamp': '14:32:01',
# 'level': 'DEBUG',
# 'message': 'Step 3: tool=search_web',
# 'step': 3,
# 'tool': 'search_web',
# 'thought': 'I need to find recent news about...',
# 'args': {'query': 'AI news 2025'}
# }
if __name__ == '__main__':
import sys
handler = logging.StreamHandler(sys.stdout)
handler.setFormatter(logging.Formatter('%(message)s | step=%(step)s tool=%(tool)s'))
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
log_step_structured(3, 'search_web', 'I need to find recent news about...', {'query': 'AI news 2025'})
किसी फ़ाइल में लॉग लिखना
उत्पादन एजेंटों के लिए बाद में विश्लेषण करने हेतु किसी फ़ाइल में लॉग लिखें। लॉग फ़ाइल का आकार सीमित रखने और डिस्क भरने से रोकने के लिए RotatingFileHandler का उपयोग करें।
import logging
from logging.handlers import RotatingFileHandler
import sys
logger = logging.getLogger('myagent')
logger.setLevel(logging.DEBUG)
# Console handler — INFO and above
console = logging.StreamHandler(sys.stdout)
console.setLevel(logging.INFO)
console.setFormatter(logging.Formatter('%(message)s'))
# File handler — DEBUG and above, rotates at 10MB
file_handler = RotatingFileHandler(
'agent_trace.log',
maxBytes=10 * 1024 * 1024, # 10 MB
backupCount=3
)
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(logging.Formatter(
'%(asctime)s [%(levelname)s] %(message)s'
))
logger.addHandler(console)
logger.addHandler(file_handler)
logger.info('Agent task completed in 5 steps')
logger.debug('Step 1: reasoning started')
बहु-उपयोगकर्ता एजेंटों के लिए सत्र ID लॉग करना
जब कई उपयोगकर्ता या कार्य एक साथ चलते हैं, तो उनके लॉग आपस में मिल सकते हैं। हर लॉग संदेश में सत्र ID या कार्य ID जोड़ें, ताकि किसी विशेष निष्पादन के लॉग को फ़िल्टर कर सकें।
import logging
import uuid
class SessionLogger:
def __init__(self, name: str):
self.logger = logging.getLogger(name)
self.session_id = str(uuid.uuid4())[:8]
def debug(self, msg: str, **kwargs):
self.logger.debug(f'[session={self.session_id}] {msg}', **kwargs)
def info(self, msg: str, **kwargs):
self.logger.info(f'[session={self.session_id}] {msg}', **kwargs)
def error(self, msg: str, **kwargs):
self.logger.error(f'[session={self.session_id}] {msg}', **kwargs)
# Each agent run gets its own logger with a unique session ID
# log = SessionLogger('myagent')
# log.info(f'Starting task: {query}') # [session=a3f1b290] Starting task: ...
if __name__ == '__main__':
import sys
logging.basicConfig(level=logging.INFO, format='%(message)s', stream=sys.stdout)
log = SessionLogger('myagent')
log.info(f'Starting task: summarize the quarterly report')
हर चरण का समय मापना
रुकावटों का पता लगाने के लिए हर चरण के लॉग में समय संबंधी जानकारी जोड़ें। कौन-सा उपकरण सबसे धीमा है? LLM को तर्क-विचार करने में कितना समय लगता है? यह डेटा अनुकूलन का मार्गदर्शन करता है।
import time
import logging
logger = logging.getLogger('myagent')
def timed_tool_call(tool_name: str, tool_fn, args: dict) -> str:
start = time.perf_counter()
try:
result = tool_fn(**args)
elapsed = time.perf_counter() - start
logger.debug(f'Tool {tool_name} completed in {elapsed:.2f}s')
return result
except Exception as e:
elapsed = time.perf_counter() - start
logger.error(f'Tool {tool_name} failed in {elapsed:.2f}s: {e}')
raise
# In the agent loop:
# result = timed_tool_call('search_web', search_web, {'query': 'Python'})
# Logs: Tool search_web completed in 1.34s
if __name__ == '__main__':
import sys
logging.basicConfig(level=logging.DEBUG, format='%(message)s', stream=sys.stdout)
def search_web(query):
return f'3 results for {query}'
result = timed_tool_call('search_web', search_web, {'query': 'Python'})
print('Tool result:', result)
चरण ट्रेस का संपूर्ण प्रारूप
यहाँ एजेंट के किसी चरण के लिए ट्रेस लॉग लेखन का पूरा, वास्तविक उपयोग के लिए तैयार प्रारूप दिया गया है। हर चरण में उसकी संख्या, तर्क-विचार, उपकरण का चुनाव, तर्क, परिणाम का पूर्वावलोकन और समय दर्ज किया जाता है — इससे एजेंट के निष्पादन पर पूरी निगरानी मिलती है।
import time
import logging
import json
logger = logging.getLogger('myagent')
def trace_step(step_num: int, thought: str, tool: str, args: dict, execute_fn):
# Log decision
logger.debug(
f'Step {step_num}: thought="{thought[:80]}" tool={tool} '
f'args={json.dumps(args)[:100]}'
)
# Execute with timing
t0 = time.perf_counter()
try:
result = execute_fn(tool, args)
elapsed = time.perf_counter() - t0
preview = str(result)[:100].replace('\n', ' ')
logger.debug(f'Step {step_num} done in {elapsed:.2f}s: "{preview}"')
return result
except Exception as e:
elapsed = time.perf_counter() - t0
logger.error(f'Step {step_num} failed in {elapsed:.2f}s: {e}')
return f'ERROR: {e}'
if __name__ == '__main__':
import sys
logging.basicConfig(level=logging.DEBUG, format='%(message)s', stream=sys.stdout)
def execute_fn(tool, args):
return f'42 (from {tool})'
trace_step(1, 'I should compute the answer', 'calculator', {'expr': '6*7'}, execute_fn)
उत्पादन में लॉग बंद करना
डिबग ट्रेस लॉग में संवेदनशील डेटा (प्रश्न और API प्रतिक्रियाएँ) हो सकता है और वे बहुत विस्तृत हो सकते हैं। उत्पादन में डिबग ट्रेस दबाने के लिए लॉग स्तर को INFO या WARNING पर सेट करें। स्तर नियंत्रित करने के लिए पर्यावरण चर का उपयोग करें।
import os
import logging
import sys
# Read log level from environment variable
log_level_str = os.environ.get('LOG_LEVEL', 'INFO').upper()
log_level = getattr(logging, log_level_str, logging.INFO)
logging.basicConfig(level=log_level, stream=sys.stdout)
logger = logging.getLogger('myagent')
# Development: LOG_LEVEL=DEBUG python agent.py -> full traces
# Production: LOG_LEVEL=WARNING python agent.py -> only warnings/errors
# Default: LOG_LEVEL not set -> INFO level
logger.debug('This only appears in DEBUG mode')
logger.info('This appears in INFO and DEBUG modes')
logger.warning('This always appears')ज्ञान-जाँच: ट्रेस लॉग लेखन
एजेंट के चरणों के लिए ट्रेस लॉग लेखन की अपनी समझ जाँचें।
पुनरावलोकन: एजेंट के चरणों के लिए ट्रेस लॉग लेखन
अब आपके पास एजेंटों के लिए ट्रेस लॉग लेखन की पूरी रणनीति है:
- ट्रेस-स्तर के लॉग सक्षम करने के लिए
logging.basicConfig(level=DEBUG)का उपयोग करें - हर चरण में चरण संख्या, तर्क-विचार, उपकरण नाम और तर्क लॉग करें
- पूर्वावलोकन और सफलता या विफलता की स्थिति के साथ उपकरण परिणाम लॉग करें
- संरचित और खोज योग्य लॉग के लिए JSON प्रारूप का उपयोग करें
- बहु-उपयोगकर्ता या समवर्ती एजेंटों के लिए सत्र ID जोड़ें
- धीमे चरणों का पता लगाने के लिए समय संबंधी जानकारी जोड़ें
LOG_LEVELपर्यावरण चर से लॉग की विस्तृतता नियंत्रित करें
एआई शिक्षक के साथ AI एजेंट सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 60
- पाठ
- 239
अक्सर पूछे जाने वाले प्रश्न
क्या “एजेंट चरणों के लिए ट्रेस लॉगिंग” पाठ निःशुल्क है?
हाँ—“एजेंट चरणों के लिए ट्रेस लॉगिंग” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और AI एजेंट पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। AI एजेंट पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“एजेंट चरणों के लिए ट्रेस लॉगिंग” में मैं क्या सीखूँगा?
बाद की विश्लेषण प्रक्रिया के लिए प्रत्येक तर्क चरण, टूल कॉल और परिणाम को लॉग करना। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ AI एजेंट का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या AI एजेंट शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर AI एजेंट शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“एजेंट चरणों के लिए ट्रेस लॉगिंग” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस AI एजेंट पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर AI एजेंट पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- एजेंट लूप की सामान्य विफलताएँ
- एजेंट चरणों के लिए ट्रेस लॉगिंग
- अनंत लूप पहचानना और तोड़ना
- चरण-दर-चरण त्रुटि-निवारण तकनीकें