aient 1.1.54__tar.gz → 1.1.55__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 (79) hide show
  1. {aient-1.1.54/src/aient.egg-info → aient-1.1.55}/PKG-INFO +1 -1
  2. {aient-1.1.54 → aient-1.1.55}/setup.py +1 -1
  3. {aient-1.1.54 → aient-1.1.55}/src/aient/core/request.py +3 -1
  4. {aient-1.1.54 → aient-1.1.55}/src/aient/core/response.py +14 -5
  5. {aient-1.1.54 → aient-1.1.55/src/aient.egg-info}/PKG-INFO +1 -1
  6. {aient-1.1.54 → aient-1.1.55}/LICENSE +0 -0
  7. {aient-1.1.54 → aient-1.1.55}/MANIFEST.in +0 -0
  8. {aient-1.1.54 → aient-1.1.55}/README.md +0 -0
  9. {aient-1.1.54 → aient-1.1.55}/setup.cfg +0 -0
  10. {aient-1.1.54 → aient-1.1.55}/src/aient/__init__.py +0 -0
  11. {aient-1.1.54 → aient-1.1.55}/src/aient/core/.git +0 -0
  12. {aient-1.1.54 → aient-1.1.55}/src/aient/core/.gitignore +0 -0
  13. {aient-1.1.54 → aient-1.1.55}/src/aient/core/__init__.py +0 -0
  14. {aient-1.1.54 → aient-1.1.55}/src/aient/core/log_config.py +0 -0
  15. {aient-1.1.54 → aient-1.1.55}/src/aient/core/models.py +0 -0
  16. {aient-1.1.54 → aient-1.1.55}/src/aient/core/test/test_base_api.py +0 -0
  17. {aient-1.1.54 → aient-1.1.55}/src/aient/core/test/test_geminimask.py +0 -0
  18. {aient-1.1.54 → aient-1.1.55}/src/aient/core/test/test_image.py +0 -0
  19. {aient-1.1.54 → aient-1.1.55}/src/aient/core/test/test_payload.py +0 -0
  20. {aient-1.1.54 → aient-1.1.55}/src/aient/core/utils.py +0 -0
  21. {aient-1.1.54 → aient-1.1.55}/src/aient/models/__init__.py +0 -0
  22. {aient-1.1.54 → aient-1.1.55}/src/aient/models/audio.py +0 -0
  23. {aient-1.1.54 → aient-1.1.55}/src/aient/models/base.py +0 -0
  24. {aient-1.1.54 → aient-1.1.55}/src/aient/models/chatgpt.py +0 -0
  25. {aient-1.1.54 → aient-1.1.55}/src/aient/models/claude.py +0 -0
  26. {aient-1.1.54 → aient-1.1.55}/src/aient/models/duckduckgo.py +0 -0
  27. {aient-1.1.54 → aient-1.1.55}/src/aient/models/gemini.py +0 -0
  28. {aient-1.1.54 → aient-1.1.55}/src/aient/models/groq.py +0 -0
  29. {aient-1.1.54 → aient-1.1.55}/src/aient/models/vertex.py +0 -0
  30. {aient-1.1.54 → aient-1.1.55}/src/aient/plugins/__init__.py +0 -0
  31. {aient-1.1.54 → aient-1.1.55}/src/aient/plugins/arXiv.py +0 -0
  32. {aient-1.1.54 → aient-1.1.55}/src/aient/plugins/config.py +0 -0
  33. {aient-1.1.54 → aient-1.1.55}/src/aient/plugins/excute_command.py +0 -0
  34. {aient-1.1.54 → aient-1.1.55}/src/aient/plugins/get_time.py +0 -0
  35. {aient-1.1.54 → aient-1.1.55}/src/aient/plugins/image.py +0 -0
  36. {aient-1.1.54 → aient-1.1.55}/src/aient/plugins/list_directory.py +0 -0
  37. {aient-1.1.54 → aient-1.1.55}/src/aient/plugins/read_file.py +0 -0
  38. {aient-1.1.54 → aient-1.1.55}/src/aient/plugins/read_image.py +0 -0
  39. {aient-1.1.54 → aient-1.1.55}/src/aient/plugins/readonly.py +0 -0
  40. {aient-1.1.54 → aient-1.1.55}/src/aient/plugins/registry.py +0 -0
  41. {aient-1.1.54 → aient-1.1.55}/src/aient/plugins/run_python.py +0 -0
  42. {aient-1.1.54 → aient-1.1.55}/src/aient/plugins/websearch.py +0 -0
  43. {aient-1.1.54 → aient-1.1.55}/src/aient/plugins/write_file.py +0 -0
  44. {aient-1.1.54 → aient-1.1.55}/src/aient/utils/__init__.py +0 -0
  45. {aient-1.1.54 → aient-1.1.55}/src/aient/utils/prompt.py +0 -0
  46. {aient-1.1.54 → aient-1.1.55}/src/aient/utils/scripts.py +0 -0
  47. {aient-1.1.54 → aient-1.1.55}/src/aient.egg-info/SOURCES.txt +0 -0
  48. {aient-1.1.54 → aient-1.1.55}/src/aient.egg-info/dependency_links.txt +0 -0
  49. {aient-1.1.54 → aient-1.1.55}/src/aient.egg-info/requires.txt +0 -0
  50. {aient-1.1.54 → aient-1.1.55}/src/aient.egg-info/top_level.txt +0 -0
  51. {aient-1.1.54 → aient-1.1.55}/test/test.py +0 -0
  52. {aient-1.1.54 → aient-1.1.55}/test/test_API.py +0 -0
  53. {aient-1.1.54 → aient-1.1.55}/test/test_Deepbricks.py +0 -0
  54. {aient-1.1.54 → aient-1.1.55}/test/test_Web_crawler.py +0 -0
  55. {aient-1.1.54 → aient-1.1.55}/test/test_aiwaves.py +0 -0
  56. {aient-1.1.54 → aient-1.1.55}/test/test_aiwaves_arxiv.py +0 -0
  57. {aient-1.1.54 → aient-1.1.55}/test/test_ask_gemini.py +0 -0
  58. {aient-1.1.54 → aient-1.1.55}/test/test_class.py +0 -0
  59. {aient-1.1.54 → aient-1.1.55}/test/test_claude.py +0 -0
  60. {aient-1.1.54 → aient-1.1.55}/test/test_claude_zh_char.py +0 -0
  61. {aient-1.1.54 → aient-1.1.55}/test/test_ddg_search.py +0 -0
  62. {aient-1.1.54 → aient-1.1.55}/test/test_download_pdf.py +0 -0
  63. {aient-1.1.54 → aient-1.1.55}/test/test_gemini.py +0 -0
  64. {aient-1.1.54 → aient-1.1.55}/test/test_get_token_dict.py +0 -0
  65. {aient-1.1.54 → aient-1.1.55}/test/test_google_search.py +0 -0
  66. {aient-1.1.54 → aient-1.1.55}/test/test_jieba.py +0 -0
  67. {aient-1.1.54 → aient-1.1.55}/test/test_json.py +0 -0
  68. {aient-1.1.54 → aient-1.1.55}/test/test_logging.py +0 -0
  69. {aient-1.1.54 → aient-1.1.55}/test/test_ollama.py +0 -0
  70. {aient-1.1.54 → aient-1.1.55}/test/test_plugin.py +0 -0
  71. {aient-1.1.54 → aient-1.1.55}/test/test_py_run.py +0 -0
  72. {aient-1.1.54 → aient-1.1.55}/test/test_requests.py +0 -0
  73. {aient-1.1.54 → aient-1.1.55}/test/test_search.py +0 -0
  74. {aient-1.1.54 → aient-1.1.55}/test/test_tikitoken.py +0 -0
  75. {aient-1.1.54 → aient-1.1.55}/test/test_token.py +0 -0
  76. {aient-1.1.54 → aient-1.1.55}/test/test_url.py +0 -0
  77. {aient-1.1.54 → aient-1.1.55}/test/test_whisper.py +0 -0
  78. {aient-1.1.54 → aient-1.1.55}/test/test_wildcard.py +0 -0
  79. {aient-1.1.54 → aient-1.1.55}/test/test_yjh.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aient
3
- Version: 1.1.54
3
+ Version: 1.1.55
4
4
  Summary: Aient: The Awakening of Agent.
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -4,7 +4,7 @@ from setuptools import setup, find_packages
4
4
 
5
5
  setup(
6
6
  name="aient",
7
- version="1.1.54",
7
+ version="1.1.55",
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",
@@ -1071,7 +1071,9 @@ async def get_gpt_payload(request, engine, provider, api_key=None):
1071
1071
  elif request.model.endswith("low"):
1072
1072
  payload["reasoning_effort"] = "low"
1073
1073
 
1074
- if "o1" in original_model or "o3" in original_model or "o4" in original_model:
1074
+ if "o1" in original_model or \
1075
+ "o3" in original_model or "o4" in original_model or \
1076
+ "gpt-oss" in original_model or "gpt-5" in original_model:
1075
1077
  if request.model.endswith("high"):
1076
1078
  payload["reasoning_effort"] = "high"
1077
1079
  elif request.model.endswith("low"):
@@ -34,12 +34,14 @@ def gemini_json_poccess(response_str):
34
34
  candidatesTokenCount = safe_get(response_json, "usageMetadata", "candidatesTokenCount", default=0)
35
35
  totalTokenCount = safe_get(response_json, "usageMetadata", "totalTokenCount", default=0)
36
36
 
37
- content = safe_get(json_data, "parts", 0, "text", default="")
37
+ content = reasoning_content = safe_get(json_data, "parts", 0, "text", default="")
38
38
  b64_json = safe_get(json_data, "parts", 0, "inlineData", "data", default="")
39
39
  if b64_json:
40
40
  image_base64 = b64_json
41
41
 
42
42
  is_thinking = safe_get(json_data, "parts", 0, "thought", default=False)
43
+ if is_thinking:
44
+ content = safe_get(json_data, "parts", 1, "text", default="")
43
45
 
44
46
  function_call_name = safe_get(json_data, "functionCall", "name", default=None)
45
47
  function_full_response = safe_get(json_data, "functionCall", "args", default="")
@@ -47,7 +49,7 @@ def gemini_json_poccess(response_str):
47
49
 
48
50
  blockReason = safe_get(json_data, 0, "promptFeedback", "blockReason", default=None)
49
51
 
50
- return is_thinking, content, image_base64, function_call_name, function_full_response, finishReason, blockReason, promptTokenCount, candidatesTokenCount, totalTokenCount
52
+ return is_thinking, reasoning_content, content, image_base64, function_call_name, function_full_response, finishReason, blockReason, promptTokenCount, candidatesTokenCount, totalTokenCount
51
53
 
52
54
  async def fetch_gemini_response_stream(client, url, headers, payload, model):
53
55
  timestamp = int(datetime.timestamp(datetime.now()))
@@ -63,11 +65,18 @@ async def fetch_gemini_response_stream(client, url, headers, payload, model):
63
65
  parts_json = ""
64
66
  async for chunk in response.aiter_text():
65
67
  buffer += chunk
68
+ if buffer and "\n" not in buffer:
69
+ buffer += "\n"
66
70
 
67
71
  while "\n" in buffer:
68
72
  line, buffer = buffer.split("\n", 1)
69
73
  if line.startswith("data: "):
70
74
  parts_json = line.lstrip("data: ").strip()
75
+ try:
76
+ json.loads(parts_json)
77
+ except json.JSONDecodeError:
78
+ logger.error(f"JSON decode error: {parts_json}")
79
+ continue
71
80
  else:
72
81
  parts_json += line
73
82
  parts_json = parts_json.lstrip("[,")
@@ -77,12 +86,12 @@ async def fetch_gemini_response_stream(client, url, headers, payload, model):
77
86
  continue
78
87
 
79
88
  # https://ai.google.dev/api/generate-content?hl=zh-cn#FinishReason
80
- is_thinking, content, image_base64, function_call_name, function_full_response, finishReason, blockReason, promptTokenCount, candidatesTokenCount, totalTokenCount = gemini_json_poccess(parts_json)
89
+ is_thinking, reasoning_content, content, image_base64, function_call_name, function_full_response, finishReason, blockReason, promptTokenCount, candidatesTokenCount, totalTokenCount = gemini_json_poccess(parts_json)
81
90
 
82
91
  if is_thinking:
83
- sse_string = await generate_sse_response(timestamp, model, reasoning_content=content)
92
+ sse_string = await generate_sse_response(timestamp, model, reasoning_content=reasoning_content)
84
93
  yield sse_string
85
- elif not image_base64 and content:
94
+ if not image_base64 and content:
86
95
  sse_string = await generate_sse_response(timestamp, model, content=content)
87
96
  yield sse_string
88
97
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aient
3
- Version: 1.1.54
3
+ Version: 1.1.55
4
4
  Summary: Aient: The Awakening of Agent.
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
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
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
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes