Dt8333
f624971613
chore: fix bunches of type checking errors ( #3213 )
...
* chore(core.utils): 🚨 修正错误Lint
* chore(core.provider): 🚨 修复基类错误Lint
* chore(core.utils): 补全session_get()的重载
* chore(core.provider): 🚨 修正实现错误Lint
* chore(core.platform): 🚨 修正platform基类和webchat的错误Lint
* chore(core.platform): 修正错误实现Lint
* fix(core.provider): 修复循环调用和错误assert
* chore(core.platform): 修复部分实现Lint
* chore(core.provider): 补充Dify.text_chat_stream的参数类型
* chore(core.pipeline): 🚨 修复错误Lint
* fix(core.slack): 补充遗漏导入
* chore(core.utils): 修复错误的session_get声明
* chore(core.platform): 移除Lark adapter import中的wildcard
* chore(core.db): 修复声明和部分逻辑
* chore(core.db): 添加typings,使faiss参数能被正确识别。
* chore(core): 修复声明
* chore(core): 修改声明
* chore: 补充faiss声明
* chore(dashboard): 修改实现,减少报错
* chore(package): 修改部分声明与实现,减少报错
* chore(core): 添加Handler的overload,以去除部分assert同时通过类型检查
* chore(core.pipeline): 修改Pipeline Scheduler的execute,将判断属性改为判断类型,通过静态类型检查
* chore(core.config): 添加类型标注,通过类型检查
* chore(core.message): 为File._download_file添加检查,通过类型检查
* fix: 将断言改为条件判断以实现优雅关闭的容错性
* refactor: 移除 discord 客户端中的 assert,改用 if None 判断并抛出异常
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: DiscordPlatformAdapter 对 self.client.user 为 None 做日志并返回,移除断言
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: 增强 Lark 相关空值/异常检查并完善日志输出
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 将断言替换为条件检查并加入日志与错误处理
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* chore: 移除LLM生成的无用注释
* refactor: 使用 File.get_file 替换下载逻辑并移除 assert,提供默认 filename
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: Slack Socket 未初始化抛出运行时异常,图片 URL 判空改为非空判断
* refactor: 将 WeChatPadProAdapter 的断言改为空值判断并添加日志
* refactor: 使用 isinstance 替代断言实现类型判断,便于静态检查
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: 去除cast,直接使用字段与字典访问,修正端口解析
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 使用 match-case 重构 ProviderManager 加载并通过类型检查抛出 TypeError
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: group_name_display 时若 group 对象为空则记录错误并返回
* fix: 将 _get_current_persona_id 的 assert 替换成 if guard 并返回 None
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: 优化插件目录存在性检查及图片URL非空验证,更新JSON排序配置
* fix: 将 datetime_str 的 assert 替换为显式检查并抛出异常
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 移除 cast,改为运行时检查并在找不到调度器时跳过
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 移除 cast,改用 isinstance 检查 FaissVecDB 并警告
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: 删除 typing.cast 导入,并在获取文件绝对路径前校验 file_
* refactor: 移除 typing.cast,简化内容安全检查调用
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 将 PlatformMetadata.id 设为必填并在注册时传入 id,移除 cast
* refactor: 移除 cast,改用 HasInitialize 与 isinstance 进行初始化
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: 为 ProviderManager.initialize 增加ID类型判断,避免 None 导致 get 失败
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 为 OTTSProvider 与 AzureNativeProvider 引入 _client 与 client 属性改进上下文管理
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: 为 Whisper 自托管源添加模型未初始化校验并直接调用 transcribe
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 移除未使用的 cast 导入并简化 platform_name 赋值
* refactor: 引入 cast 并对 id 使用 cast(str, ...) 提升类型安全
* fix: 将 _id_to_sid 返回改为 str,空值返回空串;对 id 与 message_id 使用 cast
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 重构 Discord 处理逻辑:强制 类型转换、优先斜杠指令并优化提及判断
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* fix: 统一对 id 获取执行 cast,并在微信消息解析失败时抛错
* Revert "fix: 去除cast,直接使用字段与字典访问,修正端口解析"
This reverts commit 1cbfdf9d1b .
* fix: 百炼 Rerank 会话关闭时返回空结果;初始化 request.prompt 避免空值拼接
* fix: 统一处理搜索结果链接为字符串,新增 _get_url 助手并适配 Bing/Sogo
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
* refactor: 调整 call_handler 泛型、Discord 通道注解及 FishAudioTTS API 请求类型
* refactor: 使用 col(...) 替代列引用并对结果进行 CursorResult 强转
* chore: ruff format
---------
Co-authored-by: aider (openai/gemini-3-pro-high) <aider@aider.chat >
Co-authored-by: Soulter <905617992@qq.com >
2025-12-09 14:13:47 +08:00
Soulter
c13c51f499
fix: assistant message validation error when tool_call exists but content not exists ( #3862 )
...
* fix: assistant message validation error when tool_call exists but content not exists
* fix: enhance content validation in Message model to allow None for assistant role with tool_calls
2025-11-30 23:42:37 +08:00
Soulter
4087bbb512
perf: set content attribute optional to AssistantMessageSegment for enhanced message handling
...
fixes : #3843
2025-11-30 00:32:00 +08:00
Soulter
6a50d316d9
fix: mcp server cannot reload successfully after updating mcp server config ( #3797 )
...
fixes : #3780
2025-11-27 16:22:26 +08:00
Soulter
82488ca900
feat(api): enhance file upload method to support mime type and file name
2025-11-24 15:30:49 +08:00
Soulter
7160b7a18b
fix: dify workflow streaming mode
2025-11-24 15:04:15 +08:00
Soulter
39eb367866
perf: improve file structure
...
- Implemented CozeAPIClient for file upload, image download, chat messaging, and context management.
- Developed DashscopeAgentRunner for handling requests to the Dashscope API with streaming support.
- Created DifyAgentRunner to manage interactions with the Dify API, including file uploads and workflow execution.
- Introduced DifyAPIClient for making asynchronous requests to the Dify API.
- Updated third-party agent imports to reflect new module structure.
2025-11-24 14:00:16 +08:00
Soulter
f1d51a22ad
feat(dashscope_agent_runner): refactor request payload construction and enhance streaming response handling
2025-11-24 13:21:34 +08:00
Soulter
77fb554e8f
feat(dashscope_agent_runner): implement streaming response handling and request payload construction
2025-11-24 13:09:57 +08:00
Soulter
66b3eed273
fix: correct typo in agent state transition log message
2025-11-24 00:03:22 +08:00
Soulter
910ec6c695
feat: implement third party agent sub stage and refactor provider management
...
- Added `ThirdPartyAgentSubStage` to handle interactions with third-party agent runners (Dify, Coze, Dashscope).
- Refactored `star_request.py` to ensure consistent return types in the `process` method.
- Updated `stage.py` to initialize and utilize the new `AgentRequestSubStage`.
- Modified `ProviderManager` to skip loading agent runner providers.
- Removed `Dify` source implementation as it is now handled by the new agent runner structure.
- Enhanced `DifyAPIClient` to support file uploads via both file path and file data.
- Cleaned up shared preferences handling to simplify session preference retrieval.
- Updated dashboard configuration to reflect changes in agent runner provider selection.
- Refactored conversation commands to accommodate the new agent runner structure and remove direct dependencies on Dify.
- Adjusted main application logic to ensure compatibility with the new conversation management approach.
2025-11-23 20:18:51 +08:00
Soulter
89716ef4da
Merge remote-tracking branch 'origin/master' into feat/agent-runner
2025-11-23 14:48:08 +08:00
Soulter
6d6fefc435
fix: anyio.ClosedResourceError when calling mcp tools ( #3700 )
...
* fix: anyio.ClosedResourceError when calling mcp tools
added reconnect mechanism
fixes: 3676
* fix(mcp_client): implement thread-safe reconnection using asyncio.Lock
2025-11-20 16:01:22 +08:00
Soulter
afb56cf707
feat: add supports for gemini-3 series thought signature ( #3698 )
...
* feat: add supports for gemini-3 series thought signature
* feat: refactor tools_call_extra_content to use a dictionary for better structure
2025-11-19 18:54:56 +08:00
piexian
6cf169f4f2
fix: ImageURLPart typo ( #3665 )
...
* 修复新版本更新对不上格式的问题
entities.py生成的格式:{"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,..."}}
ImageURLPart期望的格式:{"type": "image_url", "image_url": "data:image/jpeg;base64,..."}
* Revert "修复新版本更新对不上格式的问题"
This reverts commit 28b4791391 .
* fix(core.agent): 修复ImageURLPart的声明,修复pydantic校验失败的问题。
---------
Co-authored-by: piexian <piexian@users.noreply.github.com >
Co-authored-by: Dt8333 <lb0016@foxmail.com >
2025-11-17 09:52:31 +08:00
Soulter
fd9cb703db
refactor: update ToolSet initialization to use Pydantic Field and clean up deprecated methods in Context
2025-11-16 12:13:11 +08:00
Soulter
5a11d8f0ee
refactor: LLM response handling with reasoning content ( #3632 )
...
* refactor: LLM response handling with reasoning content
- Added a `show_reasoning` parameter to `run_agent` to control the display of reasoning content.
- Updated `LLMResponse` to include a `reasoning_content` field for storing reasoning text.
- Modified `WebChatMessageEvent` to handle and send reasoning content in streaming responses.
- Implemented reasoning extraction in various provider sources (e.g., OpenAI, Gemini).
- Updated the chat interface to display reasoning content in a collapsible format.
- Removed the deprecated `thinking_filter` package and its associated logic.
- Updated localization files to include new reasoning-related strings.
* feat: add Groq chat completion provider and associated configurations
* Update astrbot/core/provider/sources/gemini_source.py
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
---------
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com>
2025-11-15 21:31:03 +08:00
Soulter
17422ba9c3
feat: introduce messages field in agent RunContext
2025-11-15 21:15:20 +08:00
Soulter
d19945009f
refactor: decople the agent impl part and introduce some helper context method to call llm
2025-11-14 19:17:24 +08:00
Soulter
91136bb9f7
fix: llm tool register error ( #3493 )
2025-11-05 14:27:37 +08:00
Soulter
50144ddcae
refactor: revise LLM message schema and fix the reload logic when using dataclass-based LLM Tool registration ( #3234 )
...
* refactor: llm message schema
* feat: implement MCPTool and local LLM tools with enhanced context handling
* refactor: reorganize imports and enhance docstrings for clarity
* refactor: enhance ContentPart validation and add message pair handling in ConversationManager
* chore: ruff format
* refactor: remove debug print statement from payloads in ProviderOpenAIOfficial
* Update astrbot/core/agent/tool.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* Update astrbot/core/agent/message.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* Update astrbot/core/agent/message.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* Update astrbot/core/agent/tool.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* Update astrbot/core/pipeline/process_stage/method/llm_request.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* Update astrbot/core/agent/message.py
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* refactor: enhance documentation and import mcp in tool.py; update call method return type
* fix: 修复以数据类的方式注册 tool 时的插件重载机制问题
* refactor: change role attributes to use Literal types for message segments
* fix: add support for 'decorator_handler' method in call_local_llm_tool
* fix: handle None prompt in text_chat method and ensure context is properly formatted
---------
Co-authored-by: LIghtJUNction <lightjunction.me@gmail.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-11-02 18:12:20 +08:00
LIghtJUNction
0b7fc29ac4
style: add ruff lint module of isort and pyupgrade, and some ruff check fix ( #3214 )
...
Co-authored-by: Dt8333 <25431943+Dt8333@users.noreply.github.com >
Co-authored-by: Soulter <905617992@qq.com >
2025-11-01 13:26:19 +08:00
Soulter
e74f626383
stage
2025-10-21 09:55:14 +08:00
MoonShadow1976
e1ca645a32
feat: 增强工具调用参数处理机制 ( #3036 )
...
* feat: 增强工具调用参数处理机制
在工具调用时添加参数过滤功能,只传递函数实际需要的参数
解决问题:https://github.com/AstrBotDevs/AstrBot/issues/2988
* feat: 利用现有工具定义信息处理非期望的参数
不使用`inspect`库,利用现有工具定义信息处理非期望的参数
* ruff format for code
合并结果:
移除了多余参数避免报错,代码执行器可以正常工作。
2025-10-20 02:51:16 +08:00
Soulter
9ab652641d
feat: 支持配置工具调用超时时间并适配 ModelScope 的 MCP Server 配置 ( #3039 )
...
* feat: 支持配置工具调用超时时间并适配 ModelScope 的 MCP Server 配置。
closes : #2939
* fix: Remove unnecessary blank lines in _quick_test_mcp_connection function
2025-10-15 12:06:57 +08:00
Soulter
cc6fe57773
fix: on_tool_end无法获得工具返回的结果 ( #2956 )
...
fixes : #2940
2025-10-05 00:37:51 +08:00
Soulter
80a86f5b1b
fix: 修复 astrbot.core.star 等包下的 type checking error ( #2787 )
...
* fix: 修复 astrbot.core.star 等包下的 type checking error
* refactor: improve type checking and annotations
* chore: ruff format
2025-09-21 18:10:04 +08:00
Soulter
3a9429e8ef
fix: on_tool_end hook unavailable
2025-09-17 15:48:57 +08:00
Soulter
91ee0a870d
fix: handle image value correctly for mcp BlobResourceContents ( #2753 )
2025-09-16 08:22:18 +08:00
Soulter
7740e1e131
ci: add ci stage of code format checking ( #2750 )
...
* style: ruff format
* ci(dashboard-ci): ensure GitHub Release action only runs on push events
* ci(code-format): ruff format and ruff check
2025-09-14 18:05:58 +08:00
Soulter
69aaf09ac8
chore: 修复当自动更新 webchat title 时,history 被重置的问题
2025-08-24 00:23:08 +08:00
Soulter
563972fd29
fix: bugfixes
2025-08-22 17:41:06 +08:00
Soulter
d2df4d0cce
Feature: 支持在配置文件配置可用的插件组 ( #2505 )
...
* feat: 增加可用插件集合配置项
* remove: 旧版平台可用性配置
已经基于多配置文件实现。
* feat: 应用配置文件插件可用性配置
* perf: hoist if from if
2025-08-20 15:25:41 +08:00
Soulter
1df49d1d6f
refactor: 重构 Function Tool 管理并初步引入 Multi Agent 及 Agent Handsoff 机制 ( #2454 )
...
* stage
* refactor: 重构 Function Tool 管理并引入 multi agent handsoff 机制
- Updated `star_request.py` to use the global `call_handler` instead of context-specific calls.
- Modified `entities.py` to remove the dependency on `FunctionToolManager` and streamline the function tool handling.
- Refactored `func_tool_manager.py` to simplify the `FunctionTool` class and its methods, removing deprecated code and enhancing clarity.
- Adjusted `provider.py` to align with the new function tool structure, removing unnecessary type unions.
- Enhanced `star_handler.py` to support agent registration and tool association, introducing `RegisteringAgent` for better encapsulation.
- Updated `star_manager.py` to handle tool registration for agents, ensuring proper binding of handlers.
- Revised `main.py` in the web searcher package to utilize the new agent registration system for web search tools.
* chore: websearch
* perf: 减少嵌套
* chore: 移除未使用的 mcp 导入
2025-08-17 10:57:25 +08:00