monocle-apptrace 0.4.1__tar.gz → 0.4.2__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.

Potentially problematic release.


This version of monocle-apptrace might be problematic. Click here for more details.

Files changed (113) hide show
  1. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/CHANGELOG.md +5 -0
  2. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/PKG-INFO +1 -1
  3. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/pyproject.toml +1 -1
  4. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/common/wrapper_method.py +2 -1
  5. monocle_apptrace-0.4.2/src/monocle_apptrace/instrumentation/metamodel/gemini/_helper.py +76 -0
  6. monocle_apptrace-0.4.2/src/monocle_apptrace/instrumentation/metamodel/gemini/entities/inference.py +75 -0
  7. monocle_apptrace-0.4.2/src/monocle_apptrace/instrumentation/metamodel/gemini/methods.py +14 -0
  8. monocle_apptrace-0.4.2/src/monocle_apptrace/instrumentation/metamodel/teamsai/entities/__init__.py +0 -0
  9. monocle_apptrace-0.4.2/src/monocle_apptrace/instrumentation/metamodel/teamsai/entities/inference/__init__.py +0 -0
  10. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/.gitignore +0 -0
  11. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/CODEOWNERS.md +0 -0
  12. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/CODE_OF_CONDUCT.md +0 -0
  13. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/CONTRIBUTING.md +0 -0
  14. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/COPYRIGHT.template +0 -0
  15. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/LICENSE +0 -0
  16. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/MAINTAINER.md +0 -0
  17. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/Monocle_User_Guide.md +0 -0
  18. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/Monocle_committer_guide.md +0 -0
  19. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/Monocle_contributor_guide.md +0 -0
  20. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/NOTICE +0 -0
  21. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/README.md +0 -0
  22. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/SECURITY.md +0 -0
  23. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/README.md +0 -0
  24. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/__init__.py +0 -0
  25. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/__main__.py +0 -0
  26. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/exporters/aws/s3_exporter.py +0 -0
  27. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/exporters/aws/s3_exporter_opendal.py +0 -0
  28. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/exporters/azure/blob_exporter.py +0 -0
  29. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/exporters/azure/blob_exporter_opendal.py +0 -0
  30. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/exporters/base_exporter.py +0 -0
  31. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/exporters/exporter_processor.py +0 -0
  32. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/exporters/file_exporter.py +0 -0
  33. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/exporters/monocle_exporters.py +0 -0
  34. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/exporters/okahu/okahu_exporter.py +0 -0
  35. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/__init__.py +0 -0
  36. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/common/__init__.py +0 -0
  37. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/common/constants.py +0 -0
  38. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/common/instrumentor.py +0 -0
  39. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/common/span_handler.py +0 -0
  40. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/common/tracing.md +0 -0
  41. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/common/utils.py +0 -0
  42. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/common/wrapper.py +0 -0
  43. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/__init__.py +0 -0
  44. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/aiohttp/__init__.py +0 -0
  45. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/aiohttp/_helper.py +0 -0
  46. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/aiohttp/entities/http.py +0 -0
  47. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/aiohttp/methods.py +0 -0
  48. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/anthropic/__init__.py +0 -0
  49. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/anthropic/_helper.py +0 -0
  50. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/anthropic/entities/__init__.py +0 -0
  51. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/anthropic/entities/inference.py +0 -0
  52. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/anthropic/methods.py +0 -0
  53. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/azfunc/_helper.py +0 -0
  54. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/azfunc/entities/http.py +0 -0
  55. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/azfunc/methods.py +0 -0
  56. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/azfunc/wrapper.py +0 -0
  57. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/azureaiinference/__init__.py +0 -0
  58. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/azureaiinference/_helper.py +0 -0
  59. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/azureaiinference/entities/inference.py +0 -0
  60. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/azureaiinference/methods.py +0 -0
  61. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/botocore/__init__.py +0 -0
  62. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/botocore/_helper.py +0 -0
  63. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/botocore/entities/__init__.py +0 -0
  64. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/botocore/entities/inference.py +0 -0
  65. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/botocore/handlers/botocore_span_handler.py +0 -0
  66. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/botocore/methods.py +0 -0
  67. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/flask/__init__.py +0 -0
  68. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/flask/_helper.py +0 -0
  69. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/flask/entities/http.py +0 -0
  70. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/flask/methods.py +0 -0
  71. {monocle_apptrace-0.4.1/src/monocle_apptrace/instrumentation/metamodel/haystack → monocle_apptrace-0.4.2/src/monocle_apptrace/instrumentation/metamodel/gemini}/__init__.py +0 -0
  72. {monocle_apptrace-0.4.1/src/monocle_apptrace/instrumentation/metamodel/haystack → monocle_apptrace-0.4.2/src/monocle_apptrace/instrumentation/metamodel/gemini}/entities/__init__.py +0 -0
  73. {monocle_apptrace-0.4.1/src/monocle_apptrace/instrumentation/metamodel/langchain → monocle_apptrace-0.4.2/src/monocle_apptrace/instrumentation/metamodel/haystack}/__init__.py +0 -0
  74. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/haystack/_helper.py +0 -0
  75. {monocle_apptrace-0.4.1/src/monocle_apptrace/instrumentation/metamodel/langchain → monocle_apptrace-0.4.2/src/monocle_apptrace/instrumentation/metamodel/haystack}/entities/__init__.py +0 -0
  76. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/haystack/entities/inference.py +0 -0
  77. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/haystack/entities/retrieval.py +0 -0
  78. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/haystack/methods.py +0 -0
  79. {monocle_apptrace-0.4.1/src/monocle_apptrace/instrumentation/metamodel/langgraph → monocle_apptrace-0.4.2/src/monocle_apptrace/instrumentation/metamodel/langchain}/__init__.py +0 -0
  80. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/langchain/_helper.py +0 -0
  81. {monocle_apptrace-0.4.1/src/monocle_apptrace/instrumentation/metamodel/langgraph → monocle_apptrace-0.4.2/src/monocle_apptrace/instrumentation/metamodel/langchain}/entities/__init__.py +0 -0
  82. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/langchain/entities/inference.py +0 -0
  83. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/langchain/entities/retrieval.py +0 -0
  84. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/langchain/methods.py +0 -0
  85. {monocle_apptrace-0.4.1/src/monocle_apptrace/instrumentation/metamodel/llamaindex → monocle_apptrace-0.4.2/src/monocle_apptrace/instrumentation/metamodel/langgraph}/__init__.py +0 -0
  86. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/langgraph/_helper.py +0 -0
  87. {monocle_apptrace-0.4.1/src/monocle_apptrace/instrumentation/metamodel/llamaindex → monocle_apptrace-0.4.2/src/monocle_apptrace/instrumentation/metamodel/langgraph}/entities/__init__.py +0 -0
  88. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/langgraph/entities/inference.py +0 -0
  89. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/langgraph/methods.py +0 -0
  90. {monocle_apptrace-0.4.1/src/monocle_apptrace/instrumentation/metamodel/openai → monocle_apptrace-0.4.2/src/monocle_apptrace/instrumentation/metamodel/llamaindex}/__init__.py +0 -0
  91. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/llamaindex/_helper.py +0 -0
  92. {monocle_apptrace-0.4.1/src/monocle_apptrace/instrumentation/metamodel/openai → monocle_apptrace-0.4.2/src/monocle_apptrace/instrumentation/metamodel/llamaindex}/entities/__init__.py +0 -0
  93. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/llamaindex/entities/agent.py +0 -0
  94. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/llamaindex/entities/inference.py +0 -0
  95. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/llamaindex/entities/retrieval.py +0 -0
  96. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/llamaindex/methods.py +0 -0
  97. {monocle_apptrace-0.4.1/src/monocle_apptrace/instrumentation/metamodel/teamsai → monocle_apptrace-0.4.2/src/monocle_apptrace/instrumentation/metamodel/openai}/__init__.py +0 -0
  98. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/openai/_helper.py +0 -0
  99. {monocle_apptrace-0.4.1/src/monocle_apptrace/instrumentation/metamodel/teamsai → monocle_apptrace-0.4.2/src/monocle_apptrace/instrumentation/metamodel/openai}/entities/__init__.py +0 -0
  100. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/openai/entities/inference.py +0 -0
  101. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/openai/entities/retrieval.py +0 -0
  102. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/openai/methods.py +0 -0
  103. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/requests/__init__.py +0 -0
  104. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/requests/_helper.py +0 -0
  105. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/requests/entities/http.py +0 -0
  106. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/requests/methods.py +0 -0
  107. {monocle_apptrace-0.4.1/src/monocle_apptrace/instrumentation/metamodel/teamsai/entities/inference → monocle_apptrace-0.4.2/src/monocle_apptrace/instrumentation/metamodel/teamsai}/__init__.py +0 -0
  108. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/teamsai/_helper.py +0 -0
  109. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/teamsai/entities/inference/actionplanner_output_processor.py +0 -0
  110. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/teamsai/entities/inference/teamsai_output_processor.py +0 -0
  111. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/teamsai/methods.py +0 -0
  112. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/src/monocle_apptrace/instrumentation/metamodel/teamsai/sample.json +0 -0
  113. {monocle_apptrace-0.4.1 → monocle_apptrace-0.4.2}/tox.ini +0 -0
@@ -1,3 +1,8 @@
1
+
2
+ ## Version 0.4.2 (2025-06-26)
3
+
4
+ - Add gemini instrumentation ([#220](https://github.com/monocle2ai/monocle/pull/220))
5
+
1
6
  ## Version 0.4.1 (2025-06-17)
2
7
 
3
8
  - Add exception status code for Boto3 ([#211](https://github.com/monocle2ai/monocle/pull/211))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: monocle_apptrace
3
- Version: 0.4.1
3
+ Version: 0.4.2
4
4
  Summary: package with monocle genAI tracing
5
5
  Project-URL: Homepage, https://github.com/monocle2ai/monocle
6
6
  Project-URL: Issues, https://github.com/monocle2ai/monocle/issues
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "monocle_apptrace"
7
- version = "0.4.1"
7
+ version = "0.4.2"
8
8
  authors = []
9
9
  description = "package with monocle genAI tracing"
10
10
  readme = "README.md"
@@ -23,6 +23,7 @@ from monocle_apptrace.instrumentation.metamodel.aiohttp.methods import (AIOHTTP_
23
23
  from monocle_apptrace.instrumentation.metamodel.aiohttp._helper import aiohttpSpanHandler
24
24
  from monocle_apptrace.instrumentation.metamodel.azfunc._helper import (azureSpanHandler)
25
25
  from monocle_apptrace.instrumentation.metamodel.azfunc.methods import AZFUNC_HTTP_METHODS
26
+ from monocle_apptrace.instrumentation.metamodel.gemini.methods import GEMINI_METHODS
26
27
  class WrapperMethod:
27
28
  def __init__(
28
29
  self,
@@ -71,7 +72,7 @@ class WrapperMethod:
71
72
  def get_span_handler(self) -> SpanHandler:
72
73
  return self.span_handler()
73
74
 
74
- DEFAULT_METHODS_LIST = LANGCHAIN_METHODS + LLAMAINDEX_METHODS + HAYSTACK_METHODS + BOTOCORE_METHODS + FLASK_METHODS + REQUESTS_METHODS + LANGGRAPH_METHODS + OPENAI_METHODS + TEAMAI_METHODS + ANTHROPIC_METHODS + AIOHTTP_METHODS + AZURE_AI_INFERENCE_METHODS + AZFUNC_HTTP_METHODS
75
+ DEFAULT_METHODS_LIST = LANGCHAIN_METHODS + LLAMAINDEX_METHODS + HAYSTACK_METHODS + BOTOCORE_METHODS + FLASK_METHODS + REQUESTS_METHODS + LANGGRAPH_METHODS + OPENAI_METHODS + TEAMAI_METHODS + ANTHROPIC_METHODS + AIOHTTP_METHODS + AZURE_AI_INFERENCE_METHODS + AZFUNC_HTTP_METHODS + GEMINI_METHODS
75
76
 
76
77
  MONOCLE_SPAN_HANDLERS: Dict[str, SpanHandler] = {
77
78
  "default": SpanHandler(),
@@ -0,0 +1,76 @@
1
+ import logging
2
+ from monocle_apptrace.instrumentation.common.utils import (
3
+ get_exception_message,
4
+ get_status_code,
5
+ )
6
+
7
+ logger = logging.getLogger(__name__)
8
+
9
+ def resolve_from_alias(my_map, alias):
10
+ """Find a alias that is not none from list of aliases"""
11
+
12
+ for i in alias:
13
+ if i in my_map.keys():
14
+ return my_map[i]
15
+ return None
16
+
17
+ def extract_messages(kwargs):
18
+ """Extract system and user messages"""
19
+ try:
20
+ messages = []
21
+ config = kwargs.get('config')
22
+ if config and hasattr(config, 'system_instruction'):
23
+ system_instructions = getattr(config, 'system_instruction', None)
24
+ if system_instructions:
25
+ messages.append({'system': system_instructions})
26
+
27
+ contents = kwargs.get('contents')
28
+ if isinstance(contents, list):
29
+ for content in contents:
30
+ if hasattr(content, 'parts') and getattr(content, 'parts'):
31
+ part = content.parts[0]
32
+ if hasattr(part, 'text'):
33
+ messages.append({getattr(content, 'role', 'user'): part.text})
34
+ elif isinstance(contents, str):
35
+ messages.append({'input': contents})
36
+
37
+ return [str(message) for message in messages]
38
+ except Exception as e:
39
+ logger.warning("Warning: Error occurred in extract_messages: %s", str(e))
40
+ return []
41
+
42
+ def extract_assistant_message(arguments):
43
+ try:
44
+ status = get_status_code(arguments)
45
+ response: str = ""
46
+ if status == 'success':
47
+ if hasattr(arguments['result'], "text") and len(arguments['result'].text):
48
+ response = arguments['result'].text
49
+ else:
50
+ if arguments["exception"] is not None:
51
+ response = get_exception_message(arguments)
52
+ elif hasattr(arguments["result"], "error"):
53
+ response = arguments["result"].error
54
+ return response
55
+ except (IndexError, AttributeError) as e:
56
+ logger.warning("Warning: Error occurred in extract_assistant_message: %s", str(e))
57
+ return None
58
+
59
+ def extract_inference_endpoint(instance):
60
+ try:
61
+ if hasattr(instance,'_api_client') and hasattr(instance._api_client, '_http_options'):
62
+ if hasattr(instance._api_client._http_options,'base_url'):
63
+ return instance._api_client._http_options.base_url
64
+ except Exception as e:
65
+ logger.warning("Warning: Error occurred in inference endpoint: %s", str(e))
66
+ return []
67
+
68
+ def update_span_from_llm_response(response, instance):
69
+ meta_dict = {}
70
+ if response is not None and hasattr(response, "usage_metadata") and response.usage_metadata is not None:
71
+ token_usage = response.usage_metadata
72
+ if token_usage is not None:
73
+ meta_dict.update({"completion_tokens": token_usage.candidates_token_count})
74
+ meta_dict.update({"prompt_tokens": token_usage.prompt_token_count })
75
+ meta_dict.update({"total_tokens": token_usage.total_token_count})
76
+ return meta_dict
@@ -0,0 +1,75 @@
1
+ from monocle_apptrace.instrumentation.metamodel.gemini import (
2
+ _helper,
3
+ )
4
+ from monocle_apptrace.instrumentation.common.utils import get_llm_type, get_status, get_status_code
5
+ INFERENCE = {
6
+ "type": "inference",
7
+ "attributes": [
8
+ [
9
+ {
10
+ "_comment": "provider type , inference_endpoint",
11
+ "attribute": "type",
12
+ "accessor": lambda arguments: 'inference.gemini'
13
+ },
14
+ {
15
+ "attribute": "inference_endpoint",
16
+ "accessor": lambda arguments: _helper.extract_inference_endpoint(arguments['instance'])
17
+ }
18
+ ],
19
+ [
20
+ {
21
+ "_comment": "LLM Model",
22
+ "attribute": "name",
23
+ "accessor": lambda arguments: _helper.resolve_from_alias(arguments['kwargs'],
24
+ ['model'])
25
+ },
26
+ {
27
+ "attribute": "type",
28
+ "accessor": lambda arguments: 'model.llm.' + _helper.resolve_from_alias(arguments['kwargs'],
29
+ ['model'])
30
+ }
31
+ ]
32
+ ],
33
+ "events": [
34
+ {
35
+ "name": "data.input",
36
+ "attributes": [
37
+
38
+ {
39
+ "_comment": "this is instruction and user query to LLM",
40
+ "attribute": "input",
41
+ "accessor": lambda arguments: _helper.extract_messages(arguments['kwargs'])
42
+ }
43
+ ]
44
+ },
45
+ {
46
+ "name": "data.output",
47
+ "attributes": [
48
+ {
49
+ "_comment": "this is result from LLM",
50
+ "attribute": "status",
51
+ "accessor": lambda arguments: get_status(arguments)
52
+ },
53
+ {
54
+ "attribute": "status_code",
55
+ "accessor": lambda arguments: get_status_code(arguments)
56
+ },
57
+ {
58
+ "attribute": "response",
59
+ "accessor": lambda arguments: _helper.extract_assistant_message(arguments)
60
+ }
61
+ ]
62
+ },
63
+ {
64
+ "name": "metadata",
65
+ "attributes": [
66
+ {
67
+ "_comment": "this is metadata usage from LLM",
68
+ "accessor": lambda arguments: _helper.update_span_from_llm_response(arguments['result'], arguments['instance'])
69
+ }
70
+ ]
71
+ }
72
+
73
+
74
+ ]
75
+ }
@@ -0,0 +1,14 @@
1
+ from monocle_apptrace.instrumentation.common.wrapper import task_wrapper
2
+ from monocle_apptrace.instrumentation.metamodel.gemini.entities.inference import (
3
+ INFERENCE,
4
+ )
5
+
6
+ GEMINI_METHODS = [
7
+ {
8
+ "package": "google.genai.models",
9
+ "object": "Models",
10
+ "method": "generate_content",
11
+ "wrapper_method": task_wrapper,
12
+ "output_processor": INFERENCE,
13
+ }
14
+ ]