beswarm 0.2.71__tar.gz → 0.2.73__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 (132) hide show
  1. {beswarm-0.2.71 → beswarm-0.2.73}/PKG-INFO +1 -1
  2. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/agents/planact.py +1 -1
  3. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/core/response.py +18 -9
  4. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/models/chatgpt.py +8 -2
  5. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/tools/subtasks.py +4 -1
  6. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm.egg-info/PKG-INFO +1 -1
  7. {beswarm-0.2.71 → beswarm-0.2.73}/pyproject.toml +1 -1
  8. {beswarm-0.2.71 → beswarm-0.2.73}/MANIFEST.in +0 -0
  9. {beswarm-0.2.71 → beswarm-0.2.73}/README.md +0 -0
  10. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/__init__.py +0 -0
  11. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/agents/chatgroup.py +0 -0
  12. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/__init__.py +0 -0
  13. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/core/__init__.py +0 -0
  14. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/core/log_config.py +0 -0
  15. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/core/models.py +0 -0
  16. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/core/request.py +0 -0
  17. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/core/test/test_base_api.py +0 -0
  18. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/core/test/test_geminimask.py +0 -0
  19. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/core/test/test_image.py +0 -0
  20. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/core/test/test_payload.py +0 -0
  21. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/core/utils.py +0 -0
  22. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/models/__init__.py +0 -0
  23. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/models/audio.py +0 -0
  24. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/models/base.py +0 -0
  25. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/plugins/__init__.py +0 -0
  26. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/plugins/arXiv.py +0 -0
  27. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/plugins/config.py +0 -0
  28. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/plugins/excute_command.py +0 -0
  29. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/plugins/get_time.py +0 -0
  30. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/plugins/image.py +0 -0
  31. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/plugins/list_directory.py +0 -0
  32. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/plugins/read_file.py +0 -0
  33. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/plugins/read_image.py +0 -0
  34. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/plugins/readonly.py +0 -0
  35. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/plugins/registry.py +0 -0
  36. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/plugins/run_python.py +0 -0
  37. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/plugins/websearch.py +0 -0
  38. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/plugins/write_file.py +0 -0
  39. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/utils/__init__.py +0 -0
  40. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/utils/prompt.py +0 -0
  41. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/aient/utils/scripts.py +0 -0
  42. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/test/test_Web_crawler.py +0 -0
  43. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/test/test_ddg_search.py +0 -0
  44. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/test/test_google_search.py +0 -0
  45. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/test/test_ollama.py +0 -0
  46. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/test/test_plugin.py +0 -0
  47. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/test/test_search.py +0 -0
  48. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/test/test_url.py +0 -0
  49. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/test/test_whisper.py +0 -0
  50. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/aient/test/test_yjh.py +0 -0
  51. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/bemcp/bemcp/__init__.py +0 -0
  52. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/bemcp/bemcp/decorator.py +0 -0
  53. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/bemcp/bemcp/main.py +0 -0
  54. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/bemcp/bemcp/utils.py +0 -0
  55. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/bemcp/test/client.py +0 -0
  56. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/bemcp/test/server.py +0 -0
  57. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/broker.py +0 -0
  58. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/core.py +0 -0
  59. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/knowledge_graph.py +0 -0
  60. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/prompt.py +0 -0
  61. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-language-pack/README.md +0 -0
  62. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-language-pack/arduino-tags.scm +0 -0
  63. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-language-pack/c-tags.scm +0 -0
  64. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-language-pack/chatito-tags.scm +0 -0
  65. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-language-pack/commonlisp-tags.scm +0 -0
  66. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-language-pack/cpp-tags.scm +0 -0
  67. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-language-pack/csharp-tags.scm +0 -0
  68. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-language-pack/d-tags.scm +0 -0
  69. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-language-pack/dart-tags.scm +0 -0
  70. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-language-pack/elisp-tags.scm +0 -0
  71. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-language-pack/elixir-tags.scm +0 -0
  72. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-language-pack/elm-tags.scm +0 -0
  73. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-language-pack/gleam-tags.scm +0 -0
  74. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-language-pack/go-tags.scm +0 -0
  75. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-language-pack/java-tags.scm +0 -0
  76. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-language-pack/javascript-tags.scm +0 -0
  77. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-language-pack/lua-tags.scm +0 -0
  78. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-language-pack/pony-tags.scm +0 -0
  79. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-language-pack/properties-tags.scm +0 -0
  80. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-language-pack/python-tags.scm +0 -0
  81. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-language-pack/r-tags.scm +0 -0
  82. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-language-pack/racket-tags.scm +0 -0
  83. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-language-pack/ruby-tags.scm +0 -0
  84. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-language-pack/rust-tags.scm +0 -0
  85. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-language-pack/solidity-tags.scm +0 -0
  86. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-language-pack/swift-tags.scm +0 -0
  87. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-language-pack/udev-tags.scm +0 -0
  88. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-languages/README.md +0 -0
  89. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-languages/c-tags.scm +0 -0
  90. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-languages/c_sharp-tags.scm +0 -0
  91. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-languages/cpp-tags.scm +0 -0
  92. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-languages/dart-tags.scm +0 -0
  93. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-languages/elisp-tags.scm +0 -0
  94. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-languages/elixir-tags.scm +0 -0
  95. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-languages/elm-tags.scm +0 -0
  96. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-languages/go-tags.scm +0 -0
  97. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-languages/hcl-tags.scm +0 -0
  98. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-languages/java-tags.scm +0 -0
  99. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-languages/javascript-tags.scm +0 -0
  100. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-languages/kotlin-tags.scm +0 -0
  101. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-languages/ocaml-tags.scm +0 -0
  102. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-languages/php-tags.scm +0 -0
  103. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-languages/python-tags.scm +0 -0
  104. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-languages/ql-tags.scm +0 -0
  105. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-languages/ruby-tags.scm +0 -0
  106. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-languages/rust-tags.scm +0 -0
  107. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-languages/scala-tags.scm +0 -0
  108. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/queries/tree-sitter-languages/typescript-tags.scm +0 -0
  109. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/taskmanager.py +0 -0
  110. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/tools/__init__.py +0 -0
  111. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/tools/click.py +0 -0
  112. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/tools/completion.py +0 -0
  113. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/tools/edit_file.py +0 -0
  114. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/tools/graph.py +0 -0
  115. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/tools/planner.py +0 -0
  116. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/tools/repomap.py +0 -0
  117. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/tools/request_input.py +0 -0
  118. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/tools/screenshot.py +0 -0
  119. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/tools/search_arxiv.py +0 -0
  120. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/tools/search_web.py +0 -0
  121. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/tools/worker.py +0 -0
  122. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/tools/write_csv.py +0 -0
  123. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm/utils.py +0 -0
  124. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm.egg-info/SOURCES.txt +0 -0
  125. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm.egg-info/dependency_links.txt +0 -0
  126. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm.egg-info/requires.txt +0 -0
  127. {beswarm-0.2.71 → beswarm-0.2.73}/beswarm.egg-info/top_level.txt +0 -0
  128. {beswarm-0.2.71 → beswarm-0.2.73}/setup.cfg +0 -0
  129. {beswarm-0.2.71 → beswarm-0.2.73}/test/test_TaskManager.py +0 -0
  130. {beswarm-0.2.71 → beswarm-0.2.73}/test/test_broker.py +0 -0
  131. {beswarm-0.2.71 → beswarm-0.2.73}/test/test_graph.py +0 -0
  132. {beswarm-0.2.71 → beswarm-0.2.73}/test/test_new_TaskManager.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: beswarm
3
- Version: 0.2.71
3
+ Version: 0.2.73
4
4
  Summary: MAS
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -231,7 +231,7 @@ class WorkerAgent(BaseAgent):
231
231
  return
232
232
 
233
233
  if response.strip() == '':
234
- self.logger.error("\n❌ 工作智能体回复为空,请重新生成指令。")
234
+ self.logger.error("\n❌ Worker response is empty, retrying...")
235
235
  self.broker.publish(message, self.error_topic)
236
236
  else:
237
237
  self.broker.publish({"status": "new_message", "result": "\n✅ 工作智能体:\n" + response}, self.status_topic)
@@ -56,7 +56,8 @@ async def gemini_json_poccess(response_str):
56
56
 
57
57
  async def fetch_gemini_response_stream(client, url, headers, payload, model, timeout):
58
58
  timestamp = int(datetime.timestamp(datetime.now()))
59
- async with client.stream('POST', url, headers=headers, json=payload, timeout=timeout) as response:
59
+ json_payload = await asyncio.to_thread(json.dumps, payload)
60
+ async with client.stream('POST', url, headers=headers, content=json_payload, timeout=timeout) as response:
60
61
  error_message = await check_response(response, "fetch_gemini_response_stream")
61
62
  if error_message:
62
63
  yield error_message
@@ -125,7 +126,8 @@ async def fetch_gemini_response_stream(client, url, headers, payload, model, tim
125
126
 
126
127
  async def fetch_vertex_claude_response_stream(client, url, headers, payload, model, timeout):
127
128
  timestamp = int(datetime.timestamp(datetime.now()))
128
- async with client.stream('POST', url, headers=headers, json=payload, timeout=timeout) as response:
129
+ json_payload = await asyncio.to_thread(json.dumps, payload)
130
+ async with client.stream('POST', url, headers=headers, content=json_payload, timeout=timeout) as response:
129
131
  error_message = await check_response(response, "fetch_vertex_claude_response_stream")
130
132
  if error_message:
131
133
  yield error_message
@@ -198,7 +200,8 @@ async def fetch_gpt_response_stream(client, url, headers, payload, timeout):
198
200
  is_thinking = False
199
201
  has_send_thinking = False
200
202
  ark_tag = False
201
- async with client.stream('POST', url, headers=headers, json=payload, timeout=timeout) as response:
203
+ json_payload = await asyncio.to_thread(json.dumps, payload)
204
+ async with client.stream('POST', url, headers=headers, content=json_payload, timeout=timeout) as response:
202
205
  error_message = await check_response(response, "fetch_gpt_response_stream")
203
206
  if error_message:
204
207
  yield error_message
@@ -312,7 +315,8 @@ async def fetch_azure_response_stream(client, url, headers, payload, timeout):
312
315
  is_thinking = False
313
316
  has_send_thinking = False
314
317
  ark_tag = False
315
- async with client.stream('POST', url, headers=headers, json=payload, timeout=timeout) as response:
318
+ json_payload = await asyncio.to_thread(json.dumps, payload)
319
+ async with client.stream('POST', url, headers=headers, content=json_payload, timeout=timeout) as response:
316
320
  error_message = await check_response(response, "fetch_azure_response_stream")
317
321
  if error_message:
318
322
  yield error_message
@@ -365,7 +369,8 @@ async def fetch_azure_response_stream(client, url, headers, payload, timeout):
365
369
 
366
370
  async def fetch_cloudflare_response_stream(client, url, headers, payload, model, timeout):
367
371
  timestamp = int(datetime.timestamp(datetime.now()))
368
- async with client.stream('POST', url, headers=headers, json=payload, timeout=timeout) as response:
372
+ json_payload = await asyncio.to_thread(json.dumps, payload)
373
+ async with client.stream('POST', url, headers=headers, content=json_payload, timeout=timeout) as response:
369
374
  error_message = await check_response(response, "fetch_cloudflare_response_stream")
370
375
  if error_message:
371
376
  yield error_message
@@ -390,7 +395,8 @@ async def fetch_cloudflare_response_stream(client, url, headers, payload, model,
390
395
 
391
396
  async def fetch_cohere_response_stream(client, url, headers, payload, model, timeout):
392
397
  timestamp = int(datetime.timestamp(datetime.now()))
393
- async with client.stream('POST', url, headers=headers, json=payload, timeout=timeout) as response:
398
+ json_payload = await asyncio.to_thread(json.dumps, payload)
399
+ async with client.stream('POST', url, headers=headers, content=json_payload, timeout=timeout) as response:
394
400
  error_message = await check_response(response, "fetch_cohere_response_stream")
395
401
  if error_message:
396
402
  yield error_message
@@ -413,7 +419,8 @@ async def fetch_cohere_response_stream(client, url, headers, payload, model, tim
413
419
 
414
420
  async def fetch_claude_response_stream(client, url, headers, payload, model, timeout):
415
421
  timestamp = int(datetime.timestamp(datetime.now()))
416
- async with client.stream('POST', url, headers=headers, json=payload, timeout=timeout) as response:
422
+ json_payload = await asyncio.to_thread(json.dumps, payload)
423
+ async with client.stream('POST', url, headers=headers, content=json_payload, timeout=timeout) as response:
417
424
  error_message = await check_response(response, "fetch_claude_response_stream")
418
425
  if error_message:
419
426
  yield error_message
@@ -466,7 +473,8 @@ async def fetch_claude_response_stream(client, url, headers, payload, model, tim
466
473
 
467
474
  async def fetch_aws_response_stream(client, url, headers, payload, model, timeout):
468
475
  timestamp = int(datetime.timestamp(datetime.now()))
469
- async with client.stream('POST', url, headers=headers, json=payload, timeout=timeout) as response:
476
+ json_payload = await asyncio.to_thread(json.dumps, payload)
477
+ async with client.stream('POST', url, headers=headers, content=json_payload, timeout=timeout) as response:
470
478
  error_message = await check_response(response, "fetch_aws_response_stream")
471
479
  if error_message:
472
480
  yield error_message
@@ -521,7 +529,8 @@ async def fetch_response(client, url, headers, payload, engine, model, timeout=2
521
529
  file = payload.pop("file")
522
530
  response = await client.post(url, headers=headers, data=payload, files={"file": file}, timeout=timeout)
523
531
  else:
524
- response = await client.post(url, headers=headers, json=payload, timeout=timeout)
532
+ json_payload = await asyncio.to_thread(json.dumps, payload)
533
+ response = await client.post(url, headers=headers, content=json_payload, timeout=timeout)
525
534
  error_message = await check_response(response, "fetch_response")
526
535
  if error_message:
527
536
  yield error_message
@@ -236,6 +236,10 @@ class chatgpt(BaseLLM):
236
236
  if type(self.conversation[convo_id][message_index]["content"]) == list \
237
237
  and type(self.conversation[convo_id][message_index + 1]["content"]) == dict:
238
238
  self.conversation[convo_id][message_index + 1]["content"] = [self.conversation[convo_id][message_index + 1]["content"]]
239
+ if type(self.conversation[convo_id][message_index]["content"]) == str \
240
+ and type(self.conversation[convo_id][message_index + 1]["content"]) == str \
241
+ and self.conversation[convo_id][message_index].get("content").endswith(self.conversation[convo_id][message_index + 1].get("content")):
242
+ self.conversation[convo_id][message_index + 1]["content"] = ""
239
243
  self.conversation[convo_id][message_index]["content"] += self.conversation[convo_id][message_index + 1]["content"]
240
244
  self.conversation[convo_id].pop(message_index + 1)
241
245
  conversation_len = conversation_len - 1
@@ -744,7 +748,8 @@ class chatgpt(BaseLLM):
744
748
  need_done_prompt = False
745
749
 
746
750
  # 发送请求并处理响应
747
- for i in range(10):
751
+ retry_times = 0
752
+ while True:
748
753
  tmp_post_json = copy.deepcopy(json_post)
749
754
  if need_done_prompt:
750
755
  tmp_post_json["messages"].extend(need_done_prompt)
@@ -843,7 +848,8 @@ class chatgpt(BaseLLM):
843
848
  error_message = "您输入了无效的API URL,请使用正确的URL并使用`/start`命令重新设置API URL。具体错误如下:\n\n" + str(e)
844
849
  raise ConfigurationError(error_message)
845
850
  # 最后一次重试失败,向上抛出异常
846
- if i == 10:
851
+ retry_times += 1
852
+ if retry_times == 9:
847
853
  raise RetryFailedError(str(e))
848
854
 
849
855
  def ask_stream(
@@ -36,11 +36,14 @@ def create_task(goal, tools, work_dir):
36
36
  }
37
37
  ]
38
38
 
39
+ if work_dir == str(task_manager.root_path):
40
+ return f"<tool_error>子任务的工作目录位置在主任务的工作目录的子目录。子任务工作目录**禁止**设置为主任务目录本身。请重新创建子任务。当前主任务工作目录:{task_manager.root_path}</tool_error>"
41
+
39
42
  # 调用新的批量创建接口
40
43
  task_ids = task_manager.create_tasks_batch(worker_fun, tasks_params)
41
44
 
42
45
  # 返回新创建的单个任务ID
43
- return f"子任务已提交到队列,ID: {task_ids[0]}" if task_ids else "任务提交失败"
46
+ return f"子任务已提交到队列,ID: {task_ids[0]}" if task_ids else "<tool_error>任务提交失败</tool_error>"
44
47
 
45
48
  @register_tool()
46
49
  def resume_task(task_id, goal):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: beswarm
3
- Version: 0.2.71
3
+ Version: 0.2.73
4
4
  Summary: MAS
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "beswarm"
3
- version = "0.2.71"
3
+ version = "0.2.73"
4
4
  description = "MAS"
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