Agent Card 与真实本地服务:练习答案
练习解答
先按正文启动未修改的server.py,另一个终端保存answer_client.py,激活同一环境后运行python answer_client.py:
python
import asyncio,httpx
from a2a.client import A2ACardResolver,ClientConfig,create_client
from a2a.helpers import new_text_message
from a2a.types import Role,SendMessageRequest
async def main():
async with httpx.AsyncClient() as http:
card=await A2ACardResolver(httpx_client=http,base_url='http://127.0.0.1:9999').get_agent_card()
print(card.name,card.supported_interfaces)
client=await create_client(agent=card,client_config=ClientConfig(streaming=False))
try:
request=SendMessageRequest(message=new_text_message('库存 A',role=Role.ROLE_USER))
async for result in client.send_message(request):
if result.HasField('task'):
text=''.join(p.text for a in result.task.artifacts for p in a.parts)
assert text=='收到:库存 A'
print(text)
finally:await client.close()
asyncio.run(main())它只证明文本回显契约,库存查询必须另外实现业务读取和授权。