beswarm 0.2.15__py3-none-any.whl → 0.2.17__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.
beswarm/aient/setup.py CHANGED
@@ -4,7 +4,7 @@ from setuptools import setup, find_packages
4
4
 
5
5
  setup(
6
6
  name="aient",
7
- version="1.1.43",
7
+ version="1.1.44",
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",
@@ -182,9 +182,15 @@ async def get_gemini_payload(request, engine, provider, api_key=None):
182
182
  processed_tools = []
183
183
  for tool in value:
184
184
  function_def = tool["function"]
185
+ # gemini不支持parameters里面的additionalProperties字段,需要删除
186
+ if safe_get(function_def, "parameters", "additionalProperties", default=None) is not None:
187
+ del function_def["parameters"]["additionalProperties"]
188
+
185
189
  # 处理 parameters.properties 中的 default 字段
186
190
  if safe_get(function_def, "parameters", "properties", default=None):
187
191
  for prop_value in function_def["parameters"]["properties"].values():
192
+ if "additionalProperties" in prop_value:
193
+ del prop_value["additionalProperties"]
188
194
  if "default" in prop_value:
189
195
  # 将 default 值添加到 description 中
190
196
  default_value = prop_value["default"]
@@ -570,6 +570,9 @@ class chatgpt(BaseLLM):
570
570
  elif tool_name == "read_image" and "<tool_error>" not in tool_response:
571
571
  tool_info["base64_image"] = tool_response
572
572
  all_responses.append(f"[{tool_name}({tool_args}) Result]:\n\nRead image successfully!")
573
+ elif tool_response.startswith("data:image/") and ";base64," in tool_response and "<tool_error>" not in tool_response:
574
+ tool_info["base64_image"] = tool_response
575
+ all_responses.append(f"[{tool_name}({tool_args}) Result]:\n\nRead image successfully!")
573
576
  else:
574
577
  all_responses.append(f"[{tool_name}({tool_args}) Result]:\n\n{tool_response}")
575
578
 
beswarm/tools/worker.py CHANGED
@@ -46,9 +46,15 @@ async def worker(goal, tools, work_dir, cache_messages=None):
46
46
  Returns:
47
47
  str: 当任务成功完成时,返回字符串 "任务已完成"。
48
48
  """
49
+ cache_dir = Path(work_dir) / ".beswarm"
50
+ cache_dir.mkdir(exist_ok=True)
51
+ cache_file = cache_dir / "work_agent_conversation_history.json"
52
+ if not cache_file.exists():
53
+ cache_file.write_text("[]", encoding="utf-8")
54
+
49
55
  DEBUG = os.getenv("DEBUG", "false").lower() in ("true", "1", "t", "yes")
50
56
  if DEBUG:
51
- log_file = open(Path(work_dir) / ".beswarm" / "history.log", "a", encoding="utf-8")
57
+ log_file = open(cache_dir / "history.log", "a", encoding="utf-8")
52
58
  log_file.write(f"========== {datetime.now().strftime('%Y-%m-%d %H:%M:%S')} ==========\n")
53
59
  original_stdout = sys.stdout
54
60
  original_stderr = sys.stderr
@@ -94,11 +100,7 @@ async def worker(goal, tools, work_dir, cache_messages=None):
94
100
  }
95
101
  if cache_messages:
96
102
  if isinstance(cache_messages, bool) and cache_messages == True:
97
- cache_messages = None
98
- cache_file_path = Path(work_dir) / ".beswarm" / "work_agent_conversation_history.json"
99
- if cache_file_path.exists():
100
- with cache_file_path.open("r", encoding="utf-8") as f:
101
- cache_messages = json.load(f)
103
+ cache_messages = json.loads(cache_file.read_text(encoding="utf-8"))
102
104
  if cache_messages and isinstance(cache_messages, list) and len(cache_messages) > 1:
103
105
  old_goal = extract_xml_content(cache_messages[1]["content"], "goal")
104
106
  if old_goal.strip() != goal.strip():
@@ -144,11 +146,7 @@ async def worker(goal, tools, work_dir, cache_messages=None):
144
146
  instruction_agent = chatgpt(**instruction_agent_config)
145
147
  conversation_history = copy.deepcopy(work_agent.conversation["default"])
146
148
 
147
- cache_dir = os.path.join(work_dir, ".beswarm")
148
- os.makedirs(cache_dir, exist_ok=True)
149
- cache_file = os.path.join(cache_dir, "work_agent_conversation_history.json")
150
- with open(cache_file, "w", encoding="utf-8") as f:
151
- f.write(json.dumps(conversation_history, ensure_ascii=False, indent=4))
149
+ cache_file.write_text(json.dumps(conversation_history, ensure_ascii=False, indent=4), encoding="utf-8")
152
150
 
153
151
  work_agent_system_prompt = conversation_history.pop(0)
154
152
  if conversation_history:
@@ -248,9 +246,15 @@ async def worker(goal, tools, work_dir, cache_messages=None):
248
246
  return "任务已完成"
249
247
 
250
248
  async def worker_gen(goal, tools, work_dir, cache_messages=None):
249
+ cache_dir = Path(work_dir) / ".beswarm"
250
+ cache_dir.mkdir(exist_ok=True)
251
+ cache_file = cache_dir / "work_agent_conversation_history.json"
252
+ if not cache_file.exists():
253
+ cache_file.write_text("[]", encoding="utf-8")
254
+
251
255
  DEBUG = os.getenv("DEBUG", "false").lower() in ("true", "1", "t", "yes")
252
256
  if DEBUG:
253
- log_file = open(Path(work_dir) / ".beswarm" / "history.log", "a", encoding="utf-8")
257
+ log_file = open(cache_dir / "history.log", "a", encoding="utf-8")
254
258
  log_file.write(f"========== {datetime.now().strftime('%Y-%m-%d %H:%M:%S')} ==========\n")
255
259
  original_stdout = sys.stdout
256
260
  original_stderr = sys.stderr
@@ -296,11 +300,7 @@ async def worker_gen(goal, tools, work_dir, cache_messages=None):
296
300
  }
297
301
  if cache_messages:
298
302
  if isinstance(cache_messages, bool) and cache_messages == True:
299
- cache_messages = None
300
- cache_file_path = Path(work_dir) / ".beswarm" / "work_agent_conversation_history.json"
301
- if cache_file_path.exists():
302
- with cache_file_path.open("r", encoding="utf-8") as f:
303
- cache_messages = json.load(f)
303
+ cache_messages = json.loads(cache_file.read_text(encoding="utf-8"))
304
304
  if cache_messages and isinstance(cache_messages, list) and len(cache_messages) > 1:
305
305
  old_goal = extract_xml_content(cache_messages[1]["content"], "goal")
306
306
  if old_goal.strip() != goal.strip():
@@ -346,11 +346,7 @@ async def worker_gen(goal, tools, work_dir, cache_messages=None):
346
346
  instruction_agent = chatgpt(**instruction_agent_config)
347
347
  conversation_history = copy.deepcopy(work_agent.conversation["default"])
348
348
 
349
- cache_dir = os.path.join(work_dir, ".beswarm")
350
- os.makedirs(cache_dir, exist_ok=True)
351
- cache_file = os.path.join(cache_dir, "work_agent_conversation_history.json")
352
- with open(cache_file, "w", encoding="utf-8") as f:
353
- f.write(json.dumps(conversation_history, ensure_ascii=False, indent=4))
349
+ cache_file.write_text(json.dumps(conversation_history, ensure_ascii=False, indent=4), encoding="utf-8")
354
350
 
355
351
  work_agent_system_prompt = conversation_history.pop(0)
356
352
  if conversation_history:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: beswarm
3
- Version: 0.2.15
3
+ Version: 0.2.17
4
4
  Summary: MAS
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -2,12 +2,12 @@ beswarm/__init__.py,sha256=HZjUOJtZR5QhMuDbq-wukQQn1VrBusNWai_ysGo-VVI,20
2
2
  beswarm/prompt.py,sha256=_hYKZ0MUiMRs3C-1PMlFKIVgTKFcp_irla3p3wQNF3c,32015
3
3
  beswarm/utils.py,sha256=xxbNifOPlfcVkKmF_qFzuEnZgF3MQg3mnOfz1EF0Qss,6697
4
4
  beswarm/aient/main.py,sha256=SiYAIgQlLJqYusnTVEJOx1WNkSJKMImhgn5aWjfroxg,3814
5
- beswarm/aient/setup.py,sha256=vShB3V7TWjyMHa7t3MhAUa_HjBN66F95l8awqEh8oGE,487
5
+ beswarm/aient/setup.py,sha256=G94zedNLlZ9Ys_8yft6otVsSzDN0k-iQ_x4VGTI-668,487
6
6
  beswarm/aient/src/aient/__init__.py,sha256=SRfF7oDVlOOAi6nGKiJIUK6B_arqYLO9iSMp-2IZZps,21
7
7
  beswarm/aient/src/aient/core/__init__.py,sha256=NxjebTlku35S4Dzr16rdSqSTWUvvwEeACe8KvHJnjPg,34
8
8
  beswarm/aient/src/aient/core/log_config.py,sha256=kz2_yJv1p-o3lUQOwA3qh-LSc3wMHv13iCQclw44W9c,274
9
9
  beswarm/aient/src/aient/core/models.py,sha256=d4MISNezTSe0ls0-fjuToI2SoT-sk5fWqAJuKVinIlo,7502
10
- beswarm/aient/src/aient/core/request.py,sha256=E2fujOgR8Jxl9kWVZcs7ylz9vftwIye3cbL6HgC-Gn4,71977
10
+ beswarm/aient/src/aient/core/request.py,sha256=90Mit0vrwoDJYQQVJmBltQdTnMaGKSmZNBMRXsoJ19A,72406
11
11
  beswarm/aient/src/aient/core/response.py,sha256=mAVsCnNhWY09DXNe0lyPUJq-1ljtGjC67Az-Uh7ozIw,35166
12
12
  beswarm/aient/src/aient/core/utils.py,sha256=NcXdb8zBN0GE01OGaUzg8U34RaraoFf2MaLDDGFvvC4,27492
13
13
  beswarm/aient/src/aient/core/test/test_base_api.py,sha256=pWnycRJbuPSXKKU9AQjWrMAX1wiLC_014Qc9hh5C2Pw,524
@@ -17,7 +17,7 @@ beswarm/aient/src/aient/core/test/test_payload.py,sha256=8jBiJY1uidm1jzL-EiK0s6U
17
17
  beswarm/aient/src/aient/models/__init__.py,sha256=ouNDNvoBBpIFrLsk09Q_sq23HR0GbLAKfGLIFmfEuXE,219
18
18
  beswarm/aient/src/aient/models/audio.py,sha256=kRd-8-WXzv4vwvsTGwnstK-WR8--vr9CdfCZzu8y9LA,1934
19
19
  beswarm/aient/src/aient/models/base.py,sha256=z-Z0pJfTN2x0cuwfvu0BdMRY9O-RmLwHEnBIJN1x4Fg,6719
20
- beswarm/aient/src/aient/models/chatgpt.py,sha256=MKCdstV_gTkcf_bT2mmQVDLgK5f4PUUfEO3_WHzahpE,46665
20
+ beswarm/aient/src/aient/models/chatgpt.py,sha256=Yum3_-LgHmFUII0AljfNNfSc8gBhJzyPYAWZJyr4yFo,46969
21
21
  beswarm/aient/src/aient/models/claude.py,sha256=JezghW7y0brl4Y5qiSHvnYR5prQCFywX4RViHt39pGI,26037
22
22
  beswarm/aient/src/aient/models/duckduckgo.py,sha256=1l7vYCs9SG5SWPCbcl7q6pCcB5AUF_r-a4l9frz3Ogo,8115
23
23
  beswarm/aient/src/aient/models/gemini.py,sha256=chGLc-8G_DAOxr10HPoOhvVFW1RvMgHd6mt--VyAW98,14730
@@ -134,8 +134,8 @@ beswarm/tools/request_input.py,sha256=gXNAJPOJektMqxJVyzNTFOeMQ7xUkO-wWMYH-r2Rdw
134
134
  beswarm/tools/screenshot.py,sha256=u6t8FCgW5YHJ_Oc4coo8e0F3wTusWE_-H8dFh1rBq9Q,1011
135
135
  beswarm/tools/search_arxiv.py,sha256=caVIUOzMhFu-r_gVgJZrH2EO9xI5iV_qLAg0b3Ie9Xg,8095
136
136
  beswarm/tools/search_web.py,sha256=w0T0aCqOVlb6Of5hn_TtpnrGXo6bMtw2aKZdkrYjycI,12069
137
- beswarm/tools/worker.py,sha256=ZFgSe17Je9NJuITvojZ89uEk2p-pXWJIy9GHNvMDAVo,23491
138
- beswarm-0.2.15.dist-info/METADATA,sha256=KOHXgX4OetD6T6BzonJhlz0GZJHLX4_7FXi4tK1gyxI,3847
139
- beswarm-0.2.15.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
140
- beswarm-0.2.15.dist-info/top_level.txt,sha256=pJw4O87wvt5882smuSO6DfByJz7FJ8SxxT8h9fHCmpo,8
141
- beswarm-0.2.15.dist-info/RECORD,,
137
+ beswarm/tools/worker.py,sha256=ywjD0TUVLzcrVQbVhQuNwtagca0sAuZwSjnKCVb3R6g,23027
138
+ beswarm-0.2.17.dist-info/METADATA,sha256=PcWMP5H6J2h5o-EjQLL2ENjS4VCldPzrSvdTyghV_Ko,3847
139
+ beswarm-0.2.17.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
140
+ beswarm-0.2.17.dist-info/top_level.txt,sha256=pJw4O87wvt5882smuSO6DfByJz7FJ8SxxT8h9fHCmpo,8
141
+ beswarm-0.2.17.dist-info/RECORD,,