llumo 0.2.15b1__tar.gz → 0.2.16__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: llumo
3
- Version: 0.2.15b1
3
+ Version: 0.2.16
4
4
  Summary: Python SDK for interacting with the Llumo ai API.
5
5
  Home-page: https://www.llumo.ai/
6
6
  Author: Llumo
@@ -4,4 +4,5 @@ from .helpingFuntions import *
4
4
  from .models import AVAILABLEMODELS
5
5
  from .execution import ModelExecutor
6
6
  from .functionCalling import *
7
-
7
+ from .openai import openai
8
+ from .google import genai
@@ -0,0 +1,73 @@
1
+ import pandas as pd
2
+ from .helpingFuntions import *
3
+
4
+ class LlumoDataFrameResults(pd.DataFrame):
5
+ _metadata=["evals","evalData","definationMapping"]
6
+
7
+ def __init__(self, *args,evals=None,evalData=None,definationMapping=None,**kwargs):
8
+ self.evals = evals or []
9
+ self.evalData= evalData or []
10
+ self.definationMapping= definationMapping or {}
11
+ super().__init__(*args, **kwargs)
12
+
13
+ @property
14
+ def _constructor(self):
15
+ # Needed so slicing operations return the same type
16
+ return LlumoDataFrameResults
17
+
18
+ def insights(self):
19
+
20
+ if not self.evalData:
21
+ print("No raw data available. Please run evaluateMultiple() first.")
22
+ return None
23
+ try:
24
+ insights=[]
25
+ reasonData,uniqueEdgecase=groupLogsByClass(self.evalData) # print(rawResults)
26
+
27
+ for evalname in self.evals:
28
+ uniqueclassesstring = ",".join(uniqueEdgecase.get(evalname, []))
29
+ allReasons = []
30
+ for edgeCase in reasonData[evalname]:
31
+ allReasons.extend(reasonData[evalname][edgeCase])
32
+
33
+ evalDefinition = self.definationMapping.get(evalname, {}).get("definition", "")
34
+
35
+ insights.append(getPlaygroundInsights(evalDefinition,uniqueclassesstring,allReasons))
36
+ return insights
37
+ except Exception as e:
38
+
39
+ print("Can not genrate insights for this eval, please try again later.")
40
+
41
+
42
+ class LlumoDictResults(list):
43
+ _metadata=["evals","evalData","definationMapping"]
44
+
45
+ def __init__(self, *args,evals=None,evalData=None,definationMapping=None,**kwargs):
46
+ self.evals = evals or []
47
+ self.evalData= evalData or []
48
+ self.definationMapping= definationMapping or {}
49
+ super().__init__(*args, **kwargs) # This will handle list[dict]
50
+
51
+ def insights(self):
52
+
53
+ if not self.evalData:
54
+ print("No raw data available. Please run evaluateMultiple() first.")
55
+ return None
56
+ try:
57
+ insights=[]
58
+ reasonData,uniqueEdgecase=groupLogsByClass(self.evalData) # print(rawResults)
59
+ for evalname in self.evals:
60
+ uniqueclassesstring = ",".join(uniqueEdgecase.get(evalname, []))
61
+ allReasons = []
62
+ for edgeCase in reasonData[evalname]:
63
+ allReasons.extend(reasonData[evalname][edgeCase])
64
+ evalDefinition = self.definationMapping.get(evalname, {}).get("definition", "")
65
+ insights.append(getPlaygroundInsights(evalDefinition,uniqueclassesstring,allReasons))
66
+ return insights
67
+ except Exception as e:
68
+ print("Can not genrate insights for this eval, please try again later.")
69
+
70
+
71
+ for _cls in (LlumoDataFrameResults, LlumoDictResults):
72
+ _cls.__name__ = "LlumoResults"
73
+ _cls.__qualname__ = "LlumoResults"