aient 1.0.59__py3-none-any.whl → 1.0.61__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.
aient/core/response.py CHANGED
@@ -191,7 +191,7 @@ async def fetch_gpt_response_stream(client, url, headers, payload):
191
191
  while "\n" in buffer:
192
192
  line, buffer = buffer.split("\n", 1)
193
193
  # logger.info("line: %s", repr(line))
194
- if line and line != "data: " and line != "data:" and not line.startswith(": ") and (result:=line.lstrip("data: ").strip()):
194
+ if line and not line.startswith(": ") and (result:=line.lstrip("data: ").strip()):
195
195
  if result.strip() == "[DONE]":
196
196
  break
197
197
  line = json.loads(result)
@@ -298,8 +298,7 @@ async def fetch_azure_response_stream(client, url, headers, payload):
298
298
  while "\n" in buffer:
299
299
  line, buffer = buffer.split("\n", 1)
300
300
  # logger.info("line: %s", repr(line))
301
- if line and line != "data: " and line != "data:" and not line.startswith(": "):
302
- result = line.lstrip("data: ")
301
+ if line and not line.startswith(": ") and (result:=line.lstrip("data: ").strip()):
303
302
  if result.strip() == "[DONE]":
304
303
  break
305
304
  line = json.loads(result)
aient/models/base.py CHANGED
@@ -82,6 +82,7 @@ class BaseLLM:
82
82
  ],
83
83
  }
84
84
  self.tokens_usage = defaultdict(int)
85
+ self.current_tokens = defaultdict(int)
85
86
  self.function_calls_counter = {}
86
87
  self.function_call_max_loop = 10
87
88
  self.use_plugins = use_plugins
aient/models/chatgpt.py CHANGED
@@ -207,6 +207,7 @@ class chatgpt(BaseLLM):
207
207
  history_len = history_len - 1
208
208
 
209
209
  if total_tokens:
210
+ self.current_tokens[convo_id] = total_tokens
210
211
  self.tokens_usage[convo_id] += total_tokens
211
212
 
212
213
  def truncate_conversation(self, convo_id: str = "default") -> None:
@@ -215,25 +216,17 @@ class chatgpt(BaseLLM):
215
216
  """
216
217
  while True:
217
218
  if (
218
- self.tokens_usage[convo_id] > self.truncate_limit
219
+ self.current_tokens[convo_id] > self.truncate_limit
219
220
  and len(self.conversation[convo_id]) > 1
220
221
  ):
221
222
  # Don't remove the first message
222
223
  mess = self.conversation[convo_id].pop(1)
224
+ string_mess = json.dumps(mess, ensure_ascii=False)
225
+ self.current_tokens[convo_id] -= len(string_mess) / 4
223
226
  print("Truncate message:", mess)
224
227
  else:
225
228
  break
226
229
 
227
- def extract_values(self, obj):
228
- if isinstance(obj, dict):
229
- for value in obj.values():
230
- yield from self.extract_values(value)
231
- elif isinstance(obj, list):
232
- for item in obj:
233
- yield from self.extract_values(item)
234
- else:
235
- yield obj
236
-
237
230
  async def get_post_body(
238
231
  self,
239
232
  prompt: str,
@@ -789,6 +782,7 @@ class chatgpt(BaseLLM):
789
782
  {"role": "system", "content": self.system_prompt},
790
783
  ]
791
784
  self.tokens_usage[convo_id] = 0
785
+ self.current_tokens[convo_id] = 0
792
786
 
793
787
  def save(self, file: str, *keys: str) -> None:
794
788
  """
aient/plugins/config.py CHANGED
@@ -8,6 +8,7 @@ from ..utils.prompt import search_key_word_prompt, arxiv_doc_user_prompt
8
8
 
9
9
  async def get_tools_result_async(function_call_name, function_full_response, function_call_max_tokens, engine, robot, api_key, api_url, use_plugins, model, add_message, convo_id, language):
10
10
  function_response = ""
11
+ function_to_call = None
11
12
  if function_call_name in registry.tools:
12
13
  function_to_call = registry.tools[function_call_name]
13
14
  if function_call_name == "get_search_results":
@@ -41,7 +42,7 @@ async def get_tools_result_async(function_call_name, function_full_response, fun
41
42
  function_response = "无法找到相关信息,停止使用 tools"
42
43
  # user_prompt = f"You need to response the following question: {prompt}. Search results is provided inside <Search_results></Search_results> XML tags. Your task is to think about the question step by step and then answer the above question in {config.language} based on the Search results provided. Please response in {config.language} and adopt a style that is logical, in-depth, and detailed. Note: In order to make the answer appear highly professional, you should be an expert in textual analysis, aiming to make the answer precise and comprehensive. Directly response markdown format, without using markdown code blocks"
43
44
  # self.add_to_conversation(user_prompt, "user", convo_id=convo_id)
44
- else:
45
+ elif function_to_call:
45
46
  prompt = json.loads(function_full_response)
46
47
  if inspect.iscoroutinefunction(function_to_call):
47
48
  function_response = await function_to_call(**prompt)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aient
3
- Version: 1.0.59
3
+ Version: 1.0.61
4
4
  Summary: Aient: The Awakening of Agent.
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -4,15 +4,15 @@ aient/core/__init__.py,sha256=NxjebTlku35S4Dzr16rdSqSTWUvvwEeACe8KvHJnjPg,34
4
4
  aient/core/log_config.py,sha256=kz2_yJv1p-o3lUQOwA3qh-LSc3wMHv13iCQclw44W9c,274
5
5
  aient/core/models.py,sha256=_1wYZg_n9kb2A3C8xCboyqleH2iHc9scwOvtx9DPeok,7582
6
6
  aient/core/request.py,sha256=oavFyF5P0BL-85cse_lhyfP3UErFzeSdj6kTaSWzQrg,49690
7
- aient/core/response.py,sha256=xuGpA_0_W3iz-hL3oCoMR0tXSTUlwk_1M1s7nyNZ87I,27968
7
+ aient/core/response.py,sha256=6Fq-EIL7ua1zeT6GMc1fgQeRs_MCP6UST_pL0tM3f3I,27879
8
8
  aient/core/utils.py,sha256=DFpFU8Y-8lzgQlhaDUnao8HmviGoh3-oN8jZR3Dha7E,26150
9
9
  aient/core/test/test_base_api.py,sha256=CjfFzMG26r8C4xCPoVkKb3Ac6pp9gy5NUCbZJHoSSsM,393
10
10
  aient/core/test/test_image.py,sha256=_T4peNGdXKBHHxyQNx12u-NTyFE8TlYI6NvvagsG2LE,319
11
11
  aient/core/test/test_payload.py,sha256=8jBiJY1uidm1jzL-EiK0s6UGmW9XkdsuuKFGrwFhFkw,2755
12
12
  aient/models/__init__.py,sha256=ouNDNvoBBpIFrLsk09Q_sq23HR0GbLAKfGLIFmfEuXE,219
13
13
  aient/models/audio.py,sha256=kRd-8-WXzv4vwvsTGwnstK-WR8--vr9CdfCZzu8y9LA,1934
14
- aient/models/base.py,sha256=PBfQTQI73OE2OuHvw-XN6vD-_y6k_vLjmT_8J4Gelvo,6813
15
- aient/models/chatgpt.py,sha256=TRvUpgBsQW0oJpxOpT0__fYooy2hbkMSYVdM7CqusnY,42296
14
+ aient/models/base.py,sha256=vRCDEwabEm0u0RU4J62T2t271xg7YGCPjE3s9HzhtV8,6860
15
+ aient/models/chatgpt.py,sha256=gOLBHWimbg2mbt9EjDXr5Za60Jt0ICqe-Hah95taupc,42217
16
16
  aient/models/claude.py,sha256=thK9P8qkaaoUN3OOJ9Shw4KDs-pAGKPoX4FOPGFXva8,28597
17
17
  aient/models/duckduckgo.py,sha256=1l7vYCs9SG5SWPCbcl7q6pCcB5AUF_r-a4l9frz3Ogo,8115
18
18
  aient/models/gemini.py,sha256=chGLc-8G_DAOxr10HPoOhvVFW1RvMgHd6mt--VyAW98,14730
@@ -20,7 +20,7 @@ aient/models/groq.py,sha256=2JCB0QE1htOprJHI5fZ11R2RtOhsHlsTjbmFyzc8oSM,10084
20
20
  aient/models/vertex.py,sha256=qVD5l1Q538xXUPulxG4nmDjXE1VoV4yuAkTCpIeJVw0,16795
21
21
  aient/plugins/__init__.py,sha256=KrCM6kFD1NB96hfhwUZIG8vJcdZVnfpACMew5YOWxSo,956
22
22
  aient/plugins/arXiv.py,sha256=yHjb6PS3GUWazpOYRMKMzghKJlxnZ5TX8z9F6UtUVow,1461
23
- aient/plugins/config.py,sha256=1eOFH0KVDV5qa-n_r-nyTx4sCstlcmoiGoaHqPjaSpI,7528
23
+ aient/plugins/config.py,sha256=PVb50KF5lDuf2rFucWygPnQvkRoYBf5h3RaK0f06CsU,7573
24
24
  aient/plugins/excute_command.py,sha256=3jh0o3K33GfcHvNywCTvhU5axN5CDi20ZPer4SwWZmI,943
25
25
  aient/plugins/get_time.py,sha256=Ih5XIW5SDAIhrZ9W4Qe5Hs1k4ieKPUc_LAd6ySNyqZk,654
26
26
  aient/plugins/image.py,sha256=ZElCIaZznE06TN9xW3DrSukS7U3A5_cjk1Jge4NzPxw,2072
@@ -35,8 +35,8 @@ aient/prompt/agent.py,sha256=h39WOoafv0_lh2coBCiG9k-VWa3Yi9HRZV0hnvsc4gs,23598
35
35
  aient/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
36
  aient/utils/prompt.py,sha256=UcSzKkFE4-h_1b6NofI6xgk3GoleqALRKY8VBaXLjmI,11311
37
37
  aient/utils/scripts.py,sha256=n0jR5eXCBIK12W4bIx-xU1FVl1hZ4zDC7hq_BWQHYJU,27537
38
- aient-1.0.59.dist-info/licenses/LICENSE,sha256=XNdbcWldt0yaNXXWB_Bakoqnxb3OVhUft4MgMA_71ds,1051
39
- aient-1.0.59.dist-info/METADATA,sha256=RV6ienIwh5Di8AZCGBEROc6-MMppQTfhJch7jkqYaDQ,4973
40
- aient-1.0.59.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
41
- aient-1.0.59.dist-info/top_level.txt,sha256=3oXzrP5sAVvyyqabpeq8A2_vfMtY554r4bVE-OHBrZk,6
42
- aient-1.0.59.dist-info/RECORD,,
38
+ aient-1.0.61.dist-info/licenses/LICENSE,sha256=XNdbcWldt0yaNXXWB_Bakoqnxb3OVhUft4MgMA_71ds,1051
39
+ aient-1.0.61.dist-info/METADATA,sha256=5L-K2f2wjrHeRsEp6t4MItbtvHUk2pwdZhoDosqVM3w,4973
40
+ aient-1.0.61.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
41
+ aient-1.0.61.dist-info/top_level.txt,sha256=3oXzrP5sAVvyyqabpeq8A2_vfMtY554r4bVE-OHBrZk,6
42
+ aient-1.0.61.dist-info/RECORD,,
File without changes