beswarm 0.2.94__py3-none-any.whl → 0.2.96__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.
@@ -188,9 +188,9 @@ class chatgpt(BaseLLM):
188
188
  ])
189
189
  self.conversation[convo_id].append(AssistantMessage(convert_functions_to_xml(function_arguments)))
190
190
  if image_message_list:
191
- self.conversation[convo_id].append(UserMessage(message + image_message_list))
191
+ self.conversation[convo_id].append(UserMessage(message + image_message_list, Texts("\n\nYour message **must** end with [done] to signify the end of your output.", name="done", visible=self.check_done)))
192
192
  else:
193
- self.conversation[convo_id].append(UserMessage(message))
193
+ self.conversation[convo_id].append(UserMessage(message, Texts("\n\nYour message **must** end with [done] to signify the end of your output.", name="done", visible=self.check_done)))
194
194
  else:
195
195
  self.conversation[convo_id].append(AssistantMessage("我已经执行过这个工具了,接下来我需要做什么?"))
196
196
  else:
@@ -600,9 +600,6 @@ class chatgpt(BaseLLM):
600
600
  else:
601
601
  all_responses.append(f"[{tool_name}({tool_args}) Result]:\n\n{tool_response}")
602
602
 
603
- if self.check_done:
604
- all_responses.append("Your message **must** end with [done] to signify the end of your output.")
605
-
606
603
  # 合并所有工具响应
607
604
  function_response = "\n\n".join(all_responses).strip()
608
605
  if missing_required_params:
@@ -7,7 +7,7 @@ from .registry import register_tool
7
7
 
8
8
  # 读取文件内容
9
9
  @register_tool()
10
- def read_file(file_path):
10
+ def read_file(file_path, head: int = None):
11
11
  """
12
12
  Description: Request to read the contents of a file at the specified path. Use this when you need to examine the contents of an existing file you do not know the contents of, for example to analyze code, review text files, or extract information from configuration files. Automatically extracts raw text from PDF and DOCX files. May not be suitable for other types of binary files, as it returns the raw content as a string.
13
13
 
@@ -16,6 +16,7 @@ Description: Request to read the contents of a file at the specified path. Use t
16
16
 
17
17
  参数:
18
18
  file_path: 要读取的文件路径,(required) The path of the file to read (relative to the current working directory)
19
+ head: (可选) 读取文件的前N行,默认为None,读取整个文件
19
20
 
20
21
  返回:
21
22
  文件内容的字符串
@@ -161,13 +162,23 @@ Examples:
161
162
  # 捕获在此块中可能发生的其他错误,例如未被早期检查捕获的文件读取问题
162
163
  return f"<tool_error>处理通用文件 '{file_path}' 时发生错误: {e}</tool_error>"
163
164
 
164
- if file_path.lower().endswith('.csv'):
165
- lines = text_content.splitlines(True)
166
- if len(lines) > 500:
167
- top_lines = lines[:250]
168
- bottom_lines = lines[-250:]
169
- omitted_count = len(lines) - 500
170
- text_content = "".join(top_lines) + f"\n... (中间省略了 {omitted_count} 行) ...\n" + "".join(bottom_lines)
165
+ if head is not None:
166
+ try:
167
+ num_lines = int(head)
168
+ if num_lines > 0:
169
+ lines = text_content.splitlines(True)
170
+ return "".join(lines[:num_lines])
171
+ except (ValueError, TypeError):
172
+ # Invalid head value, ignore and proceed with normal logic.
173
+ pass
174
+
175
+ # if file_path.lower().endswith('.csv'):
176
+ # lines = text_content.splitlines(True)
177
+ # if len(lines) > 500:
178
+ # top_lines = lines[:250]
179
+ # bottom_lines = lines[-250:]
180
+ # omitted_count = len(lines) - 500
181
+ # text_content = "".join(top_lines) + f"\n... (中间省略了 {omitted_count} 行) ...\n" + "".join(bottom_lines)
171
182
 
172
183
  # 返回文件内容
173
184
  return text_content
@@ -182,6 +193,6 @@ Examples:
182
193
 
183
194
  if __name__ == "__main__":
184
195
  # python -m beswarm.aient.aient.plugins.read_file
185
- result = read_file("./work/cax/Lenia Notebook.ipynb")
196
+ result = read_file("./work/cax/Lenia Notebook.ipynb", head=10)
186
197
  print(result)
187
198
  print(len(result))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: beswarm
3
- Version: 0.2.94
3
+ Version: 0.2.96
4
4
  Summary: MAS
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -26,7 +26,7 @@ beswarm/aient/aient/core/test/test_payload.py,sha256=8jBiJY1uidm1jzL-EiK0s6UGmW9
26
26
  beswarm/aient/aient/models/__init__.py,sha256=ZTiZgbfBPTjIPSKURE7t6hlFBVLRS9lluGbmqc1WjxQ,43
27
27
  beswarm/aient/aient/models/audio.py,sha256=kRd-8-WXzv4vwvsTGwnstK-WR8--vr9CdfCZzu8y9LA,1934
28
28
  beswarm/aient/aient/models/base.py,sha256=-nnihYnx-vHZMqeVO9ljjt3k4FcD3n-iMk4tT-10nRQ,7232
29
- beswarm/aient/aient/models/chatgpt.py,sha256=96E6Ggsy49GS_KWECi5agE0zeaEjaHTRd336fykyIJI,42606
29
+ beswarm/aient/aient/models/chatgpt.py,sha256=DtcbRJObXyCXlJdel9OItd1wgpOCVvenS2fXs4_xO34,42710
30
30
  beswarm/aient/aient/plugins/__init__.py,sha256=p3KO6Aa3Lupos4i2SjzLQw1hzQTigOAfEHngsldrsyk,986
31
31
  beswarm/aient/aient/plugins/arXiv.py,sha256=yHjb6PS3GUWazpOYRMKMzghKJlxnZ5TX8z9F6UtUVow,1461
32
32
  beswarm/aient/aient/plugins/config.py,sha256=TGgZ5SnNKZ8MmdznrZ-TEq7s2ulhAAwTSKH89bci3dA,7079
@@ -34,7 +34,7 @@ beswarm/aient/aient/plugins/excute_command.py,sha256=b-rxsyFN6_HnZJAhUi9Qsp8iJ6X
34
34
  beswarm/aient/aient/plugins/get_time.py,sha256=Ih5XIW5SDAIhrZ9W4Qe5Hs1k4ieKPUc_LAd6ySNyqZk,654
35
35
  beswarm/aient/aient/plugins/image.py,sha256=ZElCIaZznE06TN9xW3DrSukS7U3A5_cjk1Jge4NzPxw,2072
36
36
  beswarm/aient/aient/plugins/list_directory.py,sha256=V_uKkLx_fQDL5z__bSDC-PqAP-o32KmQW6Pdhx0Fx0s,1433
37
- beswarm/aient/aient/plugins/read_file.py,sha256=AOGGzSzkALG1R_ncpDmegX_zKFZBZr8ZhTBQCiwhZfU,8691
37
+ beswarm/aient/aient/plugins/read_file.py,sha256=qHAhdesOr1VMOCDkeHNvI8UV2ZI98HmJl6GhN4Aq9dU,9183
38
38
  beswarm/aient/aient/plugins/read_image.py,sha256=4FbIiMNVFUQpNyiH5ApGSRvOD9ujcXGyuqlGTJMd7ac,4017
39
39
  beswarm/aient/aient/plugins/readonly.py,sha256=qK5-kBM3NDH1b-otFxFHpAjV5BXEY_e7cTWBcpP7G5k,710
40
40
  beswarm/aient/aient/plugins/registry.py,sha256=YknzhieU_8nQ3oKlUSSWDB4X7t2Jx0JnqT2Jd9Xsvfk,3574
@@ -122,7 +122,7 @@ beswarm/tools/search_web.py,sha256=0fTeczXiOX_LJQGaLEGbuJtIPzofeuquGWEt3yDMtVw,1
122
122
  beswarm/tools/subtasks.py,sha256=NHDnmUhUPgDQKBACnpgErpFJRcsH0w_Q9VsyQjNvNHA,12658
123
123
  beswarm/tools/worker.py,sha256=mQ1qdrQ8MgL99byAbTvxfEByFFGN9mty3UHqHjARMQ8,2331
124
124
  beswarm/tools/write_csv.py,sha256=u0Hq18Ksfheb52MVtyLNCnSDHibITpsYBPs2ub7USYA,1466
125
- beswarm-0.2.94.dist-info/METADATA,sha256=1EjZIEk_5HUDXVCQBDuw10Ylu73BGqZXOtJHtJXlXko,3878
126
- beswarm-0.2.94.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
127
- beswarm-0.2.94.dist-info/top_level.txt,sha256=pJw4O87wvt5882smuSO6DfByJz7FJ8SxxT8h9fHCmpo,8
128
- beswarm-0.2.94.dist-info/RECORD,,
125
+ beswarm-0.2.96.dist-info/METADATA,sha256=0zhgegx3K6PKTRtbI64ZE96bNOgZqIf5yA_-zDbusVE,3878
126
+ beswarm-0.2.96.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
127
+ beswarm-0.2.96.dist-info/top_level.txt,sha256=pJw4O87wvt5882smuSO6DfByJz7FJ8SxxT8h9fHCmpo,8
128
+ beswarm-0.2.96.dist-info/RECORD,,