aient 1.1.26__tar.gz → 1.1.28__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 (81) hide show
  1. {aient-1.1.26/src/aient.egg-info → aient-1.1.28}/PKG-INFO +1 -1
  2. {aient-1.1.26 → aient-1.1.28}/setup.py +1 -1
  3. {aient-1.1.26 → aient-1.1.28}/src/aient/models/chatgpt.py +4 -0
  4. {aient-1.1.26 → aient-1.1.28}/src/aient/plugins/excute_command.py +9 -19
  5. {aient-1.1.26 → aient-1.1.28}/src/aient/plugins/list_directory.py +3 -3
  6. {aient-1.1.26 → aient-1.1.28}/src/aient/plugins/run_python.py +1 -1
  7. {aient-1.1.26 → aient-1.1.28}/src/aient/plugins/write_file.py +2 -14
  8. {aient-1.1.26 → aient-1.1.28}/src/aient/utils/scripts.py +13 -0
  9. {aient-1.1.26 → aient-1.1.28/src/aient.egg-info}/PKG-INFO +1 -1
  10. {aient-1.1.26 → aient-1.1.28}/LICENSE +0 -0
  11. {aient-1.1.26 → aient-1.1.28}/MANIFEST.in +0 -0
  12. {aient-1.1.26 → aient-1.1.28}/README.md +0 -0
  13. {aient-1.1.26 → aient-1.1.28}/setup.cfg +0 -0
  14. {aient-1.1.26 → aient-1.1.28}/src/aient/__init__.py +0 -0
  15. {aient-1.1.26 → aient-1.1.28}/src/aient/core/.git +0 -0
  16. {aient-1.1.26 → aient-1.1.28}/src/aient/core/.gitignore +0 -0
  17. {aient-1.1.26 → aient-1.1.28}/src/aient/core/__init__.py +0 -0
  18. {aient-1.1.26 → aient-1.1.28}/src/aient/core/log_config.py +0 -0
  19. {aient-1.1.26 → aient-1.1.28}/src/aient/core/models.py +0 -0
  20. {aient-1.1.26 → aient-1.1.28}/src/aient/core/request.py +0 -0
  21. {aient-1.1.26 → aient-1.1.28}/src/aient/core/response.py +0 -0
  22. {aient-1.1.26 → aient-1.1.28}/src/aient/core/test/test_base_api.py +0 -0
  23. {aient-1.1.26 → aient-1.1.28}/src/aient/core/test/test_geminimask.py +0 -0
  24. {aient-1.1.26 → aient-1.1.28}/src/aient/core/test/test_image.py +0 -0
  25. {aient-1.1.26 → aient-1.1.28}/src/aient/core/test/test_payload.py +0 -0
  26. {aient-1.1.26 → aient-1.1.28}/src/aient/core/utils.py +0 -0
  27. {aient-1.1.26 → aient-1.1.28}/src/aient/models/__init__.py +0 -0
  28. {aient-1.1.26 → aient-1.1.28}/src/aient/models/audio.py +0 -0
  29. {aient-1.1.26 → aient-1.1.28}/src/aient/models/base.py +0 -0
  30. {aient-1.1.26 → aient-1.1.28}/src/aient/models/claude.py +0 -0
  31. {aient-1.1.26 → aient-1.1.28}/src/aient/models/duckduckgo.py +0 -0
  32. {aient-1.1.26 → aient-1.1.28}/src/aient/models/gemini.py +0 -0
  33. {aient-1.1.26 → aient-1.1.28}/src/aient/models/groq.py +0 -0
  34. {aient-1.1.26 → aient-1.1.28}/src/aient/models/vertex.py +0 -0
  35. {aient-1.1.26 → aient-1.1.28}/src/aient/plugins/__init__.py +0 -0
  36. {aient-1.1.26 → aient-1.1.28}/src/aient/plugins/arXiv.py +0 -0
  37. {aient-1.1.26 → aient-1.1.28}/src/aient/plugins/config.py +0 -0
  38. {aient-1.1.26 → aient-1.1.28}/src/aient/plugins/get_time.py +0 -0
  39. {aient-1.1.26 → aient-1.1.28}/src/aient/plugins/image.py +0 -0
  40. {aient-1.1.26 → aient-1.1.28}/src/aient/plugins/read_file.py +0 -0
  41. {aient-1.1.26 → aient-1.1.28}/src/aient/plugins/read_image.py +0 -0
  42. {aient-1.1.26 → aient-1.1.28}/src/aient/plugins/readonly.py +0 -0
  43. {aient-1.1.26 → aient-1.1.28}/src/aient/plugins/registry.py +0 -0
  44. {aient-1.1.26 → aient-1.1.28}/src/aient/plugins/websearch.py +0 -0
  45. {aient-1.1.26 → aient-1.1.28}/src/aient/prompt/__init__.py +0 -0
  46. {aient-1.1.26 → aient-1.1.28}/src/aient/prompt/agent.py +0 -0
  47. {aient-1.1.26 → aient-1.1.28}/src/aient/utils/__init__.py +0 -0
  48. {aient-1.1.26 → aient-1.1.28}/src/aient/utils/prompt.py +0 -0
  49. {aient-1.1.26 → aient-1.1.28}/src/aient.egg-info/SOURCES.txt +0 -0
  50. {aient-1.1.26 → aient-1.1.28}/src/aient.egg-info/dependency_links.txt +0 -0
  51. {aient-1.1.26 → aient-1.1.28}/src/aient.egg-info/requires.txt +0 -0
  52. {aient-1.1.26 → aient-1.1.28}/src/aient.egg-info/top_level.txt +0 -0
  53. {aient-1.1.26 → aient-1.1.28}/test/test.py +0 -0
  54. {aient-1.1.26 → aient-1.1.28}/test/test_API.py +0 -0
  55. {aient-1.1.26 → aient-1.1.28}/test/test_Deepbricks.py +0 -0
  56. {aient-1.1.26 → aient-1.1.28}/test/test_Web_crawler.py +0 -0
  57. {aient-1.1.26 → aient-1.1.28}/test/test_aiwaves.py +0 -0
  58. {aient-1.1.26 → aient-1.1.28}/test/test_aiwaves_arxiv.py +0 -0
  59. {aient-1.1.26 → aient-1.1.28}/test/test_ask_gemini.py +0 -0
  60. {aient-1.1.26 → aient-1.1.28}/test/test_class.py +0 -0
  61. {aient-1.1.26 → aient-1.1.28}/test/test_claude.py +0 -0
  62. {aient-1.1.26 → aient-1.1.28}/test/test_claude_zh_char.py +0 -0
  63. {aient-1.1.26 → aient-1.1.28}/test/test_ddg_search.py +0 -0
  64. {aient-1.1.26 → aient-1.1.28}/test/test_download_pdf.py +0 -0
  65. {aient-1.1.26 → aient-1.1.28}/test/test_gemini.py +0 -0
  66. {aient-1.1.26 → aient-1.1.28}/test/test_get_token_dict.py +0 -0
  67. {aient-1.1.26 → aient-1.1.28}/test/test_google_search.py +0 -0
  68. {aient-1.1.26 → aient-1.1.28}/test/test_jieba.py +0 -0
  69. {aient-1.1.26 → aient-1.1.28}/test/test_json.py +0 -0
  70. {aient-1.1.26 → aient-1.1.28}/test/test_logging.py +0 -0
  71. {aient-1.1.26 → aient-1.1.28}/test/test_ollama.py +0 -0
  72. {aient-1.1.26 → aient-1.1.28}/test/test_plugin.py +0 -0
  73. {aient-1.1.26 → aient-1.1.28}/test/test_py_run.py +0 -0
  74. {aient-1.1.26 → aient-1.1.28}/test/test_requests.py +0 -0
  75. {aient-1.1.26 → aient-1.1.28}/test/test_search.py +0 -0
  76. {aient-1.1.26 → aient-1.1.28}/test/test_tikitoken.py +0 -0
  77. {aient-1.1.26 → aient-1.1.28}/test/test_token.py +0 -0
  78. {aient-1.1.26 → aient-1.1.28}/test/test_url.py +0 -0
  79. {aient-1.1.26 → aient-1.1.28}/test/test_whisper.py +0 -0
  80. {aient-1.1.26 → aient-1.1.28}/test/test_wildcard.py +0 -0
  81. {aient-1.1.26 → aient-1.1.28}/test/test_yjh.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aient
3
- Version: 1.1.26
3
+ Version: 1.1.28
4
4
  Summary: Aient: The Awakening of Agent.
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -4,7 +4,7 @@ from setuptools import setup, find_packages
4
4
 
5
5
  setup(
6
6
  name="aient",
7
- version="1.1.26",
7
+ version="1.1.28",
8
8
  description="Aient: The Awakening of Agent.",
9
9
  long_description=Path.open(Path("README.md"), encoding="utf-8").read(),
10
10
  long_description_content_type="text/markdown",
@@ -462,6 +462,10 @@ class chatgpt(BaseLLM):
462
462
  print("full_response", full_response)
463
463
  if function_parameter:
464
464
  need_function_call = True
465
+ if isinstance(self.conversation[convo_id][-1]["content"], str) and \
466
+ "<tool_error>" in self.conversation[convo_id][-1]["content"]:
467
+ need_function_call = False
468
+ full_response = "接下来我需要做什么?"
465
469
  else:
466
470
  need_function_call = False
467
471
  if self.print_log:
@@ -1,10 +1,9 @@
1
1
  import subprocess
2
2
  from .registry import register_tool
3
- from ..utils.scripts import sandbox
3
+ from ..utils.scripts import sandbox, unescape_html
4
4
 
5
5
  import re
6
6
  import os
7
- import html
8
7
  import select
9
8
 
10
9
  # 检查是否在 Unix-like 系统上 (pty 模块主要用于 Unix)
@@ -39,18 +38,6 @@ def compare_line(line: str) -> bool:
39
38
  # print(f"similarity: {similarity}")
40
39
  return similarity > 0.89
41
40
 
42
- def unescape_html(input_string: str) -> str:
43
- """
44
- 将字符串中的 HTML 实体(例如 &amp;)转换回其原始字符(例如 &)。
45
-
46
- Args:
47
- input_string: 包含 HTML 实体的输入字符串。
48
-
49
- Returns:
50
- 转换后的字符串。
51
- """
52
- return html.unescape(input_string)
53
-
54
41
  def get_python_executable(command: str) -> str:
55
42
  """
56
43
  获取 Python 可执行文件的路径。
@@ -191,18 +178,21 @@ def excute_command(command):
191
178
  # print(f"output_lines: {len(new_output_lines)}")
192
179
 
193
180
  if process.returncode == 0:
194
- return f"执行命令成功:\n{final_output_log}"
181
+ if final_output_log.strip() == "":
182
+ return f"执行命令成功"
183
+ else:
184
+ return f"执行命令成功:\n{final_output_log.strip()}"
195
185
  else:
196
186
  # 如果是 PTY 模式,stderr 已经包含在 final_output_log 中
197
187
  if IS_UNIX:
198
- return f"执行命令失败 (退出码 {process.returncode}):\n输出/错误:\n{final_output_log}"
188
+ return f"<tool_error>执行命令失败 (退出码 {process.returncode}):\n输出/错误:\n{final_output_log}</tool_error>"
199
189
  else:
200
- return f"执行命令失败 (退出码 {process.returncode}):\n错误: {stderr_output}\n输出: {final_output_log}"
190
+ return f"<tool_error>执行命令失败 (退出码 {process.returncode}):\n错误: {stderr_output}\n输出: {final_output_log}</tool_error>"
201
191
 
202
192
  except FileNotFoundError:
203
- return f"执行命令失败: 命令或程序未找到 ({command})"
193
+ return f"<tool_error>执行命令失败: 命令或程序未找到 ({command})</tool_error>"
204
194
  except Exception as e:
205
- return f"执行命令时发生异常: {e}"
195
+ return f"<tool_error>执行命令时发生异常: {e}</tool_error>"
206
196
 
207
197
  if __name__ == "__main__":
208
198
  # print(excute_command("ls -l && echo 'Hello, World!'"))
@@ -43,8 +43,8 @@ def list_directory(path="."):
43
43
  return result
44
44
 
45
45
  except FileNotFoundError:
46
- return f"错误: 路径 '{path}' 不存在"
46
+ return f"<tool_error>路径 '{path}' 不存在</tool_error>"
47
47
  except PermissionError:
48
- return f"错误: 没有权限访问路径 '{path}'"
48
+ return f"<tool_error>没有权限访问路径 '{path}'</tool_error>"
49
49
  except Exception as e:
50
- return f"列出目录时发生错误: {e}"
50
+ return f"<tool_error>列出目录时发生错误: {e}</tool_error>"
@@ -129,7 +129,7 @@ if _result is not None:
129
129
 
130
130
  except Exception as e:
131
131
  logging.error(f"Error executing code: {str(e)}")
132
- return f"Error: {str(e)}"
132
+ return f"<tool_error>Error: {str(e)}</tool_error>"
133
133
 
134
134
  finally:
135
135
  try:
@@ -1,19 +1,7 @@
1
1
  from .registry import register_tool
2
+ from ..utils.scripts import unescape_html
2
3
 
3
4
  import os
4
- import html
5
-
6
- def unescape_html(input_string: str) -> str:
7
- """
8
- 将字符串中的 HTML 实体(例如 &amp;)转换回其原始字符(例如 &)。
9
-
10
- Args:
11
- input_string: 包含 HTML 实体的输入字符串。
12
-
13
- Returns:
14
- 转换后的字符串。
15
- """
16
- return html.unescape(input_string)
17
5
 
18
6
  @register_tool()
19
7
  def write_to_file(path, content, mode='w'):
@@ -65,7 +53,7 @@ Example: Requesting to write to frontend-config.json
65
53
  with open(path, mode, encoding='utf-8') as file:
66
54
  file.write(unescape_html(content))
67
55
  except PermissionError as e:
68
- return f"写入文件失败: {e}"
56
+ return f"<tool_error>写入文件失败: {e}</tool_error>"
69
57
 
70
58
  return f"已成功写入文件:{path}"
71
59
 
@@ -202,6 +202,19 @@ def parse_tools_from_cursor_prompt(text):
202
202
  print(f"解析 JSON 时出错: {e}")
203
203
  return []
204
204
 
205
+ import html
206
+ def unescape_html(input_string: str) -> str:
207
+ """
208
+ 将字符串中的 HTML 实体(例如 &amp;)转换回其原始字符(例如 &)。
209
+
210
+ Args:
211
+ input_string: 包含 HTML 实体的输入字符串。
212
+
213
+ Returns:
214
+ 转换后的字符串。
215
+ """
216
+ return html.unescape(input_string)
217
+
205
218
  import sys
206
219
  import shlex
207
220
  import builtins
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aient
3
- Version: 1.1.26
3
+ Version: 1.1.28
4
4
  Summary: Aient: The Awakening of Agent.
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
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