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.
- {aient-1.1.54/src/aient.egg-info → aient-1.1.55}/PKG-INFO +1 -1
- {aient-1.1.54 → aient-1.1.55}/setup.py +1 -1
- {aient-1.1.54 → aient-1.1.55}/src/aient/core/request.py +3 -1
- {aient-1.1.54 → aient-1.1.55}/src/aient/core/response.py +14 -5
- {aient-1.1.54 → aient-1.1.55/src/aient.egg-info}/PKG-INFO +1 -1
- {aient-1.1.54 → aient-1.1.55}/LICENSE +0 -0
- {aient-1.1.54 → aient-1.1.55}/MANIFEST.in +0 -0
- {aient-1.1.54 → aient-1.1.55}/README.md +0 -0
- {aient-1.1.54 → aient-1.1.55}/setup.cfg +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/__init__.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/core/.git +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/core/.gitignore +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/core/__init__.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/core/log_config.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/core/models.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/core/test/test_base_api.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/core/test/test_geminimask.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/core/test/test_image.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/core/test/test_payload.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/core/utils.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/models/__init__.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/models/audio.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/models/base.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/models/chatgpt.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/models/claude.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/models/duckduckgo.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/models/gemini.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/models/groq.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/models/vertex.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/plugins/__init__.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/plugins/arXiv.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/plugins/config.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/plugins/excute_command.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/plugins/get_time.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/plugins/image.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/plugins/list_directory.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/plugins/read_file.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/plugins/read_image.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/plugins/readonly.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/plugins/registry.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/plugins/run_python.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/plugins/websearch.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/plugins/write_file.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/utils/__init__.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/utils/prompt.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient/utils/scripts.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient.egg-info/SOURCES.txt +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient.egg-info/dependency_links.txt +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient.egg-info/requires.txt +0 -0
- {aient-1.1.54 → aient-1.1.55}/src/aient.egg-info/top_level.txt +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test_API.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test_Deepbricks.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test_Web_crawler.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test_aiwaves.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test_aiwaves_arxiv.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test_ask_gemini.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test_class.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test_claude.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test_claude_zh_char.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test_ddg_search.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test_download_pdf.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test_gemini.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test_get_token_dict.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test_google_search.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test_jieba.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test_json.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test_logging.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test_ollama.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test_plugin.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test_py_run.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test_requests.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test_search.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test_tikitoken.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test_token.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test_url.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test_whisper.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test_wildcard.py +0 -0
- {aient-1.1.54 → aient-1.1.55}/test/test_yjh.py +0 -0
@@ -4,7 +4,7 @@ from setuptools import setup, find_packages
|
|
4
4
|
|
5
5
|
setup(
|
6
6
|
name="aient",
|
7
|
-
version="1.1.
|
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
|
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=
|
92
|
+
sse_string = await generate_sse_response(timestamp, model, reasoning_content=reasoning_content)
|
84
93
|
yield sse_string
|
85
|
-
|
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
|
|
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
|
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
|