pygeai 0.4.0b3__py3-none-any.whl → 0.4.0b4__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.
Potentially problematic release.
This version of pygeai might be problematic. Click here for more details.
- pygeai/assistant/rag/models.py +1 -1
- pygeai/lab/models.py +1 -1
- pygeai/lab/processes/mappers.py +2 -2
- pygeai/lab/tools/mappers.py +5 -5
- pygeai/tests/integration/chat/__init__.py +0 -0
- pygeai/tests/integration/chat/test_generate_image.py +162 -0
- pygeai/tests/integration/lab/agents/test_create_agent.py +9 -12
- pygeai/tests/integration/lab/agents/test_update_agent.py +6 -14
- pygeai/tests/integration/lab/tools/test_create_tool.py +0 -1
- pygeai/tests/integration/lab/tools/test_list_tools.py +38 -0
- {pygeai-0.4.0b3.dist-info → pygeai-0.4.0b4.dist-info}/METADATA +4 -4
- {pygeai-0.4.0b3.dist-info → pygeai-0.4.0b4.dist-info}/RECORD +16 -13
- {pygeai-0.4.0b3.dist-info → pygeai-0.4.0b4.dist-info}/WHEEL +0 -0
- {pygeai-0.4.0b3.dist-info → pygeai-0.4.0b4.dist-info}/entry_points.txt +0 -0
- {pygeai-0.4.0b3.dist-info → pygeai-0.4.0b4.dist-info}/licenses/LICENSE +0 -0
- {pygeai-0.4.0b3.dist-info → pygeai-0.4.0b4.dist-info}/top_level.txt +0 -0
pygeai/assistant/rag/models.py
CHANGED
|
@@ -227,7 +227,7 @@ class SearchOptions(CustomBaseModel):
|
|
|
227
227
|
"ingestion": self.ingestion.to_dict() if self.ingestion else None,
|
|
228
228
|
"options": self.options,
|
|
229
229
|
"rerank": self.rerank,
|
|
230
|
-
"variables": self.variables.
|
|
230
|
+
"variables": self.variables.to_list() if self.variables else None,
|
|
231
231
|
"vectorStore": self.vector_store
|
|
232
232
|
}
|
|
233
233
|
return {k: v for k, v in result.items() if v is not None}
|
pygeai/lab/models.py
CHANGED
|
@@ -94,7 +94,7 @@ class Model(CustomBaseModel):
|
|
|
94
94
|
:param llm_config: Optional[LlmConfig] - Overrides default agent LLM settings.
|
|
95
95
|
:param prompt: Optional[dict] - A tailored prompt specific to this model.
|
|
96
96
|
"""
|
|
97
|
-
name: str = Field(
|
|
97
|
+
name: Optional[str] = Field(None, alias="name")
|
|
98
98
|
llm_config: Optional[LlmConfig] = Field(None, alias="llmConfig")
|
|
99
99
|
prompt: Optional[Dict[str, Any]] = Field(None, alias="prompt")
|
|
100
100
|
|
pygeai/lab/processes/mappers.py
CHANGED
pygeai/lab/tools/mappers.py
CHANGED
|
@@ -37,8 +37,8 @@ class ToolMapper:
|
|
|
37
37
|
"""
|
|
38
38
|
return [
|
|
39
39
|
ToolMessage(
|
|
40
|
-
description=msg
|
|
41
|
-
type=msg
|
|
40
|
+
description=msg.get("description"),
|
|
41
|
+
type=msg.get("type")
|
|
42
42
|
)
|
|
43
43
|
for msg in messages_data
|
|
44
44
|
]
|
|
@@ -55,9 +55,9 @@ class ToolMapper:
|
|
|
55
55
|
"""
|
|
56
56
|
tool_data = data.get("tool", data)
|
|
57
57
|
|
|
58
|
-
name = tool_data
|
|
59
|
-
description = tool_data
|
|
60
|
-
scope = tool_data
|
|
58
|
+
name = tool_data.get("name")
|
|
59
|
+
description = tool_data.get("description")
|
|
60
|
+
scope = tool_data.get("scope")
|
|
61
61
|
parameter_data = tool_data.get("parameters")
|
|
62
62
|
parameters = cls._map_parameters(parameter_data) if parameter_data else None
|
|
63
63
|
|
|
File without changes
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
from unittest import TestCase
|
|
2
|
+
from pygeai.chat.clients import ChatClient
|
|
3
|
+
|
|
4
|
+
chat_client: ChatClient
|
|
5
|
+
|
|
6
|
+
class TestChatGenerateImageIntegration(TestCase):
|
|
7
|
+
|
|
8
|
+
def setUp(self):
|
|
9
|
+
self.chat_client = ChatClient(alias="beta")
|
|
10
|
+
self.new_image = self.__load_image()
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def __load_image(self):
|
|
14
|
+
return {
|
|
15
|
+
"model": "openai/gpt-image-1",
|
|
16
|
+
"prompt": "generate an image of a futuristic city skyline at sunset",
|
|
17
|
+
"n": 1,
|
|
18
|
+
"quality": "high",
|
|
19
|
+
"size": "1024x1536"
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def __generate_image(self, image = None):
|
|
24
|
+
image = image if image is not None else self.new_image
|
|
25
|
+
return self.chat_client.generate_image(
|
|
26
|
+
model=image["model"],
|
|
27
|
+
prompt=image["prompt"],
|
|
28
|
+
n=image["n"],
|
|
29
|
+
quality=image["quality"],
|
|
30
|
+
size=image["size"],
|
|
31
|
+
aspect_ratio= image["aspect_ratio"] if "aspect_ratio" in image else None
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def test_generate_image(self):
|
|
36
|
+
created_image = self.__generate_image()
|
|
37
|
+
self.assertEqual(len(created_image["data"]), 1, "Expected an image to be generated")
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def test_generate_image_invalid_model(self):
|
|
41
|
+
self.new_image["model"] = "openai/gpt-image-10",
|
|
42
|
+
created_image = self.__generate_image()
|
|
43
|
+
|
|
44
|
+
self.assertEqual(
|
|
45
|
+
created_image["error"]["code"], 400,
|
|
46
|
+
"Expected a 400 code for invalid model"
|
|
47
|
+
)
|
|
48
|
+
self.assertEqual(
|
|
49
|
+
created_image["error"]["message"],
|
|
50
|
+
'Provider \'["openai\' does not exists.',
|
|
51
|
+
"Expected an error message when model does not exists"
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def test_generate_image_no_model(self):
|
|
56
|
+
self.new_image["model"] = ""
|
|
57
|
+
created_image = self.__generate_image()
|
|
58
|
+
|
|
59
|
+
self.assertEqual(
|
|
60
|
+
created_image["error"]["code"], 400,
|
|
61
|
+
"Expected a 400 code for no model"
|
|
62
|
+
)
|
|
63
|
+
self.assertEqual(
|
|
64
|
+
created_image["error"]["message"],
|
|
65
|
+
"Invalid 'model' name. Must follow pattern {provider}/{modelName}",
|
|
66
|
+
"Expected an error message when no model is provided"
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def test_generate_image_no_prompt(self):
|
|
71
|
+
self.new_image["prompt"] = ""
|
|
72
|
+
created_image = self.__generate_image()
|
|
73
|
+
|
|
74
|
+
self.assertEqual(
|
|
75
|
+
created_image["error"]["type"],
|
|
76
|
+
"invalid_request_error",
|
|
77
|
+
"Expected a 400 code for no model"
|
|
78
|
+
)
|
|
79
|
+
self.assertEqual(
|
|
80
|
+
created_image["error"]["param"], "prompt",
|
|
81
|
+
"Expected an error message when no model is provided"
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def test_generate_image_specific_n(self):
|
|
86
|
+
self.new_image["n"] = 2
|
|
87
|
+
|
|
88
|
+
created_image = self.__generate_image()
|
|
89
|
+
self.assertEqual(len(created_image["data"]), 2, "Expected two images to be generated")
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def test_generate_image_no_n(self):
|
|
93
|
+
self.new_image["n"] = None # default is 1
|
|
94
|
+
|
|
95
|
+
created_image = self.__generate_image()
|
|
96
|
+
self.assertEqual(len(created_image["data"]), 1, "Expected an image to be generated")
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def test_generate_image_no_supported_n(self):
|
|
100
|
+
self.new_image["model"] = "openai/dall-e-3"
|
|
101
|
+
self.new_image["n"] = 5
|
|
102
|
+
|
|
103
|
+
created_image = self.__generate_image()
|
|
104
|
+
self.assertIn(
|
|
105
|
+
"Invalid 'n': integer above maximum value",
|
|
106
|
+
created_image["error"]["message"],
|
|
107
|
+
"Expected an error message when n is not supported by the model"
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
def test_generate_image_no_quality(self):
|
|
112
|
+
self.new_image["quality"] = ""
|
|
113
|
+
|
|
114
|
+
created_image = self.__generate_image()
|
|
115
|
+
self.assertIn(
|
|
116
|
+
"Invalid value: ''. Supported values are: 'low', 'medium', 'high', and 'auto'",
|
|
117
|
+
created_image["error"]["message"],
|
|
118
|
+
"Expected an error message when quality is not provided"
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
def test_generate_image_no_supported_quality(self):
|
|
123
|
+
self.new_image["model"] = "openai/dall-e-3"
|
|
124
|
+
|
|
125
|
+
created_image = self.__generate_image()
|
|
126
|
+
self.assertIn(
|
|
127
|
+
"Invalid value: 'high'. Supported values are: 'standard' and 'hd'",
|
|
128
|
+
created_image["error"]["message"],
|
|
129
|
+
"Expected an error message when quality is not supported by the model"
|
|
130
|
+
)
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
def test_generate_image_no_size(self):
|
|
134
|
+
self.new_image["size"] = ""
|
|
135
|
+
|
|
136
|
+
created_image = self.__generate_image()
|
|
137
|
+
self.assertIn(
|
|
138
|
+
"Invalid value: ''. Supported values are: '1024x1024', '1024x1536', '1536x1024', and 'auto'",
|
|
139
|
+
created_image["error"]["message"],
|
|
140
|
+
"Expected an error message when no size is provided"
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
def test_generate_image_no_supported_size(self):
|
|
145
|
+
self.new_image["size"] = 1024
|
|
146
|
+
self.new_image["quality"] = None
|
|
147
|
+
|
|
148
|
+
created_image = self.__generate_image()
|
|
149
|
+
self.assertIn(
|
|
150
|
+
"Invalid type for 'size': expected one of '1024x1024', '1024x1536', '1536x1024', or 'auto', but got an integer instead",
|
|
151
|
+
created_image["error"]["message"],
|
|
152
|
+
"Expected an error message when no size is provided"
|
|
153
|
+
)
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
def test_generate_image_with_aspect_ratio(self):
|
|
157
|
+
self.new_image["model"] = "vertex_ai/imagen-3.0-generate-001"
|
|
158
|
+
self.new_image["aspect_ratio"] = "4:3"
|
|
159
|
+
self.new_image["quality"] = None
|
|
160
|
+
|
|
161
|
+
created_image = self.__generate_image()
|
|
162
|
+
self.assertEqual(len(created_image["data"]), 1, "Expected an image to be generated")
|
|
@@ -287,21 +287,18 @@ class TestAILabCreateAgentIntegration(TestCase):
|
|
|
287
287
|
)
|
|
288
288
|
|
|
289
289
|
|
|
290
|
-
@unittest.skip("Agent is getting created regardless of the prompt instructions being empty")
|
|
291
290
|
def test_create_agent_no_prompt_instructions(self):
|
|
292
291
|
self.new_agent.agent_data.prompt.instructions = ""
|
|
293
|
-
|
|
294
|
-
self.__create_agent()
|
|
295
|
-
self.assertIn(
|
|
296
|
-
"instructions",
|
|
297
|
-
str(exception.exception),
|
|
298
|
-
"Expected a validation error about allowed values for instructions"
|
|
299
|
-
)
|
|
292
|
+
self.created_agent = self.__create_agent()
|
|
300
293
|
|
|
301
|
-
self.
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
294
|
+
self.assertTrue(
|
|
295
|
+
isinstance(self.created_agent, Agent),
|
|
296
|
+
"Expected a created agent"
|
|
297
|
+
)
|
|
298
|
+
|
|
299
|
+
self.assertIsNone(
|
|
300
|
+
self.created_agent.agent_data.prompt.instructions,
|
|
301
|
+
"Expected the created agent to not have prompt instructions"
|
|
305
302
|
)
|
|
306
303
|
|
|
307
304
|
|
|
@@ -207,28 +207,20 @@ class TestAILabUpdateAgentIntegration(TestCase):
|
|
|
207
207
|
f"Expected a validation error about allowed values for instructions when autopublish is {'enabled' if auto_publish else 'disabled'}"
|
|
208
208
|
)
|
|
209
209
|
|
|
210
|
-
|
|
210
|
+
# TODO: Change validation when API behavior is fixed
|
|
211
211
|
def test_update_agent_no_model(self):
|
|
212
212
|
test_params = [ True, False ]
|
|
213
213
|
self.agent_to_update.agent_data.models[0].name = ""
|
|
214
214
|
|
|
215
215
|
for auto_publish in test_params:
|
|
216
216
|
with self.subTest(input=auto_publish):
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
217
|
+
|
|
218
|
+
# If the agent is not published, the API returns a warning message for invalid model name. However, the sdk mapping is not returning it.
|
|
219
|
+
if auto_publish == False:
|
|
220
|
+
updated_agent = self.__update_agent(automatic_publish=auto_publish)
|
|
220
221
|
error_msg = str(exception.exception)
|
|
221
222
|
|
|
222
|
-
self.
|
|
223
|
-
"name",
|
|
224
|
-
error_msg,
|
|
225
|
-
"Expected a validation error about empty model name"
|
|
226
|
-
)
|
|
227
|
-
self.assertIn(
|
|
228
|
-
"Input should be a valid string [type=string_type, input_value=None, input_type=NoneType]",
|
|
229
|
-
error_msg,
|
|
230
|
-
"Expected a validation error about empty model name"
|
|
231
|
-
)
|
|
223
|
+
self.assertTrue(self.isInstance(updated_agent), Agent)
|
|
232
224
|
else:
|
|
233
225
|
with self.assertRaises(APIError) as exception:
|
|
234
226
|
self.__update_agent(automatic_publish=auto_publish)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
from unittest import TestCase
|
|
2
|
+
from pygeai.lab.managers import AILabManager
|
|
3
|
+
from pygeai.lab.models import ToolList, FilterSettings
|
|
4
|
+
import copy
|
|
5
|
+
|
|
6
|
+
ai_lab_manager: AILabManager
|
|
7
|
+
|
|
8
|
+
class TestAILabListToolsIntegration(TestCase):
|
|
9
|
+
|
|
10
|
+
def setUp(self):
|
|
11
|
+
self.ai_lab_manager = AILabManager(alias="beta")
|
|
12
|
+
self.filter_settings = FilterSettings(
|
|
13
|
+
allow_external=False,
|
|
14
|
+
allow_drafts=True,
|
|
15
|
+
access_scope="private"
|
|
16
|
+
)
|
|
17
|
+
""" list-tools or lt List tools
|
|
18
|
+
--project-id or --pid ID of the project
|
|
19
|
+
--id ID of the tool to filter by. Defaults to an empty string (no filtering).
|
|
20
|
+
--count Number of tools to retrieve. Defaults to '100'.
|
|
21
|
+
--access-scope Access scope of the tools, either "public" or "private". Defaults to "public".
|
|
22
|
+
--allow-drafts Whether to include draft tools. Defaults to 1 (True).
|
|
23
|
+
--scope Scope of the tools, must be 'builtin', 'external', or 'api'. Defaults to 'api'.
|
|
24
|
+
--allow-external Whether to include external tools. Defaults to 1 (True). """
|
|
25
|
+
|
|
26
|
+
def __list_tools(self, filter_settings: FilterSettings = None):
|
|
27
|
+
filter_settings = filter_settings if filter_settings != None else self.filter_settings
|
|
28
|
+
return self.ai_lab_manager.list_tools(filter_settings=filter_settings)
|
|
29
|
+
|
|
30
|
+
def test_private_list_tools(self):
|
|
31
|
+
result = self.__list_tools()
|
|
32
|
+
self.assertIsInstance(result, ToolList , "Expected a list of tools")
|
|
33
|
+
print(result)
|
|
34
|
+
for tool in result.tools:
|
|
35
|
+
self.assertTrue(tool.access_scope == "private", "Expected all tools to be private")
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pygeai
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.0b4
|
|
4
4
|
Summary: Software Development Kit to interact with Globant Enterprise AI.
|
|
5
5
|
Author-email: Globant <geai-sdk@globant.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -41,11 +41,11 @@ Dynamic: license-file
|
|
|
41
41
|
|
|
42
42
|
PyGEAI is a Software Development Kit (SDK) for interacting with [Globant Enterprise AI](https://wiki.genexus.com/enterprise-ai/wiki?8,Table+of+contents%3AEnterprise+AI). It comprises libraries, tools, code samples, and documentation to simplify your experience with the platform.
|
|
43
43
|
|
|
44
|
-
##
|
|
44
|
+
## Terms and conditions
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
By using the Python SDK to interact with Globant Enterprise AI, you agree with the following Terms and Conditions:
|
|
47
47
|
|
|
48
|
-
[
|
|
48
|
+
[Terms and Conditions](https://www.globant.com/enterprise-ai/terms-of-use)
|
|
49
49
|
|
|
50
50
|
## Compatibility
|
|
51
51
|
This package is compatible with the Globant Enterprise AI release from June 2025.
|
|
@@ -16,7 +16,7 @@ pygeai/assistant/rag/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
|
|
|
16
16
|
pygeai/assistant/rag/clients.py,sha256=9a8loVLRnVkA3nHvvOpbdUEhy_TEnHm1rhdBYrBVABE,15893
|
|
17
17
|
pygeai/assistant/rag/endpoints.py,sha256=7YlHIvAYj3-xsCWtVMDYobxXbAO0lCo9yJdOrQxwCrQ,1145
|
|
18
18
|
pygeai/assistant/rag/mappers.py,sha256=n3aeNXqz_7zq_JWq5wJfeNX1kvV3arOxAoUsqRYOZsc,8645
|
|
19
|
-
pygeai/assistant/rag/models.py,sha256=
|
|
19
|
+
pygeai/assistant/rag/models.py,sha256=g5UiHuRjobgU1WgUMxeBzXykxgJ5q7eb_YY8qDciNvw,15732
|
|
20
20
|
pygeai/assistant/rag/responses.py,sha256=fY97ibsCVLQ3Ssnjuvj-JeA883WqjOw7ZdxbpQp_B1E,196
|
|
21
21
|
pygeai/chat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
22
|
pygeai/chat/clients.py,sha256=QEyeTIPxp6xXKAEkE_XkjIxZDnaH808GKhIYr7ulrSA,10785
|
|
@@ -144,7 +144,7 @@ pygeai/health/endpoints.py,sha256=UAzMcqSXZtMj4r8M8B7a_a5LT6X_jMFNsCTvcsjNTYA,71
|
|
|
144
144
|
pygeai/lab/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
145
145
|
pygeai/lab/constants.py,sha256=ddgDnXP4GD0woi-FUJaJXzaWS3H6zmDN0B-v8utM95Q,170
|
|
146
146
|
pygeai/lab/managers.py,sha256=9wV6SipzsIwFP9SXsKqZ0X5x6KbUuo6iCxPZF4zNGj4,72714
|
|
147
|
-
pygeai/lab/models.py,sha256=
|
|
147
|
+
pygeai/lab/models.py,sha256=1m41gSqpXZVO9AcPVxzlsC-TgxZcCsgGUbpN5zoDMjU,71451
|
|
148
148
|
pygeai/lab/runners.py,sha256=-uaCPHpFyiKtVOxlEjPjAc9h-onSdGAcYJ5IAZPqlb0,4147
|
|
149
149
|
pygeai/lab/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
150
150
|
pygeai/lab/agents/clients.py,sha256=2SYNjyD9LZaOUxmTcrwzqcHwW7K1wAmYwen_u0G-RfU,22659
|
|
@@ -153,7 +153,7 @@ pygeai/lab/agents/mappers.py,sha256=K6rxsO2Nq6GglmCUmyDKUNmzTG8HRbCelap6qaVKXQw,
|
|
|
153
153
|
pygeai/lab/processes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
154
154
|
pygeai/lab/processes/clients.py,sha256=C1YYJE7c5qJSZUIDKzo5kK-LOZP6jbdrG01aE8zoEYg,51403
|
|
155
155
|
pygeai/lab/processes/endpoints.py,sha256=nFIEcNP22xe4j6URI6KcwTh7h-xgYjYYuHT6PDPiO3I,2100
|
|
156
|
-
pygeai/lab/processes/mappers.py,sha256=
|
|
156
|
+
pygeai/lab/processes/mappers.py,sha256=YOWcVKdcJmLMAq-f3qevzqQ8L_hjb0_jVXBdCHutpzk,15815
|
|
157
157
|
pygeai/lab/spec/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
158
158
|
pygeai/lab/spec/loader.py,sha256=Dq9MhLqFwF4RPdBBaqKPGqt43-PrNlsHpe-NXe4S0qQ,709
|
|
159
159
|
pygeai/lab/spec/parsers.py,sha256=oG7tY-GylweRxpvtCl3p53t0IoTX3UZFiB77x__3Qp8,646
|
|
@@ -164,7 +164,7 @@ pygeai/lab/strategies/mappers.py,sha256=6C_jubAVXMKLGQy5NUD0OX7SlrU2mLe2QsgzeJ1-
|
|
|
164
164
|
pygeai/lab/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
165
165
|
pygeai/lab/tools/clients.py,sha256=TfgociWyvzao3B6g2VfjAb6FmXp1YqmJRG2TT7RwOic,27441
|
|
166
166
|
pygeai/lab/tools/endpoints.py,sha256=HiGoMs4OVeCgH7EAERTtifFPl53NryA1Awh7D6AO8bA,699
|
|
167
|
-
pygeai/lab/tools/mappers.py,sha256=
|
|
167
|
+
pygeai/lab/tools/mappers.py,sha256=bYi5k36h0k4mCvOnV-r8YOHKz0U9P0mH21GNs20w2eM,4998
|
|
168
168
|
pygeai/man/__init__.py,sha256=gqGI92vUPt6RPweoWX3mTUYPWNDlm6aGUjQOnYXqthk,53
|
|
169
169
|
pygeai/man/man1/__init__.py,sha256=CFvES6cP_sbhgpm-I-QSbPC1f7Bw7cFsMW2-sxm4FtM,54
|
|
170
170
|
pygeai/man/man1/geai-proxy.1,sha256=N5jtjzS5dB3JjAkG0Rw8EBzhC6Jgoy6zbS7XDgcE4EA,6735
|
|
@@ -268,19 +268,22 @@ pygeai/tests/gam/test_clients.py,sha256=vNz-4ux0cubztTY-_fEPWEoMCt5VAmZLecd0V-sE
|
|
|
268
268
|
pygeai/tests/health/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
269
269
|
pygeai/tests/health/test_clients.py,sha256=kfakkZHFMfo2IAN-PzmtMGmgR4iNiN1RpRopI--0qHI,1525
|
|
270
270
|
pygeai/tests/integration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
271
|
+
pygeai/tests/integration/chat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
272
|
+
pygeai/tests/integration/chat/test_generate_image.py,sha256=byCQQK6dIy68yPAhAa66bh7N0Xz5WnKSClx1vaIIzZA,5431
|
|
271
273
|
pygeai/tests/integration/lab/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
272
274
|
pygeai/tests/integration/lab/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
273
275
|
pygeai/tests/integration/lab/agents/test_agents_list.py,sha256=F2KUCdeiaBC3dn8ARNWqSz_kJcRyA0HC1nquhamN35Q,4187
|
|
274
|
-
pygeai/tests/integration/lab/agents/test_create_agent.py,sha256=
|
|
276
|
+
pygeai/tests/integration/lab/agents/test_create_agent.py,sha256=yL3owPJP0RoHSy3lEAdH06LJXqxgt3f2l2plk75d4cc,14206
|
|
275
277
|
pygeai/tests/integration/lab/agents/test_create_sharing_link.py,sha256=y-e8Q_TfuLz7XXMRERSKA_-OQJUMBIsJcK0lQ0Oh858,2467
|
|
276
278
|
pygeai/tests/integration/lab/agents/test_delete_agent.py,sha256=sb3RfoZJdzQvcVdNcXY2C2FO3yY1ZNiAZ_6Ay6f331E,2524
|
|
277
279
|
pygeai/tests/integration/lab/agents/test_get_agent.py,sha256=oW1F6SENvhL9jZC021Rj-f_Xek2DSTx3SsZBr3YT6Hk,3666
|
|
278
280
|
pygeai/tests/integration/lab/agents/test_publish_agent_revision.py,sha256=4vpuAVBenLCyWvaKTA2PQVLn_e-abGDscngUzZm3dMs,5284
|
|
279
|
-
pygeai/tests/integration/lab/agents/test_update_agent.py,sha256=
|
|
281
|
+
pygeai/tests/integration/lab/agents/test_update_agent.py,sha256=1seho_GOtOHik_YJ9GPA4McSZorohhFRvuzY7UYXbxo,11726
|
|
280
282
|
pygeai/tests/integration/lab/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
281
|
-
pygeai/tests/integration/lab/tools/test_create_tool.py,sha256=
|
|
283
|
+
pygeai/tests/integration/lab/tools/test_create_tool.py,sha256=G74P0_DUMpfCH3HBvImpUKD_aMHT8V6uPyVzo2V81lg,12479
|
|
282
284
|
pygeai/tests/integration/lab/tools/test_delete_tool.py,sha256=wy979nZh8ERd-k3jhJTjHqG4wxWE4sx-r4yn2nBc7Aw,2913
|
|
283
285
|
pygeai/tests/integration/lab/tools/test_get_tool.py,sha256=3fVDQlklmvOUgYDp0ATv5RqRmApgD4Qw_YGqjBOaOOo,3437
|
|
286
|
+
pygeai/tests/integration/lab/tools/test_list_tools.py,sha256=afJ-Y11uCJEvfzs0FzdjExqksO3PswglWHEg2_nBJ-4,1725
|
|
284
287
|
pygeai/tests/lab/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
285
288
|
pygeai/tests/lab/test_managers.py,sha256=AsOAvyCkRpbskEy214aV2TwrqilWH6bxOiTWDOb1twQ,29778
|
|
286
289
|
pygeai/tests/lab/test_mappers.py,sha256=2cLSggf168XWFpeZeBR7uJ-8C32TKb7qA91i_9fr_b0,11409
|
|
@@ -489,9 +492,9 @@ pygeai/vendor/a2a/utils/helpers.py,sha256=6Tbd8SVfXvdNEk6WYmLOjrAxkzFf1aIg8dkFfB
|
|
|
489
492
|
pygeai/vendor/a2a/utils/message.py,sha256=gc_EKO69CJ4HkR76IFgsy-kENJz1dn7CfSgWJWvt-gs,2197
|
|
490
493
|
pygeai/vendor/a2a/utils/task.py,sha256=BYRA_L1HpoUGJAVlyHML0lCM9Awhf2Ovjj7oPFXKbh0,1647
|
|
491
494
|
pygeai/vendor/a2a/utils/telemetry.py,sha256=VvSp1Ztqaobkmq9-3sNhhPEilJS32-JTSfKzegkj6FU,10861
|
|
492
|
-
pygeai-0.4.
|
|
493
|
-
pygeai-0.4.
|
|
494
|
-
pygeai-0.4.
|
|
495
|
-
pygeai-0.4.
|
|
496
|
-
pygeai-0.4.
|
|
497
|
-
pygeai-0.4.
|
|
495
|
+
pygeai-0.4.0b4.dist-info/licenses/LICENSE,sha256=eHfqo7-AWS8cMq0cg03lq7owsLeCmZA-xS5L0kuHnl8,1474
|
|
496
|
+
pygeai-0.4.0b4.dist-info/METADATA,sha256=plyocQ_kqcryzOcFS26Ontgdg5bv5yMrbcitm3bsOcQ,6940
|
|
497
|
+
pygeai-0.4.0b4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
498
|
+
pygeai-0.4.0b4.dist-info/entry_points.txt,sha256=OAmwuXVCQBTCE3HeVegVd37hbhCcp9TPahvdrCuMYWw,178
|
|
499
|
+
pygeai-0.4.0b4.dist-info/top_level.txt,sha256=bJFwp2tURmCfB94yXDF7ylvdSJXFDDJsyUOb-7PJgwc,7
|
|
500
|
+
pygeai-0.4.0b4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|