ADK-agents/a2a_client.py
2026-07-30 14:34:51 +08:00

67 lines
1.9 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
A2A 客户端测试脚本
通过 A2A 协议调用本地的 Dev Agent 服务。
使用方式:
python a2a_client.py "你好,介绍一下你自己"
python a2a_client.py --context my_session "你好" # 指定 context_id会话
"""
import asyncio
import sys
import argparse
from a2a.client import create_client
from a2a.types.a2a_pb2 import SendMessageRequest, Message, Part, Role
A2A_URL = "http://127.0.0.1:8001"
async def main():
parser = argparse.ArgumentParser(description="A2A 客户端测试")
parser.add_argument("message", help="发送给 agent 的消息")
parser.add_argument("--context", "-c", default="", help="context_id用于会话续传")
args = parser.parse_args()
print(f"连接到: {A2A_URL}")
if args.context:
print(f"会话: {args.context}")
print(f"发送: {args.message}")
print("-" * 40)
client = await create_client(A2A_URL)
try:
# 构建请求
request = SendMessageRequest(
message=Message(
role=Role.ROLE_USER,
parts=[Part(text=args.message)],
),
)
if args.context:
request.message.context_id = args.context
# 发送消息(流式返回)
full_text = ""
context_id = ""
async for response in client.send_message(request):
# 流式响应里可能有 message、status_update 等
if response.HasField("message"):
msg = response.message
if msg.context_id:
context_id = msg.context_id
for part in msg.parts:
if part.text:
full_text += part.text
print("Agent 回复:")
print(full_text)
if context_id:
print(f"\n(context_id: {context_id})")
finally:
await client.close()
if __name__ == "__main__":
asyncio.run(main())