/
man4j
/
agent-server
Обзор
Документация
Войти
/
man4j
/
agent-server
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/agent_server/chat/presenter.py
71 строка
2 KB
Vladimir
initial
18 апр 2026, 19:36
18 апр 2026, 19:36
a95f341
Код
Авторство
О чём код?
import chainlit as cl from agent_server.chat.types import ChatMessage, ToolExecutionRecord from agent_server.local_tools import build_local_ui_elements from agent_server.ui_meta import UsageTotals, apply_meta_block, build_meta_block async def create_answer_message(author: str) -> cl.Message: answer_msg = cl.Message(content="", author=author, elements=[]) await answer_msg.send() return answer_msg async def apply_tool_results_to_answer( answer_msg: cl.Message, tool_results: list[ToolExecutionRecord], ) -> bool: updated = False current_elements = list(answer_msg.elements or []) extra_markdown_parts: list[str] = [] for item in tool_results: result = item["result"] if result.get("ok") and result.get("ui_type") == "markdown_diff": markdown = result.get("markdown") if isinstance(markdown, str) and markdown.strip(): extra_markdown_parts.append(markdown.rstrip()) updated = True continue elements = build_local_ui_elements(result, len(current_elements)) if not elements: continue current_elements.extend(elements) updated = True if extra_markdown_parts: base = answer_msg.content.rstrip() appendix = "\n\n".join(extra_markdown_parts) answer_msg.content = f"{base}\n\n{appendix}" if base else appendix if current_elements: answer_msg.elements = current_elements return updated async def finalize_answer_message( answer_msg: cl.Message, *, usage_totals: UsageTotals, messages: list[ChatMessage], char_per_token: float, connected_servers: list[str], context_size: int, response_headroom_tokens: int, estimated_prompt_tokens_fn, ) -> None: meta_block = build_meta_block( usage_totals=usage_totals, messages=messages, char_per_token=char_per_token, estimated_prompt_tokens_fn=estimated_prompt_tokens_fn, connected_servers=connected_servers, context_size=context_size, response_headroom_tokens=response_headroom_tokens, ) answer_msg.content = apply_meta_block(answer_msg.content, meta_block) await answer_msg.update()