-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathdataclasses.py
More file actions
101 lines (75 loc) · 2.81 KB
/
Copy pathdataclasses.py
File metadata and controls
101 lines (75 loc) · 2.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
from dataclasses import dataclass
from datetime import datetime
from typing import Any
from pydantic_ai import ModelRequest, ModelResponse
from pydantic_ai.capabilities import AbstractCapability
from pydantic_ai.native_tools import AbstractNativeTool
from sqlalchemy.ext.asyncio import AsyncSession
from backend.plugin.ai.model.conversation import AIConversation
from backend.plugin.ai.model.message import AIMessage
from backend.plugin.ai.providers.base import ProviderAdapter
from backend.plugin.ai.schema.chat import AIChatForwardedPropsParam
@dataclass(slots=True)
class ChatAgentDeps:
"""聊天代理依赖"""
user_id: int
@dataclass(slots=True)
class ChatConversationState:
"""聊天上下文状态"""
conversation: AIConversation | None
message_rows: list[AIMessage]
model_messages: list[ModelRequest | ModelResponse]
row_model_message_ranges: list[tuple[int, int]]
context_start_index: int
@dataclass(frozen=True, slots=True)
class ChatRunContext:
"""协议运行上下文,核心聊天流程只读取通用字段"""
conversation_id: str
forwarded_props: AIChatForwardedPropsParam
protocol_context: Any
@dataclass(frozen=True, slots=True)
class ContextManagementPolicy:
"""上下文管理策略"""
max_part_chars: int | None
max_messages: int | None
keep_messages: int
max_tokens: int | None
warning_threshold: float
@dataclass(frozen=True, slots=True)
class CapabilityContext:
"""能力构建上下文"""
db: AsyncSession
adapter: ProviderAdapter
forwarded_props: AIChatForwardedPropsParam
supports_tools: bool
supported_native_tools: frozenset[type[AbstractNativeTool]]
supports_image_output: bool
has_builtin_tools: bool
context_management: ContextManagementPolicy
@dataclass(frozen=True, slots=True)
class CapabilityResult:
"""单个构建器的产出"""
capability: AbstractCapability[Any] | None
introduces_builtin_tool: bool = False
introduces_function_tool_source: bool = False
@dataclass(frozen=True, slots=True)
class CompletionPersistenceContext:
"""普通聊天完成持久化上下文"""
conversation_id: str
user_id: int
forwarded_props: AIChatForwardedPropsParam
title: str
assistant_message_id: int | None = None
@dataclass(frozen=True, slots=True)
class RegenerationPersistenceContext:
"""重生成完成持久化上下文"""
conversation_id: str
user_id: int
forwarded_props: AIChatForwardedPropsParam
expected_message_versions: tuple[tuple[int, datetime | None], ...] = ()
expected_context_start_message_id: int | None = None
expected_context_cleared_time: datetime | None = None
assistant_message_id: int | None = None
insert_before_index: int | None = None
replace_start_index: int | None = None
replace_end_index: int | None = None