aient 1.0.89__py3-none-any.whl → 1.0.91__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/request.py CHANGED
@@ -995,6 +995,10 @@ async def get_gpt_payload(request, engine, provider, api_key=None):
995
995
  }
996
996
  })
997
997
 
998
+ if safe_get(provider, "preferences", "post_body_parameter_overrides", default=None):
999
+ for key, value in safe_get(provider, "preferences", "post_body_parameter_overrides", default={}).items():
1000
+ payload[key] = value
1001
+
998
1002
  return url, headers, payload
999
1003
 
1000
1004
  def build_azure_endpoint(base_url, deployment_id, api_version="2025-01-01-preview"):
@@ -1085,6 +1089,10 @@ async def get_azure_payload(request, engine, provider, api_key=None):
1085
1089
  payload.pop("tools", None)
1086
1090
  payload.pop("tool_choice", None)
1087
1091
 
1092
+ if safe_get(provider, "preferences", "post_body_parameter_overrides", default=None):
1093
+ for key, value in safe_get(provider, "preferences", "post_body_parameter_overrides", default={}).items():
1094
+ payload[key] = value
1095
+
1088
1096
  return url, headers, payload
1089
1097
 
1090
1098
  async def get_openrouter_payload(request, engine, provider, api_key=None):
aient/core/response.py CHANGED
@@ -327,7 +327,10 @@ async def fetch_azure_response_stream(client, url, headers, payload):
327
327
  continue
328
328
 
329
329
  if no_stream_content or content or sse_string:
330
- sse_string = await generate_sse_response(timestamp, safe_get(line, "model", default=None), content=no_stream_content or content)
330
+ input_tokens = safe_get(line, "usage", "prompt_tokens", default=0)
331
+ output_tokens = safe_get(line, "usage", "completion_tokens", default=0)
332
+ total_tokens = safe_get(line, "usage", "total_tokens", default=0)
333
+ sse_string = await generate_sse_response(timestamp, safe_get(line, "model", default=None), content=no_stream_content or content, total_tokens=total_tokens, prompt_tokens=input_tokens, completion_tokens=output_tokens)
331
334
  yield sse_string
332
335
  else:
333
336
  if no_stream_content:
aient/models/chatgpt.py CHANGED
@@ -125,9 +125,9 @@ class chatgpt(BaseLLM):
125
125
  # print("role", role, "function_name", function_name, "message", message)
126
126
  if convo_id not in self.conversation:
127
127
  self.reset(convo_id=convo_id)
128
- if function_name == "" and message and message != None:
128
+ if function_name == "" and message:
129
129
  self.conversation[convo_id].append({"role": role, "content": message})
130
- elif function_name != "" and message and message != None:
130
+ elif function_name != "" and message:
131
131
  # 删除从 cut_history_by_function_name 以后的所有历史记录
132
132
  if function_name == self.cut_history_by_function_name:
133
133
  matching_message = next(filter(lambda x: safe_get(x, "tool_calls", 0, "function", "name", default="") == 'get_next_pdf', self.conversation[convo_id]), None)
@@ -429,40 +429,31 @@ class chatgpt(BaseLLM):
429
429
  if response_role is None:
430
430
  response_role = "assistant"
431
431
 
432
- function_parameter = parse_function_xml(full_response)
433
- if function_parameter:
434
- print("function_parameter1", function_parameter)
435
- function_parameter = [tool_dict for tool_dict in function_parameter if tool_dict.get("function_name", "") in self.plugins.keys()]
436
- invalid_tools = [tool_dict for tool_dict in function_parameter if tool_dict.get("function_name", "") not in self.plugins.keys()]
437
- for tool_dict in invalid_tools:
438
- full_response = full_response + f"\n\nFunction: {tool_dict.get('function_name', '')} does not exist! I must use existing functions. I need to try again."
439
- print("function_parameter2", self.print_log, function_parameter)
440
- if self.print_log:
441
- print("invalid_tools", invalid_tools)
442
- print("full_response", full_response)
432
+ if self.use_plugins == True:
433
+ function_parameter = parse_function_xml(full_response)
443
434
  if function_parameter:
444
- need_function_call = True
445
- else:
446
- need_function_call = False
447
- if self.print_log:
448
- print("Failed to parse function_parameter", function_parameter)
435
+ invalid_tools = [tool_dict for tool_dict in function_parameter if tool_dict.get("function_name", "") not in self.plugins.keys()]
436
+ function_parameter = [tool_dict for tool_dict in function_parameter if tool_dict.get("function_name", "") in self.plugins.keys()]
437
+ for tool_dict in invalid_tools:
438
+ full_response = full_response + f"\n\nFunction: {tool_dict.get('function_name', '')} does not exist! I must use existing functions. I need to try again."
439
+ if self.print_log and invalid_tools:
440
+ print("invalid_tools", invalid_tools)
441
+ print("function_parameter", function_parameter)
449
442
  print("full_response", full_response)
450
- full_response = (
451
- f"{full_response}"
452
- "\n\nFailed to parse function parameter, I need to try again."
453
- )
443
+ if function_parameter:
444
+ need_function_call = True
445
+ else:
446
+ need_function_call = False
447
+ if self.print_log:
448
+ print("Failed to parse function_parameter full_response", full_response)
449
+ full_response = ""
454
450
 
455
451
  # 处理函数调用
456
- if need_function_call and self.use_plugins != False:
452
+ if need_function_call and self.use_plugins == True:
457
453
  if self.print_log:
458
454
  print("function_parameter", function_parameter)
459
455
  print("function_full_response", function_full_response)
460
456
 
461
- function_parameter = [tool_dict for tool_dict in function_parameter if tool_dict.get("function_name", "") in self.plugins.keys()]
462
-
463
- if self.print_log:
464
- print("function_parameter3", function_parameter)
465
-
466
457
  function_response = ""
467
458
  # 定义处理单个工具调用的辅助函数
468
459
  async def process_single_tool_call(tool_name, tool_args, tool_id):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aient
3
- Version: 1.0.89
3
+ Version: 1.0.91
4
4
  Summary: Aient: The Awakening of Agent.
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -4,8 +4,8 @@ aient/core/.gitignore,sha256=5JRRlYYsqt_yt6iFvvzhbqh2FTUQMqwo6WwIuFzlGR8,13
4
4
  aient/core/__init__.py,sha256=NxjebTlku35S4Dzr16rdSqSTWUvvwEeACe8KvHJnjPg,34
5
5
  aient/core/log_config.py,sha256=kz2_yJv1p-o3lUQOwA3qh-LSc3wMHv13iCQclw44W9c,274
6
6
  aient/core/models.py,sha256=_1wYZg_n9kb2A3C8xCboyqleH2iHc9scwOvtx9DPeok,7582
7
- aient/core/request.py,sha256=DzjOtWb7rm1frsyKRIsnhONCuttURfwtqERc_qJqHgg,60931
8
- aient/core/response.py,sha256=CSAOQmybBu3i2Yq2YUyi91dZWTN1tmtJEBTI8RFwj_s,30594
7
+ aient/core/request.py,sha256=U0SDf_dOE5EEhzyJA14XMQCiCFUtcivYcISveLBsK64,61405
8
+ aient/core/response.py,sha256=6fo3GKvTKio8nf4cZdizDIYYq7SnBnFeQ6ROvdAIW9k,30959
9
9
  aient/core/utils.py,sha256=W-PDhwoJIbmlt4xfyrV9GXHu9TwRk4pivBOcDVXjgsc,26163
10
10
  aient/core/test/test_base_api.py,sha256=pWnycRJbuPSXKKU9AQjWrMAX1wiLC_014Qc9hh5C2Pw,524
11
11
  aient/core/test/test_image.py,sha256=_T4peNGdXKBHHxyQNx12u-NTyFE8TlYI6NvvagsG2LE,319
@@ -13,7 +13,7 @@ aient/core/test/test_payload.py,sha256=8jBiJY1uidm1jzL-EiK0s6UGmW9XkdsuuKFGrwFhF
13
13
  aient/models/__init__.py,sha256=ouNDNvoBBpIFrLsk09Q_sq23HR0GbLAKfGLIFmfEuXE,219
14
14
  aient/models/audio.py,sha256=kRd-8-WXzv4vwvsTGwnstK-WR8--vr9CdfCZzu8y9LA,1934
15
15
  aient/models/base.py,sha256=z-Z0pJfTN2x0cuwfvu0BdMRY9O-RmLwHEnBIJN1x4Fg,6719
16
- aient/models/chatgpt.py,sha256=pimBAmMcTb1wggftyrJ8n3mrwMp0Id7Lddoc3Hg1NUg,45486
16
+ aient/models/chatgpt.py,sha256=-NWkkKxTCyraPYT0YN37NA2rUfOaDNXtvFSQmIE5tS8,45066
17
17
  aient/models/claude.py,sha256=thK9P8qkaaoUN3OOJ9Shw4KDs-pAGKPoX4FOPGFXva8,28597
18
18
  aient/models/duckduckgo.py,sha256=1l7vYCs9SG5SWPCbcl7q6pCcB5AUF_r-a4l9frz3Ogo,8115
19
19
  aient/models/gemini.py,sha256=chGLc-8G_DAOxr10HPoOhvVFW1RvMgHd6mt--VyAW98,14730
@@ -36,8 +36,8 @@ aient/prompt/agent.py,sha256=WLs0KiNZs29FJ5w7N3kQZYLVEeS7K8vxIOUw06LcXVE,23825
36
36
  aient/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
37
  aient/utils/prompt.py,sha256=UcSzKkFE4-h_1b6NofI6xgk3GoleqALRKY8VBaXLjmI,11311
38
38
  aient/utils/scripts.py,sha256=PPwaJEigPkpciJHUXOag483iq1GjvaLReHDHjkinv6c,26780
39
- aient-1.0.89.dist-info/licenses/LICENSE,sha256=XNdbcWldt0yaNXXWB_Bakoqnxb3OVhUft4MgMA_71ds,1051
40
- aient-1.0.89.dist-info/METADATA,sha256=I6ig9V0cfvfa5Evt96OMj8UWne4ABXdu61Yvpc5Ap68,5000
41
- aient-1.0.89.dist-info/WHEEL,sha256=ck4Vq1_RXyvS4Jt6SI0Vz6fyVs4GWg7AINwpsaGEgPE,91
42
- aient-1.0.89.dist-info/top_level.txt,sha256=3oXzrP5sAVvyyqabpeq8A2_vfMtY554r4bVE-OHBrZk,6
43
- aient-1.0.89.dist-info/RECORD,,
39
+ aient-1.0.91.dist-info/licenses/LICENSE,sha256=XNdbcWldt0yaNXXWB_Bakoqnxb3OVhUft4MgMA_71ds,1051
40
+ aient-1.0.91.dist-info/METADATA,sha256=6QuaVz9_62x2b2ynwHT1dQULl-FJCTBMdBYOOh-3MZw,5000
41
+ aient-1.0.91.dist-info/WHEEL,sha256=ooBFpIzZCPdw3uqIQsOo4qqbA4ZRPxHnOH7peeONza0,91
42
+ aient-1.0.91.dist-info/top_level.txt,sha256=3oXzrP5sAVvyyqabpeq8A2_vfMtY554r4bVE-OHBrZk,6
43
+ aient-1.0.91.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.0.0)
2
+ Generator: setuptools (80.0.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5