|
@@ -157,6 +157,15 @@ class DebugRuntime:
|
|
|
round_index=round_index,
|
|
round_index=round_index,
|
|
|
events_enabled=enabled_events,
|
|
events_enabled=enabled_events,
|
|
|
)
|
|
)
|
|
|
|
|
+ await self._audit(
|
|
|
|
|
+ queues,
|
|
|
|
|
+ "chat_agent_request",
|
|
|
|
|
+ agent="chat_agent",
|
|
|
|
|
+ round_index=round_index,
|
|
|
|
|
+ params=self._params_snapshot(request.chat_agent),
|
|
|
|
|
+ messages=self._message_snapshots(chat_messages),
|
|
|
|
|
+ tools=[],
|
|
|
|
|
+ )
|
|
|
|
|
|
|
|
async for item in self.chat_client.stream_chat(
|
|
async for item in self.chat_client.stream_chat(
|
|
|
messages=chat_messages,
|
|
messages=chat_messages,
|
|
@@ -197,6 +206,21 @@ class DebugRuntime:
|
|
|
event_name=event.name,
|
|
event_name=event.name,
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
|
|
+ await self._audit(
|
|
|
|
|
+ queues,
|
|
|
|
|
+ "chat_agent_response",
|
|
|
|
|
+ agent="chat_agent",
|
|
|
|
|
+ round_index=round_index,
|
|
|
|
|
+ content="".join(assistant_content),
|
|
|
|
|
+ event_names=[event.name for event in events],
|
|
|
|
|
+ usage={
|
|
|
|
|
+ "prompt_tokens": prompt_tokens,
|
|
|
|
|
+ "completion_tokens": completion_tokens,
|
|
|
|
|
+ "total_tokens": total_tokens,
|
|
|
|
|
+ "cached_tokens": cached_tokens,
|
|
|
|
|
+ },
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
if assistant_content or events:
|
|
if assistant_content or events:
|
|
|
assistant_message = ChatMessage(
|
|
assistant_message = ChatMessage(
|
|
|
role="assistant",
|
|
role="assistant",
|
|
@@ -330,6 +354,16 @@ class DebugRuntime:
|
|
|
round_index=round_index,
|
|
round_index=round_index,
|
|
|
events_enabled=enabled_events,
|
|
events_enabled=enabled_events,
|
|
|
)
|
|
)
|
|
|
|
|
+ await self._audit(
|
|
|
|
|
+ queues,
|
|
|
|
|
+ "chat_agent_request",
|
|
|
|
|
+ agent="chat_agent",
|
|
|
|
|
+ turn_index=turn_index,
|
|
|
|
|
+ round_index=round_index,
|
|
|
|
|
+ params=self._params_snapshot(request.chat_agent),
|
|
|
|
|
+ messages=self._message_snapshots(chat_messages),
|
|
|
|
|
+ tools=[],
|
|
|
|
|
+ )
|
|
|
|
|
|
|
|
async for item in self.chat_client.stream_chat(
|
|
async for item in self.chat_client.stream_chat(
|
|
|
messages=chat_messages,
|
|
messages=chat_messages,
|
|
@@ -371,6 +405,22 @@ class DebugRuntime:
|
|
|
event_name=event.name,
|
|
event_name=event.name,
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
|
|
+ await self._audit(
|
|
|
|
|
+ queues,
|
|
|
|
|
+ "chat_agent_response",
|
|
|
|
|
+ agent="chat_agent",
|
|
|
|
|
+ turn_index=turn_index,
|
|
|
|
|
+ round_index=round_index,
|
|
|
|
|
+ content="".join(assistant_content),
|
|
|
|
|
+ event_names=[event.name for event in events],
|
|
|
|
|
+ usage={
|
|
|
|
|
+ "prompt_tokens": prompt_tokens,
|
|
|
|
|
+ "completion_tokens": completion_tokens,
|
|
|
|
|
+ "total_tokens": total_tokens,
|
|
|
|
|
+ "cached_tokens": cached_tokens,
|
|
|
|
|
+ },
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
if assistant_content or events:
|
|
if assistant_content or events:
|
|
|
messages.append(
|
|
messages.append(
|
|
|
ChatMessage(
|
|
ChatMessage(
|
|
@@ -459,12 +509,36 @@ class DebugRuntime:
|
|
|
request = await queues.events.get()
|
|
request = await queues.events.get()
|
|
|
if request is None:
|
|
if request is None:
|
|
|
return
|
|
return
|
|
|
|
|
+ await self._audit(
|
|
|
|
|
+ queues,
|
|
|
|
|
+ "event_agent_request",
|
|
|
|
|
+ agent="event_agent",
|
|
|
|
|
+ params=self._params_snapshot(event_agent.params),
|
|
|
|
|
+ events=self._event_snapshots(request.events),
|
|
|
|
|
+ history=self._message_snapshots(request.history),
|
|
|
|
|
+ system_prompt=request.system_prompt,
|
|
|
|
|
+ extra_body=request.extra_body or {},
|
|
|
|
|
+ tools=[
|
|
|
|
|
+ tool
|
|
|
|
|
+ for tool in (
|
|
|
|
|
+ event_agent.registry.tool_schema(event.name)
|
|
|
|
|
+ for event in request.events
|
|
|
|
|
+ )
|
|
|
|
|
+ if tool is not None
|
|
|
|
|
+ ],
|
|
|
|
|
+ )
|
|
|
replies = await event_agent.handle_many(
|
|
replies = await event_agent.handle_many(
|
|
|
request.events,
|
|
request.events,
|
|
|
history=request.history,
|
|
history=request.history,
|
|
|
system_prompt=request.system_prompt,
|
|
system_prompt=request.system_prompt,
|
|
|
extra_body=request.extra_body,
|
|
extra_body=request.extra_body,
|
|
|
)
|
|
)
|
|
|
|
|
+ await self._audit(
|
|
|
|
|
+ queues,
|
|
|
|
|
+ "event_agent_response",
|
|
|
|
|
+ agent="event_agent",
|
|
|
|
|
+ replies=[reply.model_dump() for reply in replies],
|
|
|
|
|
+ )
|
|
|
for reply in replies:
|
|
for reply in replies:
|
|
|
await queues.input.put(reply)
|
|
await queues.input.put(reply)
|
|
|
summary = event_agent.summarize_replies(replies)
|
|
summary = event_agent.summarize_replies(replies)
|
|
@@ -555,6 +629,15 @@ class DebugRuntime:
|
|
|
def _elapsed_ms(self, started_at: float) -> int:
|
|
def _elapsed_ms(self, started_at: float) -> int:
|
|
|
return round((self.clock() - started_at) * 1000)
|
|
return round((self.clock() - started_at) * 1000)
|
|
|
|
|
|
|
|
|
|
+ def _params_snapshot(self, params: AgentParams) -> dict[str, Any]:
|
|
|
|
|
+ return params.model_dump()
|
|
|
|
|
+
|
|
|
|
|
+ def _message_snapshots(self, messages: list[ChatMessage] | tuple[ChatMessage, ...]) -> list[dict[str, Any]]:
|
|
|
|
|
+ return [message.model_dump() for message in messages]
|
|
|
|
|
+
|
|
|
|
|
+ def _event_snapshots(self, events: list[ToolCallEvent]) -> list[dict[str, Any]]:
|
|
|
|
|
+ return [event.model_dump() for event in events]
|
|
|
|
|
+
|
|
|
async def _audit(
|
|
async def _audit(
|
|
|
self,
|
|
self,
|
|
|
queues: RuntimeQueues,
|
|
queues: RuntimeQueues,
|