MCPcopy Create free account
hub / github.com/Louisym/MiniCC / ConversationMessage

Class ConversationMessage

tutorials/02_session_and_messages.py:150–212  ·  view source on GitHub ↗

一条完整的对话消息。 和 Tutorial 01 里简单的 Message 不同,这里: - content 不再是一个字符串,而是一个 ContentBlock 列表 - 多了 usage 字段来追踪 token 消耗 对应源码: session.rs:36-40

Source from the content-addressed store, hash-verified

148
149@dataclass(frozen=True)
150class ConversationMessage:
151 """
152 一条完整的对话消息。
153
154 和 Tutorial 01 里简单的 Message 不同,这里:
155 - content 不再是一个字符串,而是一个 ContentBlock 列表
156 - 多了 usage 字段来追踪 token 消耗
157
158 对应源码: session.rs:36-40
159 """
160 role: str # "user" | "assistant" | "tool" | "system"
161 blocks: tuple[ContentBlock, ...] # 内容块列表(用 tuple 因为不可变)
162 usage: Optional[TokenUsage] = None # 只有 assistant 消息才有 usage
163
164 # 下面是几个方便创建消息的方法(工厂方法)
165 # "工厂方法"就是"帮你快速创建对象的函数",省得每次都写一堆参数
166
167 @staticmethod
168 def user_text(text: str) -> "ConversationMessage":
169 """创建一条用户文字消息"""
170 return ConversationMessage(
171 role="user",
172 blocks=(TextBlock(text=text),),
173 )
174
175 @staticmethod
176 def assistant_text(text: str, usage: Optional[TokenUsage] = None) -> "ConversationMessage":
177 """创建一条助手文字消息"""
178 return ConversationMessage(
179 role="assistant",
180 blocks=(TextBlock(text=text),),
181 usage=usage,
182 )
183
184 @staticmethod
185 def assistant_with_tool_use(
186 text: str, tool_id: str, tool_name: str, tool_input: str,
187 usage: Optional[TokenUsage] = None,
188 ) -> "ConversationMessage":
189 """创建一条包含文字和工具调用的助手消息"""
190 return ConversationMessage(
191 role="assistant",
192 blocks=(
193 TextBlock(text=text),
194 ToolUseBlock(id=tool_id, name=tool_name, input=tool_input),
195 ),
196 usage=usage,
197 )
198
199 @staticmethod
200 def tool_result(
201 tool_use_id: str, tool_name: str, output: str, is_error: bool = False,
202 ) -> "ConversationMessage":
203 """创建一条工具结果消息"""
204 return ConversationMessage(
205 role="tool",
206 blocks=(ToolResultBlock(
207 tool_use_id=tool_use_id,

Callers 5

user_textMethod · 0.70
assistant_textMethod · 0.70
tool_resultMethod · 0.70
_dict_to_messageMethod · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected