/
githubmirror
/
screenshot-to-code
Обзор
Документация
Войти
/
githubmirror
/
screenshot-to-code
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
backend/agent/providers/base.py
56 строк
1 KB
Abi Raja
Abort generations that exceed a $3 spend ceiling
24 июл 2026, 22:09
24 июл 2026, 22:09
f6d8a82
Код
Авторство
О чём код?
from dataclasses import dataclass from typing import Any, Awaitable, Callable, Literal, Optional, Protocol from agent.tools import ToolCall, ToolExecutionResult StreamEventType = Literal[ "assistant_delta", "thinking_delta", "tool_call_delta", ] @dataclass class StreamEvent: type: StreamEventType text: str = "" tool_call_id: Optional[str] = None tool_name: Optional[str] = None tool_arguments: Any = None @dataclass class ProviderTurn: assistant_text: str tool_calls: list[ToolCall] # Provider-native assistant turn object required to continue the conversation. assistant_turn: Any = None @dataclass class ExecutedToolCall: tool_call: ToolCall result: ToolExecutionResult EventSink = Callable[[StreamEvent], Awaitable[None]] class ProviderSession(Protocol): async def stream_turn(self, on_event: EventSink) -> ProviderTurn: ... async def append_tool_results( self, turn: ProviderTurn, executed_tool_calls: list[ExecutedToolCall], ) -> None: ... def total_cost_usd(self) -> Optional[float]: """USD spent so far this session; None when the model is unpriced.""" ... async def close(self) -> None: ...