openlit 1.32.7__tar.gz → 1.32.8__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 (112) hide show
  1. {openlit-1.32.7 → openlit-1.32.8}/PKG-INFO +1 -1
  2. {openlit-1.32.7 → openlit-1.32.8}/pyproject.toml +1 -1
  3. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/langchain/__init__.py +6 -0
  4. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/langchain/langchain.py +22 -8
  5. {openlit-1.32.7 → openlit-1.32.8}/LICENSE +0 -0
  6. {openlit-1.32.7 → openlit-1.32.8}/README.md +0 -0
  7. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/__helpers.py +0 -0
  8. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/__init__.py +0 -0
  9. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/evals/__init__.py +0 -0
  10. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/evals/all.py +0 -0
  11. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/evals/bias_detection.py +0 -0
  12. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/evals/hallucination.py +0 -0
  13. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/evals/toxicity.py +0 -0
  14. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/evals/utils.py +0 -0
  15. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/guard/__init__.py +0 -0
  16. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/guard/all.py +0 -0
  17. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/guard/prompt_injection.py +0 -0
  18. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/guard/restrict_topic.py +0 -0
  19. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/guard/sensitive_topic.py +0 -0
  20. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/guard/utils.py +0 -0
  21. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/ag2/__init__.py +0 -0
  22. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/ag2/ag2.py +0 -0
  23. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/ai21/__init__.py +0 -0
  24. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/ai21/ai21.py +0 -0
  25. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/ai21/async_ai21.py +0 -0
  26. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/anthropic/__init__.py +0 -0
  27. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/anthropic/anthropic.py +0 -0
  28. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/anthropic/async_anthropic.py +0 -0
  29. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/assemblyai/__init__.py +0 -0
  30. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/assemblyai/assemblyai.py +0 -0
  31. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/astra/__init__.py +0 -0
  32. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/astra/astra.py +0 -0
  33. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/astra/async_astra.py +0 -0
  34. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/azure_ai_inference/__init__.py +0 -0
  35. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/azure_ai_inference/async_azure_ai_inference.py +0 -0
  36. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/azure_ai_inference/azure_ai_inference.py +0 -0
  37. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/bedrock/__init__.py +0 -0
  38. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/bedrock/bedrock.py +0 -0
  39. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/chroma/__init__.py +0 -0
  40. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/chroma/chroma.py +0 -0
  41. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/cohere/__init__.py +0 -0
  42. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/cohere/cohere.py +0 -0
  43. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/controlflow/__init__.py +0 -0
  44. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/controlflow/controlflow.py +0 -0
  45. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/crewai/__init__.py +0 -0
  46. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/crewai/crewai.py +0 -0
  47. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/dynamiq/__init__.py +0 -0
  48. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/dynamiq/dynamiq.py +0 -0
  49. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/elevenlabs/__init__.py +0 -0
  50. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/elevenlabs/async_elevenlabs.py +0 -0
  51. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/elevenlabs/elevenlabs.py +0 -0
  52. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/embedchain/__init__.py +0 -0
  53. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/embedchain/embedchain.py +0 -0
  54. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/google_ai_studio/__init__.py +0 -0
  55. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/google_ai_studio/async_google_ai_studio.py +0 -0
  56. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/google_ai_studio/google_ai_studio.py +0 -0
  57. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/gpt4all/__init__.py +0 -0
  58. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/gpt4all/gpt4all.py +0 -0
  59. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/gpu/__init__.py +0 -0
  60. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/groq/__init__.py +0 -0
  61. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/groq/async_groq.py +0 -0
  62. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/groq/groq.py +0 -0
  63. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/haystack/__init__.py +0 -0
  64. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/haystack/haystack.py +0 -0
  65. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/julep/__init__.py +0 -0
  66. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/julep/async_julep.py +0 -0
  67. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/julep/julep.py +0 -0
  68. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/litellm/__init__.py +0 -0
  69. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/litellm/async_litellm.py +0 -0
  70. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/litellm/litellm.py +0 -0
  71. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/llamaindex/__init__.py +0 -0
  72. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/llamaindex/llamaindex.py +0 -0
  73. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/mem0/__init__.py +0 -0
  74. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/mem0/mem0.py +0 -0
  75. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/milvus/__init__.py +0 -0
  76. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/milvus/milvus.py +0 -0
  77. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/mistral/__init__.py +0 -0
  78. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/mistral/async_mistral.py +0 -0
  79. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/mistral/mistral.py +0 -0
  80. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/multion/__init__.py +0 -0
  81. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/multion/async_multion.py +0 -0
  82. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/multion/multion.py +0 -0
  83. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/ollama/__init__.py +0 -0
  84. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/ollama/async_ollama.py +0 -0
  85. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/ollama/ollama.py +0 -0
  86. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/openai/__init__.py +0 -0
  87. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/openai/async_azure_openai.py +0 -0
  88. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/openai/async_openai.py +0 -0
  89. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/openai/azure_openai.py +0 -0
  90. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/openai/openai.py +0 -0
  91. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/phidata/__init__.py +0 -0
  92. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/phidata/phidata.py +0 -0
  93. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/pinecone/__init__.py +0 -0
  94. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/pinecone/pinecone.py +0 -0
  95. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/premai/__init__.py +0 -0
  96. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/premai/premai.py +0 -0
  97. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/qdrant/__init__.py +0 -0
  98. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/qdrant/async_qdrant.py +0 -0
  99. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/qdrant/qdrant.py +0 -0
  100. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/reka/__init__.py +0 -0
  101. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/reka/async_reka.py +0 -0
  102. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/reka/reka.py +0 -0
  103. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/transformers/__init__.py +0 -0
  104. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/transformers/transformers.py +0 -0
  105. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/vertexai/__init__.py +0 -0
  106. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/vertexai/async_vertexai.py +0 -0
  107. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/vertexai/vertexai.py +0 -0
  108. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/vllm/__init__.py +0 -0
  109. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/instrumentation/vllm/vllm.py +0 -0
  110. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/otel/metrics.py +0 -0
  111. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/otel/tracing.py +0 -0
  112. {openlit-1.32.7 → openlit-1.32.8}/src/openlit/semcov/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: openlit
3
- Version: 1.32.7
3
+ Version: 1.32.8
4
4
  Summary: OpenTelemetry-native Auto instrumentation library for monitoring LLM Applications and GPUs, facilitating the integration of observability into your GenAI-driven projects
5
5
  Home-page: https://github.com/openlit/openlit/tree/main/openlit/python
6
6
  Keywords: OpenTelemetry,otel,otlp,llm,tracing,openai,anthropic,claude,cohere,llm monitoring,observability,monitoring,gpt,Generative AI,chatGPT,gpu
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "openlit"
3
- version = "1.32.7"
3
+ version = "1.32.8"
4
4
  description = "OpenTelemetry-native Auto instrumentation library for monitoring LLM Applications and GPUs, facilitating the integration of observability into your GenAI-driven projects"
5
5
  authors = ["OpenLIT"]
6
6
  repository = "https://github.com/openlit/openlit/tree/main/openlit/python"
@@ -71,6 +71,12 @@ WRAPPED_METHODS = [
71
71
  "endpoint": "langchain.chat_models",
72
72
  "wrapper": achat,
73
73
  },
74
+ {
75
+ "package": "langchain.chains.base",
76
+ "object": "Chain.invoke",
77
+ "endpoint": "langchain.chain.invoke",
78
+ "wrapper": chat,
79
+ }
74
80
  ]
75
81
 
76
82
  class LangChainInstrumentor(BaseInstrumentor):
@@ -1,4 +1,4 @@
1
- # pylint: disable=duplicate-code, broad-exception-caught, too-many-statements, unused-argument, unused-import
1
+ # pylint: disable=duplicate-code, broad-exception-caught, too-many-statements, unused-argument, unused-import, too-many-function-args
2
2
  """
3
3
  Module for monitoring Langchain applications.
4
4
  """
@@ -507,12 +507,25 @@ def chat(gen_ai_endpoint, version, environment, application_name,
507
507
  response = wrapped(*args, **kwargs)
508
508
 
509
509
  try:
510
- token_usage = response.response_metadata.get("token_usage", {})
511
- input_tokens = token_usage.get("prompt_tokens", 0)
512
- output_tokens = token_usage.get("completion_tokens", 0)
513
- model = response.response_metadata.get("model_name", "gpt-4")
514
-
515
- prompt = "" if isinstance(args[0], list) else args[0]
510
+ prompt = ""
511
+ if hasattr(response, 'response_metadata') and response.response_metadata:
512
+ token_usage = response.response_metadata.get("token_usage", {})
513
+ input_tokens = token_usage.get("prompt_tokens", 0)
514
+ output_tokens = token_usage.get("completion_tokens", 0)
515
+ model = response.response_metadata.get("model_name", "gpt-4")
516
+ prompt = "" if isinstance(args[0], list) else args[0]
517
+ else:
518
+ if not isinstance(response, dict) or "output_text" not in response:
519
+ return response
520
+ # Fallback: Calculate tokens manually if response_metadata is missing
521
+ model = "gpt-4o-mini" # Fallback model
522
+ input_texts = [
523
+ doc.page_content for doc in response.get("input_documents", [])
524
+ if isinstance(doc.page_content, str)
525
+ ]
526
+ input_tokens = sum(general_tokens(text, model) for text in input_texts)
527
+ output_text = response.get("output_text", "")
528
+ output_tokens = general_tokens(output_text, model)
516
529
 
517
530
  # Calculate cost of the operation
518
531
  cost = get_chat_model_cost(
@@ -556,10 +569,11 @@ def chat(gen_ai_endpoint, version, environment, application_name,
556
569
  SemanticConvetion.GEN_AI_CONTENT_PROMPT: prompt,
557
570
  },
558
571
  )
572
+ completion_content = getattr(response, 'content', "")
559
573
  span.add_event(
560
574
  name=SemanticConvetion.GEN_AI_CONTENT_COMPLETION_EVENT,
561
575
  attributes={
562
- SemanticConvetion.GEN_AI_CONTENT_COMPLETION: response.content,
576
+ SemanticConvetion.GEN_AI_CONTENT_COMPLETION: completion_content,
563
577
  },
564
578
  )
565
579
 
File without changes
File without changes