8a0f865af1
* feat: enhance tool call handling and UI integration for tool calls render - Added support for tool call messages in the agent runner and webchat event handling. - Implemented JSON message component for structured tool call data. - Updated chat route to save tool call information in message history. - Enhanced frontend to display tool call details in a collapsible format, including status and results. - Introduced elapsed time tracking for ongoing tool calls in the chat interface. * fix: improve message handling in agent run utility and tool loop runner - Refactored message sending logic in `astr_agent_run_util.py` to use `msg_chain` directly for better clarity. - Added a check in `tool_loop_agent_runner.py` to ensure `tool_call_result_blocks` is not empty before yielding the last tool call result, preventing potential errors. * refactor: enhance message structure and UI for chat components - Updated message handling in `MessageList.vue` to support structured message parts, including plain text, images, audio, and files. - Improved the `Chat.vue` component styles for better visual consistency. - Refactored message parsing logic in `useMessages.ts` to accommodate new message formats and ensure proper rendering of embedded content. - Removed deprecated tool call handling from the message structure, streamlining the message display process. * chore: ruff format * feat: implement agent statistics tracking and display in chat - Added `AgentStats` and `TokenUsage` data classes to track agent performance metrics. - Enhanced `ToolLoopAgentRunner` to collect and update agent statistics during execution. - Integrated agent statistics sending to webchat for real-time updates. - Updated chat route to save and display agent statistics in message history. - Improved frontend components to visualize agent statistics, including token usage and duration metrics. * fix: improve message handling in Telegram event and agent run utility - Updated message sending logic in `astr_agent_run_util.py` to send the correct message chain for tool calls. - Enhanced `tg_event.py` to edit messages during streaming breaks, improving message management and user experience. - Added error handling for message editing failures to ensure robustness. * chore: ruff format
36 lines
859 B
Python
36 lines
859 B
Python
import typing as T
|
|
from dataclasses import dataclass, field
|
|
|
|
from astrbot.core.message.message_event_result import MessageChain
|
|
from astrbot.core.provider.entities import TokenUsage
|
|
|
|
|
|
class AgentResponseData(T.TypedDict):
|
|
chain: MessageChain
|
|
|
|
|
|
@dataclass
|
|
class AgentResponse:
|
|
type: str
|
|
data: AgentResponseData
|
|
|
|
|
|
@dataclass
|
|
class AgentStats:
|
|
token_usage: TokenUsage = field(default_factory=TokenUsage)
|
|
start_time: float = 0.0
|
|
end_time: float = 0.0
|
|
time_to_first_token: float = 0.0
|
|
|
|
@property
|
|
def duration(self) -> float:
|
|
return self.end_time - self.start_time
|
|
|
|
def to_dict(self) -> dict:
|
|
return {
|
|
"token_usage": self.token_usage.__dict__,
|
|
"start_time": self.start_time,
|
|
"end_time": self.end_time,
|
|
"time_to_first_token": self.time_to_first_token,
|
|
}
|