my_trace.py 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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. # 禁用 openai.agents 的 WARNING 日志,避免大量 "OPENAI_API_KEY is not set" 警告
  33. logging.getLogger('openai.agents').setLevel(logging.ERROR)
  34. # 临时绕过 logfire
  35. try:
  36. return set_trace_logfire()
  37. except Exception as e:
  38. current_time = get_current_time()
  39. logger = logging.getLogger(__name__)
  40. logger.warning(f"Logfire 不可用 ({e}),使用简单模式(时间戳: {current_time})")
  41. return current_time, ""
  42. def set_trace_smith():
  43. from agents.tracing import GLOBAL_TRACE_PROVIDER
  44. GLOBAL_TRACE_PROVIDER.shutdown()
  45. from agents import set_trace_processors
  46. from langsmith.wrappers import OpenAIAgentsTracingProcessor
  47. import logging
  48. current_time = get_current_time()
  49. set_trace_processors([OpenAIAgentsTracingProcessor(name=f'{current_time}')])
  50. import urllib.parse
  51. LOG_LEVEL = "WARNING"
  52. # 设置日志
  53. logging.basicConfig(
  54. level=getattr(logging, LOG_LEVEL),
  55. format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
  56. )
  57. logger = logging.getLogger(__name__)
  58. current_time_encoded = urllib.parse.quote(current_time)
  59. 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'
  60. LOG_LEVEL = "WARNING"
  61. logger.warning(f"任务日志链接: {log_url}")
  62. def set_debug():
  63. import logging
  64. # 设置全局日志级别为DEBUG,确保所有模块生效
  65. logging.basicConfig(
  66. level=logging.DEBUG,
  67. format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
  68. )
  69. # 确保根日志记录器也设置为DEBUG级别
  70. logging.getLogger().setLevel(logging.DEBUG)
  71. def set_info():
  72. import logging
  73. # 设置全局日志级别为INFO,确保所有模块生效
  74. logging.basicConfig(
  75. level=logging.INFO,
  76. format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
  77. )
  78. # 确保根日志记录器也设置为INFO级别
  79. logging.getLogger().setLevel(logging.INFO)