langtrace-python-sdk 3.8.6__tar.gz → 3.8.7__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 (310) hide show
  1. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/.gitignore +1 -0
  2. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/PKG-INFO +1 -1
  3. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/openai/instrumentation.py +15 -1
  4. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/openai/patch.py +128 -15
  5. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/utils/llm.py +65 -46
  6. langtrace_python_sdk-3.8.7/src/langtrace_python_sdk/version.py +1 -0
  7. langtrace_python_sdk-3.8.6/src/langtrace_python_sdk/version.py +0 -1
  8. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/LICENSE +0 -0
  9. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/README.md +0 -0
  10. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/pyproject.toml +0 -0
  11. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/__init__.py +0 -0
  12. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/__init__.py +0 -0
  13. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/anthropic_example/__init__.py +0 -0
  14. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/anthropic_example/completion.py +0 -0
  15. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/autogen_example/__init__.py +0 -0
  16. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/autogen_example/main.py +0 -0
  17. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/awsbedrock_examples/__init__.py +0 -0
  18. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/awsbedrock_examples/converse.py +0 -0
  19. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/azureopenai_example/__init__.py +0 -0
  20. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/azureopenai_example/completion.py +0 -0
  21. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/cerebras_example/__init__.py +0 -0
  22. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/cerebras_example/main.py +0 -0
  23. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/chroma_example/__init__.py +0 -0
  24. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/chroma_example/basic.py +0 -0
  25. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/cleanlab_example/simple.py +0 -0
  26. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/cohere_example/__init__.py +0 -0
  27. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/cohere_example/chat.py +0 -0
  28. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/cohere_example/chat_stream.py +0 -0
  29. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/cohere_example/chat_streamv2.py +0 -0
  30. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/cohere_example/chatv2.py +0 -0
  31. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/cohere_example/embed.py +0 -0
  32. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/cohere_example/rerank.py +0 -0
  33. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/cohere_example/rerankv2.py +0 -0
  34. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/cohere_example/tools.py +0 -0
  35. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/crewai_example/__init__.py +0 -0
  36. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/crewai_example/basic.py +0 -0
  37. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/crewai_example/instagram_post/__init__.py +0 -0
  38. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/crewai_example/instagram_post/agents.py +0 -0
  39. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/crewai_example/instagram_post/main.py +0 -0
  40. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/crewai_example/instagram_post/tasks.py +0 -0
  41. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/crewai_example/instagram_post/tools/__init__.py +0 -0
  42. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/crewai_example/instagram_post/tools/browser_tools.py +0 -0
  43. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/crewai_example/simple_agent/__init__.py +0 -0
  44. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/crewai_example/simple_agent/agents.py +0 -0
  45. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/crewai_example/simple_agent/main.py +0 -0
  46. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/crewai_example/simple_agent/tasks.py +0 -0
  47. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/crewai_example/trip_planner/__init__.py +0 -0
  48. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/crewai_example/trip_planner/agents.py +0 -0
  49. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/crewai_example/trip_planner/main.py +0 -0
  50. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/crewai_example/trip_planner/tasks.py +0 -0
  51. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/crewai_example/trip_planner/tools/calculator.py +0 -0
  52. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/crewai_example/trip_planner/tools/search_tools.py +0 -0
  53. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/dspy_example/QA_basic.py +0 -0
  54. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/dspy_example/QA_basic_with_chain_of_thought.py +0 -0
  55. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/dspy_example/QA_basic_with_signature.py +0 -0
  56. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/dspy_example/QA_multi_step_with_chain_of_thought.py +0 -0
  57. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/dspy_example/math_problems_cot.py +0 -0
  58. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/dspy_example/math_problems_cot_parallel.py +0 -0
  59. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/dspy_example/optimizers/bootstrap_fewshot.py +0 -0
  60. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/dspy_example/program_of_thought_basic.py +0 -0
  61. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/dspy_example/quiz_gen.py +0 -0
  62. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/dspy_example/react.py +0 -0
  63. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/embedchain_example/simple.py +0 -0
  64. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/fastapi_example/__init__.py +0 -0
  65. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/fastapi_example/basic_route.py +0 -0
  66. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/gemini_example/__init__.py +0 -0
  67. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/gemini_example/function_tools.py +0 -0
  68. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/gemini_example/main.py +0 -0
  69. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/google_genai_example/__init__.py +0 -0
  70. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/google_genai_example/main.py +0 -0
  71. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/graphlit_example/__init__.py +0 -0
  72. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/graphlit_example/conversation.py +0 -0
  73. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/hiveagent_example/basic.py +0 -0
  74. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/inspect_ai_example/basic_eval.py +0 -0
  75. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/langchain_example/__init__.py +0 -0
  76. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/langchain_example/basic.py +0 -0
  77. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/langchain_example/groq_example.py +0 -0
  78. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/langchain_example/langchain_google_example.py +0 -0
  79. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/langchain_example/langgraph_example.py +0 -0
  80. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/langchain_example/langgraph_example_tools.py +0 -0
  81. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/langchain_example/sagemaker.py +0 -0
  82. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/langchain_example/tool.py +0 -0
  83. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/langgraph_example/main.py +0 -0
  84. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/litellm_example/basic.py +0 -0
  85. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/litellm_example/config.yaml +0 -0
  86. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/litellm_example/proxy_basic.py +0 -0
  87. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/llamaindex_example/__init__.py +0 -0
  88. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/llamaindex_example/agent.py +0 -0
  89. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/llamaindex_example/basic.py +0 -0
  90. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/llamaindex_example/data/abramov.txt +0 -0
  91. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/milvus_example/main.py +0 -0
  92. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/mistral_example/__init__.py +0 -0
  93. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/mistral_example/complete.py +0 -0
  94. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/mistral_example/complete_async.py +0 -0
  95. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/mistral_example/embeddings.py +0 -0
  96. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/mongo_vector_search_example/main.py +0 -0
  97. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/ollama_example/__init__.py +0 -0
  98. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/ollama_example/basic.py +0 -0
  99. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/openai_example/__init__.py +0 -0
  100. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/openai_example/async_tool_calling_nonstreaming.py +0 -0
  101. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/openai_example/async_tool_calling_streaming.py +0 -0
  102. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/openai_example/chat_completion.py +0 -0
  103. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/openai_example/chat_completion_tool_choice.py +0 -0
  104. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/openai_example/embeddings_create.py +0 -0
  105. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/openai_example/function_calling.py +0 -0
  106. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/openai_example/images_edit.py +0 -0
  107. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/openai_example/images_generate.py +0 -0
  108. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/openai_example/resources/lounge_flamingo.png +0 -0
  109. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/openai_example/resources/mask.png +0 -0
  110. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/openai_example/send_user_feedback.py +0 -0
  111. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/openai_example/tool_calling.py +0 -0
  112. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/openai_example/tool_calling_nonstreaming.py +0 -0
  113. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/openai_example/tool_calling_streaming.py +0 -0
  114. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/otlp_example/otlp_basic.py +0 -0
  115. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/otlp_example/otlp_with_langtrace.py +0 -0
  116. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/perplexity_example/basic.py +0 -0
  117. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/phidata_example/__init__.py +0 -0
  118. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/phidata_example/agent.py +0 -0
  119. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/pinecone_example/__init__.py +0 -0
  120. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/pinecone_example/basic.py +0 -0
  121. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/qdrant_example/__init__.py +0 -0
  122. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/qdrant_example/basic.py +0 -0
  123. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/routellm_example/basic.py +0 -0
  124. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/vertexai_example/__init__.py +0 -0
  125. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/vertexai_example/main.py +0 -0
  126. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/weaviate_example/__init__.py +0 -0
  127. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/examples/weaviate_example/query_text.py +0 -0
  128. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/__init__.py +0 -0
  129. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/constants/__init__.py +0 -0
  130. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/constants/exporter/langtrace_exporter.py +0 -0
  131. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/constants/instrumentation/__init__.py +0 -0
  132. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/constants/instrumentation/anthropic.py +0 -0
  133. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/constants/instrumentation/aws_bedrock.py +0 -0
  134. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/constants/instrumentation/chroma.py +0 -0
  135. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/constants/instrumentation/cohere.py +0 -0
  136. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/constants/instrumentation/common.py +0 -0
  137. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/constants/instrumentation/embedchain.py +0 -0
  138. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/constants/instrumentation/gemini.py +0 -0
  139. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/constants/instrumentation/groq.py +0 -0
  140. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/constants/instrumentation/litellm.py +0 -0
  141. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/constants/instrumentation/milvus.py +0 -0
  142. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/constants/instrumentation/mistral.py +0 -0
  143. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/constants/instrumentation/ollama.py +0 -0
  144. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/constants/instrumentation/openai.py +0 -0
  145. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/constants/instrumentation/pinecone.py +0 -0
  146. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/constants/instrumentation/pymongo.py +0 -0
  147. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/constants/instrumentation/qdrant.py +0 -0
  148. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/constants/instrumentation/vertexai.py +0 -0
  149. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/constants/instrumentation/weaviate.py +0 -0
  150. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/extensions/__init__.py +0 -0
  151. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/extensions/langtrace_exporter.py +0 -0
  152. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/extensions/langtrace_filesystem.py +0 -0
  153. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/__init__.py +0 -0
  154. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/agno/__init__.py +0 -0
  155. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/agno/instrumentation.py +0 -0
  156. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/agno/patch.py +0 -0
  157. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/anthropic/__init__.py +0 -0
  158. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/anthropic/instrumentation.py +0 -0
  159. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/anthropic/patch.py +0 -0
  160. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/anthropic/types.py +0 -0
  161. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/autogen/__init__.py +0 -0
  162. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/autogen/instrumentation.py +0 -0
  163. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/autogen/patch.py +0 -0
  164. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/aws_bedrock/__init__.py +0 -0
  165. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/aws_bedrock/bedrock_streaming_wrapper.py +0 -0
  166. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/aws_bedrock/instrumentation.py +0 -0
  167. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/aws_bedrock/patch.py +0 -0
  168. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/aws_bedrock/stream_body_wrapper.py +0 -0
  169. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/cerebras/__init__.py +0 -0
  170. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/cerebras/instrumentation.py +0 -0
  171. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/cerebras/patch.py +0 -0
  172. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/chroma/__init__.py +0 -0
  173. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/chroma/instrumentation.py +0 -0
  174. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/chroma/patch.py +0 -0
  175. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/cleanlab/__init__.py +0 -0
  176. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/cleanlab/instrumentation.py +0 -0
  177. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/cleanlab/patch.py +0 -0
  178. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/cohere/__init__.py +0 -0
  179. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/cohere/instrumentation.py +0 -0
  180. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/cohere/patch.py +0 -0
  181. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/crewai/__init__.py +0 -0
  182. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/crewai/instrumentation.py +0 -0
  183. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/crewai/patch.py +0 -0
  184. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/crewai_tools/__init__.py +0 -0
  185. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/crewai_tools/instrumentation.py +0 -0
  186. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/crewai_tools/patch.py +0 -0
  187. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/dspy/__init__.py +0 -0
  188. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/dspy/instrumentation.py +0 -0
  189. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/dspy/patch.py +0 -0
  190. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/embedchain/__init__.py +0 -0
  191. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/embedchain/instrumentation.py +0 -0
  192. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/embedchain/patch.py +0 -0
  193. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/gemini/__init__.py +0 -0
  194. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/gemini/instrumentation.py +0 -0
  195. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/gemini/patch.py +0 -0
  196. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/google_genai/__init__.py +0 -0
  197. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/google_genai/instrumentation.py +0 -0
  198. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/google_genai/patch.py +0 -0
  199. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/graphlit/__init__.py +0 -0
  200. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/graphlit/instrumentation.py +0 -0
  201. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/graphlit/patch.py +0 -0
  202. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/groq/__init__.py +0 -0
  203. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/groq/instrumentation.py +0 -0
  204. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/groq/patch.py +0 -0
  205. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/langchain/__init__.py +0 -0
  206. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/langchain/instrumentation.py +0 -0
  207. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/langchain/patch.py +0 -0
  208. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/langchain_community/__init__.py +0 -0
  209. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/langchain_community/instrumentation.py +0 -0
  210. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/langchain_community/patch.py +0 -0
  211. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/langchain_core/__init__.py +0 -0
  212. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/langchain_core/instrumentation.py +0 -0
  213. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/langchain_core/patch.py +0 -0
  214. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/langgraph/__init__.py +0 -0
  215. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/langgraph/instrumentation.py +0 -0
  216. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/langgraph/patch.py +0 -0
  217. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/litellm/__init__.py +0 -0
  218. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/litellm/instrumentation.py +0 -0
  219. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/litellm/patch.py +0 -0
  220. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/litellm/types.py +0 -0
  221. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/llamaindex/__init__.py +0 -0
  222. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/llamaindex/instrumentation.py +0 -0
  223. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/llamaindex/patch.py +0 -0
  224. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/milvus/__init__.py +0 -0
  225. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/milvus/instrumentation.py +0 -0
  226. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/milvus/patch.py +0 -0
  227. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/mistral/__init__.py +0 -0
  228. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/mistral/instrumentation.py +0 -0
  229. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/mistral/patch.py +0 -0
  230. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/ollama/__init__.py +0 -0
  231. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/ollama/instrumentation.py +0 -0
  232. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/ollama/patch.py +0 -0
  233. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/openai/__init__.py +0 -0
  234. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/openai/types.py +0 -0
  235. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/openai_agents/__init__.py +0 -0
  236. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/openai_agents/instrumentation.py +0 -0
  237. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/openai_agents/patch.py +0 -0
  238. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/phidata/__init__.py +0 -0
  239. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/phidata/instrumentation.py +0 -0
  240. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/phidata/patch.py +0 -0
  241. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/pinecone/__init__.py +0 -0
  242. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/pinecone/instrumentation.py +0 -0
  243. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/pinecone/patch.py +0 -0
  244. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/pymongo/__init__.py +0 -0
  245. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/pymongo/instrumentation.py +0 -0
  246. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/pymongo/patch.py +0 -0
  247. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/qdrant/__init__.py +0 -0
  248. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/qdrant/instrumentation.py +0 -0
  249. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/qdrant/patch.py +0 -0
  250. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/vertexai/__init__.py +0 -0
  251. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/vertexai/instrumentation.py +0 -0
  252. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/vertexai/patch.py +0 -0
  253. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/weaviate/__init__.py +0 -0
  254. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/weaviate/instrumentation.py +0 -0
  255. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/instrumentation/weaviate/patch.py +0 -0
  256. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/langtrace.py +0 -0
  257. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/types/__init__.py +0 -0
  258. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/utils/__init__.py +0 -0
  259. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/utils/langtrace_sampler.py +0 -0
  260. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/utils/misc.py +0 -0
  261. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/utils/prompt_registry.py +0 -0
  262. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/utils/sdk_version_checker.py +0 -0
  263. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/utils/silently_fail.py +0 -0
  264. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/utils/types.py +0 -0
  265. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/langtrace_python_sdk/utils/with_root_span.py +0 -0
  266. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/run_example.py +0 -0
  267. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/__init__.py +0 -0
  268. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/anthropic/cassettes/test_anthropic.yaml +0 -0
  269. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/anthropic/cassettes/test_anthropic_streaming.yaml +0 -0
  270. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/anthropic/cassettes/test_async_anthropic_streaming.yaml +0 -0
  271. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/anthropic/conftest.py +0 -0
  272. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/anthropic/test_anthropic.py +0 -0
  273. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/chroma/conftest.py +0 -0
  274. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/chroma/test_chroma.py +0 -0
  275. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/cohere/cassettes/test_cohere_chat.yaml +0 -0
  276. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/cohere/cassettes/test_cohere_chat_streaming.yaml +0 -0
  277. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/cohere/cassettes/test_cohere_embed.yaml +0 -0
  278. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/cohere/cassettes/test_cohere_rerank.yaml +0 -0
  279. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/cohere/conftest.py +0 -0
  280. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/cohere/test_cohere_chat.py +0 -0
  281. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/cohere/test_cohere_embed.py +0 -0
  282. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/cohere/test_cohere_rerank.py +0 -0
  283. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/conftest.py +0 -0
  284. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/groq/cassettes/test_async_chat_completion.yaml +0 -0
  285. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/groq/cassettes/test_async_chat_completion_streaming.yaml +0 -0
  286. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/groq/cassettes/test_chat_completion.yaml +0 -0
  287. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/groq/cassettes/test_chat_completion_streaming.yaml +0 -0
  288. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/groq/conftest.py +0 -0
  289. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/groq/test_groq.py +0 -0
  290. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/langchain/cassettes/test_langchain.yaml +0 -0
  291. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/langchain/conftest.py +0 -0
  292. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/langchain/test_langchain.py +0 -0
  293. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/openai/cassettes/test_async_chat_completion_streaming.yaml +0 -0
  294. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/openai/cassettes/test_async_image_generation.yaml +0 -0
  295. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/openai/cassettes/test_chat_completion.yaml +0 -0
  296. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/openai/cassettes/test_chat_completion_streaming.yaml +0 -0
  297. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/openai/cassettes/test_embeddings_base_url.yaml +0 -0
  298. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/openai/cassettes/test_image_generation.yaml +0 -0
  299. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/openai/conftest.py +0 -0
  300. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/openai/test_chat_completion.py +0 -0
  301. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/openai/test_embeddings.py +0 -0
  302. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/openai/test_image_generation.py +0 -0
  303. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/pinecone/cassettes/test_query.yaml +0 -0
  304. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/pinecone/cassettes/test_upsert.yaml +0 -0
  305. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/pinecone/conftest.py +0 -0
  306. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/pinecone/test_pinecone.py +0 -0
  307. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/qdrant/conftest.py +0 -0
  308. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/qdrant/test_qdrant.py +0 -0
  309. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/test_session_id.py +0 -0
  310. {langtrace_python_sdk-3.8.6 → langtrace_python_sdk-3.8.7}/src/tests/utils.py +0 -0
@@ -163,3 +163,4 @@ chroma.sqlite3
163
163
  #.idea/
164
164
 
165
165
  logs/
166
+ playground/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langtrace-python-sdk
3
- Version: 3.8.6
3
+ Version: 3.8.7
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>
@@ -24,6 +24,8 @@ from langtrace_python_sdk.instrumentation.openai.patch import (
24
24
  async_embeddings_create,
25
25
  async_images_generate,
26
26
  chat_completions_create,
27
+ openai_responses_create,
28
+ async_openai_responses_create,
27
29
  embeddings_create,
28
30
  images_edit,
29
31
  images_generate,
@@ -32,7 +34,7 @@ from langtrace_python_sdk.instrumentation.openai.patch import (
32
34
  logging.basicConfig(level=logging.FATAL)
33
35
 
34
36
 
35
- class OpenAIInstrumentation(BaseInstrumentor): # type: ignore
37
+ class OpenAIInstrumentation(BaseInstrumentor): # type: ignore
36
38
 
37
39
  def instrumentation_dependencies(self) -> Collection[str]:
38
40
  return ["openai >= 0.27.0", "trace-attributes >= 4.0.5"]
@@ -54,6 +56,18 @@ class OpenAIInstrumentation(BaseInstrumentor): # type: ignore
54
56
  async_chat_completions_create(version, tracer),
55
57
  )
56
58
 
59
+ wrap_function_wrapper(
60
+ "openai.resources.responses",
61
+ "AsyncResponses.create",
62
+ async_openai_responses_create(version, tracer),
63
+ )
64
+
65
+ wrap_function_wrapper(
66
+ "openai.resources.responses",
67
+ "Responses.create",
68
+ openai_responses_create(version, tracer),
69
+ )
70
+
57
71
  wrap_function_wrapper(
58
72
  "openai.resources.images",
59
73
  "Images.generate",
@@ -7,27 +7,121 @@ from opentelemetry.trace import Span, SpanKind, Tracer
7
7
  from opentelemetry.trace.propagation import set_span_in_context
8
8
  from opentelemetry.trace.status import Status, StatusCode
9
9
 
10
- from langtrace_python_sdk.constants.instrumentation.common import \
11
- SERVICE_PROVIDERS
10
+ from langtrace_python_sdk.constants.instrumentation.common import SERVICE_PROVIDERS
12
11
  from langtrace_python_sdk.constants.instrumentation.openai import APIS
13
12
  from langtrace_python_sdk.instrumentation.openai.types import (
14
- ChatCompletionsCreateKwargs, ContentItem, EmbeddingsCreateKwargs,
15
- ImagesEditKwargs, ImagesGenerateKwargs, ResultType)
13
+ ChatCompletionsCreateKwargs,
14
+ ContentItem,
15
+ EmbeddingsCreateKwargs,
16
+ ImagesEditKwargs,
17
+ ImagesGenerateKwargs,
18
+ ResultType,
19
+ )
16
20
  from langtrace_python_sdk.types import NOT_GIVEN
17
21
  from langtrace_python_sdk.utils import set_span_attribute
18
- from langtrace_python_sdk.utils.llm import (StreamWrapper,
19
- calculate_prompt_tokens,
20
- get_base_url, get_extra_attributes,
21
- get_langtrace_attributes,
22
- get_llm_request_attributes,
23
- get_llm_url, get_span_name,
24
- get_tool_calls, is_streaming,
25
- set_event_completion,
26
- set_span_attributes,
27
- set_usage_attributes)
22
+ from langtrace_python_sdk.utils.llm import (
23
+ StreamWrapper,
24
+ calculate_prompt_tokens,
25
+ get_base_url,
26
+ get_extra_attributes,
27
+ get_langtrace_attributes,
28
+ get_llm_request_attributes,
29
+ get_llm_url,
30
+ get_span_name,
31
+ get_tool_calls,
32
+ is_streaming,
33
+ set_event_completion,
34
+ set_span_attributes,
35
+ set_usage_attributes,
36
+ )
28
37
  from langtrace_python_sdk.utils.silently_fail import silently_fail
29
38
 
30
39
 
40
+ def async_openai_responses_create(version: str, tracer: Tracer) -> Callable:
41
+ """Wrap the `create` method of the `openai.AsyncResponse.create` class to trace it."""
42
+
43
+ async def traced_method(
44
+ wrapped: Callable, instance: Any, args: List[Any], kwargs: Dict[str, Any]
45
+ ):
46
+ input_value = kwargs.get("input")
47
+ prompt = (
48
+ input_value[0]
49
+ if isinstance(input_value, list)
50
+ else [{"role": "user", "content": input_value}]
51
+ )
52
+ service_provider = SERVICE_PROVIDERS["OPENAI"]
53
+ span_attributes = {
54
+ "instructions": kwargs.get("instructions"),
55
+ **get_langtrace_attributes(version, service_provider, vendor_type="llm"),
56
+ **get_llm_request_attributes(
57
+ kwargs,
58
+ operation_name="openai.responses.create",
59
+ prompts=prompt,
60
+ ),
61
+ }
62
+ with tracer.start_as_current_span(
63
+ name="openai.responses.create",
64
+ kind=SpanKind.CLIENT,
65
+ context=set_span_in_context(trace.get_current_span()),
66
+ ) as span:
67
+ try:
68
+ set_span_attributes(span, span_attributes)
69
+
70
+ response = await wrapped(*args, **kwargs)
71
+ _set_openai_agentic_response_attributes(span, response)
72
+
73
+ return response
74
+ except Exception as err:
75
+ span.record_exception(err)
76
+ raise
77
+
78
+ return traced_method
79
+
80
+
81
+ def openai_responses_create(version: str, tracer: Tracer) -> Callable:
82
+ """Wrap the `create` method of the `openai.responses.create` class to trace it."""
83
+
84
+ def traced_method(
85
+ wrapped: Callable, instance: Any, args: List[Any], kwargs: Dict[str, Any]
86
+ ):
87
+ input_value = kwargs.get("input")
88
+ prompt = (
89
+ input_value[0]
90
+ if isinstance(input_value, list)
91
+ else [{"role": "user", "content": input_value}]
92
+ )
93
+ service_provider = SERVICE_PROVIDERS["OPENAI"]
94
+ span_attributes = {
95
+ "instructions": kwargs.get("instructions"),
96
+ **get_langtrace_attributes(version, service_provider, vendor_type="llm"),
97
+ **get_llm_request_attributes(
98
+ kwargs,
99
+ operation_name="openai.responses.create",
100
+ prompts=prompt,
101
+ ),
102
+ }
103
+ with tracer.start_as_current_span(
104
+ name="openai.responses.create",
105
+ kind=SpanKind.CLIENT,
106
+ context=set_span_in_context(trace.get_current_span()),
107
+ end_on_exit=False,
108
+ ) as span:
109
+ try:
110
+ set_span_attributes(span, span_attributes)
111
+
112
+ response = wrapped(*args, **kwargs)
113
+ if is_streaming(kwargs) and span.is_recording():
114
+ return StreamWrapper(response, span)
115
+ else:
116
+ _set_openai_agentic_response_attributes(span, response)
117
+ return response
118
+ except Exception as err:
119
+ span.record_exception(err)
120
+ raise
121
+
122
+ return traced_method
123
+
124
+
31
125
  def filter_valid_attributes(attributes):
32
126
  """Filter attributes where value is not None, not an empty string, and not openai.NOT_GIVEN."""
33
127
  return {
@@ -634,6 +728,21 @@ def extract_content(choice: Any) -> Union[str, List[Dict[str, Any]], Dict[str, A
634
728
  return ""
635
729
 
636
730
 
731
+ def _set_openai_agentic_response_attributes(span: Span, response) -> None:
732
+ set_span_attribute(span, SpanAttributes.LLM_RESPONSE_ID, response.id)
733
+ set_span_attribute(span, SpanAttributes.LLM_RESPONSE_MODEL, response.model)
734
+ set_event_completion(span, [{"role": "assistant", "content": response.output_text}])
735
+ set_usage_attributes(
736
+ span,
737
+ {
738
+ "input_tokens": response.usage.input_tokens,
739
+ "output_tokens": response.usage.output_tokens,
740
+ "total_tokens": response.usage.total_tokens,
741
+ "cached_tokens": response.usage.input_tokens_details["cached_tokens"],
742
+ },
743
+ )
744
+
745
+
637
746
  @silently_fail
638
747
  def _set_input_attributes(
639
748
  span: Span, kwargs: ChatCompletionsCreateKwargs, attributes: LLMSpanAttributes
@@ -707,5 +816,9 @@ def _set_response_attributes(span: Span, result: ResultType) -> None:
707
816
  set_span_attribute(
708
817
  span,
709
818
  "gen_ai.usage.cached_tokens",
710
- result.usage.prompt_tokens_details.cached_tokens if result.usage.prompt_tokens_details else 0,
819
+ (
820
+ result.usage.prompt_tokens_details.cached_tokens
821
+ if result.usage.prompt_tokens_details
822
+ else 0
823
+ ),
711
824
  )
@@ -96,22 +96,22 @@ def calculate_price_from_usage(model, usage):
96
96
 
97
97
  def convert_mistral_messages_to_serializable(mistral_messages):
98
98
  serializable_messages = []
99
-
99
+
100
100
  try:
101
101
  for message in mistral_messages:
102
102
  serializable_message = {"role": message.role}
103
-
103
+
104
104
  # Handle content
105
105
  if hasattr(message, "content"):
106
106
  serializable_message["content"] = message.content
107
-
107
+
108
108
  # Handle tool_calls
109
109
  if hasattr(message, "tool_calls") and message.tool_calls is not None:
110
110
  serializable_tool_calls = []
111
-
111
+
112
112
  for tool_call in message.tool_calls:
113
113
  serializable_tool_call = {}
114
-
114
+
115
115
  # Handle id, type, and index
116
116
  if hasattr(tool_call, "id"):
117
117
  serializable_tool_call["id"] = tool_call.id
@@ -119,111 +119,117 @@ def convert_mistral_messages_to_serializable(mistral_messages):
119
119
  serializable_tool_call["type"] = tool_call.type
120
120
  if hasattr(tool_call, "index"):
121
121
  serializable_tool_call["index"] = tool_call.index
122
-
122
+
123
123
  # Handle function
124
124
  if hasattr(tool_call, "function"):
125
125
  function_call = tool_call.function
126
126
  serializable_function = {}
127
-
127
+
128
128
  if hasattr(function_call, "name"):
129
129
  serializable_function["name"] = function_call.name
130
130
  if hasattr(function_call, "arguments"):
131
131
  serializable_function["arguments"] = function_call.arguments
132
-
132
+
133
133
  serializable_tool_call["function"] = serializable_function
134
-
134
+
135
135
  serializable_tool_calls.append(serializable_tool_call)
136
-
136
+
137
137
  serializable_message["tool_calls"] = serializable_tool_calls
138
-
138
+
139
139
  # Handle tool_call_id for tool messages
140
140
  if hasattr(message, "tool_call_id"):
141
141
  serializable_message["tool_call_id"] = message.tool_call_id
142
-
142
+
143
143
  serializable_messages.append(serializable_message)
144
144
  except Exception as e:
145
145
  pass
146
-
146
+
147
147
  return serializable_messages
148
148
 
149
149
 
150
150
  def convert_gemini_messages_to_serializable(formatted_messages, system_message=None):
151
151
  """
152
152
  Converts Gemini-formatted messages back to a JSON serializable format.
153
-
153
+
154
154
  Args:
155
155
  formatted_messages: The formatted messages from Gemini.
156
156
  system_message (str, optional): System message content.
157
-
157
+
158
158
  Returns:
159
159
  List[dict]: JSON serializable list of message dictionaries.
160
160
  """
161
161
  serializable_messages = []
162
-
162
+
163
163
  try:
164
164
  # Add system message if present
165
165
  if system_message:
166
- serializable_messages.append({
167
- "role": "system",
168
- "content": system_message
169
- })
170
-
166
+ serializable_messages.append({"role": "system", "content": system_message})
167
+
171
168
  for message_item in formatted_messages:
172
169
  # Handle the case where the item is a dict with 'role' and 'content' keys
173
- if isinstance(message_item, dict) and 'role' in message_item and 'content' in message_item:
174
- role = message_item['role']
175
- content_value = message_item['content']
176
-
170
+ if (
171
+ isinstance(message_item, dict)
172
+ and "role" in message_item
173
+ and "content" in message_item
174
+ ):
175
+ role = message_item["role"]
176
+ content_value = message_item["content"]
177
+
177
178
  # Initialize our serializable message
178
179
  serializable_message = {"role": role}
179
-
180
+
180
181
  # If content is a list of Content objects
181
182
  if isinstance(content_value, list) and len(content_value) > 0:
182
183
  for content_obj in content_value:
183
184
  # Process each Content object
184
- if hasattr(content_obj, 'parts') and hasattr(content_obj, 'role'):
185
+ if hasattr(content_obj, "parts") and hasattr(
186
+ content_obj, "role"
187
+ ):
185
188
  parts = content_obj.parts
186
-
189
+
187
190
  # Extract text from parts
188
191
  text_parts = []
189
192
  for part in parts:
190
- if hasattr(part, 'text') and part.text:
193
+ if hasattr(part, "text") and part.text:
191
194
  text_parts.append(part.text)
192
-
195
+
193
196
  if text_parts:
194
197
  serializable_message["content"] = " ".join(text_parts)
195
-
198
+
196
199
  # Here you can add additional processing for other part types
197
200
  # like function_call, function_response, inline_data, etc.
198
201
  # Similar to the previous implementation
199
-
202
+
200
203
  # If content is a string or already a primitive type
201
- elif isinstance(content_value, (str, int, float, bool)) or content_value is None:
204
+ elif (
205
+ isinstance(content_value, (str, int, float, bool))
206
+ or content_value is None
207
+ ):
202
208
  serializable_message["content"] = content_value
203
-
209
+
204
210
  # Add the processed message to our list
205
211
  serializable_messages.append(serializable_message)
206
-
212
+
207
213
  # Handle the case where the item is a Content object directly
208
- elif hasattr(message_item, 'role') and hasattr(message_item, 'parts'):
214
+ elif hasattr(message_item, "role") and hasattr(message_item, "parts"):
209
215
  # This is the case from the previous implementation
210
216
  # Process a Content object directly
211
217
  serializable_message = {"role": message_item.role}
212
-
218
+
213
219
  parts = message_item.parts
214
220
  text_parts = []
215
-
221
+
216
222
  for part in parts:
217
- if hasattr(part, 'text') and part.text:
223
+ if hasattr(part, "text") and part.text:
218
224
  text_parts.append(part.text)
219
-
225
+
220
226
  if text_parts:
221
227
  serializable_message["content"] = " ".join(text_parts)
222
-
228
+
223
229
  serializable_messages.append(serializable_message)
224
230
  except Exception as e:
225
231
  pass
226
-
232
+
227
233
  return serializable_messages
228
234
 
229
235
 
@@ -253,7 +259,7 @@ def get_llm_request_attributes(kwargs, prompts=None, model=None, operation_name=
253
259
  or kwargs.get("top_k", None)
254
260
  or kwargs.get("top_n", None)
255
261
  )
256
-
262
+
257
263
  try:
258
264
  prompts = json.dumps(prompts) if prompts else None
259
265
  except Exception as e:
@@ -261,9 +267,13 @@ def get_llm_request_attributes(kwargs, prompts=None, model=None, operation_name=
261
267
  # check model
262
268
  if kwargs.get("model") is not None:
263
269
  if kwargs.get("model").startswith("gemini"):
264
- prompts = json.dumps(convert_gemini_messages_to_serializable(prompts))
270
+ prompts = json.dumps(
271
+ convert_gemini_messages_to_serializable(prompts)
272
+ )
265
273
  elif kwargs.get("model").startswith("mistral"):
266
- prompts = json.dumps(convert_mistral_messages_to_serializable(prompts))
274
+ prompts = json.dumps(
275
+ convert_mistral_messages_to_serializable(prompts)
276
+ )
267
277
  else:
268
278
  prompts = "[]"
269
279
  else:
@@ -427,6 +437,7 @@ class StreamWrapper:
427
437
  "".join(self.result_content), response_model
428
438
  )
429
439
  if self._span_started:
440
+ print("SPAAN", self.span)
430
441
  set_span_attribute(
431
442
  self.span,
432
443
  SpanAttributes.LLM_RESPONSE_MODEL,
@@ -570,6 +581,9 @@ class StreamWrapper:
570
581
  and not hasattr(chunk.delta, "message")
571
582
  ):
572
583
  content = [chunk.delta.text] if hasattr(chunk.delta, "text") else []
584
+ # OpenAI Responses API
585
+ if hasattr(chunk, "type") and chunk.type == "response.completed":
586
+ content = [chunk.response.output_text]
573
587
 
574
588
  if isinstance(chunk, dict):
575
589
  if "message" in chunk:
@@ -579,7 +593,11 @@ class StreamWrapper:
579
593
  self.result_content.append(content[0])
580
594
 
581
595
  def set_usage_attributes(self, chunk):
582
-
596
+ # Responses API OpenAI
597
+ if hasattr(chunk, "type") and chunk.type == "response.completed":
598
+ usage = chunk.response.usage
599
+ self.completion_tokens = usage.output_tokens
600
+ self.prompt_tokens = usage.input_tokens
583
601
  # Anthropic & OpenAI
584
602
  if hasattr(chunk, "type") and chunk.type == "message_start":
585
603
  if hasattr(chunk.message, "usage") and chunk.message.usage is not None:
@@ -630,6 +648,7 @@ class StreamWrapper:
630
648
  and chunk.data.choices is not None
631
649
  ):
632
650
  chunk = chunk.data
651
+
633
652
  self.set_response_model(chunk=chunk)
634
653
  self.build_streaming_response(chunk=chunk)
635
654
  self.set_usage_attributes(chunk=chunk)
@@ -0,0 +1 @@
1
+ __version__ = "3.8.7"
@@ -1 +0,0 @@
1
- __version__ = "3.8.6"