pygeai 0.6.0b11__py3-none-any.whl → 0.6.0b13__py3-none-any.whl
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.
- pygeai/_docs/source/content/ai_lab/cli.rst +4 -4
- pygeai/_docs/source/content/ai_lab/models.rst +169 -35
- pygeai/_docs/source/content/ai_lab/runner.rst +2 -2
- pygeai/_docs/source/content/ai_lab/spec.rst +9 -9
- pygeai/_docs/source/content/ai_lab/usage.rst +34 -34
- pygeai/_docs/source/content/ai_lab.rst +1 -1
- pygeai/_docs/source/content/analytics.rst +598 -0
- pygeai/_docs/source/content/api_reference/chat.rst +428 -2
- pygeai/_docs/source/content/api_reference/embeddings.rst +1 -1
- pygeai/_docs/source/content/api_reference/project.rst +184 -0
- pygeai/_docs/source/content/api_reference/rag.rst +2 -2
- pygeai/_docs/source/content/authentication.rst +295 -0
- pygeai/_docs/source/content/cli.rst +79 -2
- pygeai/_docs/source/content/debugger.rst +1 -1
- pygeai/_docs/source/content/migration.rst +19 -2
- pygeai/_docs/source/index.rst +2 -0
- pygeai/_docs/source/pygeai.analytics.rst +53 -0
- pygeai/_docs/source/pygeai.cli.commands.rst +8 -0
- pygeai/_docs/source/pygeai.rst +1 -0
- pygeai/_docs/source/pygeai.tests.analytics.rst +45 -0
- pygeai/_docs/source/pygeai.tests.auth.rst +8 -0
- pygeai/_docs/source/pygeai.tests.rst +1 -1
- pygeai/analytics/__init__.py +0 -0
- pygeai/analytics/clients.py +505 -0
- pygeai/analytics/endpoints.py +35 -0
- pygeai/analytics/managers.py +606 -0
- pygeai/analytics/mappers.py +207 -0
- pygeai/analytics/responses.py +240 -0
- pygeai/assistant/managers.py +1 -1
- pygeai/chat/managers.py +1 -1
- pygeai/cli/commands/analytics.py +525 -0
- pygeai/cli/commands/base.py +16 -0
- pygeai/cli/commands/common.py +28 -24
- pygeai/cli/commands/migrate.py +75 -6
- pygeai/cli/commands/organization.py +265 -0
- pygeai/cli/commands/validators.py +144 -1
- pygeai/cli/error_handler.py +41 -6
- pygeai/cli/geai.py +106 -18
- pygeai/cli/parsers.py +75 -31
- pygeai/cli/texts/help.py +75 -6
- pygeai/core/base/clients.py +18 -4
- pygeai/core/base/session.py +59 -7
- pygeai/core/common/config.py +25 -2
- pygeai/core/common/exceptions.py +64 -1
- pygeai/core/embeddings/managers.py +1 -1
- pygeai/core/files/managers.py +1 -1
- pygeai/core/rerank/managers.py +1 -1
- pygeai/core/services/rest.py +20 -2
- pygeai/evaluation/clients.py +5 -3
- pygeai/lab/agents/clients.py +3 -3
- pygeai/lab/agents/endpoints.py +2 -2
- pygeai/lab/agents/mappers.py +50 -2
- pygeai/lab/clients.py +5 -2
- pygeai/lab/managers.py +8 -10
- pygeai/lab/models.py +70 -2
- pygeai/lab/tools/clients.py +1 -59
- pygeai/migration/__init__.py +3 -1
- pygeai/migration/strategies.py +72 -3
- pygeai/organization/clients.py +110 -1
- pygeai/organization/endpoints.py +11 -7
- pygeai/organization/limits/managers.py +1 -1
- pygeai/organization/managers.py +135 -3
- pygeai/organization/mappers.py +28 -2
- pygeai/organization/responses.py +11 -1
- pygeai/tests/analytics/__init__.py +0 -0
- pygeai/tests/analytics/test_clients.py +86 -0
- pygeai/tests/analytics/test_managers.py +94 -0
- pygeai/tests/analytics/test_mappers.py +84 -0
- pygeai/tests/analytics/test_responses.py +73 -0
- pygeai/tests/auth/test_oauth.py +172 -0
- pygeai/tests/cli/commands/test_migrate.py +14 -1
- pygeai/tests/cli/commands/test_organization.py +69 -1
- pygeai/tests/cli/test_error_handler.py +4 -4
- pygeai/tests/cli/test_geai_driver.py +1 -1
- pygeai/tests/lab/agents/test_mappers.py +128 -1
- pygeai/tests/lab/test_models.py +2 -0
- pygeai/tests/lab/tools/test_clients.py +2 -31
- pygeai/tests/organization/test_clients.py +180 -1
- pygeai/tests/organization/test_managers.py +40 -0
- pygeai/tests/snippets/analytics/__init__.py +0 -0
- pygeai/tests/snippets/analytics/get_agent_usage_per_user.py +16 -0
- pygeai/tests/snippets/analytics/get_agents_created_and_modified.py +11 -0
- pygeai/tests/snippets/analytics/get_average_cost_per_request.py +10 -0
- pygeai/tests/snippets/analytics/get_overall_error_rate.py +10 -0
- pygeai/tests/snippets/analytics/get_top_10_agents_by_requests.py +12 -0
- pygeai/tests/snippets/analytics/get_total_active_users.py +10 -0
- pygeai/tests/snippets/analytics/get_total_cost.py +10 -0
- pygeai/tests/snippets/analytics/get_total_requests_per_day.py +12 -0
- pygeai/tests/snippets/analytics/get_total_tokens.py +12 -0
- pygeai/tests/snippets/chat/get_response_complete_example.py +67 -0
- pygeai/tests/snippets/chat/get_response_with_instructions.py +19 -0
- pygeai/tests/snippets/chat/get_response_with_metadata.py +24 -0
- pygeai/tests/snippets/chat/get_response_with_parallel_tools.py +58 -0
- pygeai/tests/snippets/chat/get_response_with_reasoning.py +21 -0
- pygeai/tests/snippets/chat/get_response_with_store.py +38 -0
- pygeai/tests/snippets/chat/get_response_with_truncation.py +24 -0
- pygeai/tests/snippets/lab/agents/create_agent_with_permissions.py +39 -0
- pygeai/tests/snippets/lab/agents/create_agent_with_properties.py +46 -0
- pygeai/tests/snippets/lab/agents/get_agent_with_new_fields.py +62 -0
- pygeai/tests/snippets/lab/agents/update_agent_properties.py +50 -0
- pygeai/tests/snippets/organization/add_project_member.py +10 -0
- pygeai/tests/snippets/organization/add_project_member_batch.py +44 -0
- {pygeai-0.6.0b11.dist-info → pygeai-0.6.0b13.dist-info}/METADATA +1 -1
- {pygeai-0.6.0b11.dist-info → pygeai-0.6.0b13.dist-info}/RECORD +108 -98
- pygeai/_docs/source/pygeai.tests.snippets.assistants.data_analyst.rst +0 -37
- pygeai/_docs/source/pygeai.tests.snippets.assistants.rag.rst +0 -85
- pygeai/_docs/source/pygeai.tests.snippets.assistants.rst +0 -78
- pygeai/_docs/source/pygeai.tests.snippets.auth.rst +0 -10
- pygeai/_docs/source/pygeai.tests.snippets.chat.rst +0 -125
- pygeai/_docs/source/pygeai.tests.snippets.dbg.rst +0 -45
- pygeai/_docs/source/pygeai.tests.snippets.embeddings.rst +0 -61
- pygeai/_docs/source/pygeai.tests.snippets.evaluation.dataset.rst +0 -197
- pygeai/_docs/source/pygeai.tests.snippets.evaluation.plan.rst +0 -133
- pygeai/_docs/source/pygeai.tests.snippets.evaluation.result.rst +0 -37
- pygeai/_docs/source/pygeai.tests.snippets.evaluation.rst +0 -20
- pygeai/_docs/source/pygeai.tests.snippets.extras.rst +0 -37
- pygeai/_docs/source/pygeai.tests.snippets.files.rst +0 -53
- pygeai/_docs/source/pygeai.tests.snippets.gam.rst +0 -21
- pygeai/_docs/source/pygeai.tests.snippets.lab.agents.rst +0 -93
- pygeai/_docs/source/pygeai.tests.snippets.lab.processes.jobs.rst +0 -21
- pygeai/_docs/source/pygeai.tests.snippets.lab.processes.kbs.rst +0 -45
- pygeai/_docs/source/pygeai.tests.snippets.lab.processes.rst +0 -46
- pygeai/_docs/source/pygeai.tests.snippets.lab.rst +0 -82
- pygeai/_docs/source/pygeai.tests.snippets.lab.samples.rst +0 -21
- pygeai/_docs/source/pygeai.tests.snippets.lab.strategies.rst +0 -45
- pygeai/_docs/source/pygeai.tests.snippets.lab.tools.rst +0 -85
- pygeai/_docs/source/pygeai.tests.snippets.lab.use_cases.rst +0 -117
- pygeai/_docs/source/pygeai.tests.snippets.migrate.rst +0 -10
- pygeai/_docs/source/pygeai.tests.snippets.organization.rst +0 -109
- pygeai/_docs/source/pygeai.tests.snippets.rag.rst +0 -85
- pygeai/_docs/source/pygeai.tests.snippets.rerank.rst +0 -21
- pygeai/_docs/source/pygeai.tests.snippets.rst +0 -32
- pygeai/_docs/source/pygeai.tests.snippets.secrets.rst +0 -10
- pygeai/_docs/source/pygeai.tests.snippets.usage_limit.rst +0 -77
- {pygeai-0.6.0b11.dist-info → pygeai-0.6.0b13.dist-info}/WHEEL +0 -0
- {pygeai-0.6.0b11.dist-info → pygeai-0.6.0b13.dist-info}/entry_points.txt +0 -0
- {pygeai-0.6.0b11.dist-info → pygeai-0.6.0b13.dist-info}/licenses/LICENSE +0 -0
- {pygeai-0.6.0b11.dist-info → pygeai-0.6.0b13.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
from pygeai.analytics.responses import (
|
|
2
|
+
AgentsCreatedAndModifiedResponse, AgentsCreatedAndModifiedPerDayResponse, AgentActivityPerDayItem,
|
|
3
|
+
FlowsCreatedAndModifiedResponse, FlowsCreatedAndModifiedPerDayResponse, FlowActivityPerDayItem,
|
|
4
|
+
ProcessesCreatedAndModifiedResponse, AgentUsagePerUserResponse, AgentUsagePerUserItem,
|
|
5
|
+
AverageCostPerRequestResponse, AverageCostPerUserResponse, AverageCostPerUserPerDateResponse,
|
|
6
|
+
CostPerUserPerDateItem, AverageRequestTimeResponse, AverageRequestsPerDayResponse,
|
|
7
|
+
AverageRequestsPerUserResponse, AverageRequestsPerUserPerDateResponse, RequestsPerUserPerDateItem,
|
|
8
|
+
AverageTokensPerRequestResponse, AverageUsersPerAgentResponse, UsersPerAgentItem,
|
|
9
|
+
AverageUsersPerProjectResponse, UsersPerProjectItem, NumberOfTokensResponse,
|
|
10
|
+
NumberOfTokensPerAgentResponse, TokensPerAgentItem, NumberOfTokensPerDayResponse, TokensPerDayItem,
|
|
11
|
+
OverallErrorRateResponse, Top10AgentsByRequestsResponse, AgentByRequestsItem,
|
|
12
|
+
Top10AgentsByTokensResponse, AgentByTokensItem, Top10UsersByCostResponse, UserByCostItem,
|
|
13
|
+
Top10UsersByRequestsResponse, UserByRequestsItem, TotalActiveAgentsResponse,
|
|
14
|
+
TotalActiveProjectsResponse, TotalActiveUsersResponse, TotalCostResponse,
|
|
15
|
+
TotalCostPerDayResponse, CostPerDayItem, TotalRequestTimeResponse, TotalRequestsResponse,
|
|
16
|
+
TotalRequestsPerDayResponse, RequestsPerDayItem, TotalRequestsWithErrorResponse, TotalTokensResponse
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class AnalyticsResponseMapper:
|
|
21
|
+
|
|
22
|
+
@classmethod
|
|
23
|
+
def map_to_agents_created_and_modified_response(cls, data: dict) -> AgentsCreatedAndModifiedResponse:
|
|
24
|
+
return AgentsCreatedAndModifiedResponse(
|
|
25
|
+
createdAgents=data.get("createdAgents", 0),
|
|
26
|
+
modifiedAgents=data.get("modifiedAgents", 0)
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
@classmethod
|
|
30
|
+
def map_to_agents_created_and_modified_per_day_response(cls, data: dict) -> AgentsCreatedAndModifiedPerDayResponse:
|
|
31
|
+
items_data = data.get("agentsCreatedAndModifiedPerDay", [])
|
|
32
|
+
items = [AgentActivityPerDayItem.model_validate(item) for item in items_data]
|
|
33
|
+
return AgentsCreatedAndModifiedPerDayResponse(agentsCreatedAndModifiedPerDay=items)
|
|
34
|
+
|
|
35
|
+
@classmethod
|
|
36
|
+
def map_to_flows_created_and_modified_response(cls, data: dict) -> FlowsCreatedAndModifiedResponse:
|
|
37
|
+
return FlowsCreatedAndModifiedResponse(
|
|
38
|
+
createdFlows=data.get("createdFlows", 0),
|
|
39
|
+
modifiedFlows=data.get("modifiedFlows", 0)
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
@classmethod
|
|
43
|
+
def map_to_flows_created_and_modified_per_day_response(cls, data: dict) -> FlowsCreatedAndModifiedPerDayResponse:
|
|
44
|
+
items_data = data.get("flowsCreatedAndModifiedPerDay", [])
|
|
45
|
+
items = [FlowActivityPerDayItem.model_validate(item) for item in items_data]
|
|
46
|
+
return FlowsCreatedAndModifiedPerDayResponse(flowsCreatedAndModifiedPerDay=items)
|
|
47
|
+
|
|
48
|
+
@classmethod
|
|
49
|
+
def map_to_processes_created_and_modified_response(cls, data: dict) -> ProcessesCreatedAndModifiedResponse:
|
|
50
|
+
return ProcessesCreatedAndModifiedResponse(
|
|
51
|
+
createdProcesses=data.get("createdProcesses", 0),
|
|
52
|
+
modifiedProcesses=data.get("modifiedProcesses", 0)
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
@classmethod
|
|
56
|
+
def map_to_agent_usage_per_user_response(cls, data: dict) -> AgentUsagePerUserResponse:
|
|
57
|
+
items_data = data.get("agentUsagePerUser", [])
|
|
58
|
+
items = [AgentUsagePerUserItem.model_validate(item) for item in items_data]
|
|
59
|
+
return AgentUsagePerUserResponse(agentUsagePerUser=items)
|
|
60
|
+
|
|
61
|
+
@classmethod
|
|
62
|
+
def map_to_average_cost_per_request_response(cls, data: dict) -> AverageCostPerRequestResponse:
|
|
63
|
+
return AverageCostPerRequestResponse(averageCost=data.get("averageCost", 0.0))
|
|
64
|
+
|
|
65
|
+
@classmethod
|
|
66
|
+
def map_to_average_cost_per_user_response(cls, data: dict) -> AverageCostPerUserResponse:
|
|
67
|
+
return AverageCostPerUserResponse(averageCost=data.get("averageCost", 0.0))
|
|
68
|
+
|
|
69
|
+
@classmethod
|
|
70
|
+
def map_to_average_cost_per_user_per_date_response(cls, data: dict) -> AverageCostPerUserPerDateResponse:
|
|
71
|
+
items_data = data.get("averageCostPerUserPerDate", [])
|
|
72
|
+
items = [CostPerUserPerDateItem.model_validate(item) for item in items_data]
|
|
73
|
+
return AverageCostPerUserPerDateResponse(averageCostPerUserPerDate=items)
|
|
74
|
+
|
|
75
|
+
@classmethod
|
|
76
|
+
def map_to_average_request_time_response(cls, data: dict) -> AverageRequestTimeResponse:
|
|
77
|
+
return AverageRequestTimeResponse(averageTime=data.get("averageTime", 0.0))
|
|
78
|
+
|
|
79
|
+
@classmethod
|
|
80
|
+
def map_to_average_requests_per_day_response(cls, data: dict) -> AverageRequestsPerDayResponse:
|
|
81
|
+
return AverageRequestsPerDayResponse(averageRequests=data.get("averageRequests", 0.0))
|
|
82
|
+
|
|
83
|
+
@classmethod
|
|
84
|
+
def map_to_average_requests_per_user_response(cls, data: dict) -> AverageRequestsPerUserResponse:
|
|
85
|
+
return AverageRequestsPerUserResponse(averageRequests=data.get("averageRequests", 0.0))
|
|
86
|
+
|
|
87
|
+
@classmethod
|
|
88
|
+
def map_to_average_requests_per_user_per_date_response(cls, data: dict) -> AverageRequestsPerUserPerDateResponse:
|
|
89
|
+
items_data = data.get("averageRequestsPerUserPerDate", [])
|
|
90
|
+
items = [RequestsPerUserPerDateItem.model_validate(item) for item in items_data]
|
|
91
|
+
return AverageRequestsPerUserPerDateResponse(averageRequestsPerUserPerDate=items)
|
|
92
|
+
|
|
93
|
+
@classmethod
|
|
94
|
+
def map_to_average_tokens_per_request_response(cls, data: dict) -> AverageTokensPerRequestResponse:
|
|
95
|
+
return AverageTokensPerRequestResponse(
|
|
96
|
+
averageInputTokens=data.get("averageInputTokens", 0.0),
|
|
97
|
+
averageOutputTokens=data.get("averageOutputTokens", 0.0),
|
|
98
|
+
averageTotalTokens=data.get("averageTotalTokens", 0.0)
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
@classmethod
|
|
102
|
+
def map_to_average_users_per_agent_response(cls, data: dict) -> AverageUsersPerAgentResponse:
|
|
103
|
+
items_data = data.get("averageUsersPerAgent", [])
|
|
104
|
+
items = [UsersPerAgentItem.model_validate(item) for item in items_data]
|
|
105
|
+
return AverageUsersPerAgentResponse(averageUsersPerAgent=items)
|
|
106
|
+
|
|
107
|
+
@classmethod
|
|
108
|
+
def map_to_average_users_per_project_response(cls, data: dict) -> AverageUsersPerProjectResponse:
|
|
109
|
+
items_data = data.get("averageUsersPerProject", [])
|
|
110
|
+
items = [UsersPerProjectItem.model_validate(item) for item in items_data]
|
|
111
|
+
return AverageUsersPerProjectResponse(averageUsersPerProject=items)
|
|
112
|
+
|
|
113
|
+
@classmethod
|
|
114
|
+
def map_to_number_of_tokens_response(cls, data: dict) -> NumberOfTokensResponse:
|
|
115
|
+
return NumberOfTokensResponse(
|
|
116
|
+
totalInputTokens=data.get("totalInputTokens", 0),
|
|
117
|
+
totalOutputTokens=data.get("totalOutputTokens", 0),
|
|
118
|
+
totalTokens=data.get("totalTokens", 0)
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
@classmethod
|
|
122
|
+
def map_to_number_of_tokens_per_agent_response(cls, data: dict) -> NumberOfTokensPerAgentResponse:
|
|
123
|
+
items_data = data.get("tokensPerAgent", [])
|
|
124
|
+
items = [TokensPerAgentItem.model_validate(item) for item in items_data]
|
|
125
|
+
return NumberOfTokensPerAgentResponse(tokensPerAgent=items)
|
|
126
|
+
|
|
127
|
+
@classmethod
|
|
128
|
+
def map_to_number_of_tokens_per_day_response(cls, data: dict) -> NumberOfTokensPerDayResponse:
|
|
129
|
+
items_data = data.get("tokensPerDay", [])
|
|
130
|
+
items = [TokensPerDayItem.model_validate(item) for item in items_data]
|
|
131
|
+
return NumberOfTokensPerDayResponse(tokensPerDay=items)
|
|
132
|
+
|
|
133
|
+
@classmethod
|
|
134
|
+
def map_to_overall_error_rate_response(cls, data: dict) -> OverallErrorRateResponse:
|
|
135
|
+
return OverallErrorRateResponse(errorRate=data.get("errorRate", 0.0))
|
|
136
|
+
|
|
137
|
+
@classmethod
|
|
138
|
+
def map_to_top_10_agents_by_requests_response(cls, data: dict) -> Top10AgentsByRequestsResponse:
|
|
139
|
+
items_data = data.get("topAgents", [])
|
|
140
|
+
items = [AgentByRequestsItem.model_validate(item) for item in items_data]
|
|
141
|
+
return Top10AgentsByRequestsResponse(topAgents=items)
|
|
142
|
+
|
|
143
|
+
@classmethod
|
|
144
|
+
def map_to_top_10_agents_by_tokens_response(cls, data: dict) -> Top10AgentsByTokensResponse:
|
|
145
|
+
items_data = data.get("topAgents", [])
|
|
146
|
+
items = [AgentByTokensItem.model_validate(item) for item in items_data]
|
|
147
|
+
return Top10AgentsByTokensResponse(topAgents=items)
|
|
148
|
+
|
|
149
|
+
@classmethod
|
|
150
|
+
def map_to_top_10_users_by_cost_response(cls, data: dict) -> Top10UsersByCostResponse:
|
|
151
|
+
items_data = data.get("topUsers", [])
|
|
152
|
+
items = [UserByCostItem.model_validate(item) for item in items_data]
|
|
153
|
+
return Top10UsersByCostResponse(topUsers=items)
|
|
154
|
+
|
|
155
|
+
@classmethod
|
|
156
|
+
def map_to_top_10_users_by_requests_response(cls, data: dict) -> Top10UsersByRequestsResponse:
|
|
157
|
+
items_data = data.get("topUsers", [])
|
|
158
|
+
items = [UserByRequestsItem.model_validate(item) for item in items_data]
|
|
159
|
+
return Top10UsersByRequestsResponse(topUsers=items)
|
|
160
|
+
|
|
161
|
+
@classmethod
|
|
162
|
+
def map_to_total_active_agents_response(cls, data: dict) -> TotalActiveAgentsResponse:
|
|
163
|
+
return TotalActiveAgentsResponse(totalActiveAgents=data.get("totalActiveAgents", 0))
|
|
164
|
+
|
|
165
|
+
@classmethod
|
|
166
|
+
def map_to_total_active_projects_response(cls, data: dict) -> TotalActiveProjectsResponse:
|
|
167
|
+
return TotalActiveProjectsResponse(totalActiveProjects=data.get("totalActiveProjects", 0))
|
|
168
|
+
|
|
169
|
+
@classmethod
|
|
170
|
+
def map_to_total_active_users_response(cls, data: dict) -> TotalActiveUsersResponse:
|
|
171
|
+
return TotalActiveUsersResponse(totalActiveUsers=data.get("totalActiveUsers", 0))
|
|
172
|
+
|
|
173
|
+
@classmethod
|
|
174
|
+
def map_to_total_cost_response(cls, data: dict) -> TotalCostResponse:
|
|
175
|
+
return TotalCostResponse(totalCost=data.get("totalCost", 0.0))
|
|
176
|
+
|
|
177
|
+
@classmethod
|
|
178
|
+
def map_to_total_cost_per_day_response(cls, data: dict) -> TotalCostPerDayResponse:
|
|
179
|
+
items_data = data.get("costPerDay", [])
|
|
180
|
+
items = [CostPerDayItem.model_validate(item) for item in items_data]
|
|
181
|
+
return TotalCostPerDayResponse(costPerDay=items)
|
|
182
|
+
|
|
183
|
+
@classmethod
|
|
184
|
+
def map_to_total_request_time_response(cls, data: dict) -> TotalRequestTimeResponse:
|
|
185
|
+
return TotalRequestTimeResponse(totalTime=data.get("totalTime", 0.0))
|
|
186
|
+
|
|
187
|
+
@classmethod
|
|
188
|
+
def map_to_total_requests_response(cls, data: dict) -> TotalRequestsResponse:
|
|
189
|
+
return TotalRequestsResponse(totalRequests=data.get("totalRequests", 0))
|
|
190
|
+
|
|
191
|
+
@classmethod
|
|
192
|
+
def map_to_total_requests_per_day_response(cls, data: dict) -> TotalRequestsPerDayResponse:
|
|
193
|
+
items_data = data.get("requestsPerDay", [])
|
|
194
|
+
items = [RequestsPerDayItem.model_validate(item) for item in items_data]
|
|
195
|
+
return TotalRequestsPerDayResponse(requestsPerDay=items)
|
|
196
|
+
|
|
197
|
+
@classmethod
|
|
198
|
+
def map_to_total_requests_with_error_response(cls, data: dict) -> TotalRequestsWithErrorResponse:
|
|
199
|
+
return TotalRequestsWithErrorResponse(totalRequestsWithError=data.get("totalRequestsWithError", 0))
|
|
200
|
+
|
|
201
|
+
@classmethod
|
|
202
|
+
def map_to_total_tokens_response(cls, data: dict) -> TotalTokensResponse:
|
|
203
|
+
return TotalTokensResponse(
|
|
204
|
+
totalInputTokens=data.get("totalInputTokens", 0),
|
|
205
|
+
totalOutputTokens=data.get("totalOutputTokens", 0),
|
|
206
|
+
totalTokens=data.get("totalTokens", 0)
|
|
207
|
+
)
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
from pydantic.main import BaseModel
|
|
2
|
+
from typing import Optional
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class AgentsCreatedAndModifiedResponse(BaseModel):
|
|
6
|
+
createdAgents: int
|
|
7
|
+
modifiedAgents: int
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class AgentActivityPerDayItem(BaseModel):
|
|
11
|
+
date: str
|
|
12
|
+
createdAgents: int
|
|
13
|
+
modifiedAgents: int
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class AgentsCreatedAndModifiedPerDayResponse(BaseModel):
|
|
17
|
+
agentsCreatedAndModifiedPerDay: list[AgentActivityPerDayItem]
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class FlowsCreatedAndModifiedResponse(BaseModel):
|
|
21
|
+
createdFlows: int
|
|
22
|
+
modifiedFlows: int
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class FlowActivityPerDayItem(BaseModel):
|
|
26
|
+
date: str
|
|
27
|
+
createdFlows: int
|
|
28
|
+
modifiedFlows: int
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class FlowsCreatedAndModifiedPerDayResponse(BaseModel):
|
|
32
|
+
flowsCreatedAndModifiedPerDay: list[FlowActivityPerDayItem]
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class ProcessesCreatedAndModifiedResponse(BaseModel):
|
|
36
|
+
createdProcesses: int
|
|
37
|
+
modifiedProcesses: int
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class AgentUsagePerUserItem(BaseModel):
|
|
41
|
+
userId: str
|
|
42
|
+
userName: Optional[str] = None
|
|
43
|
+
totalCost: float
|
|
44
|
+
totalRequests: int
|
|
45
|
+
totalTokens: int
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class AgentUsagePerUserResponse(BaseModel):
|
|
49
|
+
agentUsagePerUser: list[AgentUsagePerUserItem]
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
class AverageCostPerRequestResponse(BaseModel):
|
|
53
|
+
averageCost: float
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
class AverageCostPerUserResponse(BaseModel):
|
|
57
|
+
averageCost: float
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
class CostPerUserPerDateItem(BaseModel):
|
|
61
|
+
date: str
|
|
62
|
+
userId: str
|
|
63
|
+
userName: Optional[str] = None
|
|
64
|
+
averageCost: float
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
class AverageCostPerUserPerDateResponse(BaseModel):
|
|
68
|
+
averageCostPerUserPerDate: list[CostPerUserPerDateItem]
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
class AverageRequestTimeResponse(BaseModel):
|
|
72
|
+
averageTime: float
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
class AverageRequestsPerDayResponse(BaseModel):
|
|
76
|
+
averageRequests: float
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
class AverageRequestsPerUserResponse(BaseModel):
|
|
80
|
+
averageRequests: float
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
class RequestsPerUserPerDateItem(BaseModel):
|
|
84
|
+
date: str
|
|
85
|
+
userId: str
|
|
86
|
+
userName: Optional[str] = None
|
|
87
|
+
averageRequests: float
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
class AverageRequestsPerUserPerDateResponse(BaseModel):
|
|
91
|
+
averageRequestsPerUserPerDate: list[RequestsPerUserPerDateItem]
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
class AverageTokensPerRequestResponse(BaseModel):
|
|
95
|
+
averageInputTokens: float
|
|
96
|
+
averageOutputTokens: float
|
|
97
|
+
averageTotalTokens: float
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
class UsersPerAgentItem(BaseModel):
|
|
101
|
+
agentName: str
|
|
102
|
+
averageUsers: float
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
class AverageUsersPerAgentResponse(BaseModel):
|
|
106
|
+
averageUsersPerAgent: list[UsersPerAgentItem]
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
class UsersPerProjectItem(BaseModel):
|
|
110
|
+
projectId: str
|
|
111
|
+
projectName: Optional[str] = None
|
|
112
|
+
averageUsers: float
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
class AverageUsersPerProjectResponse(BaseModel):
|
|
116
|
+
averageUsersPerProject: list[UsersPerProjectItem]
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
class NumberOfTokensResponse(BaseModel):
|
|
120
|
+
totalInputTokens: int
|
|
121
|
+
totalOutputTokens: int
|
|
122
|
+
totalTokens: int
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
class TokensPerAgentItem(BaseModel):
|
|
126
|
+
agentName: str
|
|
127
|
+
model: str
|
|
128
|
+
inputTokens: int
|
|
129
|
+
outputTokens: int
|
|
130
|
+
totalTokens: int
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
class NumberOfTokensPerAgentResponse(BaseModel):
|
|
134
|
+
tokensPerAgent: list[TokensPerAgentItem]
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
class TokensPerDayItem(BaseModel):
|
|
138
|
+
date: str
|
|
139
|
+
inputTokens: int
|
|
140
|
+
outputTokens: int
|
|
141
|
+
totalTokens: int
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
class NumberOfTokensPerDayResponse(BaseModel):
|
|
145
|
+
tokensPerDay: list[TokensPerDayItem]
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
class OverallErrorRateResponse(BaseModel):
|
|
149
|
+
errorRate: float
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
class AgentByRequestsItem(BaseModel):
|
|
153
|
+
agentName: str
|
|
154
|
+
totalRequests: int
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
class Top10AgentsByRequestsResponse(BaseModel):
|
|
158
|
+
topAgents: list[AgentByRequestsItem]
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
class AgentByTokensItem(BaseModel):
|
|
162
|
+
agentName: str
|
|
163
|
+
totalTokens: int
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
class Top10AgentsByTokensResponse(BaseModel):
|
|
167
|
+
topAgents: list[AgentByTokensItem]
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
class UserByCostItem(BaseModel):
|
|
171
|
+
userId: str
|
|
172
|
+
userName: Optional[str] = None
|
|
173
|
+
totalCost: float
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
class Top10UsersByCostResponse(BaseModel):
|
|
177
|
+
topUsers: list[UserByCostItem]
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
class UserByRequestsItem(BaseModel):
|
|
181
|
+
userId: str
|
|
182
|
+
userName: Optional[str] = None
|
|
183
|
+
totalRequests: int
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
class Top10UsersByRequestsResponse(BaseModel):
|
|
187
|
+
topUsers: list[UserByRequestsItem]
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
class TotalActiveAgentsResponse(BaseModel):
|
|
191
|
+
totalActiveAgents: int
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
class TotalActiveProjectsResponse(BaseModel):
|
|
195
|
+
totalActiveProjects: int
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
class TotalActiveUsersResponse(BaseModel):
|
|
199
|
+
totalActiveUsers: int
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
class TotalCostResponse(BaseModel):
|
|
203
|
+
totalCost: float
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
class CostPerDayItem(BaseModel):
|
|
207
|
+
date: str
|
|
208
|
+
totalCost: float
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
class TotalCostPerDayResponse(BaseModel):
|
|
212
|
+
costPerDay: list[CostPerDayItem]
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
class TotalRequestTimeResponse(BaseModel):
|
|
216
|
+
totalTime: float
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
class TotalRequestsResponse(BaseModel):
|
|
220
|
+
totalRequests: int
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
class RequestsPerDayItem(BaseModel):
|
|
224
|
+
date: str
|
|
225
|
+
totalRequests: int
|
|
226
|
+
totalRequestsWithError: int
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
class TotalRequestsPerDayResponse(BaseModel):
|
|
230
|
+
requestsPerDay: list[RequestsPerDayItem]
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
class TotalRequestsWithErrorResponse(BaseModel):
|
|
234
|
+
totalRequestsWithError: int
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
class TotalTokensResponse(BaseModel):
|
|
238
|
+
totalInputTokens: int
|
|
239
|
+
totalOutputTokens: int
|
|
240
|
+
totalTokens: int
|
pygeai/assistant/managers.py
CHANGED
|
@@ -20,7 +20,7 @@ from pygeai.core.common.exceptions import MissingRequirementException, APIError
|
|
|
20
20
|
|
|
21
21
|
class AssistantManager:
|
|
22
22
|
|
|
23
|
-
def __init__(self, api_key: str = None, base_url: str = None, alias: str =
|
|
23
|
+
def __init__(self, api_key: str = None, base_url: str = None, alias: str = None):
|
|
24
24
|
self.__assistant_client = AssistantClient(api_key, base_url, alias)
|
|
25
25
|
self.__chat_client = ChatClient(api_key, base_url, alias)
|
|
26
26
|
self.__rag_client = RAGAssistantClient(api_key, base_url, alias)
|
pygeai/chat/managers.py
CHANGED
|
@@ -10,7 +10,7 @@ from pygeai.core.responses import ChatResponse, ProviderResponse
|
|
|
10
10
|
|
|
11
11
|
class ChatManager:
|
|
12
12
|
|
|
13
|
-
def __init__(self, api_key: str = None, base_url: str = None, alias: str =
|
|
13
|
+
def __init__(self, api_key: str = None, base_url: str = None, alias: str = None):
|
|
14
14
|
self.__chat_client = ChatClient(api_key, base_url, alias)
|
|
15
15
|
|
|
16
16
|
def chat_completion(
|