Skip to content

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())

它只证明文本回显契约,库存查询必须另外实现业务读取和授权。

用心记录每一步成长