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

Function main

tutorials/02_session_and_messages.py:309–417  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

307# ============================================================
308
309def main():
310 print("=" * 60)
311 print("Tutorial 02: Session 与消息模型演示")
312 print("=" * 60)
313
314 # --- 1. 构建一段完整对话 ---
315 print("\n--- 构建一段对话 ---")
316
317 session = Session()
318
319 # 用户说话
320 session.messages.append(ConversationMessage.user_text("2+2 等于几?"))
321 print(f"添加消息: {session.messages[-1]}")
322
323 # 助手回复(包含文字 + 工具调用)
324 session.messages.append(ConversationMessage.assistant_with_tool_use(
325 text="让我算一下。",
326 tool_id="tool-1",
327 tool_name="add",
328 tool_input="2,2",
329 usage=TokenUsage(input_tokens=20, output_tokens=6),
330 ))
331 print(f"添加消息: {session.messages[-1]}")
332
333 # 工具返回结果
334 session.messages.append(ConversationMessage.tool_result(
335 tool_use_id="tool-1",
336 tool_name="add",
337 output="4",
338 ))
339 print(f"添加消息: {session.messages[-1]}")
340
341 # 助手最终回答
342 session.messages.append(ConversationMessage.assistant_text(
343 text="2 + 2 的答案是 4。",
344 usage=TokenUsage(input_tokens=30, output_tokens=8),
345 ))
346 print(f"添加消息: {session.messages[-1]}")
347
348 # --- 2. 查看消息内部结构 ---
349 print("\n--- 查看第二条消息的内部结构(助手的工具调用)---")
350 msg = session.messages[1]
351 print(f" 角色: {msg.role}")
352 print(f" 内容块数量: {len(msg.blocks)}")
353 for i, block in enumerate(msg.blocks):
354 print(f" 块 {i}: type={block.type}, 内容={block}")
355 print(f" Token 使用: {msg.usage}")
356
357 # --- 3. 保存和恢复 ---
358 print("\n--- 保存和恢复 Session ---")
359 # 创建临时文件来演示
360 tmp_path = os.path.join(tempfile.gettempdir(), "tutorial_session.json")
361 session.save_to_file(tmp_path)
362 print(f" 已保存到: {tmp_path}")
363
364 # 读回来
365 restored = Session.load_from_file(tmp_path)
366 print(f" 已恢复: {len(restored.messages)} 条消息")

Callers 1

Calls 9

save_to_fileMethod · 0.95
appendMethod · 0.80
load_from_fileMethod · 0.80
SessionClass · 0.70
TokenUsageClass · 0.70
user_textMethod · 0.45
tool_resultMethod · 0.45
assistant_textMethod · 0.45

Tested by

no test coverage detected