/
man4j
/
agent-server
Обзор
Документация
Войти
/
man4j
/
agent-server
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/agent_server/llm/completion.py
58 строк
2 KB
Vladimir
initial
18 апр 2026, 19:36
18 апр 2026, 19:36
a95f341
Код
Авторство
О чём код?
from dataclasses import dataclass from typing import Any from agent_server.chat.types import ChatMessage, OpenAIToolSpec, ToolCall from agent_server.config.profiles import LlmProfile @dataclass class LlmRoundResult: assistant_content: str reasoning_content: str tool_calls: list[ToolCall] usage: Any = None finish_reason: str | None = None def build_chat_completion_kwargs( *, profile: LlmProfile, messages: list[ChatMessage], stream: bool, tools: list[OpenAIToolSpec] | None = None, max_tokens: int | None = None, ) -> dict[str, Any]: generation = dict(profile.generation or {}) extra_body = generation.get("extra_body") or {} kwargs: dict[str, Any] = { "model": profile.model, "messages": messages, "stream": stream, "max_tokens": max_tokens or generation.get("max_tokens", 65536), "extra_body": extra_body, } for key in ("temperature", "top_p", "presence_penalty", "frequency_penalty"): if key in generation: kwargs[key] = generation[key] if tools: kwargs["tools"] = tools return kwargs def build_summary_completion_kwargs( *, profile: LlmProfile, messages: list[ChatMessage], ) -> dict[str, Any]: generation = dict(profile.generation or {}) summary_max_tokens = min(1024, max(256, int(generation.get("max_tokens", 65536) / 8))) return build_chat_completion_kwargs( profile=profile, messages=messages, stream=False, max_tokens=summary_max_tokens, )