aient 1.2.36__py3-none-any.whl → 1.2.38__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
@@ -196,7 +196,7 @@ async def get_gemini_payload(request, engine, provider, api_key=None):
196
196
 
197
197
  for field, value in request.model_dump(exclude_unset=True).items():
198
198
  if field not in miss_fields and value is not None:
199
- if field == "tools" and "gemini-2.0-flash-thinking" in original_model:
199
+ if field == "tools" and ("gemini-2.0-flash-thinking" in original_model or "gemini-2.5-flash-image" in original_model):
200
200
  continue
201
201
  if field == "tools":
202
202
  # 处理每个工具的 function 定义
@@ -221,6 +221,8 @@ async def get_gemini_payload(request, engine, provider, api_key=None):
221
221
  }
222
222
  })
223
223
  elif field == "temperature":
224
+ if "gemini-2.5-flash-image" in original_model:
225
+ value = 1
224
226
  generation_config["temperature"] = value
225
227
  elif field == "max_tokens":
226
228
  if value > 65536:
@@ -244,7 +246,7 @@ async def get_gemini_payload(request, engine, provider, api_key=None):
244
246
  "Image",
245
247
  ]
246
248
 
247
- if "gemini-2.5" in original_model:
249
+ if "gemini-2.5" in original_model and "gemini-2.5-flash-image" not in original_model:
248
250
  # 从请求模型名中检测思考预算设置
249
251
  m = re.match(r".*-think-(-?\d+)", request.model)
250
252
  if m:
aient/core/response.py CHANGED
@@ -78,7 +78,7 @@ async def fetch_gemini_response_stream(client, url, headers, payload, model, tim
78
78
  try:
79
79
  response_json = await asyncio.to_thread(json.loads, parts_json)
80
80
  except json.JSONDecodeError:
81
- logger.error(f"JSON decode error: {parts_json}")
81
+ # logger.error(f"JSON decode error: {parts_json}")
82
82
  continue
83
83
  else:
84
84
  parts_json += line
@@ -99,7 +99,12 @@ async def fetch_gemini_response_stream(client, url, headers, payload, model, tim
99
99
  yield sse_string
100
100
 
101
101
  if image_base64:
102
- yield await generate_no_stream_response(timestamp, model, content=content, tools_id=None, function_call_name=None, function_call_content=None, role=None, total_tokens=totalTokenCount, prompt_tokens=promptTokenCount, completion_tokens=candidatesTokenCount, image_base64=image_base64)
102
+ if "gemini-2.5-flash-image" not in model:
103
+ yield await generate_no_stream_response(timestamp, model, content=content, tools_id=None, function_call_name=None, function_call_content=None, role=None, total_tokens=totalTokenCount, prompt_tokens=promptTokenCount, completion_tokens=candidatesTokenCount, image_base64=image_base64)
104
+ else:
105
+ image_url = await upload_image_to_0x0st("data:image/png;base64," + image_base64)
106
+ sse_string = await generate_sse_response(timestamp, model, content=f"\n\n![image]({image_url})")
107
+ yield sse_string
103
108
 
104
109
  if function_call_name:
105
110
  sse_string = await generate_sse_response(timestamp, model, content=None, tools_id="chatcmpl-9inWv0yEtgn873CxMBzHeCeiHctTV", function_call_name=function_call_name)
aient/models/chatgpt.py CHANGED
@@ -108,6 +108,7 @@ class chatgpt(BaseLLM):
108
108
  cache_messages: list = None,
109
109
  logger: logging.Logger = None,
110
110
  check_done: bool = False,
111
+ retry_count: int = 999999,
111
112
  ) -> None:
112
113
  """
113
114
  Initialize Chatbot with API key (from https://platform.openai.com/account/api-keys)
@@ -119,7 +120,7 @@ class chatgpt(BaseLLM):
119
120
  self.function_calls_counter = {}
120
121
  self.function_call_max_loop = function_call_max_loop
121
122
  self.check_done = check_done
122
-
123
+ self.retry_count = retry_count
123
124
  if logger:
124
125
  self.logger = logger
125
126
  else:
@@ -708,7 +709,8 @@ class chatgpt(BaseLLM):
708
709
  # 发送请求并处理响应
709
710
  retry_times = 0
710
711
  error_to_raise = None
711
- while True:
712
+ while retry_times < self.retry_count:
713
+ retry_times += 1
712
714
  tmp_post_json = copy.deepcopy(json_post)
713
715
  if need_done_prompt:
714
716
  tmp_post_json["messages"].extend(need_done_prompt)
@@ -821,8 +823,7 @@ class chatgpt(BaseLLM):
821
823
  error_message = "您输入了无效的API URL,请使用正确的URL并使用`/start`命令重新设置API URL。具体错误如下:\n\n" + str(e)
822
824
  raise ConfigurationError(error_message)
823
825
  # 最后一次重试失败,向上抛出异常
824
- retry_times += 1
825
- if retry_times == 9:
826
+ if retry_times == self.retry_count:
826
827
  raise RetryFailedError(str(e))
827
828
 
828
829
  if error_to_raise:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aient
3
- Version: 1.2.36
3
+ Version: 1.2.38
4
4
  Summary: Aient: The Awakening of Agent.
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -7,8 +7,8 @@ aient/architext/test/test_save_load.py,sha256=o8DqH6gDYZkFkQy-a7blqLtJTRj5e4a-Li
7
7
  aient/core/__init__.py,sha256=NxjebTlku35S4Dzr16rdSqSTWUvvwEeACe8KvHJnjPg,34
8
8
  aient/core/log_config.py,sha256=kz2_yJv1p-o3lUQOwA3qh-LSc3wMHv13iCQclw44W9c,274
9
9
  aient/core/models.py,sha256=KMlCRLjtq1wQHZTJGqnbWhPS2cHq6eLdnk7peKDrzR8,7490
10
- aient/core/request.py,sha256=-KEBd4jWLVC9QYUhb1ZfgkLf4nKE7HKL0A58iULkY7o,76757
11
- aient/core/response.py,sha256=nwJcqThjqUdcbLnmE-2xfPCetAwo3US4nYHLQjnzNv4,36431
10
+ aient/core/request.py,sha256=w3HcsS4BOcrprPjSUWPz-sfcEnX26HxN7AZCThX2gE0,76949
11
+ aient/core/response.py,sha256=oKAb97XX4tbgLBdzSGTedJamGTQztp7hjL5YK3ZbJFQ,36792
12
12
  aient/core/utils.py,sha256=Z8vTH9w3uS8uubBa65c_aJ11A3OKGYEzm4q0brNZDSk,31594
13
13
  aient/core/test/test_base_api.py,sha256=pWnycRJbuPSXKKU9AQjWrMAX1wiLC_014Qc9hh5C2Pw,524
14
14
  aient/core/test/test_geminimask.py,sha256=HFX8jDbNg_FjjgPNxfYaR-0-roUrOO-ND-FVsuxSoiw,13254
@@ -17,7 +17,7 @@ aient/core/test/test_payload.py,sha256=8jBiJY1uidm1jzL-EiK0s6UGmW9XkdsuuKFGrwFhF
17
17
  aient/models/__init__.py,sha256=ZTiZgbfBPTjIPSKURE7t6hlFBVLRS9lluGbmqc1WjxQ,43
18
18
  aient/models/audio.py,sha256=FNW4lxG1IhxOU7L8mvcbaeC1nXk_lpUZQlg9ijQ0h_Q,1937
19
19
  aient/models/base.py,sha256=HWIGfa2A7OTccvHK0wG1-UlHB-yaWRC7hbi4oR1Mu1Y,7228
20
- aient/models/chatgpt.py,sha256=DOm0_tieWj8V_xIQCZy_33PGCebZ8nvKIXXYpzYWw6Y,43601
20
+ aient/models/chatgpt.py,sha256=SNgfFaAZ-ESOJmvViThS0vbro2ZAcrPtN1A0NHx3oZc,43711
21
21
  aient/plugins/__init__.py,sha256=p3KO6Aa3Lupos4i2SjzLQw1hzQTigOAfEHngsldrsyk,986
22
22
  aient/plugins/arXiv.py,sha256=yHjb6PS3GUWazpOYRMKMzghKJlxnZ5TX8z9F6UtUVow,1461
23
23
  aient/plugins/config.py,sha256=TGgZ5SnNKZ8MmdznrZ-TEq7s2ulhAAwTSKH89bci3dA,7079
@@ -35,8 +35,8 @@ aient/plugins/write_file.py,sha256=Jt8fOEwqhYiSWpCbwfAr1xoi_BmFnx3076GMhuL06uI,3
35
35
  aient/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
36
  aient/utils/prompt.py,sha256=ZvGAt_ImJ_CGbDnWgpsWskfSV5fCkpFKRpNQjYL7M7s,11100
37
37
  aient/utils/scripts.py,sha256=Q0tS7E9AmdikO7GeDBd_3Ii5opXHCvKjDGqHsXen6_A,40622
38
- aient-1.2.36.dist-info/licenses/LICENSE,sha256=XNdbcWldt0yaNXXWB_Bakoqnxb3OVhUft4MgMA_71ds,1051
39
- aient-1.2.36.dist-info/METADATA,sha256=saoXdXmCNTcRpt6pY1xgr_SpqNHFfglwjZIBzjVmmAs,4842
40
- aient-1.2.36.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
41
- aient-1.2.36.dist-info/top_level.txt,sha256=3oXzrP5sAVvyyqabpeq8A2_vfMtY554r4bVE-OHBrZk,6
42
- aient-1.2.36.dist-info/RECORD,,
38
+ aient-1.2.38.dist-info/licenses/LICENSE,sha256=XNdbcWldt0yaNXXWB_Bakoqnxb3OVhUft4MgMA_71ds,1051
39
+ aient-1.2.38.dist-info/METADATA,sha256=A3NYlZmG4UU3xryjyt8LdXhFnLQ9cXtx2eg7SGaoJR4,4842
40
+ aient-1.2.38.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
41
+ aient-1.2.38.dist-info/top_level.txt,sha256=3oXzrP5sAVvyyqabpeq8A2_vfMtY554r4bVE-OHBrZk,6
42
+ aient-1.2.38.dist-info/RECORD,,
File without changes