kiroproxy / scripts /test_thinking.py
KiroProxy User
chore: repo cleanup and maintenance
0edbd7b
#!/usr/bin/env python3
"""
测试思考功能
"""
import asyncio
import json
import httpx
async def test_thinking_feature():
"""测试思考功能"""
# 测试数据
test_data = {
"model": "claude-sonnet-4.5",
"messages": [
{
"role": "user",
"content": "请解释什么是递归,并给出一个简单的例子。"
}
],
"thinking": {
"thinking_type": "enabled",
"budget_tokens": 5000
},
"stream": True,
"max_tokens": 1000
}
print("发送思考功能测试请求...")
print(f"请求内容: {json.dumps(test_data, indent=2, ensure_ascii=False)}")
print("\n" + "="*60 + "\n")
try:
async with httpx.AsyncClient(timeout=60) as client:
async with client.stream(
"POST",
"http://localhost:8080/v1/messages",
headers={
"Content-Type": "application/json",
"x-api-key": "any",
"anthropic-version": "2023-06-01"
},
json=test_data
) as response:
if response.status_code != 200:
print(f"错误: {response.status_code}")
print(await response.aread())
return
print("收到响应:\n")
thinking_content = []
text_content = []
current_block = None
async for line in response.aiter_lines():
if line.startswith("data: "):
data_str = line[6:]
if data_str == "[DONE]":
break
try:
data = json.loads(data_str)
event_type = data.get("type")
if event_type == "content_block_start":
block_type = data.get("content_block", {}).get("type")
current_block = block_type
print(f"\n[开始 {block_type} 块]")
elif event_type == "content_block_delta":
delta = data.get("delta", {})
if delta.get("type") == "thinking_delta":
thinking = delta.get("thinking", "")
thinking_content.append(thinking)
print(thinking, end="", flush=True)
elif delta.get("type") == "text_delta":
text = delta.get("text", "")
text_content.append(text)
print(text, end="", flush=True)
elif event_type == "content_block_stop":
print(f"\n[结束块]")
current_block = None
elif event_type == "message_stop":
print("\n\n[响应完成]")
break
elif event_type == "error":
print("\n\n[错误]")
print(json.dumps(data.get("error", data), ensure_ascii=False, indent=2))
break
except json.JSONDecodeError as e:
print(f"\n解析错误: {e}")
continue
print("\n" + "="*60)
print("\n思考内容汇总:")
print("".join(thinking_content))
print("\n" + "-"*40)
print("\n回答内容汇总:")
print("".join(text_content))
except Exception as e:
print(f"请求失败: {e}")
if __name__ == "__main__":
asyncio.run(test_thinking_feature())