langtrace-python-sdk 2.2.28__tar.gz → 2.2.31__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/PKG-INFO +2 -1
  2. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/pyproject.toml +27 -33
  3. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/crewai_example/simple_agent/agents.py +1 -1
  4. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/crewai_example/simple_agent/main.py +3 -13
  5. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/crewai_example/simple_agent/tasks.py +1 -0
  6. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/crewai_example/trip_planner/main.py +1 -30
  7. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/extensions/langtrace_exporter.py +1 -1
  8. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/crewai/instrumentation.py +1 -1
  9. langtrace_python_sdk-2.2.31/src/langtrace_python_sdk/instrumentation/crewai/patch.py +234 -0
  10. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/langchain_community/patch.py +11 -0
  11. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/langchain_core/patch.py +16 -0
  12. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/openai/patch.py +1 -1
  13. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/langtrace.py +1 -0
  14. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/types/__init__.py +30 -1
  15. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/utils/__init__.py +1 -1
  16. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/utils/llm.py +1 -1
  17. langtrace_python_sdk-2.2.31/src/langtrace_python_sdk/version.py +1 -0
  18. langtrace_python_sdk-2.2.28/src/langtrace_python_sdk/instrumentation/crewai/patch.py +0 -176
  19. langtrace_python_sdk-2.2.28/src/langtrace_python_sdk/version.py +0 -1
  20. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/.gitignore +0 -0
  21. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/LICENSE +0 -0
  22. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/README.md +0 -0
  23. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/__init__.py +0 -0
  24. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/__init__.py +0 -0
  25. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/anthropic_example/__init__.py +0 -0
  26. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/anthropic_example/completion.py +0 -0
  27. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/chroma_example/__init__.py +0 -0
  28. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/chroma_example/basic.py +0 -0
  29. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/cohere_example/__init__.py +0 -0
  30. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/cohere_example/chat.py +0 -0
  31. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/cohere_example/chat_stream.py +0 -0
  32. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/cohere_example/embed.py +0 -0
  33. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/cohere_example/rerank.py +0 -0
  34. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/cohere_example/tools.py +0 -0
  35. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/crewai_example/__init__.py +0 -0
  36. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/crewai_example/basic.py +0 -0
  37. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/crewai_example/simple_agent/__init__.py +0 -0
  38. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/crewai_example/trip_planner/__init__.py +0 -0
  39. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/crewai_example/trip_planner/agents.py +0 -0
  40. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/crewai_example/trip_planner/tasks.py +0 -0
  41. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/crewai_example/trip_planner/tools/calculator.py +0 -0
  42. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/crewai_example/trip_planner/tools/search_tools.py +0 -0
  43. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/dspy_example/math_problems_cot.py +0 -0
  44. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/dspy_example/math_problems_cot_parallel.py +0 -0
  45. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/dspy_example/program_of_thought_basic.py +0 -0
  46. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/dspy_example/quiz_gen.py +0 -0
  47. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/dspy_example/react.py +0 -0
  48. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/fastapi_example/__init__.py +0 -0
  49. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/fastapi_example/basic_route.py +0 -0
  50. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/gemini_example/__init__.py +0 -0
  51. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/gemini_example/function_tools.py +0 -0
  52. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/gemini_example/main.py +0 -0
  53. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/hiveagent_example/basic.py +0 -0
  54. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/inspect_ai_example/basic_eval.py +0 -0
  55. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/langchain_example/__init__.py +0 -0
  56. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/langchain_example/basic.py +0 -0
  57. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/langchain_example/groq_example.py +0 -0
  58. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/langchain_example/langgraph_example.py +0 -0
  59. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/langchain_example/sagemaker.py +0 -0
  60. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/langchain_example/tool.py +0 -0
  61. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/litellm_example/basic.py +0 -0
  62. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/llamaindex_example/__init__.py +0 -0
  63. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/llamaindex_example/agent.py +0 -0
  64. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/llamaindex_example/basic.py +0 -0
  65. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/llamaindex_example/data/abramov.txt +0 -0
  66. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/mistral_example/__init__.py +0 -0
  67. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/mistral_example/complete.py +0 -0
  68. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/mistral_example/complete_async.py +0 -0
  69. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/mistral_example/embeddings.py +0 -0
  70. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/ollama_example/__init__.py +0 -0
  71. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/ollama_example/basic.py +0 -0
  72. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/openai_example/__init__.py +0 -0
  73. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/openai_example/async_tool_calling_nonstreaming.py +0 -0
  74. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/openai_example/async_tool_calling_streaming.py +0 -0
  75. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/openai_example/chat_completion.py +0 -0
  76. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/openai_example/chat_completion_tool_choice.py +0 -0
  77. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/openai_example/embeddings_create.py +0 -0
  78. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/openai_example/function_calling.py +0 -0
  79. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/openai_example/images_edit.py +0 -0
  80. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/openai_example/images_generate.py +0 -0
  81. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/openai_example/resources/lounge_flamingo.png +0 -0
  82. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/openai_example/resources/mask.png +0 -0
  83. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/openai_example/send_user_feedback.py +0 -0
  84. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/openai_example/tool_calling.py +0 -0
  85. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/openai_example/tool_calling_nonstreaming.py +0 -0
  86. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/openai_example/tool_calling_streaming.py +0 -0
  87. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/otlp_example/otlp_basic.py +0 -0
  88. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/otlp_example/otlp_with_langtrace.py +0 -0
  89. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/perplexity_example/basic.py +0 -0
  90. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/pinecone_example/__init__.py +0 -0
  91. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/pinecone_example/basic.py +0 -0
  92. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/qdrant_example/__init__.py +0 -0
  93. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/qdrant_example/basic.py +0 -0
  94. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/routellm_example/basic.py +0 -0
  95. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/vertexai_example/__init__.py +0 -0
  96. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/vertexai_example/main.py +0 -0
  97. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/weaviate_example/__init__.py +0 -0
  98. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/examples/weaviate_example/query_text.py +0 -0
  99. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/__init__.py +0 -0
  100. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/constants/__init__.py +0 -0
  101. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/constants/exporter/langtrace_exporter.py +0 -0
  102. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/constants/instrumentation/__init__.py +0 -0
  103. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/constants/instrumentation/anthropic.py +0 -0
  104. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/constants/instrumentation/chroma.py +0 -0
  105. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/constants/instrumentation/cohere.py +0 -0
  106. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/constants/instrumentation/common.py +0 -0
  107. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/constants/instrumentation/gemini.py +0 -0
  108. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/constants/instrumentation/groq.py +0 -0
  109. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/constants/instrumentation/mistral.py +0 -0
  110. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/constants/instrumentation/ollama.py +0 -0
  111. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/constants/instrumentation/openai.py +0 -0
  112. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/constants/instrumentation/pinecone.py +0 -0
  113. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/constants/instrumentation/qdrant.py +0 -0
  114. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/constants/instrumentation/vertexai.py +0 -0
  115. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/constants/instrumentation/weaviate.py +0 -0
  116. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/extensions/__init__.py +0 -0
  117. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/extensions/langtrace_filesystem.py +0 -0
  118. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/__init__.py +0 -0
  119. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/anthropic/__init__.py +0 -0
  120. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/anthropic/instrumentation.py +0 -0
  121. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/anthropic/patch.py +0 -0
  122. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/chroma/__init__.py +0 -0
  123. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/chroma/instrumentation.py +0 -0
  124. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/chroma/patch.py +0 -0
  125. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/cohere/__init__.py +0 -0
  126. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/cohere/instrumentation.py +0 -0
  127. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/cohere/patch.py +0 -0
  128. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/crewai/__init__.py +0 -0
  129. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/dspy/__init__.py +0 -0
  130. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/dspy/instrumentation.py +0 -0
  131. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/dspy/patch.py +0 -0
  132. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/gemini/__init__.py +0 -0
  133. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/gemini/instrumentation.py +0 -0
  134. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/gemini/patch.py +0 -0
  135. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/groq/__init__.py +0 -0
  136. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/groq/instrumentation.py +0 -0
  137. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/groq/patch.py +0 -0
  138. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/langchain/__init__.py +0 -0
  139. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/langchain/instrumentation.py +0 -0
  140. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/langchain/patch.py +0 -0
  141. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/langchain_community/__init__.py +0 -0
  142. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/langchain_community/instrumentation.py +0 -0
  143. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/langchain_core/__init__.py +0 -0
  144. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/langchain_core/instrumentation.py +0 -0
  145. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/langgraph/__init__.py +0 -0
  146. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/langgraph/instrumentation.py +0 -0
  147. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/langgraph/patch.py +0 -0
  148. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/llamaindex/__init__.py +0 -0
  149. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/llamaindex/instrumentation.py +0 -0
  150. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/llamaindex/patch.py +0 -0
  151. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/mistral/__init__.py +0 -0
  152. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/mistral/instrumentation.py +0 -0
  153. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/mistral/patch.py +0 -0
  154. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/ollama/__init__.py +0 -0
  155. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/ollama/instrumentation.py +0 -0
  156. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/ollama/patch.py +0 -0
  157. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/openai/__init__.py +0 -0
  158. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/openai/instrumentation.py +0 -0
  159. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/pinecone/__init__.py +0 -0
  160. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/pinecone/instrumentation.py +0 -0
  161. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/pinecone/patch.py +0 -0
  162. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/qdrant/__init__.py +0 -0
  163. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/qdrant/instrumentation.py +0 -0
  164. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/qdrant/patch.py +0 -0
  165. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/vertexai/__init__.py +0 -0
  166. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/vertexai/instrumentation.py +0 -0
  167. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/vertexai/patch.py +0 -0
  168. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/weaviate/__init__.py +0 -0
  169. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/weaviate/instrumentation.py +0 -0
  170. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/instrumentation/weaviate/patch.py +0 -0
  171. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/utils/langtrace_sampler.py +0 -0
  172. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/utils/misc.py +0 -0
  173. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/utils/prompt_registry.py +0 -0
  174. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/utils/sdk_version_checker.py +0 -0
  175. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/utils/silently_fail.py +0 -0
  176. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/utils/types.py +0 -0
  177. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/langtrace_python_sdk/utils/with_root_span.py +0 -0
  178. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/run_example.py +0 -0
  179. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/__init__.py +0 -0
  180. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/anthropic/cassettes/test_anthropic.yaml +0 -0
  181. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/anthropic/cassettes/test_anthropic_streaming.yaml +0 -0
  182. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/anthropic/cassettes/test_async_anthropic_streaming.yaml +0 -0
  183. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/anthropic/conftest.py +0 -0
  184. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/anthropic/test_anthropic.py +0 -0
  185. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/chroma/conftest.py +0 -0
  186. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/chroma/test_chroma.py +0 -0
  187. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/cohere/cassettes/test_cohere_chat.yaml +0 -0
  188. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/cohere/cassettes/test_cohere_chat_streaming.yaml +0 -0
  189. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/cohere/cassettes/test_cohere_embed.yaml +0 -0
  190. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/cohere/cassettes/test_cohere_rerank.yaml +0 -0
  191. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/cohere/conftest.py +0 -0
  192. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/cohere/test_cohere_chat.py +0 -0
  193. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/cohere/test_cohere_embed.py +0 -0
  194. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/cohere/test_cohere_rerank.py +0 -0
  195. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/conftest.py +0 -0
  196. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/groq/cassettes/test_async_chat_completion.yaml +0 -0
  197. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/groq/cassettes/test_async_chat_completion_streaming.yaml +0 -0
  198. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/groq/cassettes/test_chat_completion.yaml +0 -0
  199. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/groq/cassettes/test_chat_completion_streaming.yaml +0 -0
  200. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/groq/conftest.py +0 -0
  201. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/groq/test_groq.py +0 -0
  202. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/langchain/cassettes/test_langchain.yaml +0 -0
  203. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/langchain/conftest.py +0 -0
  204. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/langchain/test_langchain.py +0 -0
  205. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/openai/cassettes/test_async_chat_completion_streaming.yaml +0 -0
  206. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/openai/cassettes/test_async_image_generation.yaml +0 -0
  207. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/openai/cassettes/test_chat_completion.yaml +0 -0
  208. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/openai/cassettes/test_chat_completion_streaming.yaml +0 -0
  209. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/openai/cassettes/test_image_generation.yaml +0 -0
  210. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/openai/conftest.py +0 -0
  211. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/openai/test_chat_completion.py +0 -0
  212. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/openai/test_embeddings.py +0 -0
  213. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/openai/test_image_generation.py +0 -0
  214. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/pinecone/cassettes/test_query.yaml +0 -0
  215. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/pinecone/cassettes/test_upsert.yaml +0 -0
  216. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/pinecone/conftest.py +0 -0
  217. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/pinecone/test_pinecone.py +0 -0
  218. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/qdrant/conftest.py +0 -0
  219. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/qdrant/test_qdrant.py +0 -0
  220. {langtrace_python_sdk-2.2.28 → langtrace_python_sdk-2.2.31}/src/tests/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: langtrace-python-sdk
3
- Version: 2.2.28
3
+ Version: 2.2.31
4
4
  Summary: Python SDK for LangTrace
5
5
  Project-URL: Homepage, https://github.com/Scale3-Labs/langtrace-python-sdk
6
6
  Author-email: Scale3 Labs <engineering@scale3labs.com>
@@ -21,6 +21,7 @@ Requires-Dist: opentelemetry-sdk>=1.25.0
21
21
  Requires-Dist: sqlalchemy
22
22
  Requires-Dist: tiktoken>=0.1.1
23
23
  Requires-Dist: trace-attributes==7.0.4
24
+ Requires-Dist: transformers>=4.11.3
24
25
  Provides-Extra: dev
25
26
  Requires-Dist: anthropic; extra == 'dev'
26
27
  Requires-Dist: chromadb; extra == 'dev'
@@ -12,10 +12,10 @@ description = "Python SDK for LangTrace"
12
12
  readme = "README.md"
13
13
  authors = [{ name = "Scale3 Labs", email = "engineering@scale3labs.com" }]
14
14
  license = "Apache-2.0"
15
- classifiers=[
16
- "Programming Language :: Python :: 3",
17
- "License :: OSI Approved :: Apache Software License",
18
- "Operating System :: OS Independent",
15
+ classifiers = [
16
+ "Programming Language :: Python :: 3",
17
+ "License :: OSI Approved :: Apache Software License",
18
+ "Operating System :: OS Independent",
19
19
  ]
20
20
  dependencies = [
21
21
  'trace-attributes==7.0.4',
@@ -28,40 +28,36 @@ dependencies = [
28
28
  'tiktoken>=0.1.1',
29
29
  'colorama>=0.4.6',
30
30
  'sqlalchemy',
31
- 'fsspec>=2024.6.0'
31
+ 'fsspec>=2024.6.0',
32
+ "transformers>=4.11.3",
32
33
  ]
33
34
 
34
35
  requires-python = ">=3.9"
35
36
 
36
37
  [project.optional-dependencies]
37
38
  dev = [
38
- "openai==1.30.1",
39
- "anthropic",
40
- "chromadb",
41
- "qdrant-client",
42
- "python-dotenv",
43
- "pinecone-client",
44
- "langchain",
45
- "langchain-community",
46
- "langchain-openai",
47
- "langchain-openai",
48
- "chromadb",
49
- "cohere",
50
- "qdrant_client",
51
- "weaviate-client",
52
- "ollama",
53
- "groq",
54
- "google-generativeai",
55
- "google-cloud-aiplatform",
56
- "mistralai"
57
- ]
58
-
59
- test = [
60
- "pytest",
61
- "pytest-vcr",
62
- "pytest-asyncio",
39
+ "openai==1.30.1",
40
+ "anthropic",
41
+ "chromadb",
42
+ "qdrant-client",
43
+ "python-dotenv",
44
+ "pinecone-client",
45
+ "langchain",
46
+ "langchain-community",
47
+ "langchain-openai",
48
+ "langchain-openai",
49
+ "chromadb",
50
+ "cohere",
51
+ "qdrant_client",
52
+ "weaviate-client",
53
+ "ollama",
54
+ "groq",
55
+ "google-generativeai",
56
+ "google-cloud-aiplatform",
57
+ "mistralai",
63
58
  ]
64
59
 
60
+ test = ["pytest", "pytest-vcr", "pytest-asyncio"]
65
61
 
66
62
 
67
63
  [project.urls]
@@ -72,9 +68,7 @@ Homepage = "https://github.com/Scale3-Labs/langtrace-python-sdk"
72
68
  path = "src/langtrace_python_sdk/version.py"
73
69
 
74
70
  [tool.hatch.build.targets.sdist]
75
- include = [
76
- "/src",
77
- ]
71
+ include = ["/src"]
78
72
 
79
73
  [tool.hatch.build.targets.wheel]
80
74
  packages = ["src/langtrace_python_sdk", "src/examples", "src/tests"]
@@ -28,5 +28,5 @@ class PoetryAgents:
28
28
  goal="""Create a poem that captures the essence of a given theme or emotion""",
29
29
  allow_delegation=False,
30
30
  verbose=True,
31
- llm=self.ollama,
31
+ llm=self.open_ai,
32
32
  )
@@ -1,14 +1,11 @@
1
1
  from crewai import Crew
2
- from textwrap import dedent
3
2
  from .agents import PoetryAgents
4
3
  from .tasks import PoetryTasks
5
4
  from langtrace_python_sdk import langtrace
6
5
  from dotenv import load_dotenv
7
- import agentops
8
6
 
9
7
  load_dotenv()
10
- agentops.init()
11
- langtrace.init(write_spans_to_console=False, batch=False)
8
+ langtrace.init()
12
9
 
13
10
 
14
11
  class PoetryCrew:
@@ -29,18 +26,11 @@ class PoetryCrew:
29
26
 
30
27
 
31
28
  # This is the main function that you will use to run your custom crew.
29
+ # You can run this file using `python -m src.examples.crewai_example.simple_agent.main`
32
30
  if __name__ == "__main__":
33
31
  print("## Welcome to Poetry Crew")
34
32
  print("-------------------------------")
35
- topic = input(
36
- dedent(
37
- """
38
- What topic do you want to write a poem on?
39
- """
40
- )
41
- )
42
-
43
- poetry_crew = PoetryCrew(topic=topic)
33
+ poetry_crew = PoetryCrew(topic="cold")
44
34
  result = poetry_crew.run()
45
35
  print("\n\n########################")
46
36
  print("## Here is you poem")
@@ -18,4 +18,5 @@ class PoetryTasks:
18
18
  ),
19
19
  expected_output="A creative and expressive poem that captures the essence of the given topic.",
20
20
  agent=agent,
21
+ output_file="poem.txt",
21
22
  )
@@ -1,5 +1,4 @@
1
1
  from crewai import Crew
2
- from textwrap import dedent
3
2
  from .agents import TravelAgents
4
3
  from .tasks import TravelTasks
5
4
  from langtrace_python_sdk import langtrace
@@ -59,36 +58,8 @@ class TripCrew:
59
58
  if __name__ == "__main__":
60
59
  print("## Welcome to Trip Planner Crew")
61
60
  print("-------------------------------")
62
- origin = input(
63
- dedent(
64
- """
65
- From where will you be traveling from?
66
- """
67
- )
68
- )
69
- cities = input(
70
- dedent(
71
- """
72
- What are the cities options you are interested in visiting?
73
- """
74
- )
75
- )
76
- date_range = input(
77
- dedent(
78
- """
79
- What is the date range you are interested in traveling?
80
- """
81
- )
82
- )
83
- interests = input(
84
- dedent(
85
- """
86
- What are some of your high level interests and hobbies?
87
- """
88
- )
89
- )
90
61
 
91
- trip_crew = TripCrew(origin, cities, date_range, interests)
62
+ trip_crew = TripCrew("cairo", "marsa alam", "sep", "scuba diving")
92
63
  result = trip_crew.run()
93
64
  print("\n\n########################")
94
65
  print("## Here is you Trip Plan")
@@ -123,4 +123,4 @@ class LangTraceExporter(SpanExporter):
123
123
  return SpanExportResult.FAILURE
124
124
 
125
125
  def shutdown(self) -> None:
126
- pass
126
+ print(Fore.WHITE + "⭐ Leave our github a star to stay on top of our updates - https://github.com/Scale3-Labs/langtrace" + Fore.RESET)
@@ -46,7 +46,7 @@ class CrewAIInstrumentation(BaseInstrumentor):
46
46
  )
47
47
  _W(
48
48
  "crewai.task",
49
- "Task.execute",
49
+ "Task.execute_sync",
50
50
  patch_crew("Task.execute", version, tracer),
51
51
  )
52
52
  except Exception as e:
@@ -0,0 +1,234 @@
1
+ import json
2
+ from importlib_metadata import version as v
3
+ from langtrace_python_sdk.constants import LANGTRACE_SDK_NAME
4
+ from langtrace_python_sdk.utils import set_span_attribute
5
+ from langtrace_python_sdk.utils.llm import get_span_name, set_span_attributes
6
+ from langtrace_python_sdk.constants.instrumentation.common import (
7
+ LANGTRACE_ADDITIONAL_SPAN_ATTRIBUTES_KEY,
8
+ SERVICE_PROVIDERS,
9
+ )
10
+ from opentelemetry import baggage
11
+ from langtrace.trace_attributes import FrameworkSpanAttributes
12
+ from opentelemetry.trace import SpanKind, Span, Tracer
13
+ from opentelemetry.trace.status import Status, StatusCode
14
+
15
+
16
+ crew_properties = {
17
+ "tasks": "object",
18
+ "agents": "object",
19
+ "cache": "bool",
20
+ "process": "object",
21
+ "verbose": "bool",
22
+ "memory": "bool",
23
+ "embedder": "json",
24
+ "full_output": "bool",
25
+ "manager_llm": "object",
26
+ "manager_agent": "object",
27
+ "manager_callbacks": "object",
28
+ "function_calling_llm": "object",
29
+ "config": "json",
30
+ "id": "object",
31
+ "max_rpm": "int",
32
+ "share_crew": "bool",
33
+ "step_callback": "object",
34
+ "task_callback": "object",
35
+ "prompt_file": "str",
36
+ "output_log_file": "bool",
37
+ }
38
+
39
+ task_properties = {
40
+ "id": "object",
41
+ "used_tools": "int",
42
+ "tools_errors": "int",
43
+ "delegations": "int",
44
+ "i18n": "object",
45
+ "thread": "object",
46
+ "prompt_context": "object",
47
+ "description": "str",
48
+ "expected_output": "str",
49
+ "config": "object",
50
+ "callback": "str",
51
+ "agent": "object",
52
+ "context": "object",
53
+ "async_execution": "bool",
54
+ "output_json": "object",
55
+ "output_pydantic": "object",
56
+ "output_file": "object",
57
+ "output": "object",
58
+ "tools": "object",
59
+ "human_input": "bool",
60
+ }
61
+
62
+ agent_properties = {
63
+ "formatting_errors": "int",
64
+ "id": "object",
65
+ "role": "str",
66
+ "goal": "str",
67
+ "backstory": "str",
68
+ "cache": "bool",
69
+ "config": "object",
70
+ "max_rpm": "int",
71
+ "verbose": "bool",
72
+ "allow_delegation": "bool",
73
+ "tools": "object",
74
+ "max_iter": "int",
75
+ "max_execution_time": "object",
76
+ "agent_executor": "object",
77
+ "tools_handler": "object",
78
+ "force_answer_max_iterations": "int",
79
+ "crew": "object",
80
+ "cache_handler": "object",
81
+ "step_callback": "object",
82
+ "i18n": "object",
83
+ "llm": "object",
84
+ "function_calling_llm": "object",
85
+ "callbacks": "object",
86
+ "system_template": "object",
87
+ "prompt_template": "object",
88
+ "response_template": "object",
89
+ }
90
+
91
+
92
+ def patch_crew(operation_name, version, tracer: Tracer):
93
+ def traced_method(wrapped, instance, args, kwargs):
94
+ service_provider = SERVICE_PROVIDERS["CREWAI"]
95
+ extra_attributes = baggage.get_baggage(LANGTRACE_ADDITIONAL_SPAN_ATTRIBUTES_KEY)
96
+ span_attributes = {
97
+ "langtrace.sdk.name": "langtrace-python-sdk",
98
+ "langtrace.service.name": service_provider,
99
+ "langtrace.service.type": "framework",
100
+ "langtrace.service.version": version,
101
+ "langtrace.version": v(LANGTRACE_SDK_NAME),
102
+ **(extra_attributes if extra_attributes is not None else {}),
103
+ }
104
+
105
+ attributes = FrameworkSpanAttributes(**span_attributes)
106
+
107
+ with tracer.start_as_current_span(
108
+ get_span_name(operation_name), kind=SpanKind.CLIENT
109
+ ) as span:
110
+
111
+ try:
112
+ set_span_attributes(span, attributes)
113
+ CrewAISpanAttributes(span=span, instance=instance)
114
+ result = wrapped(*args, **kwargs)
115
+ if result:
116
+ span.set_status(Status(StatusCode.OK))
117
+
118
+ span.end()
119
+ return result
120
+
121
+ except Exception as err:
122
+ print("Error", err)
123
+ # Record the exception in the span
124
+ span.record_exception(err)
125
+
126
+ # Set the span status to indicate an error
127
+ span.set_status(Status(StatusCode.ERROR, str(err)))
128
+
129
+ # Reraise the exception to ensure it's not swallowed
130
+ raise
131
+
132
+ return traced_method
133
+
134
+
135
+ class CrewAISpanAttributes:
136
+ span: Span
137
+ crew: dict
138
+
139
+ def __init__(self, span: Span, instance) -> None:
140
+ self.span = span
141
+ self.instance = instance
142
+ self.crew = {
143
+ "tasks": [],
144
+ "agents": [],
145
+ }
146
+
147
+ self.run()
148
+
149
+ def run(self):
150
+ instance_name = self.instance.__class__.__name__
151
+ if instance_name == "Crew":
152
+ self.set_crew_attributes()
153
+ set_span_attribute(self.span, "crewai.crew.config", json.dumps(self.crew))
154
+
155
+ elif instance_name == "Agent":
156
+ agent = self.set_agent_attributes()
157
+ # for key, value in agent.items():
158
+ # set_span_attribute(self.span, key, value)
159
+ set_span_attribute(self.span, "crewai.agent.config", json.dumps(agent))
160
+ elif instance_name == "Task":
161
+ task = self.set_task_attributes()
162
+ # uncomment if you want to spread attributes for the UI instead of dumping the whole object
163
+ # for key, value in task.items():
164
+ # set_span_attribute(self.span, key, value)
165
+ set_span_attribute(self.span, "crewai.task.config", json.dumps(task))
166
+
167
+ def set_crew_attributes(self):
168
+ for key, value in self.instance.__dict__.items():
169
+ if key == "tasks":
170
+ self._parse_tasks(value)
171
+
172
+ elif key == "agents":
173
+ self._parse_agents(value)
174
+ else:
175
+ self.crew[key] = str(value)
176
+
177
+ def set_agent_attributes(self):
178
+ agent = {}
179
+ for key, value in self.instance.__dict__.items():
180
+ if value is None:
181
+ continue
182
+ agent[key] = str(value)
183
+
184
+ return agent
185
+
186
+ def set_task_attributes(self):
187
+ task = {}
188
+ for key, value in self.instance.__dict__.items():
189
+ if value is None:
190
+ continue
191
+
192
+ if key == "agent":
193
+ task[key] = value.role
194
+ else:
195
+ task[key] = str(value)
196
+ return task
197
+
198
+ def _parse_agents(self, agents):
199
+ for agent in agents:
200
+ model = None
201
+ if agent.llm is not None:
202
+ if hasattr(agent.llm, "model"):
203
+ model = agent.llm.model
204
+ elif hasattr(agent.llm, "model_name"):
205
+ model = agent.llm.model_name
206
+ self.crew["agents"].append(
207
+ {
208
+ "id": str(agent.id),
209
+ "role": agent.role,
210
+ "goal": agent.goal,
211
+ "backstory": agent.backstory,
212
+ "cache": agent.cache,
213
+ "config": agent.config,
214
+ "verbose": agent.verbose,
215
+ "allow_delegation": agent.allow_delegation,
216
+ "tools": agent.tools,
217
+ "max_iter": agent.max_iter,
218
+ "llm": str(model if model is not None else ""),
219
+ }
220
+ )
221
+
222
+ def _parse_tasks(self, tasks):
223
+ for task in tasks:
224
+ self.crew["tasks"].append(
225
+ {
226
+ "agent": task.agent.role,
227
+ "description": task.description,
228
+ "async_execution": task.async_execution,
229
+ "expected_output": task.expected_output,
230
+ "human_input": task.human_input,
231
+ "tools": task.tools,
232
+ "output_file": task.output_file,
233
+ }
234
+ )
@@ -23,6 +23,7 @@ from opentelemetry.trace.propagation import set_span_in_context
23
23
 
24
24
  from opentelemetry.trace import SpanKind
25
25
  from opentelemetry.trace.status import Status, StatusCode
26
+ from langtrace.trace_attributes import SpanAttributes
26
27
 
27
28
  from langtrace_python_sdk.constants.instrumentation.common import (
28
29
  LANGTRACE_ADDITIONAL_SPAN_ATTRIBUTES_KEY,
@@ -71,6 +72,16 @@ def generic_patch(
71
72
  if trace_output:
72
73
  span.set_attribute("langchain.outputs", to_json_string(result))
73
74
 
75
+ prompt_tokens = instance.get_num_tokens(args[0])
76
+ completion_tokens = instance.get_num_tokens(result)
77
+ if hasattr(result, 'usage'):
78
+ prompt_tokens = result.usage.prompt_tokens
79
+ completion_tokens = result.usage.completion_tokens
80
+
81
+ span.set_attribute(SpanAttributes.LLM_USAGE_COMPLETION_TOKENS, prompt_tokens)
82
+ span.set_attribute(SpanAttributes.LLM_USAGE_PROMPT_TOKENS, completion_tokens)
83
+
84
+
74
85
  span.set_status(StatusCode.OK)
75
86
  return result
76
87
  except Exception as err:
@@ -30,6 +30,7 @@ from langtrace_python_sdk.constants.instrumentation.common import (
30
30
  from importlib_metadata import version as v
31
31
 
32
32
  from langtrace_python_sdk.constants import LANGTRACE_SDK_NAME
33
+ from langtrace.trace_attributes import SpanAttributes
33
34
 
34
35
 
35
36
  def generic_patch(
@@ -78,8 +79,22 @@ def generic_patch(
78
79
  try:
79
80
  # Attempt to call the original method
80
81
  result = wrapped(*args, **kwargs)
82
+
81
83
  if trace_output:
82
84
  span.set_attribute("langchain.outputs", to_json_string(result))
85
+ if hasattr(result, 'usage'):
86
+ prompt_tokens = result.usage.prompt_tokens
87
+ completion_tokens = result.usage.completion_tokens
88
+ span.set_attribute(SpanAttributes.LLM_USAGE_PROMPT_TOKENS, prompt_tokens)
89
+ span.set_attribute(SpanAttributes.LLM_USAGE_COMPLETION_TOKENS, completion_tokens)
90
+
91
+ elif result.generations[0][0].text:
92
+ span.set_attribute(SpanAttributes.LLM_USAGE_COMPLETION_TOKENS, instance.get_num_tokens(result.generations[0][0].text))
93
+ elif isinstance(args[0][0], str):
94
+ span.set_attribute(SpanAttributes.LLM_USAGE_PROMPT_TOKENS, instance.get_num_tokens(args[0][0]))
95
+
96
+ else:
97
+ span.set_attribute(SpanAttributes.LLM_USAGE_PROMPT_TOKENS, instance.get_num_tokens(args[0][0].text))
83
98
 
84
99
  span.set_status(StatusCode.OK)
85
100
  return result
@@ -156,6 +171,7 @@ def runnable_patch(
156
171
  try:
157
172
  # Attempt to call the original method
158
173
  result = wrapped(*args, **kwargs)
174
+
159
175
  if trace_output:
160
176
  outputs = {}
161
177
  if isinstance(result, dict):
@@ -44,7 +44,7 @@ from langtrace_python_sdk.utils.llm import (
44
44
  StreamWrapper,
45
45
  set_span_attributes,
46
46
  )
47
- from openai._types import NOT_GIVEN
47
+ from langtrace_python_sdk.types import NOT_GIVEN
48
48
 
49
49
 
50
50
  def images_generate(original_method, version, tracer):
@@ -83,6 +83,7 @@ def init(
83
83
  )
84
84
  check_if_sdk_is_outdated()
85
85
  print(Fore.GREEN + "Initializing Langtrace SDK.." + Fore.RESET)
86
+ print(Fore.WHITE + "⭐ Leave our github a star to stay on top of our updates - https://github.com/Scale3-Labs/langtrace" + Fore.RESET)
86
87
  sampler = LangtraceSampler(disabled_methods=disable_tracing_for_functions)
87
88
  resource = Resource.create(
88
89
  attributes={
@@ -1,4 +1,4 @@
1
- from typing import List, Literal, TypedDict
1
+ from typing import List, Literal, TypeVar, TypedDict, Union
2
2
  from enum import Enum
3
3
 
4
4
 
@@ -111,3 +111,32 @@ class InstrumentationMethods(TypedDict):
111
111
  anthropic: List[VendorMethods.AnthropicMethods]
112
112
  cohere: List[VendorMethods.CohereMethods]
113
113
  weaviate: List[str]
114
+
115
+ _T = TypeVar("_T")
116
+ class NotGiven:
117
+ """
118
+ A sentinel singleton class used to distinguish omitted keyword arguments
119
+ from those passed in with the value None (which may have different behavior).
120
+
121
+ For example:
122
+
123
+ ```py
124
+ def get(timeout: Union[int, NotGiven, None] = NotGiven()) -> Response:
125
+ ...
126
+
127
+
128
+ get(timeout=1) # 1s timeout
129
+ get(timeout=None) # No timeout
130
+ get() # Default timeout behavior, which may not be statically known at the method definition.
131
+ ```
132
+ """
133
+
134
+ def __bool__(self) -> Literal[False]:
135
+ return False
136
+
137
+ def __repr__(self) -> str:
138
+ return "NOT_GIVEN"
139
+
140
+
141
+ NotGivenOr = Union[_T, NotGiven]
142
+ NOT_GIVEN = NotGiven()
@@ -1,4 +1,4 @@
1
- from openai import NOT_GIVEN
1
+ from langtrace_python_sdk.types import NOT_GIVEN
2
2
  from .sdk_version_checker import SDKVersionChecker
3
3
  from opentelemetry.trace import Span
4
4
  from langtrace.trace_attributes import SpanAttributes
@@ -16,7 +16,7 @@ limitations under the License.
16
16
 
17
17
  from langtrace_python_sdk.constants import LANGTRACE_SDK_NAME
18
18
  from langtrace_python_sdk.utils import set_span_attribute
19
- from openai import NOT_GIVEN
19
+ from langtrace_python_sdk.types import NOT_GIVEN
20
20
  from tiktoken import get_encoding
21
21
  from tiktoken import get_encoding, list_encoding_names
22
22
 
@@ -0,0 +1 @@
1
+ __version__ = "2.2.31"