forked from arthurcolle/claude-code-sdk-python
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmulti_turn_example.py
More file actions
executable file
·88 lines (69 loc) · 2.49 KB
/
Copy pathmulti_turn_example.py
File metadata and controls
executable file
·88 lines (69 loc) · 2.49 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
#!/usr/bin/env python3
"""Example demonstrating multi-turn conversations with Claude Code SDK."""
import asyncio
from claude_code_sdk import query, ClaudeCodeOptions, ResultMessage
async def multi_turn_conversation():
"""Demonstrate multi-turn conversation capability."""
# Store session ID to continue the conversation
session_id = None
# First turn
print("=== Turn 1 ===")
async for message in query(
prompt="Hello! Can you remember that my favorite color is blue?",
options=ClaudeCodeOptions()
):
if isinstance(message, ResultMessage):
session_id = message.session_id
print(f"Session ID: {session_id}")
else:
print(message)
# Second turn - continue the conversation
print("\n=== Turn 2 ===")
async for message in query(
prompt="What's my favorite color?",
options=ClaudeCodeOptions(resume=session_id)
):
print(message)
# Third turn - continue again
print("\n=== Turn 3 ===")
async for message in query(
prompt="Now remember that I also like programming in Python.",
options=ClaudeCodeOptions(resume=session_id)
):
print(message)
# Fourth turn - test memory
print("\n=== Turn 4 ===")
async for message in query(
prompt="What are the two things you know about me?",
options=ClaudeCodeOptions(resume=session_id)
):
print(message)
async def auto_continue_conversation():
"""Demonstrate using continue_conversation flag."""
# First conversation
print("=== First Conversation ===")
async for message in query(
prompt="Remember that I'm working on a weather app.",
):
print(message)
# Continue the last conversation automatically
print("\n=== Continuing Last Conversation ===")
async for message in query(
prompt="What project am I working on?",
options=ClaudeCodeOptions(continue_conversation=True)
):
print(message)
async def main():
"""Run the examples."""
print("Multi-turn Conversation Example\n")
# Example 1: Manual session management
print("Example 1: Manual session management with resume")
print("-" * 50)
await multi_turn_conversation()
print("\n" * 2)
# Example 2: Auto-continue last conversation
print("Example 2: Auto-continue last conversation")
print("-" * 50)
await auto_continue_conversation()
if __name__ == "__main__":
asyncio.run(main())