my_trace.py 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. from datetime import datetime
  2. import logging
  3. def get_current_time():
  4. import uuid
  5. random_uuid = str(uuid.uuid4())
  6. return datetime.now().strftime("%Y%m%d/%H%M%S") + "_" + random_uuid[:2]
  7. def set_trace_logfire():
  8. from agents.tracing.setup import GLOBAL_TRACE_PROVIDER
  9. GLOBAL_TRACE_PROVIDER.shutdown()
  10. import logfire
  11. current_time = get_current_time()
  12. logfire.configure(service_name=f'{current_time}')
  13. logfire.instrument_openai_agents()
  14. import urllib.parse
  15. current_time_encoded = urllib.parse.quote(current_time)
  16. import logging
  17. LOG_LEVEL = "WARNING"
  18. # 设置日志
  19. logging.basicConfig(
  20. level=getattr(logging, LOG_LEVEL),
  21. format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
  22. )
  23. logger = logging.getLogger(__name__)
  24. log_url = f'https://logfire-us.pydantic.dev/semsevens/test?q=service_name+%3D+%27{current_time_encoded}%27&last=30d'
  25. logger.warning(f"任务日志链接: {log_url}")
  26. return current_time, log_url
  27. def set_trace():
  28. # 设置全局logging级别,覆盖所有子模块
  29. logging.basicConfig(level=logging.WARNING, force=True)
  30. # 确保根logger级别生效
  31. logging.getLogger().setLevel(logging.WARNING)
  32. # 临时绕过 logfire
  33. try:
  34. return set_trace_logfire()
  35. except Exception as e:
  36. current_time = get_current_time()
  37. logger = logging.getLogger(__name__)
  38. logger.warning(f"Logfire 不可用 ({e}),使用简单模式(时间戳: {current_time})")
  39. return current_time, ""
  40. def set_trace_smith():
  41. from agents.tracing import GLOBAL_TRACE_PROVIDER
  42. GLOBAL_TRACE_PROVIDER.shutdown()
  43. from agents import set_trace_processors
  44. from langsmith.wrappers import OpenAIAgentsTracingProcessor
  45. import logging
  46. current_time = get_current_time()
  47. set_trace_processors([OpenAIAgentsTracingProcessor(name=f'{current_time}')])
  48. import urllib.parse
  49. LOG_LEVEL = "WARNING"
  50. # 设置日志
  51. logging.basicConfig(
  52. level=getattr(logging, LOG_LEVEL),
  53. format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
  54. )
  55. logger = logging.getLogger(__name__)
  56. current_time_encoded = urllib.parse.quote(current_time)
  57. log_url = f'https://smith.langchain.com/o/3ebe0715-9709-4594-a0aa-40a77a4e10bd/projects/p/611fa0d6-5510-4f60-b693-87e2ccc2ea5f?timeModel=%7B%22duration%22%3A%227d%22%7D&searchModel=%7B%22filter%22%3A%22and%28eq%28is_root%2C+true%29%2C+eq%28name%2C+%5C%22{current_time_encoded}%5C%22%29%29%22%2C%22searchFilter%22%3A%22eq%28is_root%2C+true%29%22%7D'
  58. LOG_LEVEL = "WARNING"
  59. logger.warning(f"任务日志链接: {log_url}")
  60. def set_debug():
  61. import logging
  62. # 设置全局日志级别为DEBUG,确保所有模块生效
  63. logging.basicConfig(
  64. level=logging.DEBUG,
  65. format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
  66. )
  67. # 确保根日志记录器也设置为DEBUG级别
  68. logging.getLogger().setLevel(logging.DEBUG)
  69. def set_info():
  70. import logging
  71. # 设置全局日志级别为INFO,确保所有模块生效
  72. logging.basicConfig(
  73. level=logging.INFO,
  74. format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
  75. )
  76. # 确保根日志记录器也设置为INFO级别
  77. logging.getLogger().setLevel(logging.INFO)