AstrBot 4.10.0__py3-none-any.whl → 4.10.0a1__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.
- astrbot/cli/__init__.py +1 -1
- astrbot/core/agent/runners/tool_loop_agent_runner.py +21 -61
- astrbot/core/astr_agent_run_util.py +1 -19
- astrbot/core/astr_agent_tool_exec.py +4 -34
- astrbot/core/config/default.py +1 -1
- astrbot/core/pipeline/process_stage/method/agent_sub_stages/internal.py +1 -6
- astrbot/core/provider/sources/gemini_source.py +3 -19
- astrbot/dashboard/routes/chat.py +1 -1
- {astrbot-4.10.0.dist-info → astrbot-4.10.0a1.dist-info}/METADATA +1 -1
- {astrbot-4.10.0.dist-info → astrbot-4.10.0a1.dist-info}/RECORD +13 -13
- {astrbot-4.10.0.dist-info → astrbot-4.10.0a1.dist-info}/WHEEL +0 -0
- {astrbot-4.10.0.dist-info → astrbot-4.10.0a1.dist-info}/entry_points.txt +0 -0
- {astrbot-4.10.0.dist-info → astrbot-4.10.0a1.dist-info}/licenses/LICENSE +0 -0
astrbot/cli/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "4.10.0"
|
|
1
|
+
__version__ = "4.10.0-alpha.1"
|
|
@@ -76,19 +76,12 @@ class ToolLoopAgentRunner(BaseAgentRunner[TContext]):
|
|
|
76
76
|
|
|
77
77
|
async def _iter_llm_responses(self) -> T.AsyncGenerator[LLMResponse, None]:
|
|
78
78
|
"""Yields chunks *and* a final LLMResponse."""
|
|
79
|
-
payload = {
|
|
80
|
-
"contexts": self.run_context.messages,
|
|
81
|
-
"func_tool": self.req.func_tool,
|
|
82
|
-
"model": self.req.model, # NOTE: in fact, this arg is None in most cases
|
|
83
|
-
"session_id": self.req.session_id,
|
|
84
|
-
}
|
|
85
|
-
|
|
86
79
|
if self.streaming:
|
|
87
|
-
stream = self.provider.text_chat_stream(**
|
|
80
|
+
stream = self.provider.text_chat_stream(**self.req.__dict__)
|
|
88
81
|
async for resp in stream: # type: ignore
|
|
89
82
|
yield resp
|
|
90
83
|
else:
|
|
91
|
-
yield await self.provider.text_chat(**
|
|
84
|
+
yield await self.provider.text_chat(**self.req.__dict__)
|
|
92
85
|
|
|
93
86
|
@override
|
|
94
87
|
async def step(self):
|
|
@@ -172,7 +165,7 @@ class ToolLoopAgentRunner(BaseAgentRunner[TContext]):
|
|
|
172
165
|
self.run_context.messages.append(
|
|
173
166
|
Message(
|
|
174
167
|
role="assistant",
|
|
175
|
-
content=llm_resp.completion_text or "
|
|
168
|
+
content=llm_resp.completion_text or "",
|
|
176
169
|
),
|
|
177
170
|
)
|
|
178
171
|
try:
|
|
@@ -237,25 +230,6 @@ class ToolLoopAgentRunner(BaseAgentRunner[TContext]):
|
|
|
237
230
|
async for resp in self.step():
|
|
238
231
|
yield resp
|
|
239
232
|
|
|
240
|
-
# 如果循环结束了但是 agent 还没有完成,说明是达到了 max_step
|
|
241
|
-
if not self.done():
|
|
242
|
-
logger.warning(
|
|
243
|
-
f"Agent reached max steps ({max_step}), forcing a final response."
|
|
244
|
-
)
|
|
245
|
-
# 拔掉所有工具
|
|
246
|
-
if self.req:
|
|
247
|
-
self.req.func_tool = None
|
|
248
|
-
# 注入提示词
|
|
249
|
-
self.run_context.messages.append(
|
|
250
|
-
Message(
|
|
251
|
-
role="user",
|
|
252
|
-
content="工具调用次数已达到上限,请停止使用工具,并根据已经收集到的信息,对你的任务和发现进行总结,然后直接回复用户。",
|
|
253
|
-
)
|
|
254
|
-
)
|
|
255
|
-
# 再执行最后一步
|
|
256
|
-
async for resp in self.step():
|
|
257
|
-
yield resp
|
|
258
|
-
|
|
259
233
|
async def _handle_function_tools(
|
|
260
234
|
self,
|
|
261
235
|
req: ProviderRequest,
|
|
@@ -402,33 +376,35 @@ class ToolLoopAgentRunner(BaseAgentRunner[TContext]):
|
|
|
402
376
|
),
|
|
403
377
|
)
|
|
404
378
|
|
|
379
|
+
# yield the last tool call result
|
|
380
|
+
if tool_call_result_blocks:
|
|
381
|
+
last_tcr_content = str(tool_call_result_blocks[-1].content)
|
|
382
|
+
yield MessageChain(
|
|
383
|
+
type="tool_call_result",
|
|
384
|
+
chain=[
|
|
385
|
+
Json(
|
|
386
|
+
data={
|
|
387
|
+
"id": func_tool_id,
|
|
388
|
+
"ts": time.time(),
|
|
389
|
+
"result": last_tcr_content,
|
|
390
|
+
}
|
|
391
|
+
)
|
|
392
|
+
],
|
|
393
|
+
)
|
|
394
|
+
|
|
405
395
|
elif resp is None:
|
|
406
396
|
# Tool 直接请求发送消息给用户
|
|
407
397
|
# 这里我们将直接结束 Agent Loop。
|
|
408
398
|
# 发送消息逻辑在 ToolExecutor 中处理了。
|
|
409
399
|
logger.warning(
|
|
410
|
-
f"{func_tool_name}
|
|
400
|
+
f"{func_tool_name} 没有没有返回值或者将结果直接发送给用户,此工具调用不会被记录到历史中。"
|
|
411
401
|
)
|
|
412
402
|
self._transition_state(AgentState.DONE)
|
|
413
403
|
self.stats.end_time = time.time()
|
|
414
|
-
tool_call_result_blocks.append(
|
|
415
|
-
ToolCallMessageSegment(
|
|
416
|
-
role="tool",
|
|
417
|
-
tool_call_id=func_tool_id,
|
|
418
|
-
content="*工具没有返回值或者将结果直接发送给了用户*",
|
|
419
|
-
),
|
|
420
|
-
)
|
|
421
404
|
else:
|
|
422
405
|
# 不应该出现其他类型
|
|
423
406
|
logger.warning(
|
|
424
|
-
f"Tool 返回了不支持的类型: {type(resp)}
|
|
425
|
-
)
|
|
426
|
-
tool_call_result_blocks.append(
|
|
427
|
-
ToolCallMessageSegment(
|
|
428
|
-
role="tool",
|
|
429
|
-
tool_call_id=func_tool_id,
|
|
430
|
-
content="*工具返回了不支持的类型,请告诉用户检查这个工具的定义和实现。*",
|
|
431
|
-
),
|
|
407
|
+
f"Tool 返回了不支持的类型: {type(resp)},将忽略。",
|
|
432
408
|
)
|
|
433
409
|
|
|
434
410
|
try:
|
|
@@ -450,22 +426,6 @@ class ToolLoopAgentRunner(BaseAgentRunner[TContext]):
|
|
|
450
426
|
),
|
|
451
427
|
)
|
|
452
428
|
|
|
453
|
-
# yield the last tool call result
|
|
454
|
-
if tool_call_result_blocks:
|
|
455
|
-
last_tcr_content = str(tool_call_result_blocks[-1].content)
|
|
456
|
-
yield MessageChain(
|
|
457
|
-
type="tool_call_result",
|
|
458
|
-
chain=[
|
|
459
|
-
Json(
|
|
460
|
-
data={
|
|
461
|
-
"id": func_tool_id,
|
|
462
|
-
"ts": time.time(),
|
|
463
|
-
"result": last_tcr_content,
|
|
464
|
-
}
|
|
465
|
-
)
|
|
466
|
-
],
|
|
467
|
-
)
|
|
468
|
-
|
|
469
429
|
# 处理函数调用响应
|
|
470
430
|
if tool_call_result_blocks:
|
|
471
431
|
yield tool_call_result_blocks
|
|
@@ -2,7 +2,6 @@ import traceback
|
|
|
2
2
|
from collections.abc import AsyncGenerator
|
|
3
3
|
|
|
4
4
|
from astrbot.core import logger
|
|
5
|
-
from astrbot.core.agent.message import Message
|
|
6
5
|
from astrbot.core.agent.runners.tool_loop_agent_runner import ToolLoopAgentRunner
|
|
7
6
|
from astrbot.core.astr_agent_context import AstrAgentContext
|
|
8
7
|
from astrbot.core.message.components import Json
|
|
@@ -25,25 +24,8 @@ async def run_agent(
|
|
|
25
24
|
) -> AsyncGenerator[MessageChain | None, None]:
|
|
26
25
|
step_idx = 0
|
|
27
26
|
astr_event = agent_runner.run_context.context.event
|
|
28
|
-
while step_idx < max_step
|
|
27
|
+
while step_idx < max_step:
|
|
29
28
|
step_idx += 1
|
|
30
|
-
|
|
31
|
-
if step_idx == max_step + 1:
|
|
32
|
-
logger.warning(
|
|
33
|
-
f"Agent reached max steps ({max_step}), forcing a final response."
|
|
34
|
-
)
|
|
35
|
-
if not agent_runner.done():
|
|
36
|
-
# 拔掉所有工具
|
|
37
|
-
if agent_runner.req:
|
|
38
|
-
agent_runner.req.func_tool = None
|
|
39
|
-
# 注入提示词
|
|
40
|
-
agent_runner.run_context.messages.append(
|
|
41
|
-
Message(
|
|
42
|
-
role="user",
|
|
43
|
-
content="工具调用次数已达到上限,请停止使用工具,并根据已经收集到的信息,对你的任务和发现进行总结,然后直接回复用户。",
|
|
44
|
-
)
|
|
45
|
-
)
|
|
46
|
-
|
|
47
29
|
try:
|
|
48
30
|
async for resp in agent_runner.step():
|
|
49
31
|
if astr_event.is_stopped():
|
|
@@ -209,42 +209,12 @@ async def call_local_llm_tool(
|
|
|
209
209
|
else:
|
|
210
210
|
raise ValueError(f"未知的方法名: {method_name}")
|
|
211
211
|
except ValueError as e:
|
|
212
|
-
|
|
213
|
-
except TypeError
|
|
214
|
-
|
|
215
|
-
try:
|
|
216
|
-
sig = inspect.signature(handler)
|
|
217
|
-
params = list(sig.parameters.values())
|
|
218
|
-
# 跳过第一个参数(event 或 context)
|
|
219
|
-
if params:
|
|
220
|
-
params = params[1:]
|
|
221
|
-
|
|
222
|
-
param_strs = []
|
|
223
|
-
for param in params:
|
|
224
|
-
param_str = param.name
|
|
225
|
-
if param.annotation != inspect.Parameter.empty:
|
|
226
|
-
# 获取类型注解的字符串表示
|
|
227
|
-
if isinstance(param.annotation, type):
|
|
228
|
-
type_str = param.annotation.__name__
|
|
229
|
-
else:
|
|
230
|
-
type_str = str(param.annotation)
|
|
231
|
-
param_str += f": {type_str}"
|
|
232
|
-
if param.default != inspect.Parameter.empty:
|
|
233
|
-
param_str += f" = {param.default!r}"
|
|
234
|
-
param_strs.append(param_str)
|
|
235
|
-
|
|
236
|
-
handler_param_str = (
|
|
237
|
-
", ".join(param_strs) if param_strs else "(no additional parameters)"
|
|
238
|
-
)
|
|
239
|
-
except Exception:
|
|
240
|
-
handler_param_str = "(unable to inspect signature)"
|
|
241
|
-
|
|
242
|
-
raise Exception(
|
|
243
|
-
f"Tool handler parameter mismatch, please check the handler definition. Handler parameters: {handler_param_str}"
|
|
244
|
-
) from e
|
|
212
|
+
logger.error(f"调用本地 LLM 工具时出错: {e}", exc_info=True)
|
|
213
|
+
except TypeError:
|
|
214
|
+
logger.error("处理函数参数不匹配,请检查 handler 的定义。", exc_info=True)
|
|
245
215
|
except Exception as e:
|
|
246
216
|
trace_ = traceback.format_exc()
|
|
247
|
-
|
|
217
|
+
logger.error(f"调用本地 LLM 工具时出错: {e}\n{trace_}")
|
|
248
218
|
|
|
249
219
|
if not ready_to_call:
|
|
250
220
|
return
|
astrbot/core/config/default.py
CHANGED
|
@@ -321,12 +321,7 @@ class InternalAgentSubStage(Stage):
|
|
|
321
321
|
elif isinstance(req.tool_calls_result, list):
|
|
322
322
|
for tcr in req.tool_calls_result:
|
|
323
323
|
messages.extend(tcr.to_openai_messages())
|
|
324
|
-
messages.append(
|
|
325
|
-
{
|
|
326
|
-
"role": "assistant",
|
|
327
|
-
"content": llm_response.completion_text or "*No response*",
|
|
328
|
-
}
|
|
329
|
-
)
|
|
324
|
+
messages.append({"role": "assistant", "content": llm_response.completion_text})
|
|
330
325
|
messages = list(filter(lambda item: "_no_save" not in item, messages))
|
|
331
326
|
await self.conv_manager.update_conversation(
|
|
332
327
|
event.unified_msg_origin,
|
|
@@ -138,7 +138,7 @@ class ProviderGoogleGenAI(Provider):
|
|
|
138
138
|
modalities = ["TEXT"]
|
|
139
139
|
|
|
140
140
|
tool_list: list[types.Tool] | None = []
|
|
141
|
-
model_name =
|
|
141
|
+
model_name = payloads.get("model", self.get_model())
|
|
142
142
|
native_coderunner = self.provider_config.get("gm_native_coderunner", False)
|
|
143
143
|
native_search = self.provider_config.get("gm_native_search", False)
|
|
144
144
|
url_context = self.provider_config.get("gm_url_context", False)
|
|
@@ -199,16 +199,7 @@ class ProviderGoogleGenAI(Provider):
|
|
|
199
199
|
|
|
200
200
|
# oper thinking config
|
|
201
201
|
thinking_config = None
|
|
202
|
-
if model_name
|
|
203
|
-
"gemini-2.5-pro",
|
|
204
|
-
"gemini-2.5-pro-preview",
|
|
205
|
-
"gemini-2.5-flash",
|
|
206
|
-
"gemini-2.5-flash-preview",
|
|
207
|
-
"gemini-2.5-flash-lite",
|
|
208
|
-
"gemini-2.5-flash-lite-preview",
|
|
209
|
-
"gemini-robotics-er-1.5-preview",
|
|
210
|
-
"gemini-live-2.5-flash-preview-native-audio-09-2025",
|
|
211
|
-
]:
|
|
202
|
+
if model_name.startswith("gemini-2.5"):
|
|
212
203
|
# The thinkingBudget parameter, introduced with the Gemini 2.5 series
|
|
213
204
|
thinking_budget = self.provider_config.get("gm_thinking_config", {}).get(
|
|
214
205
|
"budget", 0
|
|
@@ -217,14 +208,7 @@ class ProviderGoogleGenAI(Provider):
|
|
|
217
208
|
thinking_config = types.ThinkingConfig(
|
|
218
209
|
thinking_budget=thinking_budget,
|
|
219
210
|
)
|
|
220
|
-
elif model_name
|
|
221
|
-
"gemini-3-pro",
|
|
222
|
-
"gemini-3-pro-preview",
|
|
223
|
-
"gemini-3-flash",
|
|
224
|
-
"gemini-3-flash-preview",
|
|
225
|
-
"gemini-3-flash-lite",
|
|
226
|
-
"gemini-3-flash-lite-preview",
|
|
227
|
-
]:
|
|
211
|
+
elif model_name.startswith("gemini-3"):
|
|
228
212
|
# The thinkingLevel parameter, recommended for Gemini 3 models and onwards
|
|
229
213
|
# Gemini 2.5 series models don't support thinkingLevel; use thinkingBudget instead.
|
|
230
214
|
thinking_level = self.provider_config.get("gm_thinking_config", {}).get(
|
astrbot/dashboard/routes/chat.py
CHANGED
|
@@ -436,7 +436,7 @@ class ChatRoute(Route):
|
|
|
436
436
|
accumulated_parts = []
|
|
437
437
|
accumulated_text = ""
|
|
438
438
|
accumulated_reasoning = ""
|
|
439
|
-
|
|
439
|
+
tool_calls = {}
|
|
440
440
|
agent_stats = {}
|
|
441
441
|
except BaseException as e:
|
|
442
442
|
logger.exception(f"WebChat stream unexpected error: {e}", exc_info=True)
|
|
@@ -8,7 +8,7 @@ astrbot/api/platform/__init__.py,sha256=HXvAy_KLtOJspoGVgDtLa7VjIZoF6WK3Puww55yy
|
|
|
8
8
|
astrbot/api/provider/__init__.py,sha256=mJVcon0snjn_xYirk2hntwba6ymIYYC-ZKKmxvx-jok,379
|
|
9
9
|
astrbot/api/star/__init__.py,sha256=OxgHGtWn3lEQGjb4twbpbWnRepUevPu7gxtDAkAsfhQ,250
|
|
10
10
|
astrbot/api/util/__init__.py,sha256=L1O_mFEUDk8V4lEPsT5iiNbIiOVh7HbrNmitqzUWMZg,180
|
|
11
|
-
astrbot/cli/__init__.py,sha256=
|
|
11
|
+
astrbot/cli/__init__.py,sha256=7tPyHq9-ywFKjFXC8MGPLhb0SShJyNZOIKFI-DEVAqQ,31
|
|
12
12
|
astrbot/cli/__main__.py,sha256=QobgMyFoLNTgI_OYddhGOZ9ZvQeBVjjz79mA2cC2OEU,1758
|
|
13
13
|
astrbot/cli/commands/__init__.py,sha256=eAgppZQIqFO1ylQJFABeYrzQ0oZqPWjtE80aKIPB3ks,149
|
|
14
14
|
astrbot/cli/commands/cmd_conf.py,sha256=6-YLicBt_zjWTzaVLUJ1VQLQPbDEPYACB9IVnN8Zvng,6330
|
|
@@ -22,8 +22,8 @@ astrbot/cli/utils/version_comparator.py,sha256=NVUmshfb5LU4a-S453rI7opqo0QtIHvlT
|
|
|
22
22
|
astrbot/core/__init__.py,sha256=zsaF9IeON4NaHk_Ktr0eB7xQEFC5tUZ4UJCesC3-KHM,1220
|
|
23
23
|
astrbot/core/astr_agent_context.py,sha256=bJnAm_CGzkhMnC99GA_j0Xwmi-OYoBPmgGanuS36DF4,637
|
|
24
24
|
astrbot/core/astr_agent_hooks.py,sha256=QOMtBaamDRiylGIby5D5ApThk94Y_Dcy4gDnhPBHXKo,1073
|
|
25
|
-
astrbot/core/astr_agent_run_util.py,sha256=
|
|
26
|
-
astrbot/core/astr_agent_tool_exec.py,sha256=
|
|
25
|
+
astrbot/core/astr_agent_run_util.py,sha256=woTtR-6Z6EQh0Yj2cBx8LBSgqaOj_zCau8KefeXE_Gc,4755
|
|
26
|
+
astrbot/core/astr_agent_tool_exec.py,sha256=KnUP1q0k_pOWT3krw8leH53G7QTnapDjMlXH-LnI-xA,9005
|
|
27
27
|
astrbot/core/astrbot_config_mgr.py,sha256=SUvusfo8Qk89eNpEmduWcXuczJ9g5TBH-VOV69ax28g,8950
|
|
28
28
|
astrbot/core/conversation_mgr.py,sha256=GsirCeMBmgxyaOb3hYNleF_11yyFyAER5PtpM3IUvIQ,15765
|
|
29
29
|
astrbot/core/core_lifecycle.py,sha256=nFuuNA0SJkCAeyoGZmG0LbBAhoq9j-_ajHq71s5tWAA,12796
|
|
@@ -48,7 +48,7 @@ astrbot/core/agent/tool.py,sha256=ITSAmYBp2y-QPWdZkc-KXof3UIHjQ2rmweyUPuYykFA,94
|
|
|
48
48
|
astrbot/core/agent/tool_executor.py,sha256=8GGgVB_JaKGVLQUG1epeL-lvKMqgfQ7mJaOPnVytnXo,438
|
|
49
49
|
astrbot/core/agent/runners/__init__.py,sha256=KwR34OKGVSQpJ_MaGVP_MX5L1SZ4oU-lv4GuMbSF5Ys,65
|
|
50
50
|
astrbot/core/agent/runners/base.py,sha256=OHMt15x1C3O_F3EJI2Nb_3hwggGUkJHuPWWCa1kHX9o,1885
|
|
51
|
-
astrbot/core/agent/runners/tool_loop_agent_runner.py,sha256=
|
|
51
|
+
astrbot/core/agent/runners/tool_loop_agent_runner.py,sha256=ZGkG0JanhBYaUPqfj5PbCkLeP0lwC5LacCHZfMM6nuU,17973
|
|
52
52
|
astrbot/core/agent/runners/coze/coze_agent_runner.py,sha256=bc2GImNsBTyXuotl_ohKYiNqws5Dkcms_xmIoUtDJMM,13846
|
|
53
53
|
astrbot/core/agent/runners/coze/coze_api_client.py,sha256=0k8pQsFsbjKdF-jkY91qZWsC8YSaSmwC98TMTK-zqw0,10853
|
|
54
54
|
astrbot/core/agent/runners/dashscope/dashscope_agent_runner.py,sha256=xr3otT0o6kHEy_sWjUv4xh-KmES3fjlowIPrtcKYiVI,13339
|
|
@@ -56,7 +56,7 @@ astrbot/core/agent/runners/dify/dify_agent_runner.py,sha256=LYwpjOcBWf3XlwNVzrDv
|
|
|
56
56
|
astrbot/core/agent/runners/dify/dify_api_client.py,sha256=OXukDVgNx3VmYw6OCzjXyP8JmDWEFuy81sD9XnC4VRo,6530
|
|
57
57
|
astrbot/core/config/__init__.py,sha256=vZjtpC7vr-IvBgSUtbS04C0wpulmCG5tPmcEP1WYE_4,172
|
|
58
58
|
astrbot/core/config/astrbot_config.py,sha256=6bUTnMCOyaS8s6ELsWctDfUFTB53fKJQNu272dZXkdU,6347
|
|
59
|
-
astrbot/core/config/default.py,sha256=
|
|
59
|
+
astrbot/core/config/default.py,sha256=nBcK_RVYg0NiiWfhjLt4iQM4bfHmWkB-kJ3PbmEpZJI,147682
|
|
60
60
|
astrbot/core/config/i18n_utils.py,sha256=HJn_0XeeVS9ryCBelYfnc0nEn10LlX702fcSSFrF1J8,3879
|
|
61
61
|
astrbot/core/db/__init__.py,sha256=OnvNaC76hYp28Bq9zkFXMl19zn7w-FC1zxyLgsemGvU,13400
|
|
62
62
|
astrbot/core/db/po.py,sha256=eoI4sjpFb9CwRy6_Gf6-zHVSka6-oJr0LA4qcepqHzU,11804
|
|
@@ -111,7 +111,7 @@ astrbot/core/pipeline/process_stage/stage.py,sha256=tOg6HYGVU1GoY921YBYVO1MTM7a5
|
|
|
111
111
|
astrbot/core/pipeline/process_stage/utils.py,sha256=q4V5G0PZD5b5mPh1lM-6w79LKGpp7RR7-PqYFhWpopM,4061
|
|
112
112
|
astrbot/core/pipeline/process_stage/method/agent_request.py,sha256=GlGrGCsCASC4a3PpG6Oc1907aLdl_PrUMXrFiEiEEzc,2043
|
|
113
113
|
astrbot/core/pipeline/process_stage/method/star_request.py,sha256=C-PTq_Wpq4QMS2ecfRDCcDSX3rYyldfsAN-jAaEEb-w,2430
|
|
114
|
-
astrbot/core/pipeline/process_stage/method/agent_sub_stages/internal.py,sha256=
|
|
114
|
+
astrbot/core/pipeline/process_stage/method/agent_sub_stages/internal.py,sha256=sDU4b85nV7LswGngFeYOG9VUv-BRR7gufy00ptU_Utg,21175
|
|
115
115
|
astrbot/core/pipeline/process_stage/method/agent_sub_stages/third_party.py,sha256=LNBRItSpZn0MLP4fyHQ_3gUJ8lnmCwuPlqnZDVFLI6Q,7332
|
|
116
116
|
astrbot/core/pipeline/rate_limit_check/stage.py,sha256=9EVJ0zYtxATFsj7ADyWDYcSGBRqmrMiKWp1kkD9LONI,3962
|
|
117
117
|
astrbot/core/pipeline/respond/stage.py,sha256=RIYGXTG-XvBhgRqaHyJYWlsZjskS9pgV-2jm5o956ho,11042
|
|
@@ -190,7 +190,7 @@ astrbot/core/provider/sources/dashscope_tts.py,sha256=-qBMwbIt_QSmWCT_uPAxrXSYuE
|
|
|
190
190
|
astrbot/core/provider/sources/edge_tts_source.py,sha256=dsf6YtSGzCJvas3BqBwHSn8vlMgQ_vgD9NEwngqDlEo,4690
|
|
191
191
|
astrbot/core/provider/sources/fishaudio_tts_api_source.py,sha256=z5yJuc47iky31N0Za3Li7uwMP15N1gsKJkV9ybIbKew,5556
|
|
192
192
|
astrbot/core/provider/sources/gemini_embedding_source.py,sha256=bj4iXnMyONTyUBmBFeezPcBpjtfX_UBjMrbwMFyCis8,2607
|
|
193
|
-
astrbot/core/provider/sources/gemini_source.py,sha256=
|
|
193
|
+
astrbot/core/provider/sources/gemini_source.py,sha256=7CoVxKvC4mPU4pnVbjplvl2AMHwcNpq4UAQR-nIJrN4,33379
|
|
194
194
|
astrbot/core/provider/sources/gemini_tts_source.py,sha256=6LJIT2aTjoZaMszjYRzDu38prsO9G5Xg7SzJmQb2TzE,2880
|
|
195
195
|
astrbot/core/provider/sources/groq_source.py,sha256=NqmiQn37mrMsaTyGX25eNzMpIgkCifY-5TJO8DFzHaA,456
|
|
196
196
|
astrbot/core/provider/sources/gsv_selfhosted_source.py,sha256=RYQgwCc67N7RWPaODN4sSLJZn6o5gpgk_jF_KaRnD0M,5942
|
|
@@ -258,7 +258,7 @@ astrbot/dashboard/server.py,sha256=HfmWHj4aqYcTT1re0vD4Fw6BHedg4bcfqpnWiisFWko,9
|
|
|
258
258
|
astrbot/dashboard/utils.py,sha256=KrAv0lnPaVR0bx8yevT1CLGbSNsJizlfkKkPEtVVANI,5355
|
|
259
259
|
astrbot/dashboard/routes/__init__.py,sha256=57ZYHYQfNI-YAiA8K9m2tRJcHzMKcZ02Vu-A_eD0HUE,894
|
|
260
260
|
astrbot/dashboard/routes/auth.py,sha256=rYkvt3MpCY9BhWjG0DUoX3YaBkJT1Id7M2pKqTmXbvo,2946
|
|
261
|
-
astrbot/dashboard/routes/chat.py,sha256=
|
|
261
|
+
astrbot/dashboard/routes/chat.py,sha256=Bs9RUj0WFeyiXJgJTu3i19tPocRvpm87W3IYqIiMSH8,27118
|
|
262
262
|
astrbot/dashboard/routes/command.py,sha256=OLrDDUAE5zpxZMRJ3_IGe-6xFEpPwcXcd-EJ60e9OHI,2862
|
|
263
263
|
astrbot/dashboard/routes/config.py,sha256=v2CQ6rPb1VAyrj9bJNr8g0GoFlzm3qeEuXs2P6kIwQw,42903
|
|
264
264
|
astrbot/dashboard/routes/conversation.py,sha256=TWGY7BJ9QfmbxurAieBrbMmCi4_Ua2klxsAUlSRXbng,14302
|
|
@@ -275,8 +275,8 @@ astrbot/dashboard/routes/static_file.py,sha256=7KnNcOb1BVqSTft114LhGsDkfg69X2jHE
|
|
|
275
275
|
astrbot/dashboard/routes/t2i.py,sha256=F6smxdL99MF7cRw3hqS6-2GErw8Zhsv0V0mfBUeEk-c,8931
|
|
276
276
|
astrbot/dashboard/routes/tools.py,sha256=mMwVFw_VOlpqy_WZg1A-ddGtYa5L5QLWYawl37PT0-c,15354
|
|
277
277
|
astrbot/dashboard/routes/update.py,sha256=qXiqQ_dbqRVftOzGgCQrvK8-qopVK6zKhhVVJ9SK26U,6648
|
|
278
|
-
astrbot-4.10.
|
|
279
|
-
astrbot-4.10.
|
|
280
|
-
astrbot-4.10.
|
|
281
|
-
astrbot-4.10.
|
|
282
|
-
astrbot-4.10.
|
|
278
|
+
astrbot-4.10.0a1.dist-info/METADATA,sha256=c4FiZcy2QW4xkZJRjNzKeRC8VaKHUmYOLo_6mcCnvUc,11927
|
|
279
|
+
astrbot-4.10.0a1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
280
|
+
astrbot-4.10.0a1.dist-info/entry_points.txt,sha256=OEF09YmhBWYuViXrvTLLpstF4ccmNwDL8r7nnFD0pfI,53
|
|
281
|
+
astrbot-4.10.0a1.dist-info/licenses/LICENSE,sha256=zPfQj5Mq8-gThIiBcxETr7t8gND9bZWOjTGQAr80TQI,34500
|
|
282
|
+
astrbot-4.10.0a1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|