aient 1.2.5__tar.gz → 1.2.7__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 (56) hide show
  1. {aient-1.2.5 → aient-1.2.7}/PKG-INFO +1 -1
  2. {aient-1.2.5 → aient-1.2.7}/aient/architext/architext/core.py +15 -2
  3. {aient-1.2.5 → aient-1.2.7}/aient/architext/test/test.py +59 -0
  4. {aient-1.2.5 → aient-1.2.7}/aient.egg-info/PKG-INFO +1 -1
  5. {aient-1.2.5 → aient-1.2.7}/pyproject.toml +1 -1
  6. {aient-1.2.5 → aient-1.2.7}/LICENSE +0 -0
  7. {aient-1.2.5 → aient-1.2.7}/README.md +0 -0
  8. {aient-1.2.5 → aient-1.2.7}/aient/__init__.py +0 -0
  9. {aient-1.2.5 → aient-1.2.7}/aient/architext/architext/__init__.py +0 -0
  10. {aient-1.2.5 → aient-1.2.7}/aient/architext/test/openai_client.py +0 -0
  11. {aient-1.2.5 → aient-1.2.7}/aient/architext/test/test_save_load.py +0 -0
  12. {aient-1.2.5 → aient-1.2.7}/aient/core/__init__.py +0 -0
  13. {aient-1.2.5 → aient-1.2.7}/aient/core/log_config.py +0 -0
  14. {aient-1.2.5 → aient-1.2.7}/aient/core/models.py +0 -0
  15. {aient-1.2.5 → aient-1.2.7}/aient/core/request.py +0 -0
  16. {aient-1.2.5 → aient-1.2.7}/aient/core/response.py +0 -0
  17. {aient-1.2.5 → aient-1.2.7}/aient/core/test/test_base_api.py +0 -0
  18. {aient-1.2.5 → aient-1.2.7}/aient/core/test/test_geminimask.py +0 -0
  19. {aient-1.2.5 → aient-1.2.7}/aient/core/test/test_image.py +0 -0
  20. {aient-1.2.5 → aient-1.2.7}/aient/core/test/test_payload.py +0 -0
  21. {aient-1.2.5 → aient-1.2.7}/aient/core/utils.py +0 -0
  22. {aient-1.2.5 → aient-1.2.7}/aient/models/__init__.py +0 -0
  23. {aient-1.2.5 → aient-1.2.7}/aient/models/audio.py +0 -0
  24. {aient-1.2.5 → aient-1.2.7}/aient/models/base.py +0 -0
  25. {aient-1.2.5 → aient-1.2.7}/aient/models/chatgpt.py +0 -0
  26. {aient-1.2.5 → aient-1.2.7}/aient/plugins/__init__.py +0 -0
  27. {aient-1.2.5 → aient-1.2.7}/aient/plugins/arXiv.py +0 -0
  28. {aient-1.2.5 → aient-1.2.7}/aient/plugins/config.py +0 -0
  29. {aient-1.2.5 → aient-1.2.7}/aient/plugins/excute_command.py +0 -0
  30. {aient-1.2.5 → aient-1.2.7}/aient/plugins/get_time.py +0 -0
  31. {aient-1.2.5 → aient-1.2.7}/aient/plugins/image.py +0 -0
  32. {aient-1.2.5 → aient-1.2.7}/aient/plugins/list_directory.py +0 -0
  33. {aient-1.2.5 → aient-1.2.7}/aient/plugins/read_file.py +0 -0
  34. {aient-1.2.5 → aient-1.2.7}/aient/plugins/read_image.py +0 -0
  35. {aient-1.2.5 → aient-1.2.7}/aient/plugins/readonly.py +0 -0
  36. {aient-1.2.5 → aient-1.2.7}/aient/plugins/registry.py +0 -0
  37. {aient-1.2.5 → aient-1.2.7}/aient/plugins/run_python.py +0 -0
  38. {aient-1.2.5 → aient-1.2.7}/aient/plugins/websearch.py +0 -0
  39. {aient-1.2.5 → aient-1.2.7}/aient/plugins/write_file.py +0 -0
  40. {aient-1.2.5 → aient-1.2.7}/aient/utils/__init__.py +0 -0
  41. {aient-1.2.5 → aient-1.2.7}/aient/utils/prompt.py +0 -0
  42. {aient-1.2.5 → aient-1.2.7}/aient/utils/scripts.py +0 -0
  43. {aient-1.2.5 → aient-1.2.7}/aient.egg-info/SOURCES.txt +0 -0
  44. {aient-1.2.5 → aient-1.2.7}/aient.egg-info/dependency_links.txt +0 -0
  45. {aient-1.2.5 → aient-1.2.7}/aient.egg-info/requires.txt +0 -0
  46. {aient-1.2.5 → aient-1.2.7}/aient.egg-info/top_level.txt +0 -0
  47. {aient-1.2.5 → aient-1.2.7}/setup.cfg +0 -0
  48. {aient-1.2.5 → aient-1.2.7}/test/test_Web_crawler.py +0 -0
  49. {aient-1.2.5 → aient-1.2.7}/test/test_ddg_search.py +0 -0
  50. {aient-1.2.5 → aient-1.2.7}/test/test_google_search.py +0 -0
  51. {aient-1.2.5 → aient-1.2.7}/test/test_ollama.py +0 -0
  52. {aient-1.2.5 → aient-1.2.7}/test/test_plugin.py +0 -0
  53. {aient-1.2.5 → aient-1.2.7}/test/test_search.py +0 -0
  54. {aient-1.2.5 → aient-1.2.7}/test/test_url.py +0 -0
  55. {aient-1.2.5 → aient-1.2.7}/test/test_whisper.py +0 -0
  56. {aient-1.2.5 → aient-1.2.7}/test/test_yjh.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aient
3
- Version: 1.2.5
3
+ Version: 1.2.7
4
4
  Summary: Aient: The Awakening of Agent.
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -360,7 +360,17 @@ class Message(ABC):
360
360
  if self._parent_messages:
361
361
  self._parent_messages._notify_provider_added(item, self)
362
362
 
363
- def provider(self) -> List[ContextProvider]: return self._items
363
+ def provider(self, name: Optional[str] = None) -> Optional[Union[ContextProvider, ProviderGroup, List[ContextProvider]]]:
364
+ if name is None:
365
+ return self._items
366
+
367
+ named_providers = [p for p in self._items if hasattr(p, 'name') and p.name == name]
368
+
369
+ if not named_providers:
370
+ return None
371
+ if len(named_providers) == 1:
372
+ return named_providers[0]
373
+ return ProviderGroup(named_providers)
364
374
 
365
375
  def __add__(self, other):
366
376
  if isinstance(other, str):
@@ -622,6 +632,9 @@ class Messages:
622
632
  logging.error(f"Could not deserialize file {file_path}: {e}")
623
633
  return cls()
624
634
 
625
- def __getitem__(self, index: int) -> Message: return self._messages[index]
635
+ def __getitem__(self, index: Union[int, slice]) -> Union[Message, 'Messages']:
636
+ if isinstance(index, slice):
637
+ return Messages(*self._messages[index])
638
+ return self._messages[index]
626
639
  def __len__(self) -> int: return len(self._messages)
627
640
  def __iter__(self): return iter(self._messages)
@@ -1158,6 +1158,65 @@ Current time: {Texts(lambda: datetime.now().strftime("%Y-%m-%d %H:%M:%S"))}
1158
1158
  with self.assertRaises(IndexError):
1159
1159
  _ = mess[2]
1160
1160
 
1161
+ async def test_zb_message_provider_by_name(self):
1162
+ """测试是否可以通过名称从 Message 对象中获取 provider"""
1163
+ # 1. 创建一个包含命名 provider 的 Message
1164
+ message = UserMessage(
1165
+ Texts("Some instruction", name="instruction"),
1166
+ Tools([{"name": "a_tool"}], name="tools"),
1167
+ Texts("Another instruction", name="instruction")
1168
+ )
1169
+
1170
+ # 2. 测试获取单个 provider
1171
+ tools_provider = message.provider("tools")
1172
+ self.assertIsInstance(tools_provider, Tools)
1173
+ self.assertEqual(tools_provider.name, "tools")
1174
+
1175
+ # 3. 测试获取多个同名 provider
1176
+ instruction_providers = message.provider("instruction")
1177
+ self.assertIsInstance(instruction_providers, ProviderGroup)
1178
+ self.assertEqual(len(instruction_providers), 2)
1179
+ self.assertTrue(all(isinstance(p, Texts) for p in instruction_providers))
1180
+
1181
+ # 4. 测试获取不存在的 provider
1182
+ non_existent_provider = message.provider("non_existent")
1183
+ self.assertIsNone(non_existent_provider)
1184
+
1185
+ async def test_zc_slicing_support(self):
1186
+ """测试 Messages 对象是否支持切片操作"""
1187
+ m1 = SystemMessage("1")
1188
+ m2 = UserMessage("2")
1189
+ m3 = AssistantMessage("3")
1190
+ m4 = UserMessage("4")
1191
+ messages = Messages(m1, m2, m3, m4)
1192
+
1193
+ # 1. Test basic slicing
1194
+ sliced_messages = messages[1:3]
1195
+ self.assertIsInstance(sliced_messages, Messages)
1196
+ self.assertEqual(len(sliced_messages), 2)
1197
+ self.assertIs(sliced_messages[0], m2)
1198
+ self.assertIs(sliced_messages[1], m3)
1199
+
1200
+ # 2. Test slicing with open end
1201
+ sliced_messages_open = messages[2:]
1202
+ self.assertIsInstance(sliced_messages_open, Messages)
1203
+ self.assertEqual(len(sliced_messages_open), 2)
1204
+ self.assertIs(sliced_messages_open[0], m3)
1205
+ self.assertIs(sliced_messages_open[1], m4)
1206
+
1207
+ # 3. Test slicing with open start
1208
+ sliced_messages_start = messages[:2]
1209
+ self.assertIsInstance(sliced_messages_start, Messages)
1210
+ self.assertEqual(len(sliced_messages_start), 2)
1211
+ self.assertIs(sliced_messages_start[0], m1)
1212
+ self.assertIs(sliced_messages_start[1], m2)
1213
+
1214
+ # 4. Test slicing a single element
1215
+ sliced_single = messages[2:3]
1216
+ self.assertIsInstance(sliced_single, Messages)
1217
+ self.assertEqual(len(sliced_single), 1)
1218
+ self.assertIs(sliced_single[0], m3)
1219
+
1161
1220
  # ==============================================================================
1162
1221
  # 6. 演示
1163
1222
  # ==============================================================================
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aient
3
- Version: 1.2.5
3
+ Version: 1.2.7
4
4
  Summary: Aient: The Awakening of Agent.
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "aient"
3
- version = "1.2.5"
3
+ version = "1.2.7"
4
4
  description = "Aient: The Awakening of Agent."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes