tracking: remove memorystore, ux: change streaming area, more agent markdown formating.
This commit is contained in:
@@ -116,6 +116,10 @@ class OllamaAgent:
|
||||
yield {"type": "token", "content": chunk}
|
||||
if message.get("tool_calls"):
|
||||
tool_calls.extend(message["tool_calls"])
|
||||
if event.get("done"):
|
||||
metrics = self._stream_metrics(event)
|
||||
if metrics:
|
||||
yield {"type": "metrics", **metrics}
|
||||
|
||||
if not tool_calls:
|
||||
self.messages.append(assistant_message)
|
||||
@@ -266,6 +270,25 @@ class OllamaAgent:
|
||||
}
|
||||
return labels.get(name, f"Running {name}")
|
||||
|
||||
@staticmethod
|
||||
def _stream_metrics(event: dict[str, Any]) -> dict[str, Any]:
|
||||
prompt_tokens = int(event.get("prompt_eval_count") or 0)
|
||||
prompt_duration = int(event.get("prompt_eval_duration") or 0)
|
||||
output_tokens = int(event.get("eval_count") or 0)
|
||||
output_duration = int(event.get("eval_duration") or 0)
|
||||
|
||||
def rate(tokens: int, duration_ns: int) -> float | None:
|
||||
if not tokens or not duration_ns:
|
||||
return None
|
||||
return tokens / (duration_ns / 1_000_000_000)
|
||||
|
||||
return {
|
||||
"reading_tokens": prompt_tokens,
|
||||
"reading_tokens_per_second": rate(prompt_tokens, prompt_duration),
|
||||
"writing_tokens": output_tokens,
|
||||
"writing_tokens_per_second": rate(output_tokens, output_duration),
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
def _profile_identity(profile: dict[str, Any]) -> str:
|
||||
user = profile.get("uex_user")
|
||||
|
||||
Reference in New Issue
Block a user