ADK-agents/a2a_server.py
2026-07-29 17:21:34 +08:00

54 lines
1.4 KiB
Python
Raw 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.

"""
Dev Agent A2A Server
使用 ADK 官方 A2A 协议暴露 Dev Agent支持 HTTP 调用,可直接上云部署。
启动方式:
python a2a_server.py
端点:
A2A 接口: http://127.0.0.1:8001/a2a/dev_agent
Agent卡片: http://127.0.0.1:8001/.well-known/agent-card.json
健康检查: http://127.0.0.1:8001/health
"""
import os
import sys
# 确保项目根目录在 path 里
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
if PROJECT_ROOT not in sys.path:
sys.path.insert(0, PROJECT_ROOT)
from dotenv import load_dotenv
load_dotenv(os.path.join(PROJECT_ROOT, "my_agent", ".env"))
# 强制 UTF-8
os.environ["PYTHONUTF8"] = "1"
import uvicorn
from google.adk.a2a.utils.agent_to_a2a import to_a2a
from my_agent.agent import root_agent
# 配置
HOST = os.getenv("A2A_SERVER_HOST", "0.0.0.0")
PORT = int(os.getenv("A2A_SERVER_PORT", "8001"))
# 用 ADK 官方工具把 agent 转成 A2A 服务
# 会自动生成 agent card暴露 /a2a/{agent_name} 端点
a2a_app = to_a2a(root_agent, port=PORT)
def main():
print("=" * 60)
print("Dev Agent A2A Server 启动中...")
print(f" 监听地址: http://{HOST}:{PORT}")
print(f" A2A 端点: http://{HOST}:{PORT}/a2a/{root_agent.name}")
print(f" Agent 卡片: http://{HOST}:{PORT}/.well-known/agent-card.json")
print("=" * 60)
uvicorn.run(a2a_app, host=HOST, port=PORT, log_level="info")
if __name__ == "__main__":
main()